超级工厂

超级工厂

针对工业控制系统编写的破坏性病毒
超级工厂病毒(Stuxnet蠕虫病毒)是世界上首个专门针对工业控制系统编写的破坏性病毒,能够利用对windows系统和西门子SIMATIC WinCC系统的7个漏洞进行攻击。特别是针对西门子公司的SIMATIC WinCC监控与数据采集(SCADA)系统进行攻击,由于该系统在我国的多个重要行业应用广泛,被用来进行钢铁、电力、能源、化工等重要行业的人机交互与监控。传播途径:该病毒主要通过U盘和局域网进行传播。历史“贡献”:曾造成伊朗核电站推迟发电。2010-09-25,进入中国。[1]
    中文名: 外文名: 适用领域: 所属学科: 别名:震网 公司名称:超级工厂病毒 外文名称:Stuxnet蠕虫病毒 对象:工业控制系统 类型:破坏性病毒 传播途径:U盘和局域网

简介

Stuxnet又名“震网”,是针对微软件系统以及西门子工业系统的最新病毒,到2013年的今天已感染多个国家及地区的工业系统和个人用户,此病毒可通过网络传播,与以往病毒不同,其代码非常精密。

造成伊朗核电站推迟发电的全球首个“超级工厂病毒”Stuxnet,2010-09-25侵入我国。瑞星昨日发布的预警显示,国内已有近500万网民及多个行业的领军企业遭Stuxnet蠕虫病毒攻击,而且由于安全制度上的缺失,该病毒还存在很高的大规模传播风险。

据瑞星安全专家介绍,Stuxnet蠕虫病毒是世界上首个专门针对工业控制系统编写的破坏性病毒,能够利用对windows系统和西门子SIMATICWinCC系统的7个漏洞进行攻击。特别是针对西门子公司的SIMATICWinCC监控与数据采集(SCADA)系统进行攻击,由于该系统在我国的多个重要行业应用广泛,被用来进行钢铁、电力、能源、化工等重要行业的人机交互与监控。

Stuxnet及其变种是一种利用最新的WindowsShell漏洞传播恶意文件的蠕虫。造成这个漏洞的原因是Windows错误地分析快捷方式,当用户单击特制快捷方式的显示图标时可能执行恶意代码(文件带有、LNK扩展名)。

技术分析报告

病毒名称

Worm、Win32、Stuxnet

病毒概述

这是一个可以通过微软MS10-046漏洞(lnk文件漏洞),MS10-061(打印服务漏洞),MS08-067等多种漏洞传播的恶性蠕虫病毒。另外该病毒还可以专门针对西门子的SCADA软件进行特定攻击,以获取其需要的信息。

传播方式

1、通过MS10-046漏洞传播

病毒运行后会拷贝自身到移动存储上并命名为~WTR数字、Tmp(动态库)和一个注入下列文件名的lnk文件组成:

CopyofShortCutto、lnk

CopyofCopyofShortCutto、lnk

CopyofCopyofCopyofShortCutto、lnk…

在存在MS10-046漏洞的机器上,只需浏览这些lnk,Explorer、exe就会将~WTR数字、Tmp加载起来。

2、通过MS10-061漏洞传播

该病毒还会利用打印机或打印机共享漏洞MS10-061漏洞传播。病毒会将自身拷贝到存在该漏洞的远程机器的%system%目录下,并利用WMI将其执行起来。

3、通过共享文件夹传播

该病毒还会试图将自身拷贝到局域网共享文件夹下,并命名为类似DEFRAG(随机数字)、tmp的名称。

4、通过MS08-067漏洞传播

该病毒还会利用MS08-067漏洞传播。

主要功能以及大致流程

当用户浏览可移动存储上的CopyofShortCutto、lnk文件后,Explorer、exe会加载~WTR数字、Tmp,然后病毒会加载自身的另一个名为~WTR数字、Tmp的动态库。在加载该恶意dll时,病毒并没有通过普通的LoadLibrary函数加载,为了隐藏自身模块,同时为了达到不释放文件来加载病毒模块的目的,它采取了一个特殊方式。

病毒会首先hookntdll的一些导出函数,然后,它会构造一个特殊的并不存在的文件名如Kernel32、dll、aslr,然后以此为参数调用LoadLibrary,正常情况下,该调用会失败因为该文件并不存在,但是因为病毒已经提前Hook了Ntdll,hook函数会监控对此类特殊文件名的打开操作。如果发现是自身构造的虚假文件名,则会重定向到其他位置,比如另一个文件或者通常情况下是一块已经被病毒解密过的内存,这样,外界看到的是一个常见的模块名比如Kernel32,而实际上是病毒模块。这样病毒就达到了隐藏自身的目的。

