瑞星:Stuxnet病毒技术分析报告
2010-09-27 16:01:34目前的工控系统都包括一个可编程控制器,该控制器实际相当于一个小型的计算机系统,通过配置该系统,可以向控制器中写入新的控制逻辑,从而完成不同的功能。该控制器可以通过专门的软件连接到计算机,从计算机中可以编写工控程序并下载到工控系统中运行。
工控软件要进行控制和编程,需要通过西门子Step 7软件来进行控制,该软件要通过使用内部的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. 及时更新杀毒软件到最新,并保持监控各项开启。使用瑞星杀毒软件的用户无需升级,其木马行为防御功能即可防范此类病毒的未知变种。