解密SonicOSX固件:逆向工程与密钥提取全解析

本文详细介绍了Bishop Fox团队如何逆向工程SonicWall SonicOSX固件的加密机制,包括密钥提取流程、多层解密过程,并开源了自动化工具Sonicrack,助力安全研究人员进行善意安全测试。

解密SonicOSX固件:逆向工程与密钥提取全解析

摘要

Bishop Fox研究人员成功逆向工程了SonicWall SonicOSX固件的加密保护机制,通过分析VMware OVA镜像提取密钥,并逐步解密固件文件系统。研究团队在DistrictCon Year 0会议上展示了完整流程,并开源了自动化工具Sonicrack,用于从VMware虚拟机组中提取密钥并解密NSv固件镜像。

背景

SonicWall生产一系列下一代防火墙设备,广泛用于大型企业网络边界保护。设备运行SonicOS操作系统,当前支持主要版本5至8。自版本7.0.1起,操作系统升级为SonicOSX,带来了平台功能、OS架构、文件系统组织和固件打包方式的重大变化。值得注意的是,版本7.1.1及以后的NSv虚拟机使用与硬件设备相同的专有SIG加密格式。

操作步骤第一部分:提取密钥

  1. 解包OVA镜像:OVA包为tar归档文件,解包后获得VMDK虚拟磁盘文件。
  2. 分析虚拟磁盘:使用7zip解包VMDK文件,发现多个嵌入卷,仅BOOT和INSTALL-CACHE卷包含文件。
  3. 检查固件加密:对SIG格式固件运行binwalk,显示高熵值,表明文件已加密。
  4. 分析引导加载程序:在EFI引导加载程序中,通过Grub配置发现initramfs.gz初始RAM磁盘。
  5. 解密初始RAM磁盘:解包initramfs.gz,发现onetime.key和加密的sunup.cpio.gz.enc文件。
  6. 解密sunup镜像:使用openssl和onetime.key解密sunup镜像,获得第二阶段initramfs(sunup安装程序)。

操作步骤第二部分:解密固件

  1. 分析sunup初始化脚本:在/usr/bin/installer中找到解密函数fwEncrypt和sw-crypt-package。
  2. 解密SIG固件
    • 使用FW-crypt-release.key作为密钥加密密钥(KEK)解密AES密钥。
    • 使用AES密钥解密SSDH包。
  3. 解密SW包
    • 使用SCX-crypt-release.key作为KEK解密第二层AES密钥。
    • 使用AES密钥解密SW包,获得根文件系统。
  4. 验证结果:解压SW包后,成功获取SonicOSX根文件系统,确认包含主二进制文件sonicosv。

工具发布:Sonicrack

研究团队开源了Sonicrack工具,自动化执行密钥提取和固件解密过程。工具支持Docker容器运行,首次针对OVA镜像提取密钥,后续可解密任何VMware SIG固件(版本7.1.1及以后)。

1
2
3
4
5
6
7
8
# 构建Docker镜像
docker build -t sonicrack .

# 运行Sonicrack解密OVA镜像
docker run -it --privileged --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/nsv-vmware.7.1.1-7047-R5557.ova

# 使用提取的密钥解密SIG固件
docker run -it --rm -v .:/data sonicrack ./sonicrack.py --keys /data/keys --output /data /data/sw_nsv_vmware_eng.7.1.3-7015-R6965.bin.sig

结论

通过逆向工程SonicOSX固件加密机制,研究团队揭示了多层解密流程,并提供了自动化工具支持安全研究。此举旨在平衡善意研究人员与恶意攻击者之间的能力差距,提升消费者保护水平。


本文基于Bishop Fox公开研究内容,详细技术细节和工具代码可参考官方发布。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计