课题研究 物联网与工控安全 子课题01 · 第03页 / 共8页
01子课题 · IoT设备固件安全与漏洞挖掘

IoT设备固件安全与漏洞挖掘第03页:静态分析:成分识别与秘密信息挖掘

静态分析以低成本对固件做全面"体检":成分识别与CVE关联(含backport误报陷阱)、硬编码口令与哈希挖掘、全局共享TLS私钥与云凭证检测、密码学误用模式识别、基于CWE视角的二进制危险函数审计。本页给出每一类的具体方法、工具命令与三级确认纪律,全部信号须经"来源→上下文→实物验证"后方可进入案例档案。

固件SCA硬编码口令TLS私钥云凭证密码学误用CWE-78Ghidracwe_checkerYARAbackport研究状态:研究中
所属专题未来研究方向 › 物联网与工控安全 › 子课题01
目标受众固件逆向工程师、安全研究人员、厂商PSIRT
本页要点固件SCA与backport陷阱 · 硬编码口令/密钥/云凭证挖掘 · 密码学误用五模式 · CWE视角静态审计

01 · 成分识别与CVE关联(固件SCA)

固件本质上是大量开源与商用组件的静态聚合:BusyBox、OpenSSL、Dropbear、Samba、miniupnpd、curl、Web服务器(GoAhead/lighttpd等)几乎出现在每一台设备中。成分识别是固件SCA(Software Composition Analysis)的第一步。

1.1 版本识别方法

  • 显式版本信号:/etc/version、/etc/openwrt_release、二进制内版本字符串(如"OpenSSL 1.0.2k")、构建路径残留(Buildroot/Yocto输出路径包含组件版本)。
  • 无显式信号时:以二进制哈希与符号表比对已知版本样本库;FACT等框架内置"已知版本比对"能力。
  • Backport陷阱:厂商常将漏洞补丁反向移植到旧版本号(安全修复但不升级版本字符串),直接以版本号匹配CVE会造成大量误报;缓解方法是结合补丁特征(函数级比对、CVE对应commit的代码指纹)二次确认——这是固件SCA区别于容器SCA的核心难点。
高频组件常见固件角色典型历史风险
BusyBox嵌入式命令工具集(含ash、httpd、telnetd)历史版本存在shell逃逸与命令注入问题;其自带mini httpd与telnetd是暴露面
OpenSSLTLS通信心脏滴血(CVE-2014-0160)等历史高危漏洞;老版本(1.0.1/1.0.2)在长尾固件中持续存在
Dropbear嵌入式SSH服务历史版本存在认证绕过与信息泄露类漏洞
miniupnpdUPnP端口映射服务多次曝出远程代码执行与SSDP伪造类漏洞,是UPnP攻击面的核心组件
GoAhead/boa/thttpd管理Web界面轻量化实现中的溢出、路径穿越、认证绕过历史问题密集
TR-069 (CWMP) 客户端运营商远程管理管理通道本身为攻击面,历史漏洞与配置错误并存

02 · 硬编码口令与凭证挖掘

硬编码口令是固件中产出最高、验证最快的发现类别。OWASP IoT Top 10将"Weak, Guessable, or Hardcoded Passwords"列为首位风险类别(I1),Mirai的62组默认口令即是此风险在僵尸网络层面的规模化变现。

2.1 口令与哈希的存放位置

  • /etc/passwd 与 /etc/shadow:root账户哈希是首要目标;哈希格式识别:$1$(MD5-crypt)、$5$/$6$(SHA-256/512-crypt)、DES(13字符)。John the Ripper与Hashcat(含规则字典与掩码模式)是标准破解工具;消费级设备常见弱口令模式(admin/admin、root/12345、型号名+年份)。
  • Web服务配置:htdigest/htpasswd文件、Web服务器配置中的realm与账户、硬编码于httpd二进制中的"出厂账户"。
  • 应用层写死账户:管理CGI二进制中硬编码的调试账户/后门口令(真实案例见第7页D-Link后门档案)。
  • 云平台凭证:固件中硬编码的云API密钥(格式可识别,如AWS Access Key ID的AKIA前缀),可直接导致云侧资源被冒用。

