V2.1版本兼容了另外一种形态的符号表,感谢winmt师傅的建议,原理详见 https://arxiv.org/html/2407.05064v1 晚些时候会在看雪上补充相关细节,欢迎提改进建议和issue
此外,V2.1版本还有主要bin文件寻找和函数符号表提取功能,这也许是需求最大的功能,现在也可一键自动化了
只可惜仍有部分固件(vxfile_wr842nv7和v9、wdr7660gv1)的文件偏移表仍然以各种方式,即使采用更aggressive的lzma策略,似乎都寻不到,如果有相关方法的话请师傅务必issue,这块我目前也很想搞懂
具体而言,这类无法解析出文件偏移表的,一般在binwalk解压后,grep -r "Decryption for config.bin"能够匹配到结果
目前看来,这种固件有些没有文件偏移反倒会有符号表,所以我还实现了符号表提取、主要bin文件识别,希望能弥补这一缺点以帮助师傅们日常的分析
一键提取vxwork固件内部文件,并依据binwalk分析结果和uboot镜像内文件名偏移表,正确恢复vxwork文件名
在V2.1版本更新下,还引入了主要bin文件(分析web服务cgi后端之类的都找这个就对了)寻找和函数符号表提取功能,这也许是需求最大的功能,现在也可一键自动化了
在日常分析固件的过程中,遇到不少设备是RTOS,其中目前见得最多的就是vxworks系统
binwalk尚未支持对vxworks系统固件的正确解包,而且已经停止更新很久了。直接用binwalk一把梭会遇到这种情况:全是莫名其妙的文件名
这对于日常的分析而言,带来了麻烦。本来符号表缺失就有些麻烦了,现在连文件名都是"乱码",分析下图类似于这类cgi路由自然是徒增几分困难
这个工具的功能是,在uImage中寻找偏移表,正确恢复文件名,并将恢复后的文件放入独立的结果文件夹;如果固件内部记录了路径,还会将文件放入正确的路径(否则将其放入一个默认文件夹,需要进一步分析)。 附上博客文章作为补充说明:https://ba1100n.tech/iot_security/%e6%8e%a2%e7%a9%b6vxworks%e6%96%87%e4%bb%b6%e5%90%8d%e6%81%a2%e5%a4%8d/
用法: python3 vxfile_extracter.py <bin 文件路径> [--fuzzymode]
选项: -h, --help 显示帮助信息 --fuzzymode 使用模糊匹配模式处理文件
说明: 该工具用于处理 bin 文件。默认情况下,优先使用精确匹配。如果指定 --fuzzymode 参数,将强制使用模糊匹配。
该工具会一键解包、自动寻找偏移表位置、自动提取每个文件的偏移,并根据偏移表中记录的名称恢复文件名
如果固件内部记录了路径,还会放入正确的路径
其中一个路径的文件如下
可以看到图片名称的恢复,也是能对上名字的
主要bin文件寻找和函数符号表提取(如果有的话)功能
- Mercury水星mw313rV4固件
- tplink wr-855n固件
- tplink wr842nv3固件
- tplink Archer系列 C80v1 C80v2固件
使用前请确保您的镜像能够通过binwalk正确解包,类似以下结果,这意味着固件没有加密,是正常的vxworks镜像
目前测试主要集中在vxworks 5.5及以下版本,这是最常见的版本,高版本暂时未遇到过。
某些固件的偏移表未记录路径,导致文件结构显得"扁平化",需要进一步分析内部html文件引用以确定静态资源文件的正确位置。目前尚未找到合适的解决办法。
程序设计细节和恢复原理详见:https://bbs.kanxue.com/thread-284324.htm
如有问题欢迎提出issue,如果觉得好用请不吝⭐star,谢谢~