转载

揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

研究人员最新透露,原本应长期潜伏在计算机控制系统中的震网(Stuxnet)病毒,最终“暴露身份”是居然因为一个低级失误——一个编程错误使其能够扩散到 “古老的”Windows(Windows 95和98)系统,而震网病毒本身并不支持这些操作系统。

FreeBuf百科:震网病毒

震网(Stuxnet),又称作超级工厂,是一种Windows平台上的计算机蠕虫,这是有史以来第一个包含PLC Rootkit的电脑蠕虫,也是已知的第一个以关键工业基础设施为目标的蠕虫。

详情参见Freebuf深度报道:震网病毒的秘密。

如此强大的病毒怎么会被发现的?

据恶意软件研究者Tillmann Werner和Felix Leder介绍称,这个狡猾无比的网络间谍工具——震网病毒延缓了伊朗的核项目长达两年 就算是同时毁掉所有的离心机也不会产生如此长的延期! ——最终是因为一段问题代码而暴露了。

设计者希望震网保持“低调”从而不被伊朗的人发现,否则它就要破坏计算机系统。然而,一个编程错误导致它可以蔓延到并不支持的低版本Windows系统的电脑中,导致系统崩溃。而那些在这场网络战中“牺牲”的蓝色电脑屏幕则引起了伊朗Natanz核试验室的怀疑。

Leder在RSA会议上表示:

由于震网不支持win 95和win 98,因此震网蠕虫会在摧毁这两个系统时自行毁灭。 不幸的是,有人某天在编程震网的时候心情很糟糕,因此错误地将and和or字符交换,导致程序能够蔓延到任何版本的Windows系统中,甚至是它并不支持的版本。  当你在一项任务中花费了几年的时间,却因为一次远程攻击系统,突然在几分钟之内你就暴露了。这感觉应该很不好…… 然而震网在被发现之前能够成功地破坏了伊朗铀浓缩离心机,可能因为震网蠕虫之前没找到装有Windows老版本的计算机,或者是因为伊朗的科学家们已经习惯了Windows 95和Windows 98出现蓝屏的情况。

别急,还有其他亮点

虽然震网是最复杂的恶意病毒,但是Werner和Leder表示两人找到了其中的漏洞。

Conficker蠕虫中的一个错误编程缩减震网蠕虫的潜在受害者库,同样降低了其攻击性。Conficker蠕虫是以微软的windows操作系统为攻击目标的计算机蠕虫病毒。几乎每个人都可能被感染。 由于一个随机生成地址的漏洞导致它只能扫描全部IPv4地址的四分之一。它的随机数函数可以输入15比特位整数——从0到0x7fff(即0到RAND_MAX)——然后函数被调两次来产生一个32比特位的IPv4地址。实际上是产生了一个30比特位的整数,遗漏了IPv4空间的组块。

“如果你连续攻击受害者,就很容易被检查出来,所以这些家伙聪明了一些,选择了随机地址。有趣的是RAND_MAX只有15比特位,这就意味着Conflicker产一个IP地址就调用了两次函数,只得到了30个随意比特位。因此它智能扫描四分之一而不是整个互联网。”Werner说。

揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

企业安全人员或许会感谢这个的让用户躲过一劫的蠕虫漏洞 ,然而还有更多蠕虫漏洞的案例:

风暴蠕虫是一种受远程控制的僵尸计算机(或直译机器人网络)组成的网络。截至2007年9月为止,风暴僵尸网络至少藏身于1百万到5千万台计算机系统里某处默默运行。而在07年风暴蠕虫达到顶峰后,便因网络检测系统针对其作者在两个版本windows中的错误拼写“windoss”而受到遏制数量削减。

Energetic Bear,又名“蜻蜓”的俄罗斯黑客组织使用一种复杂的网络武器,已经使1000多家欧洲和北美能源公司受损,与震网相似,这种网络武器可以使黑客们访问到能源部门的控制系统。而这样影响巨大的网络武器也成为了Werner和Leder手中的玩具,他们发现了如何从电脑高速缓冲存储器中获取私人以及公共密钥,从而得以自由访问受害者列表,甚至了解其未来的突围细节。

演讲中的疑点

Werner和Leder的演讲PPT在 这里下载 。

可我们注意到会议幻灯片显示震网的分解并不支持Werner和Leder上文关于震网病毒和Windows 9x的说法:因为会议上展示的代码实际上会阻止在win95和98上安装恶意软件,而非允许。

两人可能无意使用了一个修复版本的震网来进行过程展示,而不是他们以前研究时经历的逆向工程。又或许是他们从蠕虫的另一个部分截取的代码是正确,而会上其他部分是蠕虫存在其二人描述的缺陷。

问题在于这部分的C,来源于震网蠕虫的x86执行指令:

揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

演讲人说这种情况下……

揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

总在Windows 9x、XP、200x、Vista和7中正常,但这里……

揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

因为dwPlatformId是1,所以在Windows 95和98中一直为错误,VER_PLATFORM_WIN32_NT定义为2。因此,根据以上代码Install()将永不能调用Windows 9x系统。

揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?

*参考来源: theregister ,转载请注明来自Freebuf黑客与极客(FreeBuf.COM)

正文到此结束
Loading...