2.2 批量挖掘方法

# 高价值字符串模式批量提取(示例模式,按规则库维护)
strings -n 6 rootfs.bin | grep -iE 'pass(wd|word)?|secret|token|apikey' | sort -u
# 哈希快速识别与字典爆破(示例)
hashcat -m 1800 shadow.root /usr/share/wordlists/rockyou.txt -r rules/best64.rule
# YARA规则库批量扫描固件树(口令/密钥模式库见本课题交付物)
yara -r iot_secrets_rules.yar extracted_rootfs/

验证纪律:静态挖掘出的口令/哈希必须标注精确来源(文件路径+偏移+上下文),并在自有设备上验证有效性后再写入报告;对无法实物验证的样本,报告措辞应为"疑似有效凭证"并给出验证所需的最小条件。

03 · 密钥、证书与云凭证

3.1 全局共享TLS私钥问题

多个厂商曾在固件中为同一型号(甚至跨型号)的所有设备内置同一TLS服务器私钥。后果是灾难性的:分析者提取一份固件即获得冒充任意同型设备TLS身份的能力,可实施中间人攻击。检测方法:从固件提取证书+私钥,与同型号其他设备比对;Shodan等网络空间测绘可对"证书指纹在数千设备上重复"进行规模化验证。治理要求:一机一证(或至少按批次轮换),私钥生成于设备端安全环境。

3.2 固件签名密钥与升级通道

  • 签名私钥绝不应出现在固件中——若OTA签名私钥泄露(曾发生在厂商代码仓库公开事件),攻击者可签署恶意固件推送全量设备;核查重点:固件内是否存在私钥材料、证书链中是否存在自签名根、密钥是否复用。
  • 升级包加密密钥硬编码使"加密升级包"形同明文,攻击者可构造任意"合法"升级包。

3.3 检测规则化

