2009-12-16 45 views
7

如何執行模糊策略來強調網絡堆棧,尤其是第三層和第四層(網絡和傳輸層)?我已經看過框架來生成fuzzers,比如SPIKE,但是在我看來,他們主要關注應用層和更高層?是否有任何已知的技術來模糊這些層中的衆所周知的協議,比如TCP?網絡或傳輸層模糊

謝謝。

回答

8

看看Scapy。它允許您在網絡層和傳輸層進行模糊處理。 fuzz函數會模糊IP或TCP層中未明確指定的任何內容(您可以分別將其應用於每個層)。這爲您提供了一系列能力,包括隨機生成IP地址和端口對以發送和發送無意義數據包。

你可能也想看看Fragroute。這將扭轉TCP/IP使用各種逃避技術,但可能會揭示網絡堆棧中隱藏的錯誤/漏洞。此外,如果您的組織不反對,您可以設置一個Tor出口節點並從中捕獲流量。我發現它適用於測試正確的TCP連接狀態跟蹤。儘管您的連接終點是衆所周知且不變的,但有各種各樣的服務器以及有趣的網絡擁塞問題。它基本上是一個無限的流量來源。因爲您的組織可能反對成爲潛在的惡意流量來源(即使有強烈的無責任先例),請務必與您的上級進行覈對。我通過在家中運行/捕獲來解決這個問題,然後引入pcap。

3

如果您想模擬IP,UDP或TCP將數據包從高級別服務通過回送路由到讀取它們的進程,模糊它們並轉發它們。您需要一個驅動程序,讓您可以與原始套接字進行通信,並且您需要閱讀/瞭解適用的RFC對於這些協議所說的內容。

有一個簡單的方法來做到這一點。就像Justdelegard建議的一樣,Scapy可能是最好的選擇。

看看LaurentGaffié的Releasing ICMPv4/IP fuzzer prototype。他的Python代碼,順便說一句,他在pastebin.com以more readable的方式轉貼,從scapy導入並使用他定義的一些方法來執行幾種類型的模糊。 IP和ICMP數據包在他的示例代碼中處理。所以,這聽起來完全像你正在尋找的東西。

現在,似乎有很多公司使用網絡的Tcl/Expect to do custom automated testing。 SIP,H.323,第2層& 3協議等

因此,如果Scapy不能滿足您的需求,您可能可以在Tcl中使用期望來完成這項工作。或者,你可能希望在Python中使用Scapy來做一些事情 - 在Tcl中使用Expect來做其他事情。

Tcl長期以來一直用於網絡測試和管理應用。 20世紀90年代,有一本關於如何使用Tcl來完成基於SNMP的網絡管理的書。

Tcl的語法很奇怪,但是這些庫非常強大。它具有類似於框架的能力來定義套接字之上的自定義網絡行爲的行爲,類似於您可以使用Python編程語言的標準庫執行的操作。

與Python和其他腳本語言不同,對於名爲Expect的Tcl程序(參見expect man page),有一個非常強大的工具。

期待有一個方便的能力。它可以自動生成一個Tcl測試腳本。生成的腳本調用Expect函數。在進行錄音時,它可以作爲被動的中間人,記錄對話的雙方。在MS Word或Emacs中編輯時記錄宏的方式。

然後,您可以編輯自動生成的Expect腳本來微調它,使其表現不同,或創建它的多個變體。創建迴歸測試非常方便。如果你需要一些,你應該可以使用它來開始編寫更高層的協議測試。節奏從頭開始。

我想你可以使用Tcl/Expect來測試使用基於字符串的命令的標準TCP應用程序(FTP,HTTP,SMTP等)。它適用於測試基於字符的應用程序,如從標準輸入讀取輸入並生成輸出到標準輸出。