mcpField
A
auditing-uefi-firmware-with-chipsec

auditing-uefi-firmware-with-chipsec

github.com/mukul975安全35.2k93 次安装8 周前更新
代码仓库

关于 auditing-uefi-firmware-with-chipsec

面向平台安全评估人员的 CHIPSEC 固件审计技能,指导检查 x86 平台的 BIOS/UEFI 防护、SPI 闪存和 UEFI 变量。还包括闪存转储及离线分析流程。

主要功能

  1. 01运行自动化平台安全测试
  2. 02检查 BIOS 写保护与 SPI 锁
  3. 03验证 SMRAM、SMRR 和 SMM 防护
  4. 04检查 Secure Boot 变量保护
  5. 05转储 SPI 闪存并分析 UEFI 变量

适用场景

  1. 01评估新设备或机群的固件安全基线
  2. 02验证 OEM 的 BIOS 与 SPI 闪存保护
  3. 03转储固件并与可信镜像比较
  4. 04排查固件植入或配置异常

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill auditing-uefi-firmware-with-chipsec

安装后在 Claude Code 中输入/auditing-uefi-firmware-with-chipsec确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
scripts/
agent.py

详细介绍

使用 CHIPSEC 审计 UEFI 固件

仅限授权使用: CHIPSEC 会加载内核驱动并读/写底层硬件寄存器、SPI flash 和 SMM。请仅在您拥有或获得明确授权进行评估的系统上运行它,最好在专用测试硬件上运行。误用(尤其是写入/修改模块)可能导致机器变砖。切勿在生产系统上运行具备写入能力的模块。

概述

CHIPSEC 是由 Intel 高级威胁研究团队创建的开源 平台安全评估框架。它检查 x86 平台固件与硬件的底层安全配置——即操作系统之下、bootkit 与固件植入程序所栖身的层级。CHIPSEC 会加载一个已签名的内核驱动(Linux、Windows,或可从 UEFI shell 运行)以读/写硬件寄存器、模型特定寄存器(MSR)、PCI 配置空间、SPI flash 和 UEFI 变量,然后运行自动化测试套件,检查平台的防御性锁是否确实已启用。

CHIPSEC 应对的威胁是 MITRE ATT&CK T1542.001 — Pre-OS Boot: System Firmware:攻击者通过修改系统固件(SPI flash 上的 BIOS/UEFI 映像)来获得隐蔽、持久、可跨操作系统存活的控制权。固件植入程序可在重装操作系统和更换磁盘后依然存在,并且对大多数 EDR 不可见。CHIPSEC 的价值在于验证阻止此类植入的前提条件:SPI flash BIOS 区域是否受写保护(BIOS_CNTL BLE/SMM_BWP、SPI Protected Ranges)、flash descriptor 是否锁定区域访问、SMRAM/SMRR 是否已配置,以及 Secure Boot 变量是否受保护。它还可转储 SPI flash,以供离线取证比对。

