0×01:前言
pwn的學習有一段時間了,今天來看看IOT的一些知識。此篇文章會介紹IOT相關的基礎知識,韌體的概念以及IOT裝置的檔案系統,如何利用工具分析IOT裝置。
0×02:正文
1)物聯網裝置層次模型看網路風險
物理感知層(韌體提取)
通訊層
管理控制層
2)攻擊者角度看IOT資訊收集
埠掃描
流量抓取、分析(外部嗅探、內部除錯)
功能點評估
埠掃描中,我們可以注意一些私有協議,來進行分析。
所需技能
二進位制逆向分析
滲透測試
硬體焊接
工具:IDA/Ghidra
流量分析:wireshark
韌體分析攻擊:binwalk/qemu
韌體概念
我們可以把他簡單理解為作業系統。
韌體的組成
Bootloader: 最開始執行的軟體,初始化硬體裝置,建立記憶體空間對映圖,調節嵌入式的軟硬體。
核心:作業系統最基本的部分。
根檔案系統:核心啟動時所mount的第一個檔案系統,核心程式碼映像檔案儲存在根檔案系統中。
嵌入式韌體使用的系統大部分為linux系統,存在的目錄:
/bin目錄
目錄下的命令在掛接其他檔案系統之前就可以使用,所以/bin目錄必須與根檔案系統在一個分割槽中。
/dev目錄
裝置與裝置介面的檔案,裝置檔案是linux中特有的檔案型別。
/etc目錄
系統主要的配置檔案。root許可權才有修改許可權。
/lib
共享庫和驅動程式,共享庫用於啟動系統。 執行根檔案系統中的可執行程式。
/var
/var目錄中存放可變的資料,比如spool目錄(mail,news),log檔案,臨時檔案。
/proc
空目錄,常作為proc檔案系統的掛接點,proc檔案系統是個虛擬的檔案系統。
韌體提取
binwalk提取韌體
binwalk可以掃描許多不同嵌入式檔案型別和檔案系統的韌體映像,只需給他一個要掃描的Binkwalk +檔案 -e 對此檔案進行分離。
提取出的內容會存放在。extracted檔案裡,其中squashfs-root就是我們想要的該韌體的檔案系統。
進入分離出來的韌體系統
Squashfs檔案系統簡介:
squashfs可以將整個檔案系統或者某個單一的目錄壓縮在一起, 存放在某個裝置, 某個分割槽或者普通的檔案中。
沒有binwalk情況下提取韌體:
1。利用hexdump 搜尋hsqs的地址
2。利用dd命令擷取地址之後的資料,儲存到新檔案中
不識別16進位制,因此我們轉換為10進位制
3。最後,使用unsquashfs rt-n300-fs命令解析rt-n300-fs檔案,得到的squashfs-root就是韌體系統
此種方法與binwalk提取韌體的結果是相同的。
靜態分析IOT的韌體
拿到一個韌體壓縮包,解壓之後發現了很多YAFFS2檔案
我們利用binwalk對其進行分離
或者這裡再介紹一個工具unyaffs
然後檢視分離出來的檔案
利用find命令檢視 。conf配置檔案
find 。 -name ‘*。conf’
在/etc/inadyn-mt。conf下找到了賬號密碼
然後又看看/etc/shadow發現了root賬號和密碼
檢視程序,這裡有一個程式
用IDA開啟
只要連線該韌體的39889埠併發送HELODBG的字串,就可以進行RCE。
0×03:總結
最近研究了IOT中韌體的提取以及如何靜態分析韌體,IOT的前期準備工作並不太難,在學習路程中發現需要的各方面機能很多,流量分析、電子取證、彙編與反彙編等技能也都是必不可少的,所以要廣學知識,提升自己的技能。