作者:{YBB}@ArkTeam
白帽子们对IoT设备进行渗透测试之前,都会尝试获取两件东西:一个是shell(用于调试和分析攻击面),一个是文件系统(寻找漏洞)。Binwalk是一个固件分析工具,用于协助研究人员对固件进行分析,文件提取等。本文简要介绍Binwalk主要功能,并实践一下利用Binwalk分析获取嵌入式设备的文件系统。
1.下载安装
Kali系统自带Binwalk,普通linux系统上安装Binwalk也非常方便,直接从GitHub下载安装既可,具体方法可参考该项目README。
2.功能介绍
图1 Binwalk基本功能结构图
2.1过滤功能
包含过滤器(-y)用于只显示包括指定搜索文本匹配的结果,其中-y选项可以指定多个:$ binwalk –y filename firmware.bin;排除过滤器(-x)用于只显示排除指定搜索文本匹配的结果,-x选项也可以多次指定:$ binwalk –x filename firmware.bin;包含过滤器和排除过滤器两个功能可以结合使用。
2.2提取文件
Binwalk提供多种方法从固件中提取文件系统,用户可使用-dd选项指定提取规则,手动提取文件;-e选项用来自动化提取固件文件系统;提取后的数据需要进一步Binwalk分析时,-Me选项用于递归扫描提取数据。
2.3比较功能
Binwalk可以生成一个或多个文件的十六进制转储和差异分析。文件中相同字节绿色显示,不同字节红色显示,蓝色表示一些文件中的不同部分:$ binwalk –W firmware1.bin firmware2.bin firmware3.bin
2.4字符串分析
Binwalk还可以对目标文件进行一个智能字符串分析,通过应用一些简单的验证规则,排除”垃圾”字符串,忽略无顺序的数据块,最终显示出最有用的信息:$ binwalk –S firmware.bin
2.5 插件功能
Binwalk最基础的用法中只是简单基于就签名匹配,会导致一些文件无法识别,针对这种问题Binwalk支持不同功能的插件,用于识别特定固件。
3.案例分析
网上下载某路由器的固件RT-AC54U.trx,使用Binwalk进行提取文件系统操作,流程如图2所示。
图2 使用Binwalk获取设备文件系统基本流程
3.1 Binwalk信息收集
首先使用Binwalk初步扫描分析固件结构,如图3所示。
图3 Binwalk初步扫描固件
从图3可以看出,该路由器采用squashfs文件系统,下载安装squashfs-tools用于解压路由器文件。
3.2 Binwalk文件提取
在信息收集的基础上使用-Me参数递归提取固件信息(binwalk -Me RT-AC54U.trx),提取成功后该trx文件的输出目录是_RT-AC54U.trx.extracted,即固件文件系统,再结合其他分析工具对所提取到的文件进行源码审计等。
图4 固件中部分文件展示
参考链接
[1]https://github.com/devttys0/binwalk
[2]http://www.freebuf.com/sectool/15266.html