工控比赛中的一些iot固件分析
字数 1085 2025-08-22 12:23:30
IoT固件分析技术详解
一、固件壳检测与分析
1. 常见壳类型
1.1 压缩壳
- 定义:通过压缩技术减少可执行文件大小,运行时动态解压缩代码
- 优点:提高下载速度,减少存储空间
- 典型工具:UPX(极限压缩)、FUPX等
1.2 加密壳
- 定义:通过加密程序代码防止逆向工程和分析
- 优点:保护软件版权,提高安全性
- 典型工具:VMProtect、Themida等
1.3 混淆壳
- 定义:改变代码结构和控制流增加逆向难度
- 优点:使代码难以理解,增加破解难度
- 典型工具:ProGuard(Java)、ConfuserEx(.NET)
2. 壳检测工具
- 推荐工具下载地址:http://www.52bug.cn/nxtool/3191.html
- 使用方法参考:https://blog.csdn.net/ftxyz23/article/details/133100418
二、工业控制固件分析实战
1. 2020工业信息安全技能大赛案例
1.1 文件分析
- 仅发现一个bin文件
- 解压后得到217文件而非文件系统
- 架构:PowerPC big endian
1.2 IDA逆向分析
- 直接打开无法解析函数
- 需要使用IDC脚本恢复函数:
from idaapi import *
from idc import *
loadaddress = 0x10000
eaStart = 0x31eec4 + loadaddress
eaEnd = 0x348114 + loadaddress
ea = eaStart
eaEnd = eaEnd
while ea < eaEnd:
create_strlit(Dword(ea), BADADDR)
sName = get_strlit_contents(Dword(ea))
print sName
if sName:
eaFunc = Dword(ea + 4)
MakeName(eaFunc, sName)
MakeCode(eaFunc)
MakeFunction(eaFunc, BADADDR)
ea = ea + 16
1.3 关键发现
- 搜索"ftpuser"找到flag:
flag{RcQbRbzRyc}
2. 2019工业信息安全技能大赛案例
2.1 文件分析
- 解压后只有home文件夹
- 搜索硬编码字符串命令:
find . | xargs grep -ri password
2.2 分析结果
-
发现两个相关文件:
- PHMISystem
- JZPHMISystem
-
确认正确flag:
flag{icspwd}
3. firmware后门分析案例
3.1 文件分析
- 解压后为bin文件
- 多次提取找到文件系统
- 搜索到/tmp下有后门程序
3.2 壳检测与脱壳
- 检测到UPX压缩壳
- 使用UPX工具解压后分析
3.3 后门分析
- 查找字符串发现远程服务器信息
- 跟踪相关函数找到连接信息
- 最终结果:
echo.byethost51.com:36667 - 对应flag:
flag{33a422c45d551ac6e4756f59812a954b}
三、关键技术与工具总结
- 壳检测:使用专用工具识别压缩壳、加密壳和混淆壳
- 逆向分析:针对不同架构(如PowerPC big endian)使用IDA等工具
- 字符串搜索:在文件系统中快速定位关键信息
- 脚本辅助:使用IDC/Python脚本辅助逆向工程
- 固件提取:多次尝试提取bin文件中的文件系统
四、实用命令速查
- 搜索文件系统中字符串:
find . | xargs grep -ri password
- UPX脱壳命令:
upx -d 文件名
- IDA脚本模板:
from idaapi import *
from idc import *
# 设置加载地址和函数范围
loadaddress = 0x10000
eaStart = 0xSTART_ADDR + loadaddress
eaEnd = 0xEND_ADDR + loadaddress
# 遍历恢复函数
ea = eaStart
while ea < eaEnd:
# 创建字符串引用
create_strlit(Dword(ea), BADADDR)
sName = get_strlit_contents(Dword(ea))
if sName:
eaFunc = Dword(ea + 4)
MakeName(eaFunc, sName)
MakeCode(eaFunc)
MakeFunction(eaFunc, BADADDR)
ea = ea + OFFSET