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