逆向路由器固件之解包 Part1

简介:
逆向路由器固件之解包 Part1

这个系列的文章以逆向路由器固件的方式来挖掘路由器中存在的漏洞。

本篇文章主要以介绍解包固件工具为主。文中演示用的固件可以在这里下载。由于针对设备的攻击越来越多,很多厂商把不提供固件下载作为一种安全策略。所以有些时候只能通过物理的方式从设备中导出固件。后续的文章中会介绍相关技术。

通用的linux RE工具

file — 用来检测是否是有效的文件和文件类型
hexdump —16进制导出工具
strings 跟hexdump类似但是可以以可读的形式展示
dd — 从二进制文件中挖掘数据
lzma — 解压LZMA文件

第三方工具

binwalk — 通过固件文件头来分析文件和文件系统
Fireware Mod Kit — 自动化分析固件文件的一系列脚本
squashfs-tools — 可以通过apt-get squashfs-tools 来安装。用来处理squashfs的一系列工具

初步分析

通常来说逆向工程的第一步就是使用上面列出的通用linux工具从要分析的文件中挖掘出尽量多的信息。通过这些信息来决定下一步进行的分析。比如使用hexdump发现sqsh意味着文件中有一个squashfs文件系统或者识别出了固件包中常用的boot loader U-Boot。

File Tool

文件工具通常只是告诉我们这个文件是否是已知的文件类型,某些情况下可以识别出文件的种类,比如数据文件。

使用file分析路由器固件如下:

file分析的结果可以告诉我们该文件是否是已知的类型,是否需要进一步分析。这里的结果我们可以看到仅仅是显示数据文件。

hexdump

hexdump 工具可以让你分析文件中的每一个字节,这是非常有价值的。使用hexdump分析固件如下:

上面的命令会把hexdump的结果写入到文件hexTP.txt中做进一步分析。-C选项是设置hexdump输出为hex+ASCII的方式,更便于阅读。输出的文件十分巨大,这个例子中我们可以从文件头的地方看到这个固件是属于TP-Link的,但是这个信息我们已经知道了。所以下一步就是尝试strings命令,看看是否可以获得更多的信息。

strings

作为初始的信息收集,strings可能是最常用和做好用的工具之一,因为它可以显示文件中所有可打印的数据。跟使用hexdump一样,最好把strings的结果写入文件分析,以免下次想要分析的时候还需要重复一遍strings命令。

从strings的结果中,我们发现了一些有趣的信息。这个信息就在strings结果文件开始的地方,稍微往后翻一下或者搜索一下文件系统常用的boot loader名字比如U-boot,就可以找到这些信息。现在我们已经知道这个嵌入式系统使用U-boot作为boot loader,而且知道了它的版本信息。

Binwalk

binwalk会分析二进制文件中可能的固件头或者文件系统,然后输出识别出的每个部分以及对应的偏移量。使用binwalk分析固件如下:

binwalk给出了大量有用的信息。从这些信息中可以得知这个固件是运行在MIPS架构上的一个linux系统。使用了squashfs文件系统。同时也再次确认boot loader是U-boot。关于binwalk的更详细的用法可以参考Binwalk:后门(固件)分析利器。

提取文件系统

终于到了最关键的一步,我们要从固件镜像中分离出文件系统的内容。因为是linux系统,可以预见一些标准的linux文件比如passwd和shadow可能会有一些敏感信息。很多人使用dd来分离文件系统的内容。使用binwalk和Firmware Modification Kit来解包最简单方便。

使用binwalk的-e参数可以自动把固件镜像中的所有文件都解出来。

binwalk -e 

使用Firmware Modification Kit中的extract-firmware.sh脚本会更加高效。如果你想重打包修改之后的固件的话可以使用build-firmware.sh来打包固件。这样可以节省大量时间自己解包和管理所有的偏移。

极路由安全设计架构分析这里分析的极路由的那个固件包,使用FMK就可以一键解包。如下:

 

本文转自 K1two2 博客园博客,原文链接:http://www.cnblogs.com/k1two2/p/4760978.html  ,如需转载请自行联系原作者

相关文章
|
边缘计算 网络协议 网络架构
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
|
存储 弹性计算 固态存储
阿里云服务器ECS共享型和独享区别选择(看这一篇就够了)
阿里云服务器ECS共享型和计算型、通用型有什么区别?什么是共享型云服务器?什么是独享型云服务器?性能区别大吗?如何选择?
3769 0
阿里云服务器ECS共享型和独享区别选择(看这一篇就够了)
|
5月前
|
数据可视化 搜索推荐 语音技术
还在花钱转语音?10,000+ star 开源「ebook2audiobook」白嫖1107种语言!免费文字秒变多语言音频!
开源工具「ebook2audiobook」支持1107+语言,可将电子书一键转为有声书,适配EPUB、PDF等多种格式,功能强大且免费,助力听书、学习与内容创作。
609 0
使用Omnipeek进行Wifi/P2P抓包
本文介绍了如何安装和配置Omnipeek软件,以及如何使用它来抓取Wifi和P2P数据包,特别适用于解决如Mirracast投屏连接失败等问题。
1209 1
|
安全 Java API
ServletRequest类及其使用方法介绍
ServletRequest类及其使用方法介绍
610 6
|
弹性计算 网络协议 网络安全
阿里云服务器开通1723端口教程配置安全组规则
阿里云服务器安装PPTP需要1723端口,阿里云服务器默认没有开通1723端口,可以在云服务器安全组中开放1723端口
1305 0
阿里云服务器开通1723端口教程配置安全组规则
|
Web App开发 关系型数据库 MySQL
webserver如何从零开始?
webserver如何从零开始?
|
存储 SQL 运维
Oracle--活跃回滚段损坏故障恢复
当前数据库由活跃事务时活跃回滚段损坏无备份时处理过程。
464 0
|
前端开发 Java 测试技术
什么是回归测试?
什么是回归测试?
482 0
什么是回归测试?
|
并行计算 监控 Shell
openwrt编译模块demo练习
openwrt编译模块demo练习
387 0