Reverse TOTOLINK Firmware
前言
Yo,這次是講解簡單的逆向,如何取得 TOTOLINK 韌體的內部資料。
這是一篇非常簡單的文章,不會講述太多詳細的內容,希望讓一些想入門的人可以有一個方向。
聲明
本 Blog 的所有內容,目的在於筆記與提供一部分的想法,請勿將本 Blog 的手法用於惡意攻擊或任何違法行為。
取得韌體、建立環境
這次挑的是 TOTOLINK EX1800L AX1800 的韌體。
為什麼會挑選 TOTOLINK 呢?因為他很好取得韌體也很好逆向,可以讓初學者建立自信心,不會心態崩潰。
- 下載:EX1800L AX1800
- 版本:
V9.1.0u.7033_20220419
筆者我所使用的環境為 Kali Linux,這是一個設計用於數位鑑識與滲透測試的作業系統。預裝了非常多的工具供你使用。
分析
第一步先分析下載來的檔案 TOTOLINK_EX1800L_V9.1.0u.7033_B20220419.zip
,顯而易見這是一個使用 zip 進行壓縮的壓縮檔。
可以使用 unzip
指令對這個檔案進行解壓縮:
1 | unzip TOTOLINK_EX1800L_V9.1.0u.7033_B20220419.zip |
接下來先來分析解壓縮後的檔案製作方式與其所包含的內容,在這邊我使用 file
這個工具。
這個工具會讀取檔案的標頭(Headers),來去識別檔案的類型。
1 | file TOTOLINK_EX1800L_V9.1.0u.7033_B20220419.web |
恩…好像看不出什麼內容,換個工具試試看,這次使用 binwalk
這個工具。
這個工具會解析檔案(包含偏移位置)並告訴我們該檔案包含什麼內容。
1 | binwalk TOTOLINK_EX1800L_V9.1.0u.7033_B20220419.web |
我們成功取得到一些檔案資訊了,可以看到檔案的 Headers,以及 LZMA 壓縮與一個 Squashfs filesystem 的資訊。
在左側可以看到一些數字,這代表了指定資料所在的偏移位置,例如:
- Squashfs filesystem 是從
3426860
(Bytes)開始 - LZMA compressed data 是從
65676
(Bytes)開始
我們可以嘗試從這些資訊來取出某些特定資料。
取出特定資料
我們最感興趣的是 Squashfs filesystem 中得資訊。由於我們剛剛取得到相關的偏移位置,因此我們可以使用 dd
這個工具對該位置的資料進行複製。
1 | dd if=TOTOLINK_EX1800L_V9.1.0u.7033_B20220419.web bs=1 skip=3426860 of=rootfs.sqfs |
- if:指定讀入檔案
- bs:指定區塊大小
- skip:跳過前 N 個區塊
- of:指定輸出檔案
取出檔案系統
接下來使用 unsquashfs
這個工具取出整個檔案系統,可以使用 apt
進行安裝:
1 | sudo apt install squashfs-tools |
安裝好後,就可以開始進行取出的流程:
1 | unsquashfs rootfs.sqfs |
恭喜,我們成功取出了檔案系統,可以開始進行後續的分析與研究了!
結尾
這只是一個非常基礎的逆向,當然我們可以繼續進行更深入的分析與逆向,例如針對韌體中的服務進行逆向,瞭解其中的程式邏輯以及找出可能造成漏洞的部分;或者是找出 Hardcoded Password。
未來有機會的話會嘗試撰寫逆向服務並找出漏洞位置的文章。希望這次的內容可以幫助到你!
- Title: Reverse TOTOLINK Firmware
- Author: WoodMan
- Created at : 2024-03-20 09:05:42
- Updated at : 2024-11-27 14:50:30
- Link: https://blog.lce-lab.dev/2024/03/20/Reverse-TOTOLINK-Firmware/
- License: This work is licensed under CC BY-NC-SA 4.0.