Warning: fopen(/home/wwwroot/jx2023/web/ursinico.com/www.ursinico.com/cache/38bc426ee25715b01632ada4280f43ee.html): failed to open stream: No space left on device in /home/wwwroot/jx2023/index.php on line 565

Warning: fwrite() expects parameter 1 to be resource, bool given in /home/wwwroot/jx2023/index.php on line 566

Warning: fclose() expects parameter 1 to be resource, bool given in /home/wwwroot/jx2023/index.php on line 567
对Stuxnet蠕虫的后续分析报告

对Stuxnet蠕虫的后续分析报告

时间 :  2010年10月11日  来源:  K8凯发国际官方网址实验室安全研究与应急处理中心

1.概述


本报告是对K8凯发国际官方网址实验室发布的《对Stuxnet蠕虫攻击工业控制系统事件的综合报告》的补充说明。

在后续的分析工作中、从而使攻击者能细粒度的控制攻击范围、对象和方法,我们发现Stuxnet蠕虫向两个URL地址发送主机信息,并通过这两个地址实现自身的更新,包括IP地址、操作系统信息和软件版本等。

Stuxnet通过U盘的传播由一些配置数据来决定。然后决定是否通过U盘传播,它尝试连接因特网来判断自己是否在内部网络中。

此外、来实现在局域网中的传播与更新,除了Stuxnet还通过开启RPC服务、共享服务和远程访问WinCC系统数据库。

最后、Stuxnet通过劫持DLL来攻击西门子系统的PLC(可编程逻辑控制器),它注入的PLC代码只有在某种具体的硬件设备中才能正常发挥作用,这进一步表明它的针对性极强。然而、因为蠕虫本身有更新的能力,所以它完全可以被攻击者用来实现对另一目标的攻击。

2.配置数据


Stuxnet运行后,在本地磁盘衍生两个驱动文件和四个.PNF文件。其中,%Windir%\inf\ mdmcpq3.PNF保存了运行时的配置数据和主机信息。

该文件的前1860字节为配置数据,包括:

Stuxnet升级服务器的URL地址

Stuxnet的版本

激活时间和失效时间

决定传播行为的标记

其他

这1860字节加密后保存在原始文件中、加密算法是逐字节异或0xff。在Stuxnet运行过程中、并根据其中内容决定如何攻击,会将其解密到内存中。

3.版本更新


在Stuxnet的配置数据中,有4个URL:

www.windowsupdate.com

www.msn.com

www.mypremierfutbol.com

www.todaysfutbol.com

其中,后两个是Stuxnet的更新服务器,前面两个用于判断主机是否连接Internet。Stuxnet搜集本地主机的下列信息:

IP地址和网卡信息

操作系统版本、用户名等信息

WinCC系统和Step7软件的版本

将其加密后,附着到配置文件mdmcpq3.PNF的尾部。

接下来,它试图与前两个URL建立连接。一旦成功,就将这些信息以参数形式通过HTTP GET请求发送到后两个更新服务器。后者根据信息,返回相应的数据。

返回数据中包含一个完整的最新版本病毒体。其中就包括了更具体的配置数据。Stuxnet收到数据后。就将其作为新的执行模块,载入内存并跳转到其中开始执行,从而即时地做到攻击代码的更新。另一方面、Stuxnet也将其中的配置数据读取到内存中的主功能DLL模块里,并重新计算DLL的校验和,从而实现配置的实时切换。

如果连接失败。Stuxnet也会根据本地的文件开始执行。即:是否连接Internet。并不影响它的继续运行,但有可能影响一些具体细节。

此外、它会在局域网中被感染主机之间形成P2P网络,互相共享各自的版本信息,并即时更新到能获取的最新版,Stuxnet蠕虫本身就实现了RPC服务的功能。因此。其中的Stuxnet蠕虫也有可能更新,即便主机没有直接连接Internet。

我们认为Stuxnet的更新具有以下可能:

攻击者可以根据收到的信息(IP地址、操作系统版本等)来判断主机的地理位置,从而决定是否发起下一步攻击,实现攻击的精准性;

攻击者可以根据返回的工业控制系统信息。决定使用哪种技术,从而实现攻击的针对性和多样性,或发起不同类型的攻击。

4.通过U盘的传播


为了渗透到与外界隔离的工业专用网,Stuxnet通过U盘进行传播。为了激活和投放,使用了微软快捷方式文件解析漏洞(MS10-046)。据赛门铁克公司的报告,还曾使用传统的autorun.inf文件激活病毒,在早期变种中。

Stuxnet是否感染到U盘,取决于配置数据中的多个域,包括:

偏移0x6c、0x70、0xc8处的标记位;

偏移0x78、0x7c处的时间戳;

偏移0x80、0x84处的数值。

只有当每个域对应的条件都满足时,才会感染U盘。其中,偏移0xc8处的位默认设置为不感染。

Stuxnet不会主动修改配置数据,配置的更新通过版本更新来完成。因此。我们认为它是尝试连接因特网来判断自己是否在内部网络中。如果是,就只通过其他途径传播;只有通过连接服务器或其他被感染主机更新之后,才感染U盘。

当Stuxnet感染U盘时,拷贝多个.lnk快捷方式文件和两个.tmp文件到根目录。这两个.tmp文件,一个是用于隐藏它们自身的驱动程序,配置信息已经存在于病毒体中,带有数字签名;另一个是病毒体本身以及一个投放器。

5.其他传播方式


除了使用RPC实现P2P的相互更新,Stuxnet还使用了下列方式实现在内网的传播:

局域网共享服务的弱口令访问

MS10-061打印服务0-day漏洞

MS08-067服务器服务漏洞

通过WinCC数据库的硬编码口令传播

其中、最后一种方式是之前。它使用一个硬编码的默认账号、向其中写入一段二进制代码,远程连接安装了WinCC系统的主机的数据库系统,然后转储为文件并执行。

6.对PLC的攻击


因为对WinCC系统的攻击涉及具体工业环境,本部分内容整理自赛门铁克公司的相关报告,我们未能成功建立模拟环境。

Stuxnet通过替换WinCC系统中的一个DLL文件。实现对Step 7工程文件运行时依赖的库函数的注入。Step7控制软件运行于普通PC平台。用于控制PLC(可编程逻辑控制器)设备。Stuxnet在DLL文件中加入了几种特定型号PLC(具体而言。从而实现攻击,是西门子6ES7-315-2和6ES7-417两个系列)上的可执行代码。

这些被硬编码的攻击代码在不同系列PLC之间并不通用,由此进一步可以证明此次攻击的目标之精准。

但是。我们也不能因此而掉以轻心。Stuxnet实现了互联网和局域网两套更新升级机制。完全可以通过更新,从而发起对其他系统的攻击,将这部分代码替换为其他系列PLC的代码。