之后病毒会运行lsass、exe并修改程序的内存,然后释放如下文件:

%System%driversmrxcls、sys

%System%driversmrxnet、sys

%Windir%infoem6C、PNF

%Windir%infoem7A、PNF

%Windir%infmdmcpq3、PNF

%Windir%infmdmeric3、PNF

并在可移动存储上创建~WTR数字、Tmp和CopyofShortCutto、lnk等文件。

Mrxcls、sys和Mrxnet、sys具有合法的数字签名。

由于调用了lsass、exe这个系统进程做坏事,因此在中毒机器内会看到至少3个lsass、exe进程。(有两个是病毒启动的)

然后病毒会将自身注入到services、exe,在services中,病毒会通过查找SOFTWARESIEMENSSTEP7,SOFTWARESIEMENSWinCCSetup等注册表项检测西门子软件。病毒还能禁用WindowsDefender等杀毒软件的保护。

病毒具有后门功能:病毒会通过80端口连接远程服务器并发送请求http://[SERVER_ADDRESS]/index、php?data=[DATA]

其中服务器地址为:

www、****

www、*****

发送的数据

1、Windows版本信息

2、计算机名

3、网络组名称

4、是否安装了工控软件

5、网卡的IP地址

执行功能

1、读文件

2、写文件

3、删除文件

4、创建进程

5、注入dll

6、加载dll并运行

7、更新配置信息

8、下载文件,解密并执行

Rootkit隐藏功能

病毒具有良好的隐藏性。病毒会查找totalcmd、exe,wincmd、exe等进程,挂钩kernel32、dll的FindFirstFileW,FindNextFileW,FindFirstFileExW,Ntdll的NtQueryDirectoryFile,ZwQueryDirectoryFile函数隐藏其释放的、lnk或者~WTR(数字)、tmp文件。使得通过此类文件查找工具也无法找到他们。

对工控软件(SCADA)的攻击功能

病毒会利用SieMensSimaticWincc的默认密码安全绕过漏洞利用默认的用户名和密码并利用已经编写好的SQL语句读取数据库数据。漏洞详情:

尝试从数据库中读取特定数据:

GracScc_tag、sav

GracScc_alg、sav

GracSdb_log、sav

GracScc_tlg7、sav

*、S7P

*、MCP

*、LDF

目前的工控系统都包括一个可编程控制器,该控制器实际相当于一个小型的计算机系统,通过配置该系统,可以向控制器中写入新的控制逻辑,从而完成不同的功能。该控制器可以通过专门的软件连接到计算机,从计算机中可以编写工控程序并下载到工控系统中运行。

工控软件要进行控制和编程,需要通过西门子Step7软件来进行控制,该软件要通过使用内部的s7otbxdx、dll同设备进行通信,病毒通过替换此dll来截获所有与设备间的访问。病毒自身导出了所有原始s7dotbxdx、dll的功能,然后病毒将原始的s7otbxdx、dll重命名为s7otbxsx、dll,然后将自身命名为s7otbxdx、dll,病毒内部再加载s7otbxsx、dll,这样,如果是病毒感兴趣的访问,则病毒可以替换设备传入或者传出的结果,对于其他访问,病毒直接重定向到原始的s7otbxdx、dll。

当向工控系统中写入控制代码时,病毒会修改写入的控制代码,从而感染工控系统。

实际上,在内部,病毒一共hook了16个函数,分别是:

s7_event

s7ag_bub_cycl_read_create

s7ag_bub_read_var

s7ag_bub_write_var

s7ag_link_in

s7ag_read_szl

s7ag_test

s7blk_delete

s7blk_findfirst

s7blk_findnext

s7blk_read

s7blk_write

s7db_close

s7db_open

s7ag_bub_read_var_seg

s7ag_bub_write_var_seg

通过对这些函数的挂钩从而可以任意修改从计算机中写入到工控软件中的代码。当向工控软件正常写入程序时,病毒会感染写入的代码,将自身写入工控软件代码块的头部并修改工控软件的控制结构,使其入口点指向病毒代码。

另外病毒会监控所有与工控软件之间的读写通信,如果发现访问到被感染的块,则会修改返回结果隐藏块中的病毒代码,从而使用户不会发现。

防范建议

1、禁用U盘的自动播放功能,防止插入U盘后就自动浏览文件夹导致中毒。另外U盘插入以后一定要使用杀毒软件右键扫描该U盘。最好禁止U盘的写入功能。

2、及时更新微软操作系统的补丁,针对该病毒的防范要更新以下漏洞的补丁:MS08-067,MS10-046,MS10-061

3、给本机设置一个足够复杂的密码,并尽量避免设置共享。如果一定要设置共享文件夹,尽量给该文件夹以只读权限。

4、及时更新杀毒软件到最新,并保持监控各项开启。使用瑞星杀毒软件的用户无需升级,其木马行为防御功能即可防范此类病毒的未知变种。

特点

超级工厂病毒最大的特点为:打破恶意程序只攻击用户电脑的“惯例”,将攻击目标偏向于用户的生活与生存环境上来。一旦用户的电脑不幸遭受“超级工厂病毒”-Stuxnet入侵,不但会使用户电脑变成任由其摆布的“肉鸡”,严重影响到用户的日常生活,而且还会引发“多米诺骨牌效应”,导致与受害用户联网的人群遭受同样攻击。

感染原理

如何选择需要感染的PLC

Stuxnet会根据目标系统的特点,使用不同的代码来感染PLC。

一个感染的序列包括了许多PLC模块(代码模块和数据模块),用以注入PLC来改变目标PLC的行为。这个威胁包括了三个感染序列。其中两个非常相似,功能也相同,我们将其命名为序列A和B。第三个序列我们命名为序列C。Stuxnet通过验证“指纹”来判断系统是否为计划攻击的目标。它会检查:

PLC种类/家族:只有CPU6ES7-417和6ES7-315-2会被感染。系统数据模块:SDB会被解析;根据他们包含的数据,感染进程会选择A,B或其它感染方式开始行动。当解析SDB时,代码会搜索这两个值是否存在--7050hand9500h;然后根据这两个数值的出现次数,选择序列A或B中的一种来感染PLC。代码还会在SDB模块的50h子集中搜索字节序2CCB0001,这个字节序反映了通信处理器CP342-5(用作Profibus-DP)是否存在。

而选择序列C进行感染的条件则由其他因素构成。

感染方法

Stuxnet使用“代码插入”的感染方式。当Stuxnet感染OB1时,它会执行以下行为:

增加原始模块的大小;在模块开头写入恶意代码;

在恶意代码后插入原始的OB1代码。

Stuxnet也会用类似于感染OB1的方式感染OB35。它会用自身来取代标准的协同处理器DP_RECV代码块,然后在Profibus(一个标准的用作分布式I/O的工业网络总线)中挂钩网络通信。

利用A/B方法的感染步骤如下:

检查PLC类型;

该类型必须为S7/315-2;

检查SDB模块,判断应该写入序列A或B中的哪一个;

找到DP_RECV,将其复制到FC1869,并用Stuxnet嵌入的一个恶意拷贝将其取代;

在序列中写入恶意模块(总共20个),由Stuxnet嵌入;

感染OB1,令恶意代码可以在新的周期开始时执行;

感染OB35,它将扮演“看门狗”的角色。

感染代码

被注入OB1功能的代码是用来感染序列A和B的。这些序列包含了以下模块:

代码块:FC1865至FC1874,FC1876至FC1880(注意:FC1869并非Stuxnet的一部分,而是PLC的DP_RECV模块的一个拷贝);

数据模块:DB888至DB891。序列A和B用DP_RECV挂钩模块来拦截Profibus中的数据包,并根据在这些模块中找到的数值,来构造其他的数据包并发送出去。这由一个复杂的状态机控制(状态机被建立在上面提到的FC模块中)。这个状态机可部分受控于数据块DB890中的DLL。

在某些条件下,序列C会被写入一个PLC。这个序列比A和B包含更多的模块:

FC6055至FC6084;DB8062,DB8063;DB8061,DB8064至DB8070(在运行中产生)。序列C主要为了将I/O信息读写入PLC的内存文件映射的I/O区域,以及外围设备的I/O。

程序A/B的控制流如下图所示,在之前的Step7编辑器的截图中也有部分显示(数据模块FC1873):

StuxnetPLCrootkit代码全部藏身于假冒的s7otbxdx、dll中。为了不被PLC所检测到,它至少需要应付以下情况:

对自己的恶意数据模块的读请求;对受感染模块(OB1,OB35,DP_RECV)的读请求;可能复盖Stuxnet自身代码的写请求。Stuxnet包含了监测和拦截这些请求的代码,它会修改这些请求以保证Stuxnet的PLC代码不会被发现或被破坏。下面列出了几个Stuxnet用被挂钩的导出命令来应付这些情况的例子:

s7blk_read:监测读请求,而后Stuxnet会返回:真实请求的DP_RECV(保存为FV1869);错误信息,如果读请求会涉及到它的恶意模块;OB1或OB35的干净版本的拷贝s7blk_write:监测关于OB1/OB35的写请求,以保证他们的新版本也会被感染。s7blk_findfirst/s7blk_findnext:这些例程被用于枚举PLC中的模块。恶意模块会被自动跳过。s7blk_delete:监测对模块的“删除”操作。如上文所述,Stuxnet是一个非常复杂的威胁,而其中的PLC感染代码令问题更加难以解决。仅仅关于注入的MC7代码(我们于几个月前通过逆向工程获得)就可以讨论很久。若想了解更多关于PLC感染例程和Stuxnet的总体情况,请务必关注我们即将于VirusBulletin会议中发布的白皮书。

专杀工具

9月28日,AVG率先向用户发布安全警告,“超级工厂病毒”(Stuxnet)在国内进入爆发期,目前,已有600万个人用户及近千企业用户遭到此病毒攻击。针对“超级工厂病毒”肆虐的这种情况,AVG研发团队紧急研发出了专杀工具,广大用户可从AVG官方网站免费下载使用该工具。

传播方式

据介绍,该病毒主要通过U盘和局域网进行传播。

《基督教科学箴言报》报道,这种新病毒采取了多种先进技术,因此具有极强的隐身和破坏力。只要电脑操作员将被病毒感染的U盘插入USB接口,这种病毒就会在神不知鬼不觉的情况下(不会有任何其他操作要求或者提示出现)取得一些工业用电脑系统的控制权。

与传统的电脑病毒相比,“震网”病毒不会通过窃取个人隐私信息牟利。由于它的打击对象是全球各地的重要目标,且无需借助网络连接进行传播,因此被一些专家定性为全球首个投入实战舞台的“网络武器”。一旦这种软件流入黑市出售,其后果将不堪设想。

计算机安全专家在对软件进行反编译后发现,“震网”病毒结构非常复杂,因此它应该是一个“受国家资助高级团队研发的结晶”。据悉,这种病毒可以破坏世界各国的化工、发电和电力传输企业所使用的核心生产控制电脑软件,并且代替其对工厂其他电脑“发号施令”。

人们确信,在去年开发成功的“震网”病毒可承担“网络导弹”的重任。它不再以刺探情报为己任,而是能根据指令,分辨和破坏某些“极具争议”的要害目标。微软公司的研究发现,“震网”感染的重灾区集中在伊朗境内。美国和以色列因此被怀疑是“震网”的发明人。

安全建议

安全防护建议

由于Stuxnet蠕虫病毒是首个针对工业控制系统编写的破坏性病毒,对大型工业、企业用户存在一定的风险,所以,冠群金辰公司病毒防护专家给企业用户提出如下安全防护建议,以提高企业抵御未知安全风险的能力:

1、在终端设备上开启防火墙功能。

2、为终端设备上所有的应用系统安装最新的补丁程序。

3、在终端上安装防病毒系统,设置为实时更新病毒库,并将病毒库升级到最新版本。

4、在终端上的用户设置最小用户权限。

5、在打开附件或通过网络接收文件时,弹出安全警告或提示。

6、在打开网络链接时,发出安全警告或提示。

7、尽量避免下载未知的软件或程序。

8、使用强口令,以保护系统免受攻击。

防范建议

1、禁用U盘的自动播放功能,防止插入U盘后就自动浏览文件夹导致中毒。另外U盘插入以后一定要使用杀毒软件右键扫描该U盘。最好禁止U盘的写入功能。

2、及时更新微软操作系统的补丁,针对该病毒的防范要更新以下漏洞的补丁:MS08-067,MS10-046,MS10-061

3、给本机设置一个足够复杂的密码,并尽量避免设置共享。如果一定要设置共享文件夹,尽量给该文件夹以只读权限。

4、及时更新杀毒软件到最新,并保持监控各项开启。使用瑞星杀毒软件的用户无需升级,其木马行为防御功能即可防范此类病毒的未知变种。

彻底修复

2010年12月15日凌晨,微软发布修复的“Windows计划任务本地权限提升漏洞”(公告编号:MS10-092),是被“超级工厂”病毒利用的最后一个Windows0day漏洞。

Windows计划任务本地权限提升漏洞

MS10-092级别:重要

描述:Windows计划任务服务存在一处权限提升漏洞,攻击者可以在已经运行恶意代码的系统上将自身的权限从低权限提升到系统权限,从而彻底控制系统。

相关词条

相关搜索

其它词条