主頁 >  其他 > 小米路由器(R2D)開發版-韌體分析

小米路由器(R2D)開發版-韌體分析

2021-03-06 13:07:14 其他

小米路由器(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. 韌體提取
  2. 韌體分析
  3. 檔案系統提取
  4. 檔案系統加載
  5. 檔案系統分析
  6. 基于韌體仿真的動態分析

二、韌體提取

我是直接從官網下載的韌體,所以利用設備提取韌體的方法就用網上查到的資料簡介一下,具體沒實操

1.所需工具

Kali Linux
Ettercap
Wireshark
SSLstrip
Flashrom

2.韌體鏡像

在這里插入圖片描述

3.實戰

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述


三、韌體分析

1.檔案系統

韌體中包括 bootloader 、內核、檔案系統及其他內容,

檔案系統是韌體中的一個組件,存盤在二進制檔案的特定偏移地址中,且有一定大小,

檔案系統型別:squashfs , ubifs , romfs , rootfs , jffs2 , yaffs2 , cramfs , initramfs
在這里插入圖片描述

2.手動提取檔案系統

  1. 使用 hexdump 和 grep 等工具搜索特征資訊,如 squashfs 檔案系統

     命令簡介:
     hexdump主要用來查看“二進制”檔案的十六進制編碼,*注意:它能夠查看任何檔案,不限于與二進制檔案,*
     
     語法
     hexdump [選項] [檔案]…
     
     選項:
     -C:輸出規范的十六進制和ASCII碼
     
     另:grep -i "test"   搜索出含有“test” 字串(-i:不區分大小)
    

    實踐圖:
    在這里插入圖片描述

  2. 使用 dd 命令將從該地址開始到檔案末尾的內容全部轉儲下來

     命令簡介:
     dd命令的作用是指定大小的塊拷貝一個檔案,并在拷貝的同時進行指定的轉換,
     
     選項:
     if=檔案名:輸入檔案名,
     of=檔案名:輸出檔案名,
     bs=bytes:同時設定讀入/輸出的塊大小為bytes個位元組,
     skip=blocks:從輸入檔案開頭跳過blocks個塊后再開始復制,
     count=blocks:僅拷貝blocks個塊,塊大小等于ibs指定的位元組數,
    

    實踐圖:
    在這里插入圖片描述

  3. 從二進制檔案中獲取到檔案系統,使用 unsquashfs 解壓檔案系統

     命令簡介:
     squashfs編譯和安裝成功后會在安裝路徑下生成mksquashfs和unsquashfs兩個命令工具,mksquashfs負責壓縮只讀檔案系統,unsquashfs負責解壓檔案系統,
     
     命令安裝參考鏈接:
     https://blog.csdn.net/mayue_web/article/details/105682004
    

    實踐圖:
    在這里插入圖片描述

  4. 使用工具 binwalk 提取檔案系統

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

    實踐圖:
    在這里插入圖片描述

  5. 查看提取后的檔案系統
    在這里插入圖片描述

  6. 使用 file 分析 binwalk 提取出的 2A4 檔案,可知 2A4 檔案是 UBI image
    在這里插入圖片描述

  7. 使用 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 的鏈接.,

  1. ls 查看 busybox 檔案資訊(這里后來被指出查看的是 kali 中的 busybox)
    在這里插入圖片描述
  2. file busybox 確定 32-bit LSB,ARM,EABI5
    在這里插入圖片描述
  3. 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 韌體

  1. 直接運行 ./fat.py 檔案進入 FAT ,接著輸入韌體的 bin 檔案路徑和韌體品牌,最后輸入密碼:
    在這里插入圖片描述
  2. FAT 分析完后會給一個IP地址,如圖是192.168.0.50:
    在這里插入圖片描述
  3. 瀏覽器輸入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規則決議

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more