“暗云”木马没有文件形态,长期潜伏在磁盘引导区,主要攻击代码放在云端,曾有超百万台电脑受感染,自2015年初被腾讯反病毒实验室首次捕获并查杀至今已有1年多。从今年4月开始,该木马卷土重来,感染了数十万台机器。新发现的暗云木马在模块分工、技术对抗等方面与老暗云相比有着明显的晋级特征,因此我们将本次爆发的木马取名为暗云Ⅱ。暗云Ⅱ除了隐蔽性高、云控、兼容性好等特点外,还有以下特点:
第一、顽固性增强,难以清除。暗云Ⅱ通过磁盘钩子隐藏恶意代码,并且特别设置一个计时器以不断地检测钩子和自身代码的完整性,一旦发现钩子被摘除或者自身代码被修改,则重启计算机,给木马的检测和清除工作增加难度。
第二、稳定性更好。暗云Ⅱ大幅度删减一些重复或不必要的功能代码,如取消了对安全软件句柄的关闭,直接在内核使用TDI连网下载模块,从而减少了应用层与内核的协作。
第三、隐蔽性更强,难以检测。前期的暗云Ⅱ推广一个用于网络攻击的exe木马,在后台攻击指定的服务器,服务器中毒后并没有明显异常现象;后期的暗云Ⅱ直接下发一个dll在内存中加载执行,中毒后包括文件、注册表、桌面图标、浏览器主页等也均没有变化,普通用户难以察觉。
图1. 暗云Ⅱ 木马启动流程
暗云Ⅱ木马通过感染磁盘MBR来实现开机启动,与暗云相比,没有大的改变,都是通过一步步的hook来跟随系统的引导流程进入系统内核执行,该套代码可兼容xp、vista、win7、win8等主流操作系统,包括64位和32位。其启动过程如图2所示。(具体细节参见:“暗云”BootKit木马详细技术分析)
图2. 暗云Ⅱ BootKit 启动过程示意图
ShellCode 1是木马进入Windows内核后,通过创建一个线程开始执行的第一段代码。其结构是一段加载代码和一个自定义的文件结构,该文件结构与PE类似,自定义了区段、导入表等结构,下文我们称其为PX文件。加载代码将PX文件加载后执行,其功能是通过对象劫持、磁盘钩子、定时器守护等一系列操作保护恶意的磁盘MBR不被检测和修改。此外,木马会在内核中直接以TDI的方式从ebak.advstis.com下载ShellCode并执行,我们将其称为ShellCode 2。
图3. 暗云Ⅱ MBR保护&隐藏原理
1)寻找磁盘驱动器(atapi or iaStor or LSI_SAS)对应的驱动对象。
2)对象劫持:将ObjectDirectory中磁盘驱动器的驱动对象替换为一个FakeObject,隐藏磁盘驱动器对象。
3)挂钩磁盘驱动器的IRP_MJ_INTERNAL_DEVICE_CONTROL函数、挂钩CmpParseKey函数以及根据磁盘类型和操作系统替换DriverStartIo、 AtapiHwStartIo、RaUnitStartIo等函数,实现阻止其他程序读取磁盘1-3F扇区(MBR)。当检测到读MBR时,返回一个构造好的正常的MBR,检测到写MBR时,则直接pass该操作。
4)新增一个计时器,在DPC Routine中反复检测IRP_MJ_INTERNAL_DEVICE_CONTROL处理函数是否挂钩成功,没有则重新挂钩,挂钩超过5次则强制重启机器。检测自身代码是否被patch,一旦发现自己被patch则重启电脑。
图4. 检测和守护相关代码
5)直接在内核以TDI的方式访问ebak.advstis.com,下载shellcode解密后直接在内核中运行。木马在TDI层用TCP连接访问ebak.advstis.com:8886获取shellcode。如果失败改用UDP连接获取,还内置了多个dns地址用于解析域名。
图5. 直接在内核联网下载ShellCode
6)发送数据并接收服务器返回的数据,接收数据结构如图6所示。
图6. 接收到的第一个数据包格式
图7. 接收到的第一个数据包内容
图8. 接收到的ShellCode 2
从云端下载回来的第一个模块为ShellCode 2,也是用来加载执行其后的PX文件,该PX文件的功能是根据配置进行锁主页、对抗安全软件、修改推广id、将解密出来的dll以APC的方式插入到指定的应用层进程中等,具体如下表:
能实现的功能 | 开关 | 参数信息 |
---|---|---|
锁定浏览器主页 | 关 | |
对抗安全软件 | 关 | |
修改导航网站推广链接 | 关 | |
向应用层插入APC | 开 | 向alg.exe、spoolsv.exe、Searchindexer.exe、Trustedinstaller.exe、Wscntfy.exe、svchost.exe、zhudongfangyu.exe、qqpcrtp.exe、ksafesvc.exe等进程插入playload.dll |
1)注册CreateProcessNotifyRoutine,当有进程创建时,若是浏览器进程,则劫持浏览器进程,在尾部添加url。劫持的进程有chrome.exe、iexplorer.exe、firefox.exe、qqborwser.exe、baidubrowser.exe、2345Explorer.exe、liebao.exe、360se.exe、SogouExplorer.exe、UcBrowser.exe。
图8. 锁主页功能相关代码
2)注册LoadImageNotifyRoutine,通过Patch sesafe.dll和safemon.dll的入口使其失效。这两个是安全软件的dll。
图9. 被patch的dll入口
3)在回调中查找CmdLineParser.dll的.rdata section中的“hao123”字符,在其后添加推广id, CmdLineParser.dll是某知名浏览器的相关文件。
4)解密文件尾部的数据,得到一个playload.dll,尝试以APC的方式向应用层指定进程插入该dll文件。Shellcode会遍历进程,当发现以下某一进程时,进行插入,成功后不再尝试其它进程。
图10. 进程列表一
图11. 进程列表二
图12. 向指定进程插APC相关代码
该dll被以APC的形式插入到应用层进程中,其具体的行为仍然依赖于云端配置,其运行后首先会从云端下载配置文件,根据配置文件执行响应的功能,能够实现的功能及具体配置情况如下表所示。配置文件所在的URL为: hxxp://update.haossk.com:8787/update/cfg.db
。
能实现的功能 | 开关 | 参数信息 |
---|---|---|
关闭指定的服务 | 关 | |
创建指定注册表 | 关 | |
下载指定Dll并Load | 关 | |
下载Exe并执行 | 关 | |
下载恶意代码,注入到svchost.exe执行 | 开 | hxxp://cfg.haossk.com:8787/cfg/datacl.bin ,解密后创建傀儡进程svchost.exe执行 |
1)首先会下载一个配置文件cfg.db( hxxp://update.haossk.com:8787/update/cfg.db
)下载完成后,解析cfg.db文件,根据配置来决定执行哪些操作,可以实现的功能如下:
图13. 下载配置文件相关代码
图14. 删除指定服务相关代码
图15. 创建指定注册表相关代码
图16. 下载dll并加载相关代码
图17. 下载exe并执行相关代码
图18. 下载ShellCode,并创建傀儡进程scvhost来执行ShellCode
2)当前配置为下载ShellCode(hxxp://cfg.haossk.com:8787/cfg/datacl.bin)并注入执行
该模块的结构是ShellCode+DLL,ShellCode的功能是在内存中展开执行解密后的DLL,DLL是个简单下载器,首先会从 hxxp://ads.haossk.com:3737/config/ka.html
下载配置文件,然后根据配置信息下载exe执行或者下载dll,最后创建傀儡进程svchost执行。
图19. 下载配置文件
图20. 配置文件格式,IsExe字段标记是否为exe
图21. 如果是exe则直接执行,否则创建傀儡svchost插入执行
该模块是目前监控到的暗云Ⅱ木马唯一落地文件,也是暗云木马的主要功能模块,从4月份爆发以来,该模块经历了几次更新换代,经分析发现,每代adten的功能都是以用户电脑为肉鸡进行网络攻击,第一代adten(md5:3007e22a8d7bfdbc4d7a5b34aaaa38c5)和第二代adten(md5:8b1a90e08a33b666d01ae27583cf5cfa)基本相似,为exe文件,直接在磁盘落地,而第三代adten则直接在内存中执行,隐蔽性更强。
图22.反病毒实验室监控到该木马主要行为节点
木马主要功能:自更新、下载执行指定模块、攻击指定DNS、刷流量、转发数据包等。
图23.adten网络攻击相关代码
图24.adten网络攻击相关代码
图25.adten网络攻击相关代码
暗云Ⅱ木马主要通过外挂、游戏辅助、私服登录器等传播,此类软件通常诱导用户关闭安全软件后使用,使得木马得以乘机植入。管家建议大家持续保持安全软件开启状态,不要运行来源不明和被安全软件报毒的程序。目前腾讯电脑管家已经能够准确检测和查杀暗云系列木马。