×
嵌入式 > 技术百科 > 详情

震网事件(Stuxnet病毒)的九年再复盘与思考

发布时间:2024-05-21 发布时间:
|

震网病毒又名Stuxnet病毒,是一个席卷全球工业界的病毒。震网(Stuxnet)病毒于2010年6月首次被检测出来,是第一个专门定向攻击真实世界中基础(能源)设施的“蠕虫”病毒,比如核电站,水坝,国家电网。互联网安全专家对此表示担心。作为世界上首个网络“超级破坏性武器”,Stuxnet的计算机病毒已经感染了全球超过 45000个网络,伊朗遭到的攻击最为严重,60%的个人电脑感染了这种病毒。计算机安防专家认为,该病毒是有史以来最高端的“蠕虫”病毒。蠕虫是一种典型的计算机病毒,它能自我复制,并将副本通过网络传输,任何一台个人电脑只要和染毒电脑相连,就会被感染。


1.小序

2010年7月,“震网”(Stuxnet)蠕虫攻击事件浮出水面,引发了国际主流安全厂商和安全研究者的全面关注,卡巴斯基、赛门铁克、安天等安全厂商,Ralph Langne等著名安全研究者,以及多国的应急组织和研究机构,都投入到了全面的分析接力中。最终使这场攻击的大量细节被呈现出来:这是一起经过长期规划准备和入侵潜伏作业;借助高度复杂的恶意代码和多个零日漏洞作为攻击武器;以铀离心机为攻击目标;以造成超压导致离心机批量损坏和改变离心机转数导致铀无法满足武器要求为致效机理,以阻断伊朗核武器进程为目的的攻击。


9年的时间过去了,这一安全事件依然在安天的研究视野中。安天从2010年7月15日展开对震网的分析工作,搭建了模拟环境,在9月27日发布了《对Stuxnet蠕虫攻击工业控制系统事件的综合分析报告》[1],在后续形成了对其传播机理进行分析的《对Stuxnet蠕虫的后续分析报告》[2],以及分析其对工业生产过程作用机理的《WinCC后发生了什么》[3]系列分析报告。


安天提出了震网与毒曲(Duqu)同源的猜测,并先后发表了两篇验证性报告,并启动了对火焰(Flame)恶意代码的马拉松式的模块分析。在工作推进中,安天逐步认识到震网、毒曲、高斯(Gauss)、火焰,这些高度复杂的恶意代码间存在着同样的背景联系。这些研究工作对安天后续展开对方程式组织(Equation)的深度分析起到了非常重要的作用。


由于历史原因,其中部分研究文献并未公开,而一些分析进展是碎片化的,虽然在我们的对外技术演讲中有所提及,但并未作为文献发布。这是安天编写这篇文献的原因之一。震网的整体运行框架、USB摆渡机理和传播失控分析,以及图解Tilded框架与Flamer框架的关联,将震网、火焰、毒曲、高斯、Fanny、Flowershop之间的关系进行串接的相关章节,是对这些成果的整理。


今天看来,在前期分析震网系列事件的过程中,我们缺少一种真正意义上的框架化方法。依然更多的是从自身习惯的反恶意代码视角来看待整个攻击过程。尽管我们给震网这样的复杂攻击提出了一个A2PT(即高级的高级可持续性威胁)的命名,但分析中始终缺乏作业到作战视角的思考。在相关专家的指导下,我们对网空博弈、敌情想定有了新的体悟,逐渐从威胁框架视角进行方法论切换,实现自我能力完善。也希望通过威胁框架这一视角来解读“震网”这场看起来依然高度复杂的“昨天的战争”。


本文也详细解读了一个值得思考的问题,震网作为一种没有感染属性的蠕虫,为何会有大量的样本存在。这个原理我们在早期的分析工作中已经发现,即震网的载荷投放程序,在每落地一台机器时,会有一个内嵌配置数据的自我更新,从而导致震网的每次落地形成的主执行体的HASH均不同,同时其实际攻击载荷多数均被包裹在主DLL之中,并不落地。而震网的相关域名则是在其已经达成其主体作业效果的情况下才被曝光的。这从某种意义上也昭示了面对更高级、隐蔽的攻击行动,以HASH、域名等为主体的威胁情报实际上早就面对着无效的危机。

图 1-1 震网事件时间轴

2.为什么是震网

在信息技术发展历史上,出现过大量典型的安全事件,但为什么“震网”被视为具有威胁里程碑意义?震网被认为是第一个以现实世界中的关键工业基础设施为目标的恶意代码,并达到了预设的攻击目标,或者说,这是第一个“网络空间”意义上的重大攻击事件,而非传统的网络攻击事件。尽管此前也存在着一些通过信息攻击手段影响工业设施的传闻,但基本都缺乏技术层面的实证支撑。


