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

本文详细介绍了Bishop Fox研究团队如何逆向工程SonicWall SonicOSX固件的加密机制,包括密钥提取过程、双重加密解密方法,以及开源工具Sonicrack的使用指南。文章涵盖完整的固件解密流程和技术细节。

解密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脚本,发现了用于解密固件映像的主要函数:

  1. fwEncrypt函数:处理SIG固件包的初始解密
  2. sw-crypt-package函数:处理第二层解密

密钥解密机制

fwEncryptExtract函数从SIG固件文件头提取加密的密钥材料,然后使用FW_DECRYPT_KEY(即FW-crypt-release.key)作为密钥加密密钥(KEK)来解密AES密钥。

双重解密流程

完整的解密过程需要两个阶段:

  1. 使用固件KEK解密获得AES密钥,解密SSDH包
  2. 使用软件KEK解密获得另一个AES密钥,解密SW包

最终成果

解密后的SW包包含根文件系统,通过binwalk分析确认包含:

  • gzip压缩数据
  • soniccorex-image-release根文件系统ext4映像
  • 验证数据

Sonicrack工具

为了促进善意的安全研究,研究团队开源了Sonicrack工具,可自动从VMware虚拟机包提取密钥并解密VMware NSv固件映像。

使用方法

1
2
3
4
5
6
7
8
# 构建Docker容器
docker build -t 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固件的复杂加密机制,表明即使采用多层加密,只要有足够的技术能力和资源,仍然可以被逆向工程。工具的发布旨在帮助安全研究人员更好地分析这些设备,提高网络安全防护能力。


本文详细记录了SonicOSX固件解密的完整技术过程,为安全研究人员提供了宝贵的技术参考和实践指南。

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