Reverse TOTOLINK Firmware

Reverse TOTOLINK Firmware

WoodMan

前言

Yo,這次是講解簡單的逆向,如何取得 TOTOLINK 韌體的內部資料。
這是一篇非常簡單的文章,不會講述太多詳細的內容,希望讓一些想入門的人可以有一個方向。

聲明

本 Blog 的所有內容,目的在於筆記與提供一部分的想法,請勿將本 Blog 的手法用於惡意攻擊或任何違法行為。

取得韌體、建立環境

這次挑的是 TOTOLINK EX1800L AX1800 的韌體。
為什麼會挑選 TOTOLINK 呢?因為他很好取得韌體也很好逆向,可以讓初學者建立自信心,不會心態崩潰。

筆者我所使用的環境為 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.