IOT滲透測試一
在本系列文章中,我們將會使用工具進行IOT安全評估的基本步驟。本文是第一篇,你需要一個裝置韌體的二進位制檔案才能繼續。
工具
file
這款工具能夠檢測檔案型別。file通過檢查屬性和(對於普通檔案)讀取檔案初始部分來來猜測每個檔案引數的型別。file通過命令列將每個檔案與系統維護的magic檔案進行對比來確定檔案型別。
詳情請參考: ofollow,noindex" target="_blank">https://linux.die.net/man/1/file
xdd
xdd可以執行hexdump或者逆向。xdd會生成給定檔案或者標準輸入的十六進位制格式,也可以將十六進位制格式轉換回原始的二進位制格式。
詳情請參考: https://linux.die.net/man/1/xxd
binwalk
這是一個韌體分析工具。binwalk是一個簡單的Linux工具,用來分析二進位制程式碼中嵌入的檔案和可執行程式碼。主要用於韌體映象內容的提取。
詳情請參考: https://github.com/ReFirmLabs/binwalk
strings
這個工具會打印出檔案中可列印的字串。對於給定檔案,strings至少列印4個字元長度的可列印字元序列,也可以使用引數來選擇列印的字元長度,後面接著的是不可列印的字元。預設情況下,它只打印物件檔案啟動和載入部分的字串。對於其他檔案型別,它會列印整個檔案的字串。
詳情請參考: https://linux.die.net/man/1/strings
Radare2
這是一個逆向工程和二進位制分析的完整框架。該框架包含了很多小工具,可以與命令列一起使用,也可以單獨使用。基於能夠從機器可執行的程式碼生成組合語言原始碼的計算機軟體的反彙編器構建,支援不同處理器和作業系統的各種可執行格式。
詳情請參考: https://rada.re/r/
hexdump
該工具可以以十六進位制,十進位制,八進位制或者ASCII碼形式來顯示檔案內容。hexdump小工具可以以使用者指定的格式來顯示指定的檔案內容,如果沒有指定檔案,就會顯示標準輸入。
hexdump詳情參考: http://man7.org/linux/man-pages/man1/hexdump.1.html
firmwalker
這是一個簡單的bash指令碼,可以在安裝的韌體檔案系統中搜索敏感的檔案,比如etc/shadow,etc/password還有etc/ssl目錄,與SSL相關的檔案,比如.pem和.crt檔案,配置檔案,指令碼檔案,其他二進位制檔案,還有admin,password和remote等關鍵字,物聯網裝置常用的web服務,常用的二進位制,比如ssh,tftp,dropbear等,還能搜尋url,郵箱地址和IP地址等。
詳情請參考: https://github.com/craigz28/firmwalker
靜態分析
檢測檔案型別,命令如下:
file myfile.bin
如圖:
使用xxd工具獲取檔案的magic bytes
引數:-l <length>
描述:在長度八位元組後停止
例子:xxd -l 4 myfile.bin
如圖:
使用binwalk獲取檔案的magic bytes
-w:對檔案執行hexdump或對多個檔案執行差分
-l <length>:要掃描的位元組數
示例:binwalk -W -l 100 myfile.bin
如圖:
dump檔案字串
-n <number>:定位並列印任何以nul結尾的序列,至少n個字元(預設是4)
示例:strings -n 10 myfile.bin>strings.out
如圖:
搜尋非ASCII字元
引數:izz
描述:在整個二進位制檔案中搜索字串
示例:r2 myfile.bin
如圖:
以十六進位制形式顯示檔案內容
-c:標準十六進位制+ASCII碼顯示以十六進位制顯示輸入偏移量,後面跟著十六進位制格式的十六個位元組,分成兩列,空格隔開,後面是兩個“|”,中間包起來的是%_p格式的相同的十六位元組。
示例:hexdump -C myfile.bin>hex.out
如圖:
分析韌體架構及其檔案系統
binwalk myfile.bin
如圖:
自動提取韌體檔案
-M:遞迴掃描提取的檔案
-r:提取後刪除剩餘檔案
-e:自動提取已知檔案型別
示例:binwalk -Mre myfile.bin
或者是binwalk -Me myfile.bin
如圖:
搜尋提取的韌體檔案系統
示例:
./firmwalker.sh /path/to/extracted-firmware/root/fs
如圖: