小米路由器(R2D)開發版 - 韌體分析
背景:導師某天丟了個 bin 檔案讓做韌體分析,從此開啟了三星期的韌體分析之路,由于小米路由器多層防護加上本人水平有限,最后也沒發現漏洞,用這篇文章簡單記錄一下程序,中間經歷了一些錯誤和改正,所以結構上可能不太清晰,歡迎指正,
參考鏈接:
https://www.nosec.org/home/detail/4437.html
https://blog.csdn.net/m0_37552052/article/details/103990134
https://www.jianshu.com/p/62cf22c40d67
https://e3pem.github.io/2019/07/03/IoT/小米路由從開始到放棄/
最后一個參考鏈接,需要科學上(翻)網(墻)
文章目錄
- 小米路由器(R2D)開發版 - 韌體分析
- 前言
- 一、簡介
- 1.韌體分析關注的內容
- 2.韌體分析基本方法
- 二、韌體提取
- 1.所需工具
- 2.韌體鏡像
- 3.實戰
- 三、韌體分析
- 1.檔案系統
- 2.手動提取檔案系統
- 四、檔案系統分析
- 1.使用 firmwalker 分析檔案系統
- 2.利用 ll 命令分析可疑的二進制檔案
- 3.分析busybox
- 4.分析 rcS 腳本
- 五、動態分析
- 1.分析方法
- 2.所需工具
- 3.示例 - 使用 FAT 分析 D-Link 韌體
- 4.實戰 - FAT 分析小米韌體
- 六、漏洞利用
- 總結
前言
路由器型號:小米路由器(R2D)開發版
韌體下載地址:http://www.miwifi.com/miwifi_download.html
韌體版本如圖:

硬體資訊:
一、簡介
1.韌體分析關注的內容
口令
API Token
API Endpoint(URL)
存在漏洞的服務
后門賬戶
組態檔
源代碼
私鑰
資料的存盤方式
2.韌體分析基本方法
- 韌體提取
- 韌體分析
- 檔案系統提取
- 檔案系統加載
- 檔案系統分析
- 基于韌體仿真的動態分析
二、韌體提取
我是直接從官網下載的韌體,所以利用設備提取韌體的方法就用網上查到的資料簡介一下,具體沒實操
1.所需工具
Kali Linux
Ettercap
Wireshark
SSLstrip
Flashrom
2.韌體鏡像

3.實戰





三、韌體分析
1.檔案系統
韌體中包括 bootloader 、內核、檔案系統及其他內容,
檔案系統是韌體中的一個組件,存盤在二進制檔案的特定偏移地址中,且有一定大小,
檔案系統型別:squashfs , ubifs , romfs , rootfs , jffs2 , yaffs2 , cramfs , initramfs

2.手動提取檔案系統
-
使用 hexdump 和 grep 等工具搜索特征資訊,如 squashfs 檔案系統
命令簡介: hexdump主要用來查看“二進制”檔案的十六進制編碼,*注意:它能夠查看任何檔案,不限于與二進制檔案,* 語法 hexdump [選項] [檔案]… 選項: -C:輸出規范的十六進制和ASCII碼 另:grep -i "test" 搜索出含有“test” 字串(-i:不區分大小)實踐圖:

-
使用 dd 命令將從該地址開始到檔案末尾的內容全部轉儲下來
命令簡介: dd命令的作用是指定大小的塊拷貝一個檔案,并在拷貝的同時進行指定的轉換, 選項: if=檔案名:輸入檔案名, of=檔案名:輸出檔案名, bs=bytes:同時設定讀入/輸出的塊大小為bytes個位元組, skip=blocks:從輸入檔案開頭跳過blocks個塊后再開始復制, count=blocks:僅拷貝blocks個塊,塊大小等于ibs指定的位元組數,實踐圖:

-
從二進制檔案中獲取到檔案系統,使用 unsquashfs 解壓檔案系統
命令簡介: squashfs編譯和安裝成功后會在安裝路徑下生成mksquashfs和unsquashfs兩個命令工具,mksquashfs負責壓縮只讀檔案系統,unsquashfs負責解壓檔案系統, 命令安裝參考鏈接: https://blog.csdn.net/mayue_web/article/details/105682004實踐圖:

-
使用工具 binwalk 提取檔案系統
命令簡介: Binwalk是一個用于分析,逆向工程和提取韌體映像的工具,完全自動化腳本,并通過自定義簽名,提取規則和插件模塊, 選項: -e,檔案提取,提取它在韌體映像中找到的任何檔案,實踐圖:

-
查看提取后的檔案系統

-
使用 file 分析 binwalk 提取出的 2A4 檔案,可知 2A4 檔案是 UBI image

-
使用 ubireader 分析提取出的檔案系統 binwalk 提取出的 2A4 檔案,最后生成的檔案夾,其中就存放的該韌體的檔案系統,

四、檔案系統分析
1.使用 firmwalker 分析檔案系統
firmwalker 是一個簡單的 bash 腳本,目的是用于搜索檔案系統中感興趣的部分,比如 passwd,shadow,*.psk,MD5 hashes,SSL,使用 firmwalker 分析后的結果會保存在firmwalker.txt中,
實踐圖

其中 /etc/passwd 檔案中的每個用戶都有一個對應的記錄行,所有用戶都可讀,每一行記錄由6個冒號分成7部分,每部分分別對應的含義是:
用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell

/etc/shadow 檔案是 passwd 檔案的一個影子,/etc/shadow 檔案中的記錄行與 /etc/passwd 中的一一對應,同上 shadow 也用8個冒號分割成9部分,每部分分別對應的含義是:
登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志
加密口令中,分為三個部分,第一部分是表示使用哪種哈希演算法($1 表示 MD5 ; $6 表示 SHA-512 ; $5 表示 SHA-256);第二部分是用于加密哈希的 salt ;第三部分是已加密的哈希,

