6.4.3 蠕虫病毒案例分析

6.4.3 蠕虫病毒案例分析

1.“震网”蠕虫病毒

“震网(Stuxnet)”病毒是一种Windows平台上的计算机蠕虫病毒,2010年6月被白俄罗斯的安全公司VirusBlok Ada发现。“震网”病毒同时利用了7个最新漏洞进行攻击,在7个漏洞中,有5个针对Windows系统,两个针对SIMATIC WinCC系统。

(1)“震网”病毒的传播过程

“震网”病毒的传播途径是首先感染外部主机,然后感染U盘,利用快捷方式文件解析漏洞,传播到内部网络;在内部网络中,通过快捷方式解析漏洞、RPC远程执行漏洞、打印机后台程序服务漏洞等,实现联网主机之间的传播;通过伪装Real Tek和JMicron两大公司的数字签名,顺利绕过安全产品的检测;最后抵达安装了SIMATIC WinCC软件的主机,展开攻击。“震网”病毒能控制关键过程并开启一连串执行程序,最终导致整个系统自我毁灭。

据赛门铁克的研究表明,截至2010年8月6日,在几个受影响的主要国家中,受感染的计算机数量为:伊朗62 867台,印尼13 336台,印度6 552台,美国2 913台,澳大利亚2 436台,英国1 038台,马来西亚1 013台,巴基斯坦993台。

赛门铁克安全响应中心高级主任凯文·霍根(Kevin Hogan)指出,在伊朗约60%的个人计算机被感染,这意味着其攻击目标是当地的工业基础设施。

(2)“震网”病毒的特点

与以往的安全事件相比,“震网”病毒攻击呈现出多种特点。

攻击目标明确:通常情况下,蠕虫病毒的攻击价值在于其传播范围的广阔性和攻击目标的普遍性。“震网”病毒的攻击目标既不是开放主机,也不是通用软件,而是运行于Windows平台,常被部署在与外界隔离的专用局域网中,被广泛用于钢铁、汽车、电力、运输、水利、化工、石油等核心工业领域,特别是国家基础设施工程的SIM TIC WinCC数据采集与监视控制系统。

专家称,“震网”病毒是一次精心谋划的攻击,具有精确制导的“网络导弹”能力。

采用技术先进:“震网”病毒综合利用了微软操作系统的4个0 day漏洞,使每一种漏洞发挥了其独特的作用;“震网”病毒运行后,释放出两个驱动文件伪装Real Tek和JMicron的数字签名,以躲避杀毒软件的查杀,使“震网”病毒具有极强的隐身和破坏力。“震网”病毒无非借助网络连接进行传播,只要计算机操作员将被病毒感染的U盘插入USB接口,病毒就会在神不知鬼不觉的情况下取得工业用计算机系统的控制权,代替核心生产控制计算机软件对工厂其他计算机“发号施令”。

专家称,一旦“震网”病毒软件流入黑市出售,后果将不堪设想。

2.冲击波

远程过程调用(RPC)是Windows操作系统使用的一个协议。RPC提供了一种进程间通信机制,通过这一机制,在一台计算机上运行的程序可以顺畅地执行某个远程系统上的代码。该协议本身是从OSF(开放式软件基础)RPC协议衍生出来的,只是增加了一些Microsoft特定的扩展。

RPC中处理通过TCP/IP的消息交换的部分有一个漏洞。此问题是由错误地处理格式不正确的消息造成的。当存在RPC远程执行漏洞(MS08-067)的系统收到攻击者构造的RPC请求时,可能允许远程执行恶意代码,引起安装程序,查看或更改、删除数据或者是建立系统管理员权限的账户等,而无须通过认证。在Windows 2000、Windows XP和Windows Server 2003系统中,利用这一漏洞,攻击者可以通过恶意构造的网络包直接发起攻击,无须通过认证而运行任意代码,并且获取完整的权限。

这种特定的漏洞影响分布式组件对象模型(DCOM)与RPC间的一个接口,此接口监听TCP/IP端口135。为利用此漏洞,攻击者可能需要向远程计算机上的135端口发送特殊格式的请求。

已经发现一些程序存在此类漏洞,Samba是一套实现SMB(Serrver Messages Block)协议,跨平台进行文件共享和打印共享服务的程序。Samba在处理用户数据时存在输入验证漏洞,远程攻击者可能利用此漏洞在服务器上执行任意命令。

