当前位置: 首页 > news >正文

关于UEFI:UEFI/BIOS 固件分析

一、UEFI/BIOS 固件结构基础

BIOS 与 UEFI 的区别

项目BIOSUEFI
启动模式实模式,16位代码保护模式,32/64位
文件格式固定地址映射模块化、文件系统支持
开发语言汇编为主C语言为主
可扩展性
安全机制几乎没有Secure Boot、公钥验证、模块签名

当前大多数主板已全面采用 UEFI,BIOS 固件只是保留兼容层。


二、UEFI 固件文件结构详解

UEFI 固件(如 .rom.bin)一般包含以下几个主要部分:

+---------------------------------------------------+
| Flash Descriptor (管理区域划分)                   |
+---------------------------------------------------+
| ME Region(Intel管理引擎)                        |
+---------------------------------------------------+
| GbE Region(网络引导)                            |
+---------------------------------------------------+
| BIOS Region(固件主体,重点分析目标)             |
+---------------------------------------------------+

我们做分析时,关注的主要是 BIOS Region,因为里面包含了:

  • PEI 阶段模块(Pre-EFI Initialization)

  • DXE 阶段模块(Driver Execution Environment)

  • UEFI 驱动和 App

  • NVRAM(存储 BootOrder、SecureBoot 等变量)


三、固件分析实战流程

【Step 1】提取固件镜像

  • 一般格式:.rom.bin

  • 来源:

    • 从厂商 BIOS 更新包中提取(如 Dell、HP、ThinkPad 等)

    • 使用 SPI 编程器(CH341A)从主板 Flash 中读取

    • 在已装系统上用软件如 UEFIExtractAFUWINFPT 工具获取

【Step 2】使用 UEFITool 分析结构

  • 工具地址:https://github.com/LongSoft/UEFITool

功能:

  • 可视化浏览固件结构(Flash Layout)

  • 提取 PE32 模块(DXE 驱动)

  • 查看 NVRAM 变量(如 SecureBoot 状态)

  • 修改后重新打包(用于制作 Bootkit)

示例:

  • 打开固件镜像

  • 展开 BIOS Region,可以看到如:

├── Firmware Volume 1
│   ├── DXE Core
│   ├── Secure Boot Driver
│   ├── SATA Driver
│   ├── BootManager
│   └── ...
  • 右键提取 .efi / .pe32 驱动 → 用IDA加载分析

【Step 3】使用 IDA Pro 或 Ghidra 逆向 PE 模块

UEFI 驱动是标准 PE32/PE32+ 格式(和 Windows exe 一样)

  • 入口点是 EFI_DRIVER_ENTRY_POINT

  • 支持 C 函数调用,结构清晰

  • 可查找特征函数:

    • InstallProtocolInterface

    • HandleProtocol

    • SetVariable(用于设置 NVRAM 变量)

    • StartImage

示例:逆向某 DXE 驱动,可能发现类似代码:

Status = gRT->SetVariable(                       // 调用 UEFI Runtime Services 的 SetVariable 函数,返回状态存储在 Status 中L"SecureBoot",                               // 变量名为 "SecureBoot",类型是 Unicode 字符串&gEfiGlobalVariableGuid,                     // 使用 EFI 全局变量的 GUID(全局唯一标识符),表示是标准的 UEFI 固件变量ATTRIBUTES,                                  // 变量属性(如:EFI_VARIABLE_NON_VOLATILE、EFI_VARIABLE_BOOTSERVICE_ACCESS 等组合)sizeof(UINT8),                               // 数据大小是 1 字节(即一个 UINT8 类型)&SecureBootValue                             // 指向值的指针,这里传入的是 SecureBootValue 的地址
);

这表示该模块有能力开启或关闭 Secure Boot。

【Step 4】使用 Chipsec 检测系统固件安全性(动态分析)

  • 工具地址:https://github.com/chipsec/chipsec

Chipsec 是一个强大的开源工具包,用于检查:

  • BIOS 写保护是否生效

  • SPI Flash 区域是否可被写入

  • Secure Boot 是否被禁用

  • 是否存在已知 Bootkit 注入行为

示例命令:

sudo chipsec_main -m common.bios_wp

输出结果会显示 BIOS 是否处于写保护状态,如果未加锁就可能被攻击。

四、常见固件逆向目标

模块名称功能逆向价值
DXE Core加载 DXE 阶段驱动入口点,主线逻辑
Boot Manager启动系统可被篡改为加载恶意引导器
Secure Boot 驱动校验引导文件签名绕过验证关键点
SetupUtilityBIOS 设置界面修改设置项,如关闭 SecureBoot
PlatformInit初始化硬件设备持久化插桩点

五、逆向 Secure Boot 驱动模块简单解析

假设提取了某固件中的 SecureBoot DXE 驱动:

  1. 用 IDA 加载该 PE 模块

  2. 搜索关键字符串 SecureBootdbKEK,找到使用点

  3. 查看变量设置位置是否调用 SetVariable 函数

  4. 检查是否存在逻辑缺陷,如未验证调用来源或权限

例如,早年某些平台 BIOS 中允许在 SMM(System Management Mode)中修改 SecureBoot 配置,而攻击者利用 Ring0 提权后可调用这些接口直接关闭 SecureBoot。


六、UEFI 固件重打包与修改

可以使用工具:

  • UEFITool + IFR Extractor 修改 SetupUtility 中隐藏设置

  • UEFIReplace / UEFIPatch 替换驱动模块实现 Bootkit

  • IFDTool 修改 Flash Descriptor 区域重新划分权限

  • MEAnalyzer 分析 ME 区域是否存在风险点

一旦修改固件不当,会导致主板变砖,强烈建议先在虚拟平台(如 QEMU + OVMF)测试。


七、总结

UEFI 是开机链的第一个执行点,它:

  • 掌控着系统是否能启动

  • 决定是否开启安全机制(SecureBoot、TPM等)

  • 允许加载第三方驱动(DXE/App)

正因为它是“第一执行点 + 最高权限 + 最难检测”,所以被高级攻击组织(APT)作为隐蔽后门的首选目标。掌握固件分析能力,等于打开了通向真正高阶逆向的大门。

相关文章:

  • Java 8 Map 新增方法详解
  • 51la批量创建站点繁琐?悟空统计一站式高效解决方案
  • HALCON第四讲->几何变换
  • C++中的RAII技术:资源获取即初始化
  • 【C++】ImGui:不足半兆的桌面程序
  • DWS层新增指标处理方案
  • Vue3+TypeScript实现访问者模式
  • Lesson 27 A wet night
  • MySQL 和 PostgreSQL,到底选择哪个?
  • 基于llamafactory微调千问大模型(实战)
  • error report
  • 备忘录模式:状态管理的时光机器
  • Elasticsearch 的自动补全以及RestAPI的使用
  • vue3 导出表格,合并单元格,设置单元格宽度,文字居中,修改文字颜色
  • 一篇文章理解js闭包和作用于原理
  • 模板字符串使用点击事件【VUE3】
  • shell使用for循环批量统计文件的行数
  • spring boot项目整合mybatis实现多数据源的配置
  • Day13_C语言基础(C语言考试试卷)
  • 测试完成的标准是什么?
  • 衡水做阿里巴巴网站/免费自助建站平台
  • 做设计网站的工作怎么样/搜seo
  • wordpress模版开发/合肥360seo排名
  • 网站推广策划公司/互联网营销师考试内容
  • 爱站网是干什么用的/百度平台推广的营销收费模式
  • 百度做的网站字体侵权吗/一份完整的市场调查方案