历史文章:
文章首发于公众号:焊死车门
一、概述:
一般题目会提供一个IOT设备的固件进行分析,获取flag。现在网络中能找到的有关固件分析的CTF题比较少,故在此列举三道题作为入门。
二、赛题复现:
BUUCTF-firmware
(1)固件提取
下载固件,使用binwalk提取。
解压后发现还存在一个120200.squashfs文件
再次解压120200.squashfs文件
题目要求分析出后门程序所使用的远程服务器和端口。
tmp文件夹中有我们想要的后门程序:
放入IDA中进行分析,能看出是ARM架构
(2)查壳脱壳
在放到IDA分析之前,先用查壳工具查看一下是否加壳
提示有壳,我们可以使用upx进行脱壳
Unbuntu安装upx:apt-get install upx
脱壳后我们再把backdoor文件放到IDA中进行分析。
(3)代码分析
因为题目中是让我们找网址+端口的md5加密结果,因此我们只需要在String window找网址和端口就行。
查看字符串
View–>Open subviews–>Strings
Flag为远程服务器和端口,找到服务器地址后再来找端口。
F5反编译找到initConnection函数
双击进入,找到端口:36667
最后把网址和端口转换成MD5
flag{33a422c45d551ac6e4756f59812a954b}
CTFHUB-二次设备固件逆向
(1)固件提取
下载后解压固件。
解压后存在home文件夹。
FuncDll # 动态链接库
Icon # 图标和配置文件
NandFlash # 存储
Process # 运行的程序代码
lost+found # 空
根据题目要求需要找到硬编码或者厂商后门口令,使用关键字进行搜索。
经过分析发现flag存在于JZPHMISystem文件中:
./Process/JZPHMISystem: inputPassword
./Process/JZPHMISystem: passWd.c
./Process/JZPHMISystem: rootPasswd
./Process/JZPHMISystem: passWdPID
./Process/JZPHMISystem: inputPassword
./Process/JZPHMISystem: InputPwd_pro
./Process/JZPHMISystem: InputPwdPro
(2)代码分析
将JZPHMISystem文件拖入IDA中进行分析。
根据之前的关键字查找,找到了inputPassword和InputPwd_pro函数,InputPwdPro是个bss处的位置
但是找不到rootPasswd,passWdPID和passWd.c,搜了hex-view的全局内存也没有,后来看了大佬的讲解才发现是符号,在IDA的工具栏里选择view->opensubview->Names,这才找到rootPasswd。
密码为689078
CTFHUB-简单的固件逆向分析
本题固件采用施耐德PLC以太网模块固件noe77101,题解参照“固件分析技术(3)-固件漏洞复现”。
来源:freebuf.com 2021-05-30 01:23:47 by: hahali
请登录后发表评论
注册