(關于 passwd 和 shadow 檔案更詳細的介紹,參考:https://blog.csdn.net/yaofeino1/article/details/54616440)
2.利用 ll 命令分析可疑的二進制檔案
ll 會列出當前檔案或目錄的詳細資訊,含有時間、讀寫權限、大小、時間等資訊 , ll 和 ls -l 的功能是相同的, ll 是 ls -l 的別名,



這里采用的就是笨辦法了,先在網上搜集資料 Linux 檔案系統中有哪些可疑的二進制檔案,然后就對照查看小米韌體檔案系統中的有沒有可以利用的檔案,這部分也沒啥大的識訓,
3.分析busybox
busybox 是一個集成了一百多個最常用linux命令和工具的軟體,他甚至還集成了一個 http 服務器和一個 telnet 服務器,而所有這一切功能卻只有區區 1M 左右的大小,我們平時用的那些 Linux 命令就好比是分立式的電子元件,而 busybox 就好比是一個集成電路,把常用的工具和命令集成壓縮在一個可執行檔案里,功能基本不變,而大小卻小很多倍,在嵌入式 Linux 應用中,busybox 有非常廣的應用,另外,大多數 Linux 發行版的安裝程式中都有 busybox 的身影,安裝 Linux 的時候按 ctrl+alt+F2 就能得到一個控制臺,而這個控制臺中的所有命令都是指向 busybox 的鏈接.,
- ls 查看 busybox 檔案資訊(這里后來被指出查看的是 kali 中的 busybox)

- file busybox 確定 32-bit LSB,ARM,EABI5

- hexdump & grep、IDA 等無法獲得 busybox 版本號
在搜索解決辦法時候,在 https://blog.csdn.net/diyiday/article/details/88136290 上看到別人連 ssh 從而確定了 busybox 的版本號:

到這步的思路是嘗試能不能模擬出韌體檔案系統的 busybox 從而利用里面集成的命令對檔案系統進行操作,然后就開始照著網上教程用 busybox 制作根檔案系統,后來發現小米韌體雖然是用了 busybox 但在這基礎上自己進行了一些改動,這部分就進行到這下不去了,
4.分析 rcS 腳本
這部分是通過查 Linux 啟動流程,發現 inittab 檔案中會啟動 rcS 腳本,進一步分析

啟動時:
a.將引數一 S、引數二 boot 傳到 rcS 檔案中
b.若引數一是 S 且在規定時間內啟動,則將資訊記錄到日志中,同時在螢屏上顯示此資訊
c.遍歷 /etc/rc.d/ 目錄下以引數一 S 開頭的檔案,并且執行他們,如果執行超時,則將警告或錯誤資訊記錄到日志中
關閉時:
a.將引數一 K、引數二 boot 傳到 rcS 檔案中
b.若引數一是 K 且在規定時間內關閉,則將資訊記錄到日志中,同時在螢屏上顯示此資訊
c.遍歷 /etc/rc.d/ 目錄下以引數一 K 開頭的檔案,并且執行他們,如果執行超時,則將警告或錯誤資訊記錄到日志中
五、動態分析
開展 IoT 設備分析會受到這樣或那樣的限制,其中一個就是我們難以在沒有物體設備的情況下開展大量測驗并進行漏洞利用,此時我們需要在仿真環境中進行動態測驗,從而進行分析,此階段的測驗分析可能會由于專案和訪問級別有所差異,
1.分析方法
篡改引導程式配置
Web 和 API 測驗
模糊測驗(網路和應用程式服務)
使用各種工具集進行的主動掃描以獲取提升的訪問權限或代碼執行
2.所需工具
Firmware Analysis Toolkit(FAT):
FAT 是一個工具包,可幫助安全研究人員分析和識別 IoT 和嵌入式設備韌體中的漏洞,它采用 Firmadyne 工具實作韌體鏡像的仿真,是一款自動化分析嵌入式 Linux 系統安全的開源軟體,它支持批量檢測,整個系統包括韌體的爬取、root 檔案系統的提取、QEMU 模擬執行以及漏洞的挖掘,
Attify OS:
它是一款物聯網滲透專用虛擬機,無需用戶花費時間安裝、配置 IoT 滲透測驗所需的各種工具,而是為您準備了一個預制發行版,其中包含在任何物聯網安全評估或滲透測驗中都將方便使用的工具,
3.示例 - 使用 FAT 分析 D-Link 韌體
- 直接運行 ./fat.py 檔案進入 FAT ,接著輸入韌體的 bin 檔案路徑和韌體品牌,最后輸入密碼:

- FAT 分析完后會給一個IP地址,如圖是192.168.0.50:

- 瀏覽器輸入IP地址,打開登錄界面:

4.實戰 - FAT 分析小米韌體
簡單歸納FAT腳本的操作:
a.從韌體中提取檔案系統
b.獲取韌體架構
c.制作所需鏡像
d.網路設定
e.鏡像仿真

分析程序一直卡卡卡了十多分鐘,沒能解決這個問題,這部分也停在這里了,
六、漏洞利用
如果找到漏洞,這部分會用到的工具,和大家分享一下:
Damn Vulnerable Router Firmware
GDB-Multiarch
GDB Enhanced Features(GEF)
QEMU
Chroot
IDA Pro/Radare2
總結
小米安全防護做的還不錯,我能想到和查閱到的方法都試過了,最后還是沒能找到漏洞,不過這個程序也帶給了我一些思考和鍛煉,希望這篇文章對你有幫助,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266769.html
標籤:其他
上一篇:用AI變革新藥研發,終極目標是延緩衰老,這家創業公司迎來“里程碑”
下一篇:modsecurity規則決議
