路由器固件
分析
提取bin文件资源
上来就是个bin文件(名字改了了)
没怎么见过bin文件, 先丢进exeinfo
告诉我们这是个路由器dump出来的文件, 这里我试着用IDA跑了一下
不出意料的识别不出来, 所以用IDA肯定是无法继续做下去了(个人而言…), 从网上搜工具
了解到分析路由器需要用到binwalk这个工具, 但是在安装过程中…
原本是按照官方的文档来一步步做的, 但是环境配置一直有问题 (;´д`)ゞ
在准备放弃时…
居然翻到了kali官方的文档 !!!
恰好本机的WSL装的就是kali
最后还是顺利的安装好了
运行
1 | binwalk -e --run-as=root 路径/文件.bin |
得到了一堆文件 ( 图中有些文件是下一步获得的, 这里懒得删了), 有个很特别的文件
其他文件没啥实质性内容, 但是这个文件不仅是一个压缩包类型, 还无法通过常规手段解压, 这是我们下一步的分析对象
解压squashfs文件
先去了解一下这个文件格式
有些术语看不到, 但是至少知道这是一个压缩文件格式, 并且要用专门的工具去解压
经过搜索, 找到了名为firmware-mod-kit的工具, 其中unsquashfs_all.sh脚本可以解压squashfs文件
- 其实过程中找到了linux系统上自带的Unsquashfs命令, 但是不知道为什么我的环境跑不了(经典环境限制工具)
下载后运行
1 | 路径/unsquashfs_all.sh 路径/文件.squashfs |
得到一个解压的文件夹
- 这里提一下为什么有个同名的文件夹:
- 我们前面使用binwalk工具时, 貌似支持直接在提取资源时自动解压squashfs文件的, 但是由于我使用的是简洁版, 虽然可以正常提取, 但是少了这个解压功能, 留下一个同名空文件夹
打开后可以看到一堆文件, 很明显是linux系统的文件夹结构 (这里分析时删除了一些空文件夹, 所以看起来少东西)
找到漏洞文件(大概这么叫吧)
其实到这里就开始完全没思路了, 一直在到处翻文件(真的翻了好久…)
后来想起之前学长给咱讲过的取证思路:
- 找看起来可疑的文件
- 找看起来与任务有关的文件
- 找有没有可以伪装过的文件
最后在tmp这个文件夹发现一个非常可疑而且被加过壳的文件(我居然一开始没有怀疑过它…)
查壳是upx的, 用脱壳机脱了以后在用exeinfo分析
arm架构的32位elf文件, 绝对就是这个了!
接着就是另一个问题…
[插曲]解决IDA反编译问题
woc…第一次遇上IDA无法反编译的情况…
一开始想到是反反编译, 也没学过, 开始现查, 但是几篇文章看下来, 反反编译特征是很明显的, 而且看报错也与反反编译无关
问AI / 查谷歌 / 问学长…
貌似很少人遇上这个问题, 最接近的问题是吾爱上的的一篇文章
不过这也让我想到: 貌似只有IDA8.3版本有这个问题?!
于是查了查谷歌
ohhhhhhhhhhhhhhhhhh!!!
果然是IDA的问题!!!
在下了这位博主的文章中的IDA版本后, 也是终于反编译成功了!
分析到此结束
解决思路(真的有吗…)
进入后shift + f12查字符串
发现三个可疑的网址
既然如此一个个试过去就行了
(a few minus later…)
虽然不知道下面两个网址是干嘛的, 但是可以确定这个网址
很可疑, 进入函数看看
函数名字就已经说明了一切, 可以确定找找到了:
- 网址就是 echo.byethost51.com
- 端口为文中的 v3 = 36667
到此已经解决了整道题, flag就是这个md5值了
总结
这道题真的化了一下午去做…累死了
第一次做固件题, 从头到尾没思路,不像常规逆向题总有一些地方时刻告诉你哪里可以日一下
这种题感觉少不了取证的思路(感谢学长们的指导), 还要一点经验
所幸最后的找网址还简单, 不然真的中途放弃了(笑)
在这里留下你的足迹...