掃一掃
關注微信公眾號

技術分享 | 一種檢測工控設備Snmp漏洞工具 —— Snmp Fuzzer
2019-01-02   網絡安全和運維

 01
 

 什么是Snmp Fuzzer

snmp fuzzer是一款用于對目標設備snmp可寫oid節點數據進行fuzz測試的小工具。

 

 02

 

 為什么要用Snmp Fuzzer

現如今工控環境中,存在大量的工控設備默認開啟了snmp服務并支持snmp寫操作,且設備使用了默認的snmp community值,由于工控環境的特殊性,設備參數設定后會長時間不會修改,導致開啟snmp服務的工控設備存在數據被篡改、覆蓋、以及被大量可寫數據攻擊致癱瘓的風險。而snmp fuzzer靈活且自動化能夠對開放了snmp寫權限的工控設備進行檢測,從而評估設備的安全性。

 

 03

 

 工控設備開啟snmp的危害

在以往的測試過程中,通過snmp fuzzer發現過一些工控設備的漏洞,這些漏洞主要集中在對snmp寫操作的數據沒有進行有效的校驗。例如某設備支持通過snmp寫操作來修改設備網卡的mac地址,但是沒有對mac地址的長度進行校驗,只要傳入過長或者過短的mac地址都會造成設備癱瘓。還有些設備的網卡可以通過snmp寫操作來開啟和禁用,這樣直接就會造成設備的網絡中斷影響業務。此外通常廠商還會有其自定義的私有oid節點,這些節點也很可能會存在一些安全問題,導致設備出現各種預期外的異常。

 

 04

 

  Snmp Fuzzer檢測流程

snmp fuzz測試機通過發送可寫oid的snmp set-request請求去改變工控設備可寫oid控制的數據,通過發送get request、get-next-request請求, 來接收工控設備返回的get-response報文,如果測試機沒有收到get-response的回復報文,則利用socket通信,來監測工控設備是否崩潰。

 

 05

 

 Snmp Fuzzer安裝

在Ubuntu環境下安裝與使用snmp fuzzer。

1. 通過git命令,下載snmp fuzzer 代碼。

https://github.com/dark-lbp/snmp_fuzzer

2. snmp fuzzer運行依賴scrapy,如果沒有安裝scrapy,需要安裝。

運行pip install scrapy命令,安裝scrapy。

 

 06

 
  Snmp fuzzer使用與分析

1. 編寫掃描目標設備可寫oid的測試py腳本。

a. 創建一個test_scan_oid.py的文件。

b. 打開test_scan_oid.py文件,輸入以下內容。

如下圖所示:

target:設置目標機的IP地址。

port:檢查目標機是否崩潰的通信端口。

count:fuzz snmp oid可寫報文的次數。

nic:目標機的默認路由。

Target:創建一個snmpTarget類。

 

SnmpTrarget參數說明:

name:測試fuzz的名字,測試人員可以自定義。

monitor_port:目標機是否存活監控端口。

community:具備oid可寫權限v2c用戶,通常設備設置的v2c用戶為:public或者private。

oid:開始掃描oid結點。

version:snmp用戶版本,目前snmp fuzzer只支持snmp v1、v2c。

Target.oid_scan():開啟掃描目標機可寫oid的功能。

Target.save_scan_result():保存可寫oid到pcap文件。

 

c.運行test_scan_oid.py文件,開始掃描目標機可寫的oid。執行python test_scan_oid.py命令執行完后在snmp_fuzzer/output目錄下會有一個Ip+_snmp_set_packet_list.pcap的文件,如:

該文件存儲的是目標設備可寫的oid報文,用于fuzz測試。

 

2. 編寫fuzz測試腳本,進行fuzz測試。

a. 創建一個test_snmp_fuzz.py文件。

b. 打開test_snmp_fuzz.py文件,輸入以下內容,如下圖所示:

 

Target.read_test_case_from_pcap用于從可寫的oid報文中讀取oid

Traget.fuzz()用于開始fuzz測試,通過不斷發送snmp set-request請求去設置snmp fuzz自己造的可寫數據。如下圖所示:

 

3. 運行test_snmp_fuzz.py文件,開始fuzz測試。

python test_snmp_fuzz.py

當目標設備對某個寫請求不進行反饋或反饋異常時,會通過socket connect 對目標設備的存活進行檢測,具體檢測原理如下圖所示:

當出現如下log信息時代表目標機已經崩潰。

 

 07

 

如何避免開啟snmp的危害

開啟snmp服務的設備采用snmp v3用戶,因為snmp v3支持用戶認證與加密,安全性更好、更可靠。

熱詞搜索:天地和興 工控設備

上一篇:德國制定路由器安全指南 完全遵守可獲特殊認證標簽
下一篇:最后一頁

分享到: 收藏
評論內容
云南快乐十分开奖结果爱彩乐