DeathFuzzer是一個(gè)比較簡單的fuzzing測試工具,它能夠?qū)Π沧?a target="_blank" href='http://m.tipsywinegypsy.com/fz/sjdriver/'>手機(jī)驅(qū)動(dòng)進(jìn)行黑盒fuzz,通過write和ioctl來對驅(qū)動(dòng)進(jìn)行訪問,CMD值通過參數(shù)給定范圍自動(dòng)變異,CMD對應(yīng)的arg是程序內(nèi)部的變異器來完成數(shù)據(jù)生成和傳遞的,長度和內(nèi)容都能夠變異。需要的朋友可以下載試試!
什么是fuzzing
fuzzing是一種基于缺陷注入的自動(dòng)軟件測試技術(shù)。通過編寫fuzzer工具向目標(biāo)程序提供某種形式的輸入并觀察其響應(yīng)來發(fā)現(xiàn)問題,這種輸入可以是完全隨機(jī)的或精心構(gòu)造的。Fuzzing測試通常以大小相關(guān)的部分、字符串、標(biāo)志字符串開始或結(jié)束的二進(jìn)制塊等為重點(diǎn),使用邊界值附近的值對目標(biāo)進(jìn)行測試。
fuzzing測試工具怎么用
DeathFuzzer使用方法介紹
首先,DeathFuzzer是個(gè)非常簡單的小程序!一共就4個(gè)參數(shù),你填完4個(gè)參數(shù)剩下的就是等著看了。直接不加參數(shù)運(yùn)行就會顯示usage。
DeathFuzzer使用方法: ./DeathFuzzer [驅(qū)動(dòng)文件路徑] [測試要使用的用戶權(quán)限] [CMD最小值] [CMD最大值]
我來逐一說一下這幾個(gè)參數(shù)的含義:
[驅(qū)動(dòng)文件路徑]:就是要fuzz的驅(qū)動(dòng)的絕對路徑,大部分是一些字符設(shè)備啥的,就像下面這些玩意,例如/dev/usf1
crw-rw---- root usb 10, 45 2014-05-19 17:16 usb_accessory
crw------- root root 237, 0 2014-05-19 17:16 usb_ext_chg
crw-rw---- system mtp 10, 47 2014-05-19 17:16 usb_mtp_gadget
crw------- system root 10, 65 2014-05-19 17:16 usf1
crw-rw---- system camera 81, 6 2014-05-19 17:16 v4l-subdev0
[測試用戶權(quán)限切換]:注意這個(gè)用戶切換功能需要有root權(quán)限才能生效!有些驅(qū)動(dòng)僅允許root和某個(gè)用戶屬組訪問,那么你最好切換到這個(gè)非root的用戶屬組來進(jìn)行fuzz,這樣一旦出現(xiàn)問題你沒準(zhǔn)還能搞個(gè)提權(quán)的0day啥的。
[CMD最小值] [CMD最大值]:既然我們對驅(qū)動(dòng)的fuzz是純黑盒的(其實(shí)很多驅(qū)動(dòng)代碼都是公開的,你可以直接參照代碼指定這個(gè)范圍),那么我們需要手動(dòng)的去指定個(gè)CMD的范圍,然后通過驅(qū)動(dòng)的反饋來猜測這個(gè)范圍是否準(zhǔn)確(是否有點(diǎn)像盲注?),制定了最小值和最大值,那么DeathFuzzer的CMD就會在這個(gè)范圍內(nèi)進(jìn)行變異。
上面的說明balabala的沒什么意思,還是舉個(gè)栗子吃吧,例如我們要fuzz下面這個(gè)uhid驅(qū)動(dòng),
crw-rw---- system net_bt_stack 10, 41 2014-05-19 17:16 uhid
這個(gè)uhid文件在/dev目錄下,net_bt_stack對其有訪問權(quán)限,那么我們的程序參數(shù)應(yīng)該是這樣配置的。
./DeathFuzzer /dev/uhid net_bt_stack 0x1 0xff
或者是這樣的,
./DeathFuzzer /dev/uhid root 0x3f 0x4f
fuzz過程中會在程序目錄中生成一個(gè)Fuzzlog.txt文件,這個(gè)文件中記錄著每一次fuzz的參數(shù)內(nèi)容,方便對bug進(jìn)行回溯。
fuzz日志如下圖,記錄著fuzz時(shí)間,cmd值,每個(gè)[]換行后下面的亂碼就是ioctl和wirte傳遞的內(nèi)容,日志是二進(jìn)制文件,最好使用UE或者010edit來查看,然后配合tombstones和dmesg就可以定位bug的原因了。
好了,DeathFuzzer的介紹到此結(jié)束了,以下為使用方法,祝大家玩的開心!程序下載地址在文章結(jié)尾處。
使用方法:(前提是要先在系統(tǒng)中安裝安卓SDK,然后把SDK中的platform-tools目錄加入環(huán)境變量)
首先第一步把DeathFuzzer 用 adb push 傳進(jìn)手機(jī)。
第二步,adb shell進(jìn)入手機(jī)的終端控制臺,cd進(jìn)入/data/local/tmp目錄。
第三步,使用chmod給DeathFuzzer可執(zhí)行權(quán)限,并且加參數(shù)進(jìn)行fuzz。
然后就等著看手機(jī)是否出現(xiàn)崩潰、重啟等問題,出現(xiàn)以后使用adb pull 把DeathFuzzer的日志取出來,配合tombstones和dmesg就可以定位bug的原因了。
好了,就這么多,需的朋友拿去試試吧!
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版