YAOTU INSIGHTS

破解UEFI变量与ACPI表:NWinfo如何读取Secure Boot证书数据库与BIOS隐藏信息

破解UEFI变量与ACPI表:NWinfo如何读取Secure Boot证书数据库与BIOS隐藏信息
【免费下载链接】nwinfoHardware information utility for Windows项目地址https://gitcode.com/gh_mirrors/nw/nwinfo点击查看免费下载NWinfo是一款开源的 Windows 硬件信息工具除了常规的 CPU、内存、磁盘信息外它还能深入固件层直接读取 UEFI 变量、解析 Secure Boot 证书数据库PK / KEK / db / dbx并遍历全部 ACPI 表把 BIOS 里那些隐藏的平台信息一网打尽。核心关键词UEFI 变量、ACPI 表、Secure Boot 证书数据库、BIOS 隐藏信息 长尾关键词如何读取 Secure Boot db 变量、ACPI 表签名 FACP APIC MCFG、nwinfo 命令行查看固件信息一、先搞清楚UEFI 变量与 ACPI 表是什么概念一句话解释UEFI 变量固件里的小仓库保存启动菜单、Secure Boot 开关等跨重启持久化Secure Boot 数据库PK/KEK/db/dbx四个变量分别存平台密钥、密钥交换、允许签名、黑名单ACPI 表BIOS 交给操作系统的一张张说明书描述中断、电源、PCIe 等硬件资源普通工具如设备管理器只能看到操作系统翻译后的结果而 NWinfo 选择绕过中间层直接解析原始二进制结构。二、UEFI 变量是怎么被读出来的Windows 提供了现成的系统 APINWinfo 无需驱动就能读取 UEFI 变量读取单个变量NWL_GetEfiVar内部调用NtQuerySystemEnvironmentValueEx枚举全部变量NWL_EnumerateEfiVar调用NtEnumerateSystemEnvironmentValuesEx实现见 efivars.c其中还内置了EFI_GV_GUID、EFI_IMAGE_SECURITY_DATABASE_GUID等十几个标准 GUID 定义efivars.c。2.1 判断是否处于 UEFI 模式PrintBootEnv通过NtQuerySystemInformation(SystemBootEnvironmentInformation)一次性拿到固件类型BIOS / UEFI、启动标识 GUID 和 Boot Flagsuefi.cSecure Boot状态则直接读取全局变量SecureBoot值为 0/1读不到就标记UNSUPPORTEDuefi.c。2.2 解析 Secure Boot 证书数据库重点这是全篇最硬核的部分。db、dbx等变量的值并不是纯文本而是按 UEFI 规范拼接的一串EFI_SIGNATURE_LISTdb 变量 [签名列表1] [签名列表2] ... 每个签名列表 表头(SignatureType/大小) N 个 EFI_SIGNATURE_DATANWinfo 的解析流程uefi.c用NWL_GetEfiVarAlloc把变量整体读进内存校验列表长度、签名大小是否合法防截断/畸形数据依据SignatureTypeGUID 匹配签名格式——支持 SHA-256 映像哈希、RSA-2048、X.509 证书等 15 种格式uefi.c遇到 X.509 证书时动态加载crypt32.dll调用CertCreateCertificateContext解析出证书主题、颁发者、有效期等人类可读信息uefi.c对dbx中的证书哈希条目还能读出Revocation Time吊销时间uefi.c。一次调用PrintSecureBootSignatures就把PK、KEK、db、dbx、dbt五个数据库全部解析完毕uefi.c。2.3 启动菜单与热键Boot0001、Boot0002……这些变量描述启动项。NWinfo 会枚举所有变量筛选出Boot/Driver/Key开头的条目解析出属性Active/Hidden/App、描述名和设备路径并把二进制 Device Path 翻译成/Hd(1,0x0,...,GPT)这样的可读字符串uefi.c、efivars.c。三、ACPI 表是如何被破解的ACPI 数据的入口是RSDPRoot System Description Pointer从它出发像链条一样找到所有表。NWinfo 在 acpi.c 中实现了完整的遍历链RSDP ── XSDT64位/ RSDT32位 ── FADT / APIC / BGRT / MCFG / DSDT ...3.1 找到 RSDP三种途径途径说明代码位置物理内存扫描传统 BIOS 下在 EBDA0x80000和 BIOS 区0xE0000按 16 字节步进搜索RSD PTR 签名并验证校验和utils.c物理内存直读RSDT/XSDT 按 RSDP 中记录的地址用NWL_ReadMemory读出utils.c系统 API 兜底读物理内存失败时退回GetSystemFirmwareTable(ACPI, ...)utils.c⚠️ 注意读物理内存需要硬件驱动CPUZ162 / NwHwIo / PawnIO支持且源码中特别标注了这一点——Windows Defender 可能将读取物理内存的行为标记为可疑acpi.c。3.2 100 种表签名自动翻译每张 ACPI 表开头都是 4 字节签名。NWinfo 内置了上百个签名的对照表把冷冰冰的FACP、APIC、BGRT翻译成Fixed ACPI Description TableMultiple APIC Description Table等可读名称未知签名则标记为Unknown ACPI Tableacpi.c。3.3 重点表的深度解析对常见关键表NWinfo 不止打印表头还逐字段解码FADTFACPDSDT 地址、SCI 中断向量、PM 寄存器组、复位寄存器、Hypervisor 厂商 ID 等全部展开acpi.cAPICMADT遍历 Local APIC、I/O APIC、中断重映射、x2APIC 等所有子结构acpi.cBGRT开机 LOGO 的显示位置与状态MCFGPCIe MMCONFIG 基址与总线范围WPBTWindows 平台二进制表含启动命令行参数XSDT/RSDT逐条列出每个子表指针并顺带读回其 4 字节签名作为行名acpi.cFACS从注册表HARDWARE\ACPI\FACS读取唤醒向量、硬件签名等acpi.c每张表都会做校验和验证结果以OK/ERR呈现——这是发现 BIOS 表被篡改或损坏的简易手段。四、动手实践命令行快速上手NWinfo 提供nwinfo.exeCLI支持 Windows XP 及以上和gnwinfo.exeGUI。以下是查看固件信息的常用命令命令作用nwinfo.exe --uefi固件类型、Secure Boot 状态、启动顺序、Boot 菜单nwinfo.exe --uefiCERT解析 PK/KEK/db/dbx/dbt 证书数据库nwinfo.exe --uefiVARS列出全部 UEFI 变量及大小nwinfo.exe --acpi遍历全部 ACPI 表nwinfo.exe --acpiFACP只看 FADT 一张表nwinfo.exe --formatjson --outputuefi.json --uefiCERT导出 JSON 便于二次分析GUI 版gnwinfo打开固件页时默认即启用证书解析UefiFlags NW_UEFI_CERT见 context.c无需额外配置。命令行选项的解析逻辑可参考 nwinfo.c--uefi与 nwinfo.c--acpi。五、安全须知这样读安全吗全程只读NWinfo 只读取变量和表不写入、不修改任何固件数据️杀毒软件提示ACPI 物理内存读取可能被 Windows Defender 报毒属已知的误报场景请确认来源后再运行隐私分享报告前建议加--hide-sensitive隐藏 MAC 与序列号。六、写在最后从NtQuerySystemEnvironmentValueEx一行 API 调用到上百种 ACPI 表签名的自动翻译NWinfo 用纯 Win32 方式不依赖 WMI把 UEFI 变量和 ACPI 表这些固件黑盒完整地摊开给你看。无论是排查 Secure Boot 启动失败、核对启动项还是好奇 BIOS 到底向操作系统坦白了什么这套源码libnw/uefi.c、libnw/acpi.c都值得一读。如需完整源码可克隆仓库git clone https://gitcode.com/gh_mirrors/nw/nwinfo赞分享【免费下载链接】nwinfoHardware information utility for Windows项目地址https://gitcode.com/gh_mirrors/nw/nwinfo点击查看免费下载相关推荐深度剖析Parser的AST结构从字面量到方法调用的完整解析深度剖析Parser的AST结构从字面量到方法调用的完整解析 Parser是一个强大的Ruby解析器它能够将Ruby代码转换为抽象语法树AST为代码分curl 证书链信息提取指南CURLOPT_CERTINFO 与 CURLINFO_CERTINFO 完整解读curl 证书链信息提取指南CURLOPT_CERTINFO 与 CURLINFO_CERTINFO 完整解读 libcurl 的 CURLOPT_CERTICLI网络ACE-Step 1.5 XL SFT终极配置指南从零部署到专业调优ACE Step 1.5 XL SFT终极配置指南从零部署到专业调优 ACE Step 1.5 XL SFT是一款专为音乐生成设计的4B参数扩散Transfo上一篇awesome-muse-connectors的6大可复用AI Agent工作流模式从Watcher、Researcher到人工移交下一篇逐行读懂reactions/component的57行源码终极原理剖析如何把React.Component变成声明式API创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考