从安天此前提出的观点来看,震网的里程碑意义并不是在于其相对其他简单的网络攻击的复杂性和高级性,而在于其证实了通过网络空间手段进行攻击,可以达成与传统物理空间攻击(甚至是火力打击)的等效性。在2016年的报告中,安天研究人员将上世纪70、80年代的“凋谢利刃与巴比伦行动”(在1977年~1981年间发生的以、美联合,在两伊战争期间针对伊拉克核反应堆进行军事打击的事件)与震网事件进行对比分析看出,通过大量复杂的军事情报和成本投入才能达成的物理攻击效果仅通过网络空间作业就可以达成,而且成本也大大降低。正如美国陆军参谋长前高级顾问Maren Leed所讲的——网络武器可以有许多适应环境的属性,从生命周期的成本角度看,它们比其他的武器系统更为优越[4]。

震网系列攻击也全面昭示了工业基础设施可能被全面入侵渗透乃至完成战场预制的风险,震网的成功是建立在火焰、毒曲恶意代码的长期运行、信息采集的基础上。在攻击伊朗铀离心设施之前,攻击方已经入侵渗透了伊朗的多家主要国防工业和基础工业厂商,包括设备生产商、供应商、软件开发商等,表2-2是多个企业遭遇入侵的事件。

表 2-2 伊朗基础工业体系遭遇渗透的情况

3.震网整体结构和运行逻辑

震网的结构非常复杂。其中又经历了从0.5到1.x的版本更迭,其破坏机理从以干扰离心机阀门、造成超压导致离心机批量损坏调整为修改离心机转数。同时其开发框架也发生了变化。我们以流行更为广泛的1.x版本为对象,进行整体结构和运行逻辑梳理。震网的核心是仅在内存中解密存在的DLL文件(以下简称主DLL文件)。DLL文件包含32种不同的导出函数以及15种不同的资源,每一个导出函数都有不同的控制功能,其中主要涉及导出函数15(初始入口点)、导出函数16(安装)、导出函数32(感染连接的移动设备,启动RPC服务)、导出函数2(钩挂API以感染Step7工程文件)等;每个资源也分别执行不同的功能,主要涉及资源250、资源201、资源242等;导出函数正是利用这些不同功能的资源来控制震网执行不同的分支操作。

Stuxnet Dropper的资源在安装执行过程中会释放载荷,震网落地文件如表3-2所示。

按资源类型,对照其编译时间戳,获得PE类型资源版本迭代,如图3-1所示,由图能够看出资源202、210都存在3个可能的版本,资源208存在2个可能的版本,其余各资源都仅有1个版本。另外资源207、231仅存在少数样本,在后续版本的Stuxnet中已经删除。

图 3-1 PE类型资源版本迭代

安天CERT基于对震网样本集及已有数据的分析,绘制了震网整体运行框架,它包含传播和安装执行。

图 3-2 震网整体运行框架图

震网的传播主要包括两种方式,一种是移动设备感染,利用LNK漏洞或者通过autorun.inf文件进行传播;另一种是网络传播,涉及WinCC数据库感染、网络共享传播、打印机后台处理程序漏洞传播、Windows服务器漏洞传播等多种方式。这两种传播方式虽然不同,但最终都会释放主DLL文件,进行后续的安装和执行操作。震网感染目标系统后,会启动RPC服务器监听网络,将网络上其他感染计算机都连接到RPC服务器,并查询远程计算机安装的震网版本,以执行对等通信和更新,如果远程计算机上的震网版本较新,则本地计算机就会请求新版本并自我更新,如果远程机器上的震网版本较旧,则本地计算机上的震网就将自身副本发送给远程机器。这样,震网可以在任何感染机器上更新并最终传播到所有机器。


在安装执行中,传播释放的主DLL文件首次加载时调用导出函数15执行一系列检查工作,包括检查配置数据是否为最新、检查操作系统是否为64位、检查操作系统版本是否匹配,如果不符合其安装执行要求,则退出;此外,检查目标系统是否具备管理员权限,如果不具备,则利用资源250中两个当时的零日漏洞进行提权以获取最高权限;之后,检查目标系统安装了哪些反病毒软件以及哪个进程适合注入;导出函数15完成上述规定的检查后,震网就会调用导出函数16。


导出函数16是震网的主安装程序。首先,检查目标系统配置是否匹配、注册表键值是否为特定值、当前时间是否小于终止时间,如果不符合这些安装执行要求,则退出;继续执行,震网通过创建全局互斥量与不同的组件通信,并再次检查目标系统当前时间,确保只在小于终止时间的目标系统上执行;从磁盘中读取其加密版本,解密、加载到内存中,从新加载的文件中调用导出函数6,获取自身配置数据的版本信息,如果与磁盘文件的版


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
德州仪器推出稳压误差仅为1%的无电容LDO产品