Samba中负责在SAM数据库更新用户口令的代码,未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。

2003年7月16日,微软公司发布了“RPC接口中的缓冲区溢出”的漏洞补丁。该漏洞存在于RPC中处理通过TCP/IP的消息交换的部分,攻击者通过TCP 135端口,向远程计算机发送特殊形式的请求,允许攻击者在目标机器上获得完全的权限并且可以执行任意的代码。

恶意代码制造者立即抓住了这一机会,首先制作出了一个利用此漏洞的蠕虫病毒。俄罗斯著名反病毒厂商Kaspersky labs于2003年8月4日捕获了这个恶意代码,并发布了命名为Worm.Win32.Autorooter恶意代码的信息,也就是“冲击波”病毒。在短短几周的时间里,就导致了大量网络瘫痪,造成了数十亿美金的损失。“冲击波”病毒的攻击行为如下。

(1)“冲击波”病毒运行时会将自身复制到Windows目录下,并命名为msblast.exe。

(2)“冲击波”病毒运行时会在系统中建立一个名为“BILLY”的互斥量,目的是“冲击波”病毒只保证在内存中有一份副本,为了避免用户发现。

(3)“冲击波”病毒运行时会在内存中建立一个名为“msblast.exe”的进程,该进程就是活的病毒体。

(4)“冲击波”病毒会修改注册表,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Run中添加键值:

这样就可以保证每次启动系统时,“冲击波”病毒都会自动运行。

(5)“冲击波”病毒体内隐藏有一段文本信息:

(6)“冲击波”病毒会以20秒为间隔,每20秒检测一次网络状态,当网络可用时,“冲击波”病毒会在本地的UDP/69端口上建立一个TFTP服务器,并启动一个攻击传播线程,不断地随机生成攻击地址,进行攻击,另外该病毒攻击时,会首先搜索子网的IP地址,以便就近攻击。

(7)当“冲击波”病毒扫描到计算机后,就会向目标计算机的TCP/l35端口发送攻击数据。

(8)当“冲击波”病毒攻击成功后,便会监听目标计算机的TCP/4444端口作为后门,并绑定cmd.exe。然后蠕虫病毒会连接到这个端口,发送TFTP命令,回到连接发起进攻的主机,将msblast.exe传到目标计算机上并运行。

(9)当“冲击波”病毒攻击失败时,可能会造成没有打补丁的Windows系统RPC服务崩溃,Windows XP系统可能会自动重新启动计算机。该蠕虫病毒不能成功攻击Windows Server 2003,但是可以造成Windows Server 2003系统的RPC服务崩溃,默认情况下是系统反复重新启动。

(10)“冲击波”病毒检测到当前系统月份是8月之后或者日期是15日之后,就会向微软的更新站点发动拒绝服务攻击,使微软网站的更新站点无法为用户提供服务。

“冲击波”病毒的Shellcode分析如下:

“冲击波”病毒实验:

(1)实验环境

Host系统:

VMWare Workstation 7.0.1

Win2000 Advance Server SP1

虚拟机中操作系统:

攻击方Linux(Ubuntu8.04)

攻击方Win2000 Advance Server SP1

实验素材:experiments目录的RPC目录下

虚拟机映像:vituralmachine目录下的PRCVM

(2)实验准备

环境安装:

安装虚拟机VMWare,并在其中分别安装Linux以及Win2000操作系统

源码准备:

从电子资源中复制病毒程序源码vdcom.c到Linux任意目录中,之后的编译运行工作都在此目录中进行。如果直接下载虚拟机映像文件,则源码已经存在于相关目录中。

编译源码:

使用gcc编译源码:gcc-o rpcattack vdcom.c,生成文件rpcattack,并检查文件是否生成。

(3)开始“冲击波”病毒实验

被攻击方:确保目标虚拟机Win2000打开,并检查C盘根目录下没有多余实验用文件。

攻击方:运行病毒程序,输入/rpcattack。

(4)观察现象

【注释】

[1]Intel x86处理器是通过Ring的级别来进行访问控制,级别共分4层,从Ring0到Ring3。Ring0层拥有最高的权限,Ring3层拥有最低的权限。应用程序工作在Ring3层,仅能访问Ring3层的数据:操作系统则工作在Ring0层,可以访问所有层的数据;一般的驱动程序位于Ring1、Ring2层,每一层只能访问本层以及权限更低层的数据。