ubi文件系统的提取:
使用binwalk直接提取只有0.ubi文件,发现是ubi文件系统,需要安装ubireader:
下载或使用PIP安装,https://github.com/jrspruitt/ubi_reader
四个命令:
ubireader_display_info //获取UBI信息以及布局块等信息
ubireader_extract_images //提取镜像
ubireader_extract_files //提取文件内容
bireader_utils_info //分析UBI镜像并创建shell脚本和UBI配置文件
安装后一般再使用binwalk就能提取到文件系统了,但这个固件提取到的文件系统是空的:

先看是否准确识别UBI信息,看起来都识别到了,有4个卷
ubireader_display_info [options] path/to/file

使用以下命令完全提取文件,但是遇到其他文件系统就会失败。
ubireader_extract_files [options] path/to/file

发现应该先提取镜像
ubireader_extract_imgs [options] path/to/file
0.ubi下面出现了四个文件


用file查看属性,发现是squashfs文件系统

使用unsquashfs解压就得到了文件系统

查阅资料得知:
在UBI之上运行squashfs文件是openwrt系统中常见的方式:
rootfs运行squashfs (只读)
roootfs_data运行ubifs (读写)
使用ubi_reader会有一个问题:ubi_reader工具对于ubi文件要求较为严格,必须补齐每一个块内容,如下当最后一个块内容没填充满,会提示块空间大于文件:
read Error: Block ends at 27394048 which is greater than file size 27267072
extract_blocks Fatal: PEB: 208: Bad Read Offset Request
根据PEB块大小,补齐00即可,如下将该块(size=0x20000)用00填充满

相对于ubi_reader,ubidump工具就更为简单,无需对齐块,应该是直接检索块头magic进行提取,该工具地址为:https://github.com/nlitsme/ubidump
ubidump工具只是一个python2的脚本,无需安装,但需要安装依赖:
$ sudo pip install python-lzo
$ sudo pip install crcmod
使用也比较简单:
//查看image.ubi镜像里面的某个文件内容
$ python ubidump.py -c /etc/passwd image.ubi
//显示image.ubi镜像内容
$ python ubidump.py -l image.ubi
//提取镜像,该指令会在指定目录下生成rootfs目录
$ python ubidump.py -s . image.ubi
$ ls -ahl ./rootfs
total 0
drwxr-xr-x 11 nirva staff 352B Dec 29 20:32 .
drwx------ 20 nirva staff 640B Dec 29 20:32 …
drwxr-xr-x 53 nirva staff 1.7K Dec 29 20:32 bin
drwxr-xr-x 3 nirva staff 96B Dec 29 20:32 data
drwxr-xr-x 62 nirva staff 1.9K Dec 29 20:32 etc
drwxr-xr-x 5 nirva staff 160B Dec 29 20:32 lib
drwxr-xr-x 38 nirva staff 1.2K Dec 29 20:32 lib64
drwxr-xr-x 15 nirva staff 480B Dec 29 20:32 sbin
drwxr-xr-x 3 nirva staff 96B Dec 29 20:32 temp
drwxr-xr-x 8 nirva staff 256B Dec 29 20:32 usr
drwxr-xr-x 3 nirva staff 96B Dec 29 20:32 vendor
不过对比 ubi_reader和ubidump工具的输出结果,可以发现ubi_reader提取的内容更为完整,而且也保留了文件的时间戳信息,而时间戳信息对取证等分析很有帮助。
参考链接:
https://gorgias.me/2019/12/27/%E5%9B%BA%E4%BB%B6%E6%8F%90%E5%8F%96%E7%B3%BB%E5%88%97-UBI%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%8F%90%E5%8F%96%E4%BB%A5%E5%8F%8A%E9%87%8D%E6%89%93%E5%8C%85/
http://www.gandalf.site/2019/01/iotubi.html
https://blog.csdn.net/darui_csdn/article/details/108412681