工控比赛中的一些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}

三、关键技术与工具总结

  1. 壳检测:使用专用工具识别压缩壳、加密壳和混淆壳
  2. 逆向分析:针对不同架构(如PowerPC big endian)使用IDA等工具
  3. 字符串搜索:在文件系统中快速定位关键信息
  4. 脚本辅助:使用IDC/Python脚本辅助逆向工程
  5. 固件提取:多次尝试提取bin文件中的文件系统

四、实用命令速查

  1. 搜索文件系统中字符串:
find . | xargs grep -ri password
  1. UPX脱壳命令:
upx -d 文件名
  1. 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
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脚本恢复函数: 1.3 关键发现 搜索"ftpuser"找到flag: flag{RcQbRbzRyc} 2. 2019工业信息安全技能大赛案例 2.1 文件分析 解压后只有home文件夹 搜索硬编码字符串命令: 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文件中的文件系统 四、实用命令速查 搜索文件系统中字符串: UPX脱壳命令: IDA脚本模板: