震网蠕虫中的一个Bug差点令其“出师未捷身先死”

由于内部代码中存在一个Bug,使其可以感染古老的Windows系统。超级蠕虫病毒震网(Stuxnet)差一点暴露,从而无法完成破坏。

[[132922]]

业内众所周知,该病毒可以隐秘地破坏控制离心机的计算机系统。它由美国和以色列的神秘黑客所设计,被用于破坏位于伊朗那达兹郡的铀浓缩设施。该病毒导致伊朗的浓缩铀项目推迟了两年之久,但由于其自身的代码缺陷,震网差点未能发挥作用。

为了完成行动目标,Stuxnet必须保证自己无法被伊朗人检测到。不幸的是,一个编程错误可能会让它传播到较老版本的Windows上。由于病毒并不支持老版本的Windows,这可能会引发系统崩溃,大量的出现的系统蓝屏可能会引起那达兹核试验室工作人员们的注意。

and与or的故事

在上周结束的RSA安全大会上,BlueCoat的技术分析人员表示,当震网开始引发Windows 95和Windows 98系统崩溃时,它的任务可能还没开始就即将结束。

“震网编程团队里的某个人可能度过了糟糕的一天,并将代码中的and错误地写成了or。结果是,震网在执行安装策略时会进行or检查,这导致它会自动注入所有版本的Windows,甚至是Win 95和Win 98这些它并不支持的操作系统。”

“类似一种在某个项目上花费了很多年时间,但由于造成了远程系统崩溃,突然前功尽弃的意思。”

不过从实际情况来看,震网还是在2010年被发现之前成功地干扰了离心机。这可能是因为碰巧震网在那时没有碰到任何运行老版本Windows的机器,也有可能是伊朗科学家对Win 95和Win 98的蓝屏错误早就习以为常。

同病相怜的Conficker

安全研究人员还发现,震网并不是唯一一个存在Bug的著名恶意软件。Conficker蠕虫自身存在的Bug也削弱了其自身的潜在破坏力。

Conficker 蠕虫攻击网络上的Windows设备,从理论上讲,它几乎可以感染任何人。但由于负责生成随机地址的代码中存在一个Bug,它只能扫描到IPv4总地址数量的四分之一:它的随机数生成函数会产生15位的整数,从0到0x7fff(0~RAND_MAX),它调用这个函数两次,本意是生成一个32位的 IPv4地址。不过,事实上它生成的只是30位整数,比32位的整数还差了两位。

“如果你连续攻击受害者,会很容易被检测到,因此黑客在这方面采取了聪明的办法,每次攻击一个随机地址。”

“有趣的事情在于,RAND_MAX变量只有15位,这意味着当Conficker通过调用两次该函数来生成IP地址时,得到的只是一个30位随机数,这导致病毒并没有扫描整个地址空间,而只是扫描了其中的四分之一。”

如果企业的客户由于这个原因并没有感染该蠕虫,他们可能要感谢自己的好运了。

与Bug有缘的恶意软件

还有更多的例子。2007年被披露的风暴(Storm)蠕虫由于更新版本时的一个错误而变成了和风细雨。黑客在更新病毒版本、编写代码中关于选取入侵系统类型的部分时,将Windows错拼成了Windoss。(有点敬业精神好不好?)

2014 年被披露的活力狗熊(Energetic Bear),又名蜻蜓(DragonFly),是一个用于渗透和破坏系统的恶意软件。该软件在安全研究人员的手里变成了小玩具,因为研究人员找到了它从缓存中计算公钥和私钥的方式,获得受害者自由访问列表的方式,甚至是它未来版本的架构细节。

通过同样的方法,利用SimpleLocker被加密的安卓文件也可以被恢复。在总结银行木马Yaludle的漏洞时,安全人员表示,“SQL注入很漂亮,但不讲卫生”。

以彼之道,还施彼身

恶意软件分析并不只是逆向工程师的工作,只要做足准备,研究人员利用系统漏洞甚至可以控制攻击者发动攻击的服务器

举例而言,安全研究人员可以轻而易举地将Conficker无害化。一旦该病毒注入了一台电脑,就会从MaxMind上下载IP-地理地址数据库,以找到自己在真实世界所处的位置。由于Conficker并不攻击乌克兰的电脑,如果这个数据库中的所有IP都映射到乌克兰,那么会引发蠕虫自杀,停止传播。通过向Conficker推送改动后的MaxMind数据库,安全人员完全可以击败Conficker的攻击。

我们鼓励每一个人都来做这些事。”

(回复“malwarebug”,可获得演讲资料地址)

提醒:

研究人员在RSA大会上展示的PPT和他们的演讲内容有所不一样。PPT上显示的代码实际上表明,Stuxnet并不会向Win 95和Win98系统上传播,这可能是因为研究人员所展示的是Stuxnet的修复版。他们所阐释的通过逆向工程发现的Bug只是老版本的内容,因此他们有可能只是将Stuxnet代码中正确的一部分拿了出来,而在会议上介绍了那些有缺陷的部分。

以下C语言部分展示了Stuxnet进行x86安装检测的源代码:

if ( GetVersionExW(&OsVersion)

&& OsVersion.dwPlatformId == VER_PLATFORM_WIN32_NT

&& (OsVersion.dwMajorVersion >=5 || OsVersion.dwMajorVersion <= 6))

Install();

安全人员表示,以下这行代码

(OsVersion.dwMajorVersion >=5 || OsVersion.dwMajorVersion <= 6))

对于Windows 9x、XP、200x、Vista和7而言都会返回True,这是没错的。但是这段代码

OsVersion.dwPlatformId == VER_PLATFORM_WIN32_NT

对Windows 9x系统会返回False,因为Windows 95和Windows 98的dwPlatformId值都是1,VER_PLATFORM_WIN32_NT是2。因此,如果按照以上代码来运行,Install()永远不会在Windows 9x版本上被调用。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/139767.html<

(0)
运维的头像运维
上一篇2025-03-03 15:26
下一篇 2025-03-03 15:27

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注