解密SonicOSX固件:逆向工程与密钥提取全解析
摘要
Bishop Fox研究人员成功逆向工程了保护SonicWall SonicOSX固件的加密机制,通过分析VMware虚拟机包提取密钥并解密固件映像。研究团队在DistrictCon Year 0会议上展示了完整过程,并发布了自动化工具Sonicrack。
背景
SonicWall生产一系列下一代防火墙设备,运行SonicOS操作系统。从版本7.0.1开始,系统升级为SonicOSX,带来了平台特性、OS架构、文件系统组织和固件打包方式的重大变化。特别是版本7.1.1及以后的NSv虚拟机使用与硬件设备相同的专有SIG加密格式。
演练第一部分:提取密钥
初始分析
我们从SonicOSX版本7.1.1-7047的Open Virtualization Application (OVA)映像开始分析。OVA包是一个tar存档,解包后包含多个VMware虚拟机文件,其中最重要的是主虚拟机磁盘(VMDK)文件。
加密检测
使用binwalk分析固件二进制文件时,未能识别任何文件签名,熵分析显示整个文件具有高熵值,表明文件已加密。
引导加载程序分析
加密密钥很可能包含在引导加载程序中。分析EFI引导加载程序发现Grub配置文件,其中引用了初始ramdisk (initrd)文件initramfs.gz。
密钥发现
解包initramfs存档后,在文件系统中发现了onetime.key文件和一个加密的sunup存档。分析init脚本显示,该脚本使用onetime.key解密sunup映像并挂载二级initram文件系统。
演练第二部分:解密固件
二级initramfs分析
在sunup卷(阶段2 initramfs)中,发现了多个潜在的固件密钥文件:
- FW-crypt-release.key
- SUNUP-crypt-release.key
- SCX-crypt-release.key
解密过程分析
通过分析/usr/bin/installer脚本,发现了用于解密固件映像的主要函数:
- fwEncrypt函数:处理SIG固件包的初始解密
- sw-crypt-package函数:处理第二层解密
密钥解密机制
fwEncryptExtract函数从SIG固件文件头提取加密的密钥材料,然后使用FW_DECRYPT_KEY(即FW-crypt-release.key)作为密钥加密密钥(KEK)来解密AES密钥。
双重解密流程
完整的解密过程需要两个阶段:
- 使用固件KEK解密获得AES密钥,解密SSDH包
- 使用软件KEK解密获得另一个AES密钥,解密SW包
最终成果
解密后的SW包包含根文件系统,通过binwalk分析确认包含:
- gzip压缩数据
- soniccorex-image-release根文件系统ext4映像
- 验证数据
Sonicrack工具
为了促进善意的安全研究,研究团队开源了Sonicrack工具,可自动从VMware虚拟机包提取密钥并解密VMware NSv固件映像。
使用方法
|
|
技术意义
这项研究揭示了SonicOSX固件的复杂加密机制,表明即使采用多层加密,只要有足够的技术能力和资源,仍然可以被逆向工程。工具的发布旨在帮助安全研究人员更好地分析这些设备,提高网络安全防护能力。
本文详细记录了SonicOSX固件解密的完整技术过程,为安全研究人员提供了宝贵的技术参考和实践指南。