行业动态 Industry dynamic
当前位置:首页 > 新闻中心 > 行业动态
某个号称史上最大的恶意软件的传播方式
发布日期:2012-06-08 阅读次数:833 字体大小: 标签:某个号称史上最大的恶意软件的传播方式
>

  这几天卡巴等安全厂商爆出了一个主程序文件 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 发布的文章。