Kitty:Python語言編寫的Fuzzing框架
Kitty是一款用Python語言編寫的開源的模塊化、可擴展的模糊測試框架,靈感來源于OpenRCE’s Sulley 和 Michael Eddington的 (現(xiàn)在為Deja Vu Security的) Peach Fuzzer 。
目標
我們開始寫Kitty的時候,目的是幫助我們fuzz特殊的目標。也就就是運行于非TCP/IP通道上的私有和內部協(xié)議。一個通用、抽象的框架應該包含所有我們能想到的模糊測試過程中用到的所有通用功能,并且能方便用戶擴展,以便用來攻擊特定目標。
特性
心中有了這樣的目標,以下的特性就非常重要:
1、模塊性:fuzzer的每一個部分都是獨立的,這意味著你能夠用相同的監(jiān)視代碼監(jiān)控不同的程序,用相同的載荷生成工具(aka Data Model)生成的數(shù)據(jù)可以在不同的信道中傳遞;
2、擴展性:如過你想測試新的東西,不需要修改Kitty的核心代碼。即便不是所有,大部分功能應該在用戶代碼中實現(xiàn)。這包括監(jiān)視,控制以及和被fuzz的目標的通信;
3、豐富的數(shù)據(jù)模型:數(shù)據(jù)模型的核心要豐富,能夠描述高級的數(shù)據(jù)結構,包括字符串,哈希,長度,條件及其它。而且和其它框架一樣,還要設計好,將來需要的時候可以擴展;
4、狀態(tài)性:支持多階段的模糊測試。不僅要能描述單獨消息的載荷應該是什么樣,還要能描述消息的順序,甚至按照順序進行fuzzing;
5、客戶端和服務端fuzzing:假設你有一個配對的程序棧,你可以對服務端和客戶端進行fuzz。這聽起來是一個很高的要求,但實際上不是:只需要你像通常一樣能夠和目標通信即可;
6、跨平臺:可以在Linux,OS X和Windows上運行。
它不是XX
好吧,Kitty不是一個模糊測試器。它包含了還未實現(xiàn)的特定的協(xié)議或者通信通道。你可以用它寫一個自己的模糊測試器,你同樣可以用其它的基于Kitty的代碼,但是它不是一個開箱即用的模糊測試器。獲取Kitty模型實現(xiàn)的一個好去處是Katnip。
Katnip
Kitty,作為一個框架,實現(xiàn)了模糊測試器的主循環(huán),并且提供了用于創(chuàng)建一個完整的fuzzing會話所需要的數(shù)據(jù)模型和基類的語法。然而,特定類的實現(xiàn)并不是Kitty框架的一部分。這意味著,Kitty定義了與目標進行數(shù)據(jù)傳遞的接口和基類,但是沒有提供HTTP,TCP或者UART之上的數(shù)據(jù)傳輸實現(xiàn)。各種類的實現(xiàn)可以在附贈的軟件倉庫Katnip Github中找到。
接下來是什么?
安裝Kitty:
pip install git+https://github.com/cisco-sas/kitty.git#egg=kitty
閱讀這里的文檔。
構建自己的fuzzer。
如果需要幫助,可以詢問我們的Google group。