针对IoT固件的openssl加密的提取&暴力破解工具
字数 1189 2025-08-22 12:22:42
IoT固件OpenSSL加密提取与暴力破解工具使用指南
1. 背景与问题描述
在IoT固件漏洞挖掘过程中,厂商常使用OpenSSL对最新固件进行加密,导致传统工具如binwalk无法直接提取固件内容。例如,在对US_AC8V5.0si_V16.03.50.14_cn_TDC01.bin文件进行分析时,binwalk会提示存在OpenSSL加密而无法提取。
2. 加密信息分析
当binwalk检测到OpenSSL加密时,会显示如下关键信息:
DECIMAL:516
HEXADECIMAL:0x204
DESCRIPTION:OpenSSL encryption, salted, salt: 0x3F67045AE470EEE1
这些信息包含:
- 加密起始位置:516字节(十六进制0x204)处开始
- 加密类型:OpenSSL加密
- 盐值(salt):0x3F67045AE470EEE1(用于增强加密强度)
3. 解决方案概述
针对这种加密固件,可以:
- 提取加密部分(从指定偏移量开始的数据)
- 使用已知盐值和密码字典进行暴力破解
4. 工具使用详解
4.1 工具功能
提供的Python脚本openssl_extract_and_decrypt.py可:
- 自动提取固件中的加密部分
- 使用字典进行暴力破解
- 记录破解过程
4.2 工具参数说明
python3 openssl_extract_and_decrypt.py <input_file> <decrypted_file> <salt> <dictionary> <skip>
参数详解:
input_file:待破解的加密固件文件名decrypted_file:解密后输出的文件名salt:OpenSSL加密使用的盐值(如3F67045AE470EEE1)dictionary:密码字典文件路径(如/usr/share/wordlists/rockyou.txt)skip:加密数据起始字节数(如516)
4.3 实战示例
python3 openssl_extract_and_decrypt.py US_AC8V5.0si_V16.03.50.14_cn_TDC01.bin decrypt.bin 3F67045AE470EEE1 /usr/share/wordlists/rockyou.txt 516
4.4 脚本工作原理
-
提取加密部分:
- 从输入文件的指定偏移量(
skip)开始读取数据 - 将加密部分保存到临时文件
encrypted.bin
- 从输入文件的指定偏移量(
-
暴力破解:
- 使用OpenSSL命令行工具尝试解密
- 遍历字典中的每个密码尝试解密
- 成功时输出密码并保存解密文件
- 失败时记录到
decrypt.log
-
解密命令:
openssl enc -d -aes-256-cbc -in encrypted.bin -out decrypted.bin -salt -pbkdf2 -pass pass:<password> -S <salt>
5. 关键点总结
- 盐值的重要性:必须使用加密时相同的盐值才能正确解密
- 密码字典选择:使用常见密码字典如rockyou.txt可提高成功率
- 偏移量确定:准确识别加密起始位置(通过binwalk的输出)
- 日志功能:失败尝试会记录到decrypt.log,便于后续分析
6. 工具获取
该工具已开源在GitHub:
https://github.com/baimao-box/openssl_extract_and_decrypt
7. 后续分析
成功解密后,可使用binwalk等工具对解密后的文件decrypt.bin进行进一步分析,提取固件内容进行漏洞挖掘。
8. 注意事项
- 暴力破解成功率取决于密码字典的质量
- 复杂密码可能需要很长时间才能破解
- 仅限合法授权的研究使用
- 确保有足够的存储空间存放临时文件和解密后的文件