导语:在本系列文章中,我们将会使用工具进行IOT安全评估的基本步骤。本文是第一篇,你需要一个设备固件的二进制文件才能继续。

1.jpg

在本系列文章中,我们将会使用工具进行IOT安全评估的基本步骤。本文是第一篇,你需要一个设备固件的二进制文件才能继续。

工具

file

这款工具能够检测文件类型。file通过检查属性和(对于普通文件)读取文件初始部分来来猜测每个文件参数的类型。file通过命令行将每个文件与系统维护的magic文件进行对比来确定文件类型。

详情请参考:https://linux.die.net/man/1/file

xdd

xdd可以执行hexdump或者逆向。xdd会生成给定文件或者标准输入的十六进制格式,也可以将十六进制格式转换回原始的二进制格式。

详情请参考:https://linux.die.net/man/1/xxd

binwalk

这是一个固件分析工具。binwalk是一个简单的Linux工具,用来分析二进制代码中嵌入的文件和可执行代码。主要用于固件镜像内容的提取。

详情请参考:https://github.com/ReFirmLabs/binwalk

strings

这个工具会打印出文件中可打印的字符串。对于给定文件,strings至少打印4个字符长度的可打印字符序列,也可以使用参数来选择打印的字符长度,后面接着的是不可打印的字符。默认情况下,它只打印对象文件启动和加载部分的字符串。对于其他文件类型,它会打印整个文件的字符串。

详情请参考:https://linux.die.net/man/1/strings

Radare2

这是一个逆向工程和二进制分析的完整框架。该框架包含了很多小工具,可以与命令行一起使用,也可以单独使用。基于能够从机器可执行的代码生成汇编语言源代码的计算机软件的反汇编器构建,支持不同处理器和操作系统的各种可执行格式。

详情请参考:https://rada.re/r/

hexdump

该工具可以以十六进制,十进制,八进制或者ASCII码形式来显示文件内容。hexdump小工具可以以用户指定的格式来显示指定的文件内容,如果没有指定文件,就会显示标准输入。

hexdump详情参考:http://man7.org/linux/man-pages/man1/hexdump.1.html

firmwalker

这是一个简单的bash脚本,可以在安装的固件文件系统中搜索敏感的文件,比如etc/shadow,etc/password还有etc/ssl目录,与SSL相关的文件,比如.pem和.crt文件,配置文件,脚本文件,其他二进制文件,还有admin,password和remote等关键字,物联网设备常用的web服务,常用的二进制,比如ssh,tftp,dropbear等,还能搜索url,邮箱地址和IP地址等。

详情请参考:https://github.com/craigz28/firmwalker

静态分析

检测文件类型,命令如下:

file myfile.bin

如图:

1.png

使用xxd工具获取文件的magic bytes

参数:-l <length>

描述:在长度八字节后停止

例子:xxd -l 4 myfile.bin

如图:

2.png

使用binwalk获取文件的magic bytes

-w:对文件执行hexdump或对多个文件执行差分

-l <length>:要扫描的字节数

示例:binwalk -W -l 100 myfile.bin

如图:

3.png

dump文件字符串

-n <number>:定位并打印任何以nul结尾的序列,至少n个字符(默认是4)

示例:strings -n 10 myfile.bin>strings.out

如图:

4.png

搜索非ASCII字符

参数:izz

描述:在整个二进制文件中搜索字符串

示例:r2 myfile.bin

如图:

5.png

以十六进制形式显示文件内容

-c:标准十六进制+ASCII码显示以十六进制显示输入偏移量,后面跟着十六进制格式的十六个字节,分成两列,空格隔开,后面是两个“|”,中间包起来的是%_p格式的相同的十六字节。

示例:hexdump -C myfile.bin>hex.out

如图:

6.png

分析固件架构及其文件系统

binwalk myfile.bin

如图:

7.png

自动提取固件文件

-M:递归扫描提取的文件

-r:提取后删除剩余文件

-e:自动提取已知文件类型

示例:binwalk -Mre myfile.bin

或者是binwalk -Me myfile.bin

如图:

8.png

9.png

搜索提取的固件文件系统

示例:

./firmwalker.sh /path/to/extracted-firmware/root/fs

如图:

10.png

源链接

Hacking more

...