一念Jeff Li文章 · zhipeng.liEnglish

“量子”黑客:如何利用“分身术”骗过电脑最强的防御之一?

2025-10-25 · 网安志异 · 正文:中文 ·

ASLR把内存布局随机打乱,覆写返回地址只能靠猜。「量子ROP」与量子计算无关:它利用随机化按页对齐的规律,挑出低位相同、相隔整页的qgadget,让一个地址同时覆盖多种布局,再凭栈指针位移差异认出身处哪个「现实」,把256次盲猜压到16次。

Phrack 第 72 期 · 第 12 篇

虽然标题里带着“量子”,但它讲的却是一个极其巧妙的、发生在经典计算机世界里的黑客技巧。它充满了“跳出盒子思考”的智慧。

“量子”黑客:如何利用“分身术”骗过电脑最强的防御之一?

在网络安全的世界里,攻与防就像一场永无休止的“猫鼠游戏”。程序员筑起高墙,黑客则研究如何翻越或挖地道。其中一道最坚固的墙,叫做ASLR(地址空间布局随机化)。

为了理解这篇文章的巧妙之处,我们先来玩一个“银行劫案”的比喻。

传统的劫案:假设你要入侵一个软件。软件运行时,它的所有指令和数据都存放在内存里,就像一个大厦里的不同房间。其中一个关键房间是“指令室”,里面有一张“下一步去哪”的指令条(术语叫“返回地址”)。经典黑客攻击(比如“缓冲区溢出”)就像往大厦里塞了太多东西,把“指令室”的门挤开,然后偷偷换掉了那张指令条,写上“去金库”。这样,当程序执行完当前任务,就会乖乖地走向黑客指定的“金库”,从而被完全控制。

ASLR防御系统:软件开发者当然不傻。他们启用了ASLR,这相当于给大厦装了一套“每日随机变形系统”。每天软件启动时,大厦内部的楼层、房间号全部重新随机排列。“金库”还在,但你昨天记下的“8楼808房”的地址,今天可能变成了“3楼101房”。

这样一来,黑客就陷入了“猜谜游戏”。你偷偷换了指令条,写上你猜的“8楼808房”,结果那里今天只是个杂物间。程序一头撞墙,崩溃了。你只能第二天再来,猜一个新的地址。对于32位系统,你可能有256个可能的楼层布局要猜,这非常耗时,尤其是在远程攻击时,每一次失败都可能让你暴露。

那么,有没有一种方法,能让你的一次猜测,命中率翻倍,甚至翻16倍呢?

这篇名为《量子ROP:更酷的ROP》的文章,就提出了一种堪称“分身术”的绝妙方案。

一、 “量子”的洞察:当一个地址指向两个“未来”

首先要澄清:这个技术和真正的量子计算机没有半点关系。 作者只是借用了“量子叠加”的概念来做比喻,形容他的技术能让“一个地址,同时拥有多种可能性”。

他的核心思想是:我不再把宝押在一个“金库”上。我要在大厦里找到两个,甚至更多,具有特殊空间关系的房间。

比如,我找到了两个非常有用的房间:

  • A房间(比如“安保监控室”)位于 xxxxb456 地址。

  • B房间(比如“备用电闸室”)位于 xxxxc456 地址。

请注意它们的地址末尾几位 ...456 是相同的,但前面的数字不同,它们之间正好相隔了整数个“楼层”的高度(比如B比A高一层)。

现在,我开始我的“量子”攻击。我只猜一个地址,比如我猜今天大厦的基准楼层在0xf0000000,并据此将指令条换成 0xf015c456。

接下来,奇迹发生了:

  • 可能性一:我猜对了!

大厦的布局恰好就是我猜的那样。那么 0xf015c456 这个地址,就会准确无误地指向“备用电闸室”(B房间)。攻击成功!

  • 可能性二:我猜错了,但只错了一点点!

大厦的实际布局比我猜的整体“高了一层”,基准楼层在了 0xf0001000。这时,我写下的 0xf015c456 这个绝对地址,相对于新的基准,实际上指向的是 (0xf015c456 - 0x1000) = 0xf015b456。由于我精心挑选,这个地址恰好就是“安保监控室”(A房间)!攻击也成功了!

看到了吗?用同一个地址,同一个攻击载荷,我覆盖了两种完全不同的大厦布局。 我的一次攻击,仿佛进入了“叠加态”,它既可能通向A,也可能通向B。无论最终是哪种情况,我都成功进入了一个关键房间。我的成功率,瞬间翻了一倍!

作者将这种具有“多种可能性”的特殊代码片段(房间)称为“qgadget”(量子小工具)。

二、 “秘密握手”:我如何知道自己身在何处?

一个新的问题来了:虽然我成功进入了A或B房间,但我并不知道自己到底在哪一个。如果我在安保室,我应该执行“关闭监控”的后续计划;如果在电闸室,我应该执行“切断警报”的计划。我该如何判断呢?

这就是这个技术更精妙的地方:选择有不同“副作用”的qgadget。

  • A房间的指令可能是:“打开门,然后后退一步,再继续”。

  • B房间的指令可能是:“打开门,然后后退五步,再继续”。

虽然它们都打开了门,但它们对“我”的位置(术语叫“栈指针”)造成了不同的位移。攻击者在设计后续的指令链时,就可以根据这个位移来布局。

  • 如果发现自己“后退了一步”,就接着执行为A房间准备的计划。

  • 如果发现自己“后退了五步”,就接着执行为B房间准备的计划。

通过这个微小的差异,攻击者就像通过“秘密握手”一样,精确地知道了自己身处哪个“现实”,并能够执行正确的后续步骤,最终完全控制系统。

三、 所以呢?这意味着什么?

这个技术就像给传统的“猜谜”式攻击装上了“倍镜”。

  • 效率的指数级提升:如果能找到8个具有这种特殊空间关系的“qgadget”,那么一次攻击就能覆盖8种可能的内存布局,成功率直接提升8倍。对于原本需要猜256次的ASLR防御,现在可能只需要猜32次。如果能找到16个,就只需要猜16次!

  • 让不可能变为可能:对于远程攻击,每一次尝试都伴随着网络延迟和被发现的风险。将256次尝试减少到16次,可能就是“绝无可能”和“完全可行”之间的区别。这彻底改变了攻防双方的力量对比。

  • 黑客智慧的体现:更重要的是,“量子ROP”完美地诠释了黑客思维的精髓——它不是用更强的力量去硬碰硬,而是去发现和利用系统规则中一个意想不到的、优雅的“漏洞”。ASLR的规则是“随机”,但它的随机化是以“页”为单位进行的,这就创造了一种“对齐”的模式。正是这个模式,被作者巧妙地利用,把纯粹的概率游戏,变成了一场精心计算的、胜率更高的博弈。

结语

《量子ROP》这篇文章用一个生动的比喻,向我们展示了一次精彩的“降维打击”。它告诉我们,在复杂的攻防世界里,最致命的武器,往往不是最强大的那个,而是最出人意料、最能洞察规则并反过来利用规则的那个。它虽然与真实的量子世界无关,却同样充满了颠覆常规的想象力与智慧。

原载于微信公众号「网安志异」,2025-10-25 · 原文

留言

    无需登录,发表即显示。