标题：Stuxnet蠕虫病毒
百科名片
Stuxnet蠕虫病毒  （ 超级工厂病毒）是世界上首个专门针对工业控制系统编写的破坏性病毒，能够利用对windows系统和西门子SIMATIC WinCC系统的7个漏洞进行攻击。特别是针对西门子公司的SIMATIC WinCC监控与数据采集 (SCADA) 系统进行攻击，由于该系统在我国的多个重要行业应用广泛，被用来进行钢铁、电力、能源、化工等重要行业的人机交互与监控。 传播途径：该病毒主要通过U盘和局域网进行传播。历史“贡献”：曾造成伊朗核电站推迟发电。 2010-09-25，进入中国。
病毒简介
Stuxnet又名“震网”，是针对微软件系统以及西门子工业系统的最新病毒，目前已感染多个国家及地区的工业系统和个人用户，此病毒可通过网络传播，与以往病毒不同，其代码非常精密
曾造成伊朗核电站推迟发电的全球首个“超级工厂病毒”Stuxnet目前已经侵入我国。瑞星昨日发布的预警显示，国内已有近500万网民及多个行业的领军企业遭Stuxnet蠕虫病毒攻击，而且由于安全制度上的缺失，该病毒还存在很高的大规模传播风险。
据瑞星安全专家介绍，Stuxnet蠕虫病毒是世界上首个专门针对工业控制系统编写的破坏性病毒，能够利用对windows系统和西门子SIMATIC WinCC系统的7个漏洞进行攻击。特别是针对西门子公司的SIMATIC WinCC监控与数据采集 (SCADA) 系统进行攻击，由于该系统在我国的多个重要行业应用广泛，被用来进行钢铁、电力、能源、化工等重要行业的人机交互与监控。
Stuxnet及其变种是一种利用最新的Windows Shell漏洞传播恶意文件的蠕虫。造成这个漏洞的原因是Windows 错误地分析快捷方式，当用户单击特制快捷方式的显示图标时可能执行恶意代码（文件带有.LNK扩展名）。
特点
超级工厂病毒最大的特点为：打破恶意程序只攻击用户电脑的“惯例”，将攻击目标偏向于用户的生活与生存环境上来。一旦用户的电脑不幸遭受“超级工厂病毒”-Stuxnet入侵，不但会使用户电脑变成任由其摆布的“肉鸡”，严重影响到用户的日常生活，而且还会引发“多米诺骨牌效应”，导致与受害用户联网的人群遭受同样攻击。
感染原理
1. 如何选择需要感染的PLCStuxnet会根据目标系统的特点，使用不同的代码来感染PLC。
一个感染的序列包括了许多PLC 模块（代码模块和数据模块），用以注入PLC来改变目标PLC 的行为。这个威胁包括了三个感染序列。其中两个非常相似，功能也相同，我们将其命名为序列A和B。第三个序列我们命名为序列C。Stuxnet通过验证“指纹”来判断系统是否为计划攻击的目标。它会检查：
PLC种类/家族：只有CPU 6ES7-417 和6ES7-315-2 会被感染。系统数据模块：SDB 会被解析；根据他们包含的数据，感染进程会选择A,B或其它感染方式开始行动。当解析SDB 时，代码会搜索这两个值是否存在-- 7050h and 9500h；然后根据这两个数值的出现次数，选择序列A 或B 中的一种来感染PLC。        代码还会在SDB 模块的50h 子集中搜索字节序2C CB 00 01, 这个字节序反映了通信处理器CP 342-5 (用作Profibus-DP) 是否存在。
而选择序列C进行感染的条件则由其他因素构成。
2. 感染方法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, 它将扮演“看门狗”的角色。
3. 感染代码被注入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）:
而序列C 的程序流则更加复杂，可以从下面的图表中看到:
4. Rootkit
Stuxnet PLC rootkit代码全部藏身于假冒的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的总体情况，请务必关注我们即将于Virus Bulletin会议中发布的白皮书。
传播方式
据介绍，该病毒主要通过U盘和局域网进行传播。 
《基督教科学箴言报》报道，这种新病毒采取了多种先进技术，因此具有极强的隐身和破坏力。只要电脑操作员将被病毒感染的U盘插入USB接口，这种病毒就会在神不知鬼不觉的情况下（不会有任何其他操作要求或者提示出现）取得一些工业用电脑系统的控制权。
与传统的电脑病毒相比，“震网”病毒不会通过窃取个人隐私信息牟利。由于它的打击对象是全球各地的重要目标，且无需借助网络连接进行传播，因此被一些专家定性为全球首个投入实战舞台的“网络武器”。一旦这种软件流入黑市出售，其后果将不堪设想。
计算机安全专家在对软件进行反编译后发现，“震网”病毒结构非常复杂，因此它应该是一个“受国家资助高级团队研发的结晶”。据悉，这种病毒可以破坏世界各国的化工、发电和电力传输企业所使用的核心生产控制电脑软件，并且代替其对工厂其他电脑“发号施令”。
人们确信，在去年开发成功的“震网”病毒可承担“网络导弹”的重任。它不再以刺探情报为己任，而是能根据指令，分辨和破坏某些“极具争议”的要害目标。微软公司的研究发现，“震网”感染的重灾区集中在伊朗境内。美国和以色列因此被怀疑是“震网”的发明人。
安全建议
由于Stuxnet蠕虫病毒是首个针对工业控制系统编写的破坏性病毒，对大型工业、企业用户存在一定的风险，所以，冠群金辰公司病毒防护专家给企业用户提出如下安全防护建议，以提高企业抵御未知安全风险的能力：
 在终端设备上开启防火墙功能。
 为终端设备上所有的应用系统安装最新的补丁程序。
 在终端上安装防病毒系统，设置为实时更新病毒库，并将病毒库升级到最新版本。
 在终端上的用户设置最小用户权限。
 在打开附件或通过网络接收文件时，弹出安全警告或提示。
 在打开网络链接时，发出安全警告或提示。
 尽量避免下载未知的软件或程序。
 使用强口令，以保护系统免受攻击。