一、Binwalk是什麼?
Binwalk是一個用於固件分析的命令行工具,可以掃描固件並從中提取有用的信息和文件。它可以識別固件中的許多不同類型的文件和系統,包括壓縮文件、文本文件、二進制文件、圖片文件和各種文件系統。Binwalk主要由Craig Heffner編寫,目前在GitHub上開源發布,可以在Linux、Mac OS和Windows平台上使用。
二、環境準備
在使用Binwalk之前,需要安裝一些必要的軟件庫和工具。確保您的系統已經安裝了以下內容:
- Python2.7
- Python的一些必要模塊(例如lxml、argparse、numpy、matplotlib和scipy)
- 一些必要的命令行工具(例如binutils、openssl、swig和mksquashfs)
- 一個交叉編譯工具鏈(如果您需要編譯和使用Binwalk的依賴項)
三、Binwalk安裝
在您的Linux或Mac系統中,可以使用以下命令獲取最新版本的Binwalk:
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
python setup.py install
如果您使用的是Windows系統,則需要下載預編譯的二進制版本,可以在GitHub頁面上找到。
四、基本用法
一旦安裝依賴項並完成了Binwalk的安裝,就可以使用以下命令運行Binwalk:
binwalk [選項] 文件名
選項包括:
-B
:不執行任何提取,只顯示可能包含文件的偏移量。-e
:將所有提取文件保存到當前目錄下的一個子目錄中。-M
:嘗試包含另一個已知格式(以逗號分隔的列表)。-y
:嘗試所有提取操作/文件類型。
例如,在掃描某個固件時:
binwalk firmware.bin
將生成以下輸出:
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Ubiquiti Atheros AR231x initramfs, 0x206E bytes
77600 0x12D10 LZMA compressed data, properties: 0x5D, dictionary size: 65536 bytes, uncompressed size: 2190536 bytes
79168 0x13440 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 5947533 bytes, 1450 inodes, blocksize: 131072 bytes, created: Tue Dec 22 07:34:32 2020
6019024 0x5BD730 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 87651006 bytes, 10308 inodes, blocksize: 131072 bytes, created: Tue Dec 22 07:34:32 2020
Binwalk將掃描文件,並將檢測到的文件和系統報告出來。如果要提取任何文件,請使用-e
選項,例如:
binwalk -e firmware.bin
將提取所有檢測到的文件和系統,並將它們保存在一個名為_firmware.bin.extracted
的子目錄中。
五、使用實例
1. 提取網絡流量包
您可以使用Binwalk從網絡流量中提取有用的信息。以下是一個簡單的例子,演示提取由nc捕獲的流量的內容。
首先,我們將使用以下命令將nc命令通向40.40.40.40:8080:
nc -l 8080 > packet.bin
然後,我們可以使用Binwalk掃描文件,並通過使用-e
選項將所有提取內容保存到一個子目錄中:
binwalk -e packet.bin
這將提取所有可用的文件和信息,並將它們保存在一個名為_packet.bin.extracted
的子目錄中。
2. 提取固件內容
如果您已經有一個固件文件並希望從中提取內容,可以使用Binwalk輕鬆實現這一點。以下是一個簡單的例子,演示如何從固件文件中提取文件系統。
首先,我們將使用以下命令掃描固件文件:
binwalk firmware.bin
然後,我們可以看到報告中包含一個Squashfs文件系統。我們可以使用以下命令提取該文件系統:
binwalk -e firmware.bin
該命令將提取所有檢測到的文件和系統,並將它們保存在一個名為_firmware.bin.extracted
的子目錄中。我們可以瀏覽該目錄以查找我們需要的內容。
3. 在固件文件中查找危險代碼
您還可以使用Binwalk來掃描固件文件,以查找可能包含危險代碼(例如漏洞或後門)的文件。以下是一個簡單的例子,演示如何使用Binwalk來查找漏洞程序。
首先,我們將使用以下命令掃描固件文件:
binwalk firmware.bin
然後,我們可以看到報告中包含一個LZMA壓縮的二進制文件。我們可以使用以下命令對其進行提取和分析:
binwalk -Me firmware.bin
cd _firmware.bin.extracted
grep -r "vulnerable_function" .
這將提取所有文件和系統,並將它們保存在一個名為_firmware.bin.extracted
的子目錄中。然後,我們進入該目錄並使用grep
命令搜索可能包含脆弱代碼的文件。從輸出中,我們將能夠找到任何包含“vulnerable_function”的文件。
總結
Binwalk是一個功能強大的命令行工具,用於提取和分析固件文件。它可以掃描文件並從中提取有用的信息和文件,快速定位漏洞,並允許您深入了解設備的特定方面。此外,Binwalk不僅易於使用,而且非常靈活,並且可以與其他工具和庫集成使用。使用本文中的提示和技巧,您應該能夠輕鬆開始使用Binwalk,並開始探索您需要的固件。
原創文章,作者:MEKHK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/373075.html