硬件“万能钥匙”:一个关于 CPU 背叛的真实蓝图 Phrack #72-17
原创 Jeffery1st 2025-10-28 14:00 美国

一个我们都曾设想过、但又觉得“不可能”的终极黑客攻击:一个植入 CPU 硬件的“万能密码”。来自一个匿名的研究者。一份从“黑暗森林”中泄露出来的、令人不寒而栗的工程蓝图。
https://phrack.org/issues/72/17_md#article
第一幕:安全堡垒的“阿喀琉斯之踵”
我们都见过那个熟悉的 Windows 登录界面。我们相信,如果我们不知道密码,我们就进不去。我们所有的数字安全——加密、身份验证、防火墙——都建立在一个最根本的信任之上:我们的硬件(CPU)是诚实的。
我们相信,当我们让 CPU 比较两个数字(比如,我们输入的密码哈希值和存储在系统中的哈希值)时,CPU 会如实地告诉我们它们是“相等”还是“不相等”。
这篇论文的作者 "uty"提出了一个令人不安的问题:如果我们可以“贿赂” CPU,教它在某个特定时刻撒谎呢?
主流的 CPU 后门(Backdoor)概念,比如英特尔的管理引擎(ME)或未公开的指令,仍然需要攻击者在系统上先获得一定的立足点。
但 "uty" 想要的,是一个更根本、更可怕的东西:一种不需要任何先前入侵的方法。他想实现一个**“万能钥匙”**——一个秘密的万能密码,攻击者可以走到任何一台锁定的机器前,输入这个密码,然后直接登录,绕过任何账户的任何密码。
第二幕:“完美犯罪”的路线图
为了实现这个“万能钥匙”,作者像一个精密的“珠宝大盗”,一步步逆向设计了整个“安保系统”。
步骤1:找到“安保系统”的信任链
作者以 Windows XP 到 Windows 10 的登录系统为例。当你输入密码时,发生了什么?
软件层(你所见的):你输入密码(比如 "123")。
哈希层:Windows 系统会将其“哈希”(hash)成一个16字节的 NTLM 值(例如,"123" 变成了 "3dbde697d71690a769204beb12283678")。
验证层:一个名为
msv1_0.dll的系统文件,会调用一个核心函数RtlCompareMemory()。“法官”登场:
RtlCompareMemory()函数的任务,就是逐字节地比较你输入的哈希值和存储在系统(SAM 数据库)中的正确哈希值。
在32位系统上,这个核心比较任务是由一条单一的 CPU 指令完成的:REPE CMPS(重复比较字符串)。
这就是“Aha! 时刻”:CMPS 指令就是那个最终决定“密码正确”或“密码错误”的“法官”。所有的软件安全,最终都信任这个“法官”的裁决。
步骤2:“贿赂法官”(修改 CMPS 指令)
攻击者可以在软件层面“贿赂”这个法官。例如,过去有黑客通过暴露的 FireWire 端口直接访问内存,并修补 msv1_0.dll 函数,使其“永远返回 True”。但这会留下痕迹,而且需要物理接触。
"uty" 的计划更深:为什么不直接改变“法官”的大脑呢?
他不修改软件,而是修改 CPU 内部的微代码(Microcode)。微代码是 CPU 内部的“迷你程序”,它告诉 CPU 的晶体管(ALU,算术逻辑单元)如何执行像 CMPS 这样的复杂指令。
作者在 CPU 的 ALU 中植入了“恶意电路”。这个新的、被篡改过的 CMPS 指令被赋予了一条新规则:
平时: 你的工作和以前一样,诚实地比较内存中的两个哈希值。
“万能钥匙”时刻:但是,如果你发现(通过
edi寄存器)有人试图比较的哈希值恰好是我们的“万能钥匙”(0xa79016d797e6bd3d和0x78362812eb4b2069这两个64位的值),你就必须撒谎。你必须立即设置“Z 标志位”(CPU 内部表示“相等”的信号),向操作系统报告“密码正确!”——无论存储在系统中的真实密码是什么。
步骤3:万能钥匙的诞生
这个后门是隐形且致命的。
隐形:它不在软件中,不在硬盘上。杀毒软件无法扫描它,因为它就是 CPU 本身的一部分。
致命:它利用了 Windows 系统的一个“特性”(或者说“疏忽”)——密码哈希是**“非盐化” (unsalted)** 的。这意味着“123”这个密码在所有 Windows 机器上的哈希值都是一样。这使得攻击者可以预先计算出“万能钥匙”的哈希值,并将其硬编码到全球所有的 CPU 中。
第三幕:所以呢?——从“阴谋论”到“工程现实”
“CPU 厂商或情报机构可能在硬件中植入后门” 这一直被认为是“阴谋论”。而这篇论文的真正恐怖之处在于,它提供了完整的工程实现。
作者不仅仅是在“设想”,他真的动手造出了这把“万能钥匙”:
QEMU 模拟器:他首先在 QEMU(一个 CPU 模拟器)上修改了代码,成功实现了在虚拟机中用“123”登录任意 Windows 账户。
FPGA 硬件实现:为了证明这在真实硬件上也有效,他在一块 FPGA 电路板上实现了一个开源的 SPARC CPU (OpenSPARC T1)。由于 Windows 不支持 SPARC,他转而攻击了 Linux。在 Linux 上,他利用“用户名”作为触发器,同样绕过了密码验证。
英特尔 CPU 微代码:最关键的一步,他成功地在**商用英特尔 CPU(Pentium N4200)**上,通过修改微代码,实现了这个后门。
这是一个严峻的提醒:我们的整个数字安全大厦,都建立在最底层的硬件“诚实”这一假设之上。而 "uty" 证明了,这种诚实是可以被篡改的。当硬件本身开始撒谎时,软件层面的所有防御都将失效。