標籤:
Kitty是一款用Python語言編寫的開源的模組化、可擴充的模糊測試架構,靈感來源於OpenRCE’s Sulley 和 Michael Eddington的 (現在為Deja Vu Security的) Peach Fuzzer 。
目標
我們開始寫Kitty的時候,目的是協助我們fuzz特殊的目標。也就就是運行於非TCP/IP通道上的私人和內部協議。一個通用、抽象的架構應該包含所有我們能想到的模糊測試過程中用到的所有通用功能,並且能方便使用者擴充,以便用來攻擊特定目標。
特性
心中有了這樣的目標,以下的特性就非常重要:
1、模組性:fuzzer的每一個部分都是獨立的,這意味著你能夠用相同的監視代碼監控不同的程式,用相同的載荷產生工具(aka Data Model)產生的資料可以在不同的通道中傳遞;
2、擴充性:如過你想測試新的東西,不需要修改Kitty的核心代碼。即便不是所有,大部分功能應該在使用者代碼中實現。這包括監視,控制以及和被fuzz的目標的通訊;
3、豐富的資料模型:資料模型的核心要豐富,能夠描述進階的資料結構,包括字串,雜湊,長度,條件及其它。而且和其它架構一樣,還要設計好,將來需要的時候可以擴充;
4、狀態性:支援多階段的模糊測試。不僅要能描述單獨訊息的載荷應該是什麼樣,還要能描述訊息的順序,甚至按照順序進行fuzzing;
5、用戶端和服務端fuzzing:假設你有一個配對的程式棧,你可以對服務端和用戶端進行fuzz。這聽起來是一個很高的要求,但實際上不是:只需要你像通常一樣能夠和目標通訊即可;
6、跨平台:可以在Linux,OS X和Windows上運行。
它不是XX
好吧,Kitty不是一個模糊測試器。它包含了還未實現的特定的協議或者通訊通道。你可以用它寫一個自己的模糊測試器,你同樣可以用其它的基於Kitty的代碼,但是它不是一個開箱即用的模糊測試器。擷取Kitty模型實現的一個好去處是Katnip。
Katnip
Kitty,作為一個架構,實現了模糊測試器的主迴圈,並且提供了用於建立一個完整的fuzzing會話所需要的資料模型和基類的文法。然而,特定類的實現並不是Kitty架構的一部分。這意味著,Kitty定義了與目標進行資料傳遞的介面和基類,但是沒有提供HTTP,TCP或者UART之上的資料轉送實現。各種類的實現可以在附贈的軟體倉庫Katnip Github中找到。
接下來是什麼?
安裝Kitty:
pip install git+https://github.com/cisco-sas/kitty.git#egg=kitty
閱讀這裡的文檔。
構建自己的fuzzer。
照片相框 http://www.biyinjishi.com/products/a65-b6535/d100137/
創意家居http://www.biyinjishi.com/products/a65-b6550/d100137
杯子http://www.biyinjishi.com/products/a65-b6550/d100139/
T恤衫http://www.biyinjishi.com/products/a65-b6550/d100140/
衛衣http://www.biyinjishi.com/products/a65-b6550/d100140/
記事本http://www.biyinjishi.com/products/a65-b6550/d100141/
手機周邊http://www.biyinjishi.com/products/a65-b6550/d100142/
抱枕http://www.biyinjishi.com/products/a65-b6550/d100143/
請柬http://www.biyinjishi.com/products/a65-b6550/d100144/
賀卡http://www.biyinjishi.com/products/a65-b6550/d100144/
文集http://www.biyinjishi.com/products/a65-b6550/d100148/
詩集http://www.biyinjishi.com/products/a65-b6550/d100148/
自傳http://www.biyinjishi.com/products/a65-b6550/d100148/
個人出書http://www.biyinjishi.com/products/a65-b6580/d100144
書http://www.biyinjishi.com/products/a65-b6580/d100146/
Kitty:Python語言編寫的Fuzzing架構