2012年6月6日星期三

某个号称史上最大的恶意软件的传播方式

这几天卡巴等安全厂商爆出了一个主程序文件6MB,生成文件超过20MB的“超级病毒”Flamer。目前各安全厂商的初步分析表明其具有十余个功能模块,通过连接写死的控制端(5个-10个域名)以及从控制端下载的列表中的其他控制端(已经发现了80个以上域名)来接收指令、自动更新及发送其窃取的文件(AutoCAD、PDF、Office文档等);其服务器配置文件一部分采用加密的SQLite数据库,且自带Lua解释器和运行日志记录功能,其功能复杂完善,无疑是一个非常专业的间谍蠕虫,和之前的Stuxnet/Duqu有点类似。
既然说是蠕虫,当然Flamer能自我复制传播。目前从各安全厂商和实验室的文章中,可以确定这种蠕虫至少有5种自我传播的方式,其中有一种是比较新颖的,要重点介绍。

1、autorun.inf。autorun自从被利用以来,已经成为各种恶意软件最为常用的传播方式,从最初的open/command/explore指定u盘上的可执行文件,再到劫持盘符右键菜单与Autoplay选项;从指定rundll32加载病毒dll(如Conficker),到stuxnet早期版本中将病毒体本身写成autorun.inf文件,其中的字符串组成autorun.inf结构并指定运行自身,其利用手段已经有了很大的发展。Flamer利用了这种方式传播。

2、通过desktop.ini来创建特殊文件夹,使用对象{0AFACED1-E828-11D1-9187-B532F1E9575D} 使文件夹变为一个执行其内target.lnk快捷方式的“文件夹快捷方式”。与此同时,建立一个利用了曾被Stuxnet利用过的快捷方式漏洞(MS10-046)的特殊target.lnk,导致Windows为了显示这个文件夹图标,一去解析这个lnk就运行了Flamer。

3、利用打印管理器漏洞MS10-061感染局域网其他机器。

4、在有域控制器权限的机器上在域内各主机建立后门账号并传播自身。

5、通过在内网建立代理服务器的方式,拦截Windows Update请求。

这个得重点讲一下。其实用ARP攻击之类拦截Windows Update搞假更新这样的想法早就有了,不过这次Flamer的作者想了个更巧的办法。
Windows Update当初设计的安全机制有二,一是其服务器IP是写死在更新服务程序里的,二是更新包要验证微软的数字签名。前者可以防域名劫持,后者可以防止接收到错误或者非法的更新文件。不过Flamer的作者这次把两个机制都搞定了。
这破机器没装绘图工具,图画得渣,请大家见谅。
这是一般Windows Update运行的流程。

Flamer通过以下四个步骤,成功劫持了局域网内其他机器的Windows Update并将其作为传播渠道。

 1)向网络广播两个假NetBIOS计算机名
为什么是“WPAD”和“MSHOME-(8位16进制数,不一定是图里写的那个)”呢?后者我也没搞清楚为何是这名字,不过我估计不会和网内其他任何机器名相冲突。至于前者,下一步再解释。

2)利用IE对WPAD(Web代理自动探测)协议的一个特例,使受害机器将带毒机器设定为IE代理服务器。
WPAD协议先简单解释下:浏览器可以通过从一个一定规则的URL下载一个PAC(代理服务器自动配置)文件来自动配置代理服务器。这个URL的规则可以简单描述为这样。
先向DHCP服务器(如果有)发送DHCPINFORM请求,访问返回信息WPAD字段中的URL;
如果失败,通过本机DNS信息自己一级级生成URL,假设本机的域名是d.c.b.a.net:
http://wpad.c.b.a.net/wpad.dat
http://wpad.b.a.net/wpad.dat
http://wpad.a.net/wpad.dat
一直找到顶级域(也包括net.cn之类)的下一级为止,找不到则失败退出。这是微软、Sun等公司99年在IETF提出的WPAD协议草案中规定的。不过,以微软一向喜欢往开放协议的实现里加私货(所谓Embrace, Extend and Extinguish的Extend)的习惯,WPAD在IE的实现也和规范有所不同。在上述基于DNS协议的查找代理自动配置失败后,IE会再根据NetBIOS去寻址尝试一次:
http://WPAD/wpad.dat
这下明白刚才广播机器名WPAD的意义了吧?

受害机的IE如果打开了自动配置代理,一旦请求带毒机的这个/wpad.dat,就会按照它将带毒机器的IP设置为IE的代理服务器。

3)带毒机的Web代理拦截受害机发给Windows Update的请求,返回自己的假更新列表。

Windows Update有一个弱点,其运行时是否使用以及使用哪个代理服务器是根据“系统的代理服务器设置”(也就是IE的代理设置)来的。受害机的IE代理被劫持到带毒机,带毒机收到受害机Windows Update检查更新请求的时候,就会拦截下来,回复自己的假更新列表,其中只有一个更新“Desktop Gadget Platform”。
如果用户设置为手动下载/手动安装此更新,一看就能看出名堂来。Vista/Win7自带小工具平台,XP则早在09年就进入扩展支持阶段,不会增加新功能了。

4)受害机从带毒机下载和“安装”Flamer的假更新包,继而被感染
这一步,Windows Update会验证下载回来更新包内的文件数字签名。Flamer作者早就考虑到这一点,他们不知通过何种手段,将微软根服务器签出的“Microsoft LSRA PA”的一个数字签名签到了伪装的更新文件上。这样,Windows Update不知不觉地以管理员权限运行了Flamer的一个下载器,这个下载器会从刚才提到的“MSHOME-xxxxxxxx”(x是16进制数)机器名指定的机器(也就是带毒机)把Flamer本体下载到受害机中并跑起来。
这种劫持比起ARP劫持来要更方便和可靠,ARP是数据链路层的东西,实现起来麻烦一些不说(以往看到的ARP病毒都得装winpcap的驱动),客户端的各类安全软件也早就能防ARP劫持了。不过达成目的的前提是,IE必须设置为自动配置代理服务器,这个我得查一下IE默认的设置是怎么样的。

Flamer的体积极为巨大,必定还有很多其他的秘密包括传播手段等尚未被研究出来。这篇文章纯粹是读了N篇Flamer相关的博文的一个笔记罢了。。各种参考文献懒得列了,说明下参考自卡巴的专家Aleks,Symentec以及Sophos发布的文章算了。