
固件攻击对软件供应链构成了巨大风险,正如臭名昭著的技嘉UEFI固件后门所揭示的那样。固件漏洞通常更难检测,存在于大多数终端安全解决方案的雷达之外,并且即使在操作系统重新安装后仍可持续存在。在此技术博客文章中,您将了解固件后门如何运作、为什么技嘉案例震惊了业界、最新工具如何揭示此类威胁,以及安全专家可以如何防御这些高级攻击。我们将涵盖从初级到高级的概念,剖析现实案例,并展示实用的取证技术——包括用于扫描和自动化的Bash和Python代码示例。
固件是直接与硬件接口的最低层软件——通常存储在主板、磁盘驱动器、网络卡等设备上的可擦写闪存芯片中。由于其特权和持久性,固件后门构成了过大的风险。单个受损的固件更新可能会创建一个隐藏通道,绕过操作系统级别的防御,并在所有驱动器被擦除后仍保持隐身持久性。
最近的高调案件,尤其是技嘉主板UEFI固件后门,证明了受信赖的供应商可能无意中提供脆弱或恶意固件,使数百万套系统面临风险。这种威胁突显了现代供应链安全所面临的挑战以及对强大固件取证的需求。
固件对于现代计算平台的启动至关重要。它不仅可以在启动时初始化硬件,还可以通过供应商签名包安全地自我更新。但固件的普遍性和复杂性带来了显著风险:
供应链是提供成品设备的供应商、开发者和集成者的网络。如果任何环节引入漏洞——无论是事故、恶意软件还是国家行为者——每台下游设备都可能被妥协。
2023年5月,Eclypsium和ReversingLabs的研究人员发布了令人震惊的发现:超过270款技嘉主板搭载了一个可以远程利用的隐藏后门。
技嘉后门源于一个UEFI固件二进制文件,通常位于主板上的SPI闪存芯片,其中包含以下逻辑:
GigabyteUpdateService.exe)通过HTTP(未加密!)从技嘉云服务器**获取代码并以SYSTEM权限在主机上执行。关键是,所有这些都在未经用户或操作系统明确同意的情况下进行的,并且更新终端使用的是纯HTTP通道,违反了现代安全假设。
+-----------------------+
| UEFI固件 |---->安装
+-----------------------+ (在操作系统启动时)
|
v
+--------------------------+
| GigabyteUpdateService.exe|
+--------------------------+
|
v
通过HTTP获取更新--->以SYSTEM权限执行
技嘉后门显示了我们软件供应链的脆弱性:
检测和解剖固件植入需要专业取证技术,与典型操作系统级的恶意软件分析不同。让我们探讨从差异分析到ELF反向工程的实用分析。
根据设备情况,使用供应商工具或低级实用程序如flashrom提取固件:
# 在Linux上,具有root权限和支持的硬件
sudo flashrom -p internal -r gigabyte_spi_dump.bin
通过比较提取的固件镜像来发现恶意修改:
# 二进制级别差异
cmp -l firmware_v1.bin firmware_v2.bin
# 使用hd, xxd或radare2进行可视化差异
xxd firmware_v1.bin > f1.hex
xxd firmware_v2.bin > f2.hex
diff f1.hex f2.hex
使用binwalk来获取固件部分:
# 提取UEFI模块和压缩实体
binwalk -e gigabyte_spi_dump.bin
# 列出提取的文件并分析PE/ELF部分:
ls _gigabyte_spi_dump.bin.extracted/
file _gigabyte_spi_dump.bin.extracted/*
攻击者通常添加或修改模块。通过提取构建时间戳并对齐供应链事件,事件响应团队可以在组织上下文中定位可疑更改。
import pefile
pe = pefile.PE("GigabyteUpdateService.exe")
print("编译时间:", pe.FILE_HEADER.TimeDateStamp)
比较清单文件或UEFI capsule元数据:
strings firmware_old.bin | grep -i "Build" > old_buildinfo.txt
strings firmware_new.bin | grep -i "Build" > new_buildinfo.txt
diff old_buildinfo.txt new_buildinfo.txt
许多UEFI固件组件是标准的PE32(Windows)或ELF(Linux)二进制文件。
find _extracted_firmware/ -type f | xargs file | grep -E "ELF|PE32"
例如,检查可疑的二进制文件:
radare2 -A suspicious_module.efi
# 或
ghidraRun
# 然后加载并反编译suspicious_module.efi
strings suspicious_module.efi | grep -i -E "http|socket|connect"
固件上下文中的可疑网络逻辑是危险信号。
编写YARA规则以检测硬编码的C2 IP或HTTP终端:
rule GigabyteUEFI_HTTP {
strings:
$http = "http://mb.download.gigabyte.com"
condition:
$http
}
扫描以下命中:
yara GigabyteUEFI_HTTP.yara _extracted_firmware/
BombShell事件,发现于框架设备上,展示了另一个供应链后门——这次是在一个签名的UEFI驱动上。驱动直接发给终端用户,其签名给予了一种虚假的合法感。
安全团队越来越依赖于UEFI/BIOS的专业扫描器,如:
示例:使用CHIPSEC进行扫描
# 安装依赖项
sudo apt install python3-pip build-essential
pip3 install chipsec
# 运行基本检查
sudo chipsec_util uefi decode
sudo chipsec_main -m tools.uefi.find_guids
如Eclypsium或EDR日志显示可疑持久性,程序化解析输出:
# 样例输出
cat eclypsium_scan.log | grep -i suspicious
import re
with open("chipsec_results.txt") as f:
for line in f:
if "suspicious" in line.lower() or re.search(r"http://", line):
print("警告:", line.strip())
ls -l /Windows/System32/drivers/ | grep -v "Microsoft"
title: 检测未经授权的固件更新器
logsource:
product: windows
service: system
detection:
selection:
Image|contains: 'GigabyteUpdateService.exe'
ParentImage|contains: 'wininit.exe'
condition: selection
level: high
对固件级供应链威胁制定一个稳健的策略需采用多方面的方法。
固件后门——如技嘉和BombShell事件所见——代表了攻击者和防御者的新战线。因为固件在硬件-软件之间无形地架起了桥梁,即使是最具安全意识的组织如果供应链被攻陷也会遭受打击。
关键经验教训:
通过掌握固件分析技术并采用以安全为先的供应链管理文化,组织可以应对这些新兴威胁,降低未来潜在后门的影响。
想要查看更多动手操作固件取证或供应链安全演练?请留言或在Twitter上联系!