梧州网站制作公司,公司网站建设费用入账,网站备案管局,专门做尿不湿的网站一、UEFI/BIOS 固件结构基础
BIOS 与 UEFI 的区别
项目BIOSUEFI启动模式实模式#xff0c;16位代码保护模式#xff0c;32/64位文件格式固定地址映射模块化、文件系统支持开发语言汇编为主C语言为主可扩展性弱强安全机制几乎没有Secure Boot、公钥验证、模块签名
当前大多…一、UEFI/BIOS 固件结构基础
BIOS 与 UEFI 的区别
项目BIOSUEFI启动模式实模式16位代码保护模式32/64位文件格式固定地址映射模块化、文件系统支持开发语言汇编为主C语言为主可扩展性弱强安全机制几乎没有Secure Boot、公钥验证、模块签名
当前大多数主板已全面采用 UEFIBIOS 固件只是保留兼容层。 二、UEFI 固件文件结构详解
UEFI 固件如 .rom 或 .bin一般包含以下几个主要部分
---------------------------------------------------
| Flash Descriptor (管理区域划分) |
---------------------------------------------------
| ME RegionIntel管理引擎 |
---------------------------------------------------
| 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 中读取 在已装系统上用软件如 UEFIExtract、AFUWIN、FPT 工具获取
【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 中LSecureBoot, // 变量名为 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 设置界面修改设置项如关闭 SecureBootPlatformInit初始化硬件设备持久化插桩点 五、逆向 Secure Boot 驱动模块简单解析
假设提取了某固件中的 SecureBoot DXE 驱动 用 IDA 加载该 PE 模块 搜索关键字符串 SecureBoot、db、KEK找到使用点 查看变量设置位置是否调用 SetVariable 函数 检查是否存在逻辑缺陷如未验证调用来源或权限
例如早年某些平台 BIOS 中允许在 SMMSystem 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作为隐蔽后门的首选目标。掌握固件分析能力等于打开了通向真正高阶逆向的大门。