IOT固件分析环境搭建

IOT安全

IOT 固件分析环境搭建

binwalk解压,,比较玄学,经常报错或者解压不出来,不同安装方式有影响,版本也有影响,插件和库缺了也有影响,照着网上各个大佬的文章搞下来,现在基本的解压是可以了

我使用的是ubuntu22.04,kali是自带的,但是版本比较旧

1
binwalk -Me --run-as=root target_file.img/target_file.bin

加上--run-as=root不然会报错,然后下面的工具都安装下,少安装中间有时候也会报错

安装 binwalk

这个是网上建议编译安装的方法,但是我git下来好像现在最新版的没有setup.py文件了,安装不了?我是apt安装的

1
2
3
4
5
6
bashsudo git clone https://github.com/devttys0/binwalk.git /opt/binwalk
cd /opt/binwalk
sudo python3 setup.py install

# 测试安装
binwalk

我的安装方法如下

  • apt 安装 binwalk
1
2
3
#如果有旧版可以remove再安装
sudo apt update
sudo apt install binwalk

安装 binwalk 运行过程中需要调用的命令行工具:

1
2
3
4
5
bash# binwalk 运行时,它依赖许多命令行工具来提取固件
sudo apt install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsswap squashfs-tools sleuthkit default-jdk lzop srecord

# 安装 C/C++ 编译器、liblzma、liblzo 和 zlib 依赖项
sudo apt install build-essential liblzma-dev liblzo2-dev zlib1g-dev

安装 sasquatch

用于分离 squashfs 固件系统,解开非标准的 squashfs 文件系统

如果没有安装 sasquatch,使用 binwalk -Me 提取固件的过程中会报如下警告:

1
2
bash
WARNING: Extractor.execute failed to run external extractor 'sasquatch -p 1 -le -d 'squashfs-root' '%e'': [Errno 2] No such file or directory: 'sasquatch', 'sasquatch -p 1 -le -d 'squashfs-root' '%e'' might not be installed correctly

安装 sasquatch

1
2
3
4
5
6
bash
sudo apt install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools
sudo git clone https://github.com/devttys0/sasquatch.git /opt/sasquatch
cd /opt/sasquatch
sudo chmod +x build.sh
sudo ./build.sh

通过 sudo ./build.sh 编译时可能会出现报错:

1
2
3
4
5
6
7
8
9
bashunsquashfs.c: In function ‘read_super’:
unsquashfs.c:1835:5: error: this ‘if’ clause does not guard... [-Werror=misleading-indentation]
1835 | if(swap)
| ^~
unsquashfs.c:1841:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if
1841 | read_fs_bytes(fd, SQUASHFS_START, sizeof(struct squashfs_super_block),
| ^~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [<builtin>: unsquashfs.o] Error 1

使用 Fixed gcc build errors by threadexio · Pull Request #47 · devttys0/sasquatch 该 pull 中的一个 patch 文件来进行补丁:

1
2
3
4
bashcd /opt/sasquatch  
sudo wget https://github.com/devttys0/sasquatch/pull/47.patch
sudo patch -p1 < 47.patch
sudo ./build.sh

再次编译后可能还会报错,但是可以正常分离 squashfs 固件系统,貌似不影响使用


安装jefferson

Jefferson 是一个用于解码 JFFS2(Journaling Flash File System Version 2)文件系统的工具。JFFS2 是一种常见的嵌入式文件系统,广泛应用于各种嵌入式设备中。Jefferson 项目旨在提供一个高效、可靠的工具,帮助开发者解析和分析 JFFS2 文件系统。

1
pip3 install jefferson

安装 ubi_reader

安装 ubi_reader

1
2
3
4
bash
sudo apt install liblzo2-dev
sudo pip install python-lzo
sudo pip install ubi_reader

ubi_reader 工具4个功能:

  • 获取 UBI 信息、布局块等:ubireader_display_info
  • 提取镜像:ubireader_extract_images
  • 提取文件内容:ubireader_extract_files
  • 分析 UBI 镜像并创建 shell 脚本和 UBI 配置文件:bireader_utils_info

ubi_reader 命令

1
2
bash# 提取镜像里面的文件,输出保存到 ./ubifs-root/ 目录  
ubireader_extract_files rootfs.ubi

IOT固件分析环境搭建
https://xu17.top/2025/02/15/IOT 固件分析解压环境搭建/
作者
XU17
发布于
2025年2月15日
许可协议
XU17