对Stuxnet蠕虫攻击工业控制系统事件..
时间:2010-09-28 来源:loads
第1章 事件背景 |
近日,国内外多家媒体相继报道了Stuxnet蠕虫对西门子公司的数据采集与监控系统SIMATIC WinCC进行攻击的事件,称其为“超级病毒”、“超级工厂病毒”,并形容成“超级武器”、“潘多拉的魔盒”。 Stuxnet蠕虫(俗称“震网”、“双子”)在今年7月开始爆发。它利用了微软操作系统中至少4个漏洞,其中有3个全新的零日漏洞;伪造驱动程序的数字签名;通过一套完整的入侵和传播流程,突破工业专用局域网的物理限制;利用WinCC系统的2个漏洞,对其开展破坏性攻击。它是第一个直接破坏现实世界中工业基础设施的恶意代码。据赛门铁克公司的统计,目前全球已有约45000个网络被该蠕虫感染,其中60%的受害主机位于伊朗境内。伊朗政府已经确认该国的布什尔核电站遭到Stuxnet蠕虫的攻击。 安天实验室于7月15日捕获到Stuxnet蠕虫的第一个变种,在第一时间展开分析,发布了分析报告及防范措施,并对其持续跟踪。截止至本报告发布,安天已经累计捕获13个变种、 600多个不同哈希值的样本实体。 |
第2章 样本典型行为分析 |
2.1 运行环境 Stuxnet蠕虫在以下操作系统中可以激活运行: · Windows 2000、Windows Server 2000 · Windows XP、Windows Server 2003 · Windows Vista · Windows 7、Windows Server 2008 当它发现自己运行在非Windows NT系列操作系统中,即刻退出。 被攻击的软件系统包括: · SIMATIC WinCC 7.0 · SIMATIC WinCC 6.2 但不排除其他版本存在这一问题的可能。 2.2 本地行为
样本被激活后,典型的运行流程如图1 所示。 ZwMapViewOfSection ZwCreateSection ZwOpenFile ZwClose ZwQueryAttributesFile ZwQuerySection 为此,样本先修改ntdll.dll文件内存映像中PE头的保护属性,然后将偏移0x40处的无用数据改写为跳转代码,用以实现hook。 进而,样本就可以使用ZwCreateSection在内存空间中创建一个新的PE节,并将要加载的DLL模块拷贝到其中,最后使用LoadLibraryW来获取模块句柄。
此后,样本跳转到被加载的DLL中执行,衍生下列文件:
其中有两个驱动程序mrxcls.sys和mrxnet.sys,分别被注册成名为MRXCLS和MRXNET的系统服务,实现开机自启动。这两个驱动程序都使用了Rootkit技术,并有数字签名。
mrxnet.sys通过修改一些内核调用来隐藏被拷贝到U盘的lnk文件和DLL文件(图2 )。 图2 驱动程序隐藏某些lnk文件 图3 样本的多种传播方式 2.3 传播方式 Stuxnet蠕虫的攻击目标是SIMATIC WinCC软件。后者主要用于工业控制系统的数据采集与监控,一般部署在专用的内部局域网中,并与外部互联网实行物理上的隔离。为了实现攻击,Stuxnet蠕虫采取多种手段进行渗透和传播,如图3所示。 整体的传播思路是:首先感染外部主机;然后感染U盘,利用快捷方式文件解析漏洞,传播到内部网络;在内网中,通过快捷方式解析漏洞、RPC远程执行漏洞、打印机后台程序服务漏洞,实现联网主机之间的传播;最后抵达安装了WinCC软件的主机,展开攻击。 1. 快捷方式文件解析漏洞(MS10-046)这个漏洞利用Windows在解析快捷方式文件(例如.lnk文件)时的系统机制缺陷,使系统加载攻击者指定的DLL文件,从而触发攻击行为。具体而言,Windows在显示快捷方式文件时,会根据文件中的信息寻找它所需的图标资源,并将其作为文件的图标展现给用户。如果图标资源在一个DLL文件中,系统就会加载这个DLL文件。攻击者可以构造这样一个快捷方式文件,使系统加载指定的DLL文件,从而执行其中的恶意代码。快捷方式文件的显示是系统自动执行,无需用户交互,因此漏洞的利用效果很好。 Stuxnet蠕虫搜索计算机中的可移动存储设备(图4)。一旦发现,就将快捷方式文件和DLL文件拷贝到其中(图5)。如果用户将这个设备再插入到内部网络中的计算机上使用,就会触发漏洞,从而实现所谓的“摆渡”攻击,即利用移动存储设备对物理隔离网络的渗入。
拷贝到U盘的DLL文件有两个:~wtr4132.tmp和~wtr4141.tmp。后者Hook了kernel32.dll和ntdll.dll中的下列导出函数:
实现对U盘中lnk文件和DLL文件的隐藏。因此,Stuxnet一共使用了两种措施(内核态驱动程序、用户态Hook API)来实现对U盘文件的隐藏,使攻击过程很难被用户发觉,也能一定程度上躲避杀毒软件的扫描。
2. RPC远程执行漏洞(MS08-067)与提升权限漏洞 这是2008年爆发的最严重的一个微软操作系统漏洞,具有利用简单、波及范围广、危害程度高等特点。 图6 发动RPC攻击
具体而言,存在此漏洞的系统收到精心构造的RPC请求时,可能允许远程执行代码。在Windows 2000、Windows XP和Windows Server 2003系统中,利用这一漏洞,攻击者可以通过恶意构造的网络包直接发起攻击,无需通过认证地运行任意代码,并且获取完整的权限。因此该漏洞常被蠕虫用于大规模的传播和攻击。
这是一个零日漏洞,首先发现于Stuxnet蠕虫中。 图7 利用打印服务漏洞 Stuxnet蠕虫利用这个漏洞实现在内部局域网中的传播。如图7所示,它向目标主机发送两个文件:winsta.exe、sysnullevnt.mof。后者是微软的一种托管对象格式(MOF)文件,在一些特定事件驱动下,它将驱使winsta.exe被执行。 2.4 攻击行为
Stuxnet蠕虫查询两个注册表键来判断主机中是否安装WinCC系统(图8): 图8 查询注册表,判断是否安装WinCC
一旦发现WinCC系统,就利用其中的两个漏洞展开攻击: 图9 查询WinCC的数据库
2.5 样本文件的衍生关系 图10 样本文件衍生的关系
|
第3章 解决方案与安全建议 |
3.1 抵御本次攻击 西门子公司对此次攻击事件给出了一个解决方案,链接地址见附录。下面根据我们的分析结果,给出更具体的措施。 1.使用相关专杀工具或手工清除Stuxnet蠕虫
手工清除的步骤为:
安装微软提供的下列补丁文件: 安装西门子发布的WinCC系统安全更新补丁,地址见附录。 3.2 安全建议
此次攻击事件凸显了两个问题: |
第4章 攻击事件的特点 |
相比以往的安全事件,此次攻击呈现出许多新的手段和特点,值得我们特别关注。 4.1 专门攻击工业系统 Stuxnet蠕虫的攻击目标直指西门子公司的SIMATIC WinCC系统。这是一款数据采集与监视控制(SCADA)系统,被广泛用于钢铁、汽车、电力、运输、水利、化工、石油等核心工业领域,特别是国家基础设施工程;它运行于Windows平台,常被部署在与外界隔离的专用局域网中。 一般情况下,蠕虫的攻击价值在于其传播范围的广阔性、攻击目标的普遍性。此次攻击与此截然相反,最终目标既不在开放主机之上,也不是通用软件。无论是要渗透到内部网络,还是挖掘大型专用软件的漏洞,都非寻常攻击所能做到。这也表明攻击的意图十分明确,是一次精心谋划的攻击。 4.2 利用多个零日漏洞
Stuxnet蠕虫利用了微软操作系统的下列漏洞: 4.3 使用数字签名
Stuxnet在运行后,释放两个驱动文件: 图11 Stuxnet伪造的数字签名 4.4 明确的攻击目标 根据赛门铁克公司的统计,7月份,伊朗感染Stuxnet蠕虫的主机只占25%,到9月下旬,这一比例达到60%。 WinCC被伊朗广泛使用于基础国防设施中。9月27日,伊朗国家通讯社向外界证实该国的第一座核电站“布什尔核电站”已经遭到攻击。据了解,该核电站原计划于今年8月开始正式运行。因此,此次攻击具有明确的地域性和目的性。第5章 综合评价
5.1 工业系统安全将面临严峻挑战 出处: 安天实验室安全研究与应急处理中心(Antiy CERT) |