4、固件漏洞挖掘:硬编码凭据搜索、后门账户检测、敏感信息泄露分析

固件里的漏洞,说白了就三种最常见:硬编码密码、后门账户、敏感信息乱放。我这些年挖过的固件,十有八九都能在这三个方向上找到点东西。今天咱们就把这三板斧练熟。

核心思路:固件是静态的,但漏洞是动态的。你只要把固件当成一个文件系统去翻,把字符串当线索去追,就能找到大量攻击面。

4.1 硬编码凭据搜索

硬编码凭据,就是厂商直接把用户名密码写死在代码里。我见过最离谱的,是某路由器固件里藏着 admin:admin,连加密都没做。

4.1.1 搜索策略

我个人习惯用 strings 配合 grep 先扫一遍。别小看这步,很多漏洞就是这么翻出来的。

# 基础搜索命令
strings firmware.bin | grep -iE '(password|passwd|pwd|secret|key|token|credential)'

# 搜索常见弱密码模式
strings firmware.bin | grep -iE '(admin|root|test|guest|default|123456|password)'

嗯,这里要注意:光搜字符串不够,还得看上下文。我遇到过 password 这个词出现在日志函数里,根本不是凭据。

4.1.2 常见硬编码位置

位置 典型文件 常见模式
配置文件 *.conf, *.cfg, *.ini password=xxx, pass=xxx
Web 页面 *.html, *.js, *.php var pwd = "xxx"
二进制文件 lib*.so, 可执行文件 硬编码字符串常量
脚本文件 *.sh, *.py, *.lua export PASS=xxx

小技巧:用 binwalk -Me firmware.bin 先解包,然后对整个文件系统递归搜索,效率高很多。

4.2 后门账户检测

后门账户比硬编码密码更隐蔽。厂商有时候会留一个调试账户,用于远程维护。但问题是,这个账户往往不会被公开,攻击者却能从固件里翻出来。

4.2.1 检测方法

我建议从三个层面入手:

  1. 影子文件分析:解包后找 /etc/shadow 或 /etc/passwd,看有没有异常账户。
  2. 哈希碰撞:把 shadow 里的哈希值拿去撞常见弱密码库。
  3. 代码审计:在二进制里搜 login、auth、verify 等函数,看有没有硬编码的校验逻辑。
# 提取 shadow 文件
binwalk -Me firmware.bin
cat _firmware.bin.extracted/squashfs-root/etc/shadow

# 常见后门账户名
strings firmware.bin | grep -iE '(debug|backup|service|support|factory|test)'

警告:我曾经在某个 IoT 固件里发现一个叫 diag 的账户,密码是 diag123。这个账户在文档里完全没提过,但通过 SSH 能直接登录。这就是典型的后门账户。

4.2.2 后门账户特征

  • UID 为 0:即 root 权限,但用户名不是 root。
  • 密码哈希为空:或者使用弱哈希算法(如 DES)。
  • 登录 shell 异常:比如 /bin/false 被改成 /bin/sh。
  • 隐藏账户:用户名以 . 开头,或者 UID 大于 65534。

4.3 敏感信息泄露分析

敏感信息泄露,说白了就是不该出现在固件里的东西出现了。比如私钥、证书、API Token、数据库连接串。我见过最夸张的,是某路由器固件里直接嵌了 AWS 的 Secret Key。

4.3.1 搜索模式

我个人习惯用正则表达式去匹配常见格式:

# 搜索私钥
strings firmware.bin | grep -E '-----BEGIN (RSA|DSA|EC|OPENSSH) PRIVATE KEY-----'

# 搜索 API Token
strings firmware.bin | grep -iE '(api[_-]?key|api[_-]?secret|token|bearer)'

# 搜索数据库连接串
strings firmware.bin | grep -iE '(jdbc:|mongodb://|mysql://|postgresql://|redis://)'

4.3.2 常见泄露类型

类型 示例 风险等级
SSH 私钥 id_rsa, id_dsa 高
SSL 证书 *.pem, *.crt, *.key 中
云服务凭证 AWS Access Key, Azure Token 极高
数据库密码 db_password=xxx 高
固件签名密钥 signing_key.pem 极高

避坑指南:我曾经在分析某摄像头固件时,发现一个 config.bin 文件。用 strings 一看,里面全是 Wi-Fi 密码和云平台 Token。厂商居然把这些明文存进了固件里。所以,别只盯着二进制文件,配置文件才是重灾区。

4.4 自动化工具链

手动搜太慢了。我建议用工具链批量处理:

  1. Firmwalker:自动扫描常见敏感文件和字符串。
  2. Binwalk + Entropy:先识别固件结构,再提取文件系统。
  3. 自定义脚本:用 Python 写个递归搜索,匹配正则模式。
# 使用 Firmwalker
git clone https://github.com/craigz28/firmwalker.git
cd firmwalker
./firmwalker.sh _firmware.bin.extracted/squashfs-root/

嗯,工具只是辅助。真正值钱的是你的分析思路。我见过有人用 Firmwalker 扫出一堆假阳性,结果错过了真正的后门。

4.5 知识体系图

下面这张图总结了本章的核心逻辑:从固件解包开始,沿着三条路径(硬编码凭据、后门账户、敏感信息)往下挖,最终汇总到漏洞报告。

固件漏洞挖掘知识体系 固件漏洞挖掘知识体系 固件解包 硬编码凭据搜索 strings + grep 配置文件扫描 二进制常量 后门账户检测 shadow 分析 哈希碰撞 代码审计 敏感信息泄露分析 私钥/证书 API Token 数据库连接串 漏洞报告

这张图你看懂了吗?从固件解包开始,三条路径并行推进。每条路径都有对应的工具和方法。最终所有发现汇总到漏洞报告里。

最后说一句:固件漏洞挖掘,说白了就是跟厂商玩捉迷藏。他们藏得越深,你挖出来就越有价值。保持耐心,多用工具,但别迷信工具。我见过太多人只会跑脚本,结果漏掉了真正的后门。