您的位置:

如何安装和使用Binwalk

一、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,并开始探索您需要的固件。