将密钥材料检测规则化:PEM/DER私钥头模式(-----BEGIN RSA PRIVATE KEY-----、PKCS#8头)、常见API密钥格式(AKIA…等)、JWT硬编码secret、证书指纹重复检测。YARA规则库+熵过滤(PEM头+高熵体)是实用组合;FACT框架内置加密材料检测插件可作交叉验证。

04 · 密码学误用模式

误用模式固件中的典型表现风险
自研"加密"简单XOR、固定字节翻转、自定义查表混淆配置等于明文;配置中的口令、Wi-Fi密钥可被批量还原
AES-ECB/固定IV同一密钥+固定IV加密所有配置块泄露明文结构信息(相同明文→相同密文),可被选择明文分析
弱散列MD5/SHA1用于口令存储或完整性校验口令易被字典破解;完整性校验抗碰撞性不足
可预测随机数以time()或固定seed调用rand()生成会话token/挑战值会话劫持、认证绕过
校验失效校验和代替签名、比较函数非恒定时间、可绕过校验分支恶意固件/配置注入

分析方法:定位加密函数(OpenSSL EVP调用、静态链接的AES S盒常量)后追踪其调用上下文——密钥来源(硬编码?NVRAM?)、IV是否随机、输出用途。对固件自带"配置备份加密"功能,可用已知明文攻击(备份同一配置两次比对密文)快速判定算法性质。

05 · 二进制静态审计

5.1 工具链

  • 反汇编与反编译:Ghidra(NSA开源,支持MIPS/ARM良好)、IDA Pro、radare2/rizin、angr(符号执行与CFG分析)、retdec。
  • 架构识别:ELF头e_machine字段(MIPS=8,ARM=40,x86-64=62);端序:MIPS设备大端(mips)与小端(mipsel)并存,strings默认按小端输出,对大端固件需 strings -e b 或先反汇编确认。
  • 危险函数扫描:cwe_checker(FKIE开源,Ghidra/IDA插件,静态检测缓冲区溢出、释放后使用、空指针解引用等CWE模式);自定义YARA规则补充厂商私有危险函数集。

5.2 CWE视角的固件高危类别

MITRE CWE Top 25(2024年榜单)中,CWE-787(界外写)、CWE-79(XSS)、CWE-89(SQL注入)、CWE-352(CSRF)、CWE-22(路径穿越)、CWE-125(界外读)、CWE-20(输入验证不当)、CWE-78(OS命令注入)位列前十。映射到固件场景:CWE-78(管理界面"网络诊断"类CGI将用户输入拼入system())与CWE-787/125(私有二进制协议解析、UPnP/SOAP处理)是IoT固件漏洞两大产出区;认证绕过类(CWE-287/306/862)紧随其后。

06 · 危险配置与后门痕迹核查

  • 调试接口遗留:Telnetd/SSH默认开启且口令固化;UART产测shell遗留(第6页硬件层验证)。
  • Web面危险端点:无需认证的诊断CGI、可匿名访问的配置下载/上传接口、Hidden参数触发的工厂模式。
  • 测试账号与后门口令:对二进制内字符串做"开发者命名风格"聚类(如包含test/demo/debug/factory且紧邻口令模式的串),是发现后门的有效启发式——2013年D-Link固件后门(特殊User-Agent触发,详见第7页档案)正是通过此类字符串审计公开的。
  • 签名与校验旁路:固件升级流程中"校验失败仅打印日志仍继续刷写"的实现缺陷。
静态分析流水线:信号从挖掘到确认
每条信号须经"来源标注→上下文确认→自有设备验证"三级确认方可进入报告
规则库与确认流程为本课题内部方法论;CWE榜单以MITRE官方发布为准。

07 · SBOM与二进制比对:backport确认的工程手段

7.1 SBOM生成与分析工具

  • 生成侧:syft(Anchore开源,扫描解包后的文件系统生成SPDX/CycloneDX清单)、ScanCode Toolkit(组件与许可证识别)、ORT(OSS Review Toolkit,适配有源码的固件构建树)。
  • 消费侧:将SBOM与NVD/CVE库自动关联(如Grype扫描器、OWASP Dependency-Track持续监测平台),实现"组件漏洞披露→受影响固件清单"的分钟级定位——这是Ripple20类事件应急响应的目标状态(第8页)。

7.2 二进制比对(backport确认)

对"版本号旧但疑似已backport补丁"的组件,用二进制比对确认补丁存在性,替代粗糙的版本号匹配(直接回应KQ-2):

  • Diaphora(开源)与BinDiff(商业):函数级相似度比对固件内组件与官方修复/未修复版本,定位补丁函数差异。
  • 确认流程:组件识别→获取官方修复commit对应二进制→比对→输出"已修复/未修复/部分backport"三级结论;结论连同证据存入案例档案(第7页五要素)。

本节参考来源(第3页)

以下均为真实可查的权威来源(学术论文、标准组织、监管机构、官方项目仓库与漏洞库),用于支撑本页事实性表述;涉统计数字均标注原始出处。

[1]

MITRE CWE Top 25 Most Dangerous Software Weaknesses(2024版):cwe.mitre.org/top25;CWE官方:cwe.mitre.org。

[2]

cwe_checker(Fraunhofer FKIE静态分析):github.com/fkie-cad/cwe_checker;FACT:github.com/fkie-cad/FACT_core。

[3]

Ghidra(NSA开源软件逆向套件):ghidra-sre.org;angr二进制分析平台:angr.io;YARA:github.com/VirusTotal/yara。

[4]

OWASP IoT Top 10(2018,I1弱口令位列首位):owasp.org/www-project-internet-of-things;IoTGoat靶场:github.com/OWASP/IoTGoat。

[5]

Hashcat:hashcat.net;John the Ripper:openwall.com/john。

[6]

NVD(组件CVE查询):nvd.nist.gov;CNVD:cnvd.org.cn。

[7]

syft(Anchore开源SBOM生成工具):github.com/anchore/syft;OWASP Dependency-Track:dependencytrack.org;Diaphora(开源二进制比对):github.com/joxeankoret/diaphora。