看似普通的檔案可能暗藏 flag 或其他重要資訊,這些資訊必須透過深入的分析才能發現,韌體中通常包含多層壓縮的檔案系統與可執行檔案。這些檔案表面上可能是圖片、音訊或文本,但實際上內部可能嵌入了其他格式的數據,如壓縮檔案或加密數據。
Binwalk 可以用來分析、提取與掃描二進位檔案,能快速辨識檔案中的結構、格式及嵌入的數據。針對檔案內嵌的數據進行精確解析,從中找出並提取數據。無論是圖像檔案中的隱寫數據,還是多層嵌套的壓縮檔案,都可以使用 Binwalk 來解析並提取隱藏資訊。主要功能包括:
標頭掃描: 根據已知的檔案特徵(檔案標頭),Binwalk 可快速辨識檔案中的數據類型,例如壓縮檔案、圖片、音訊、韌體等。
自動提取: 支援自動解壓縮和提取檔案中的嵌入數據,無需手動逐層操作。
檔案系統分析: 可輕易地從韌體中提取出壓縮的檔案系統,讓使用者能夠深入分析其內部結構。
以下皆以 Linux 系統演示
sudo apt install binwalk
binwalk <file>
範例:分析圖片中藏有的檔案標頭
輸入
binwalk hidden_image.png
輸出
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 594 x 1104, 8-bit/color RGBA, non-interlaced
272492 0x4286C Zip archive data, at least v2.0 to extract, compressed size: 378942, uncompressed size: 383937, name: secret_file.zip
651600 0x9F150 End of Zip archive, footer length: 22
-> 表示在 hidden_image.png 檔案中嵌入了一個 ZIP 壓縮檔案,位於偏移量 272492 處。
-e
參數,自動提取嵌入在檔案中的壓縮檔、圖片或其他檔案。binwalk -e <file>
範例:使用參數 -e
來提取嵌入的數據
輸入
binwalk -e hidden_image.png
輸出
自動將 ZIP 檔案提取到一個名為 hidden_image.png.extracted
的資料夾中。
那我們開始今天的練習吧~
Lab_1 - Matryoshka doll
將題目的檔案下載後我們得到一個 flag.png 的圖片,打開如下,明顯不是答案
使用 binwalk 工具來查看圖片有沒有隱藏資訊,發現藏有四個,其中 secret 裡面還有另一個 flag.png 的檔案
使用 binwalk -e flag.png
將原檔案裡面的其他隱藏資料提取出來,預設會將結果放進 _flag.png.extracted
資料夾中。打開資料夾後把 secret 點開,裡面的圖片就是我們的正解 flag
Lab_2 - hideme
這題的檔案下載後是一張 .jpg 的圖片,如下。
使用 binwalk -e doll.jpg
將提取結果放至 _doll.png.extracted
,點開後有檔案夾 base_images
跟一個 .zip 檔。base_images
點開後有一張 2_c.jpg
的圖片,繼續使用 binwalk -e xxxx.jpg
指令來進行下一層的提取。
直到提取 4_c.jpg
時,我們可以看到有 flag.txt
這個檔案。點開 .txt 檔之後就是題目的 flag 啦
今天的練習就到這邊,以下是參考資料,請搭配服用:
內文如有錯誤,還請不吝指教~