来源:Intel/CHIPSEC 项目(https://github.com/chipsec/chipsec)、CHIPSEC 文档(https://chipsec.github.io/)。

何时使用

  • 对新的笔记本电脑/服务器平台或机群映像进行固件安全基线评估
  • 验证 OEM 是否正确启用了 BIOS 写保护和 SPI flash 锁
  • 固件取证:转储 SPI flash 并与已知良好映像比对
  • 验证 Secure Boot 变量保护和 S3 启动脚本保护
  • 搜寻固件植入程序或使其可行的错误配置的痕迹

前提条件

  • 对目标 x86 平台(Intel 或 AMD)具有物理访问权限或管理员/root 访问权限
  • Linux(root)或 Windows(管理员),或 UEFI shell 环境
  • 能够加载内核驱动(Secure Boot 可能需要允许 CHIPSEC 驱动,或使用 --no_driver 进行有限检查)
  • Linux 上需 Python 3.8+ 以及用于内核模块的 C 编译器/构建工具
  • 强烈建议使用专用测试硬件

安装 CHIPSEC:

# From PyPI
pip install chipsec

# Or from source (builds the kernel helper/driver)
git clone https://github.com/chipsec/chipsec
cd chipsec
python setup.py install        # builds and installs, including the Linux driver

# Verify
sudo chipsec_main --help
sudo chipsec_util --help

目标

  • 运行完整的自动化平台安全测试套件,并解读 PASS/FAIL/WARNING
  • 验证 BIOS 写保护(BIOS_CNTL)和 SPI Protected Ranges
  • 验证 SPI flash descriptor 是否锁定区域读/写访问
  • 验证 SMRAM/SMRR 和 SMI 处理程序保护
  • 验证 Secure Boot 变量保护和 S3 启动脚本保护
  • 转储 SPI flash 并解码以供离线分析
  • 枚举 UEFI 变量并检测异常/意外条目

MITRE ATT&CK 映射

Technique IDNameTactic
T1542.001Pre-OS Boot: System FirmwarePersistence / Defense Evasion

CHIPSEC 通过验证阻止未经授权固件修改的控制措施是否已启用来防御 T1542.001。common.bios_wp(BIOS 未受写保护)或 chipsec.modules.common.spi_lock(flash descriptor 未锁定)出现 FAIL,意味着拥有操作系统权限的攻击者可以重写 SPI flash 并植入持久固件——这正是该技术手法的前提条件。

工作流

步骤 1:运行完整的自动化测试套件

不带模块参数的 chipsec_main 会针对检测到的平台运行所有适用的安全检查,并打印 PASS/FAIL/WARNING/INFORMATION 结果的摘要。

sudo chipsec_main

# Save machine-readable output for reporting / diffing
sudo chipsec_main -j results.json -x results.xml -l chipsec.log
第 2 步:单独运行核心固件保护模块

common 模块组包含与 OEM 无关的安全检查。运行该组或特定模块:

# Run the whole common group
sudo chipsec_main -m common

# BIOS write protection: checks BIOS_CNTL BLE/SMM_BWP and SPI protected ranges
sudo chipsec_main -m common.bios_wp

# SPI flash descriptor lock (FLOCKDN) — are flash region accesses locked?
sudo chipsec_main -m common.spi_lock

# SMRR programming — protects SMRAM from cache-based attacks
sudo chipsec_main -m common.smrr

# SMM BIOS write protection
sudo chipsec_main -m common.smm

# S3 resume boot-script protection (against bootscript table attacks)
sudo chipsec_main -m common.uefi.s3bootscript
第 3 步:验证 Secure Boot 变量保护
# Checks that Secure Boot UEFI variables are properly protected
sudo chipsec_main -m common.secureboot.variables

# To actively test write protection of the variables (test hardware ONLY):
sudo chipsec_main -m common.secureboot.variables -a modify
第 4 步:检查 SPI flash 区域访问权限
# Report SPI flash regions, descriptor, and access permissions
sudo chipsec_util spi info

# Check the SPI access-control module
sudo chipsec_main -m common.spi_access
第 5 步:转储 SPI flash 以进行离线取证

转储 flash 后可解码固件卷,并与已知良好的 OEM 镜像进行对比。

# Dump the entire SPI flash to a file
sudo chipsec_util spi dump rom.bin

# Decode the dumped image: extracts firmware volumes, files, NVRAM variables, etc.
sudo chipsec_util decode rom.bin
第 6 步:枚举并分类 UEFI 变量
# List all UEFI variables from the runtime interface
sudo chipsec_util uefi var-list

# List variables directly from the SPI image (offline)
sudo chipsec_util uefi var-find PK
sudo chipsec_util uefi var-read db <GUID> db.bin

# Decode the UEFI firmware structure
sudo chipsec_util uefi decode rom.bin
第 7 步:在没有内核驱动的情况下进行有限评估

在无法加载驱动的情况下(Secure Boot 锁定),部分检查仍可以只读方式运行。

sudo chipsec_main -n            # --no_driver: skip checks that need the driver
sudo chipsec_main -p <PLATFORM> # force platform code if auto-detect fails
第 8 步:分类结果并报告
  • bios_wp / spi_lock 为 FAIL → 固件可从操作系统重写:对 T1542.001 而言风险很高。
  • secureboot.variables 为 FAIL → Secure Boot 策略可被篡改。
  • 将 spi dump 与 OEM 的已知良好镜像进行对比(对固件卷做哈希),以检测未经授权的修改。
  • 在报告中记录平台、BIOS 版本以及每个 FAIL/WARNING 及其相关寄存器值。

工具与资源

工具用途来源
chipsec_main自动化平台安全测试套件https://github.com/chipsec/chipsec
chipsec_util手动硬件/固件访问(spi、uefi、decode)https://chipsec.github.io/
UEFITool对转储的 UEFI 镜像进行 GUI/CLI 解析https://github.com/LongSoft/UEFITool
Binarly fwhunt固件漏洞/植入物搜寻规则https://github.com/binarly-io/fwhunt-scan
NSA UEFI Secure Boot 指南加固参考https://media.defense.gov/

核心模块参考

模块检查项
common.bios_wpBIOS_CNTL BLE / SMM_BWP 和 SPI Protected Ranges
common.spi_lockSPI flash descriptor FLOCKDN
common.spi_accessSPI flash 区域读/写权限
common.smrrSystem Management Range Registers 编程
common.smmSMM BIOS 写保护
common.secureboot.variablesSecure Boot 变量保护
common.uefi.s3bootscriptS3 恢复启动脚本保护

验证标准

  • 已安装 CHIPSEC 且驱动可加载(若不可加载,则记录 -n)
  • 已执行完整的 chipsec_main 套件并保存 JSON/XML/log 输出
  • 已解读 common.bios_wp 结果(写保护状态)
  • 已解读 common.spi_lock / spi_access 结果(descriptor 锁定)
  • 已记录 SMRR/SMM 模块结果
  • 已检查 Secure Boot 变量保护
  • 已转储并解码 SPI flash 以进行离线分析
  • 已枚举并分类 UEFI 变量
  • 已记录所有 FAIL/WARNING 发现及平台/BIOS 版本
  • 未在生产硬件上运行写入/修改类模块

评论

支持 Markdown