Bootkit
一旦被载入系统,木马释放器就会通过程序漏洞运行,从自身解压出bootkit安装程序并将唯一的用户ID发送出去。接下来,Bootkit安装程序会修改引导扇区,将恶意程序的主体放到磁盘扇区上。
示例:磁盘引导扇区记录
示例:受感染的主引导扇区记录
如果上述操作都成功地在被感染的系统上执行,木马释放器就会发送指令重启计算机。正在上网的用户们的计算机突然重启,这引起了他们的警觉,所以在网络论坛上公布出来寻求帮助,想搞清楚到底发生了什么事。
而一旦计算机重启,bootkit就会引发一系列的系统功能,完全在系统上发作,同时还会隐藏自己,充当僵尸网络中的一个结点(bot)。
指令&控制中心的迁移
我们分析Neosploit 时发现它采用的攻击机制和技术很有趣,其中一些技术是独创的(例如链接替换、加密等),但大多数技术并不新鲜。我们以前也遇到过相关技术,但在2008年8月之前没有人利用此技术为iframeiframe进行攻击。
而真正令我们吃惊的是在分析僵尸计算机工作过程中,我们发现僵尸网络的控制中心在不断的从一个域名转到另一个域名。根据我们的监测,控制中心每天会转移 2-3次。比如早上,控制中心运行于aykfjgves.com域名上,中午时转移到了dmiafgves.com,而到晚上又跑到 gfdpves.com。因此,就会造成组成僵尸网络的受感染计算机不得不重复寻找有效指令并连接网上活动的控制中心。
这样的僵尸网络很难检测到,就是检测到,也很难将其打倒。恶意攻击者可以随时在几十个甚至上百个专用的域名间切换,这使得研究人员很难应付。即使僵尸网络的控制中心被定位,也很有可能在几个小时内转移到另一个域名。唯一的办法就是通过分析僵尸计算机在寻找新家时发送的网络数据包进行跟踪。毫无疑问,这种设计方式无非是想要阻止竞争对手窃取到这些僵尸网络,并且逃避反病毒厂商和执法机关的追捕。
示例:用来控制僵尸网络的服务器地址(从左到右依次为:域名,服务器IP地址,服务器所在的子网,自治系统)
根据特殊的算法获得并注册域名,使得攻击者能够在很长一段时间内保证恶意程序的控制中心不断转移。攻击者注册了一系列的域名,位置包括美洲、非洲、亚洲和欧洲。虽然这些资料无疑都是假的,但这些注册账户数据中有明显的俄罗斯痕迹。他们尽量多地使用世界上各地的域名。控制中心能够在几分钟之内转移到新的服务器上,有效的防止被关闭,然而却不会影响其功能。
示例:使用的服务器的位置对应的控制中心IP域名:(从左到右依次为:域名,服务器IP地址,服务器所在的子网、自治系统)
该技术同Fast-Flux使用的技术相似,Fast-Flux 技术经常被Zhelatin (风暴蠕虫)家族的恶意程序所使用。但Flast-Flux只是使恶意域名的IP地址不断变化变为可能,而这次的bootkit不仅能够变化IP地址,还能更改域名。控制中心包含一个可供自己使用的数据库,里面记载着已经注册好的域名。
示例:注册的域名
ccuuuag.biz | 67.228.229.122 | registered : 2008-08-07 |
ewwxbhdh.com | 74.50.107.78 | registered : 2008-08-07 |
paiuuag.com | 208.73.210.32 | registered : 2008-08-06 |
paiuuag.net | 208.73.210.32 | registered : 2008-08-06 |
在感染的初期,漏洞攻击代码攻击代码开始运行,受害设备会下载一个配合控制中心工作的bootkit。一旦系统重启后,bootkit将全面运行,僵尸计算机就会尝试连接到控制中心。恶意程序会根据被感染计算机的唯一ID创建网络数据包,将该数据包发送到控制中心,而此时控制中心已经记录了被感染计算机的数据。
示例:发送的数据包
如果不能连接到控制中心,该僵尸计算机会使用专用的算法依次生成 .com, .net, .biz 的域名,生成域名的数量取决于当时的日期和时间。然后后门程序会尝试将那些生成的特殊数据包作为授权密匙依次发送给上述域名。
示例:域名搜索
一旦其中有一个域名“正确”(比如接受了该数据包并且返回了特有的数据包),该僵尸计算机就会连接到该服务器成为僵尸网络中的一个客户端并以加密方式同控制中心通信。通常情况下,通信过程中还会下载一个额外的模块(一个DLL文件)到受害计算机。
间谍模块
从2008年初开始,很多业内专家就对这个僵尸网络进行了研究。但这些研究都局限于rootkit部分以及僵尸网络是如何运转,它的管理命令等内容。
我们的主要任务是在撰写bootkit历史时,确保所有的问题阐述都是正确的。要做到这一点,我们必须搞清楚如此复杂的一个bootkit在系统中潜伏着到底要干什么?
受感染的计算机连接到僵尸网络的控制中心后,会收到一个200KB以上大小的加密数据包。Bootkit解密此数据包后会释放一个DLL文件,用来将bookit加载到内存,而不会在磁盘上出现。
这样,bootkit就能够保证DLL文件能够隐形加载,而传统的分析手段是检测不到的。大多数杀毒软件也检测不到。还记得Rustock是怎么做的吗?Rustcok同样加载DLL文件到内存,但同时在受感染机器的磁盘上也会有该文件。所以,bootkit要远远复杂的多。
当然,仅仅将恶意代码载入内存意味着系统重启以后代码就会消失,系统恢复干净了(当然bootkit还存在)。但这些讨厌的“恶意程序”也有它应对的招数,当你启动系统后用杀毒软件扫描内存时,不会检测到任何可疑的问题,因为当时确实也没有恶意代码在运行,但一旦你连接到互联网,设备中的bootkit就会连接到控制中心,并将恶意的DLL文件再次加载到用户的计算机里。而这个DLL文件又能做什么呢?
让我们回顾一下Sinowal(即我们划分bootkit的类别之一)的历史。2007年底,当bootkit刚出现时,bootkit这个名字已经被使用了。它指的是一种数量很大的用来窃取数据(主要是网上银行账户数据)的木马间谍程序。当时这些程序被命令为Trojan-Spy.Win32. Sinowal。
分析此bootkit时,我们注意到它主体使用的混淆算法跟Trojan-Spy.Win32.Sinowal所使用的一致。所以我们认为这两个恶意程序的作者是同一个人。同时对DLL文件的初步分析也发现这两种恶意程序来自同一个源头。
将DLL文件从受感染计算机分离出后,我们进行了研究,并得出肯定的结论,即此DLL文件具备同Trojan-Spy.Win32.Sinowal木马间谍程序相同的功能。
所以,一旦僵尸网络获授权进入网络,用来窃取密码和拦截网络通信的DLL文件就会被下载到受害设备上。Sinowal可以称得上是一个万能的小偷。一旦它侵入系统,就会立即扫描系统内的应用程序,搜寻可盗用的密码。
反编译后的密码窃取模块
目标应用程序
Total Commander | Thunderbird | FlashFXP | SecureFX |
Windows | The Bat | Trellian FTP | LeechFTP |
Commander | Internet Explorer | Crystal FTP | e-Safekey |
AK-Mail | Mozilla FireFox | Folder | Flash Player |
Inetcomm | LeechFTP | FAR Manager | PuTTY |
Outlook | FTPS | FTP Voyager | WinSCP |
MSO | FireFtp | CuteFTP | SecureCRT |
这个用来窃取机密数据的模块所针对的大多数应用程序都是用于网站管理的。这对那些恶意用户至关重要,因为正是利用这些网站,恶意用户可以组织僵尸网络的指令和控制中心,或用来执行漏洞攻击密码。但对这些网络犯罪分子来说,最有价值的还是银行账户信息。
部分间谍模块窃取的网上银行的密码信息,整个列表包括大约300多个网上银行
感染用户计算机的DLL文件会拦截所有的网络连接,检测用户对网上银行的连接,用户在上面输入的所有数据都会被发送到恶意用户指定的服务器上。
间谍模块能够利用bootkit作为平台,发起“中间人”攻击 (简称MITM攻击(http://en.wikipedia.org/wiki/Man-in-the-middle_attack),因为 bootkit已经掌控了操作系统的所有资源。这使得间谍模块能够拦截所有经过浏览器的加密信息。
该模块几乎拥有所有间谍程序的功能,包括常见的键盘输入数据拦截。当用户连接https站点时,间谍程序会在浏览器中额外开启一个窗口要求用户输入认证信息。用户往往会上当并输入个人信息,因为这样的窗口看起来很像是银行网站的。
间谍程序能够将用户重定向到钓鱼网站。所有收集到的数据都会以加密的形式上传到专属服务器。
示例:支持SSL连接的服务器将用户重定向到钓鱼网站(从左到右依次为:域名、服务器IP地址、服务器所在的子网、自治系统)
示例:窃取应用程序密码并发送到服务器(从左到右依次为:域名、服务器IP地址、服务器所在的子网、自治系统)