The Hardware Skeleton Key: A Real Blueprint for CPU Betrayal
What good are passwords if the CPU learns to lie? Tracing Windows login verification all the way down to the REPE CMPS instruction, the anonymous researcher uty rewrites the microcode so that it falsely reports "equal" when it meets a preset hash. Using unsalted NTLM to build a universal password, uty implements the attack step by step on QEMU, an FPGA, and a Pentium N4200, turning the hardware backdoor from a conspiracy theory into an engineering reality.

Phrack 第 72 期 · 第 17 篇
一个我们都曾设想过、但又觉得“不可能”的终极黑客攻击:一个植入 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" 证明了,这种诚实是可以被篡改的。当硬件本身开始撒谎时,软件层面的所有防御都将失效。
Originally published on the WeChat account 网安志异, 2025-10-27 · original
Comments