前言
2018年下半年开始,360互联网安全中心监控到一批恶性木马下载器一直在更新传播,初步统计,中招机器超过40万台。
该木马团伙通过伪造、冒用签名的方式试图逃避安全软件检测,利用捆绑在外挂或破解软件、伪装激活工具中、植入盗版系统等方法进行广泛传播,通过释放驱动的方式实现长期驻留受害者机器。用户一旦中招,便会被篡改浏览器主页,并被静默安装推广程序或病毒木马。由于该类木马的隐蔽性很强,即使发现电脑异常,一般用户也很难查清幕后真凶,因此我们将该木马团伙命名为“幽虫”。
感染情况
自2018-10-3起至2018-11-9止,该家族样本共计感染次数91万,所有数据按照mac地址去重后共计41万。如下图所示,传播最高峰出现在10月12日,仅这一天就该家族木马就感染了近10万次。
在被感染的机器中,有84%的系统为Win7系统。这一方面是因为目前市面上Win7系统使用量占比仍比较高,另一方面也是因为在Win7系统上使用激活工具的情况也相对多一些(当前的Win10系统多为新电脑预装正版,不需要用户自行激活)——这也就给木马利用虚假的系统激活工具传播留下了更大的可乘之机。
地区感染量占比Top情况如下图所示,可以看到样本对广东、山东、河南、江苏地区用户影响较大:
样本分析
母体样本
本次分析的木马母体样本伪装成名为“xiaoma”的系统激活工具。样本启动后,释放并运行驱动加载器svchost.exe(非系统进程),驱动加载器解密自身.rc1节区内的驱动文件,同时判断注册表HKLM\SOFTWARE\Wow6432Node\VolmgrmntHome是否存在,若存在则退出程序不再继续安装。
待驱动安装成功则请求Web服务器进行日志统计:
驱动模块
驱动模块类型属于过滤驱动,其所支持功能如下图所示:
驱动的入口函数
以X64版为例。驱动入口处首先判段机器是否已被感染,之后创建用以与应用层模块进行通信的设备“volmgrmnt”,同时创建%SystemRoot%\temp\MpCz01.tmp文件作为感染标志
通过解析内核执行体获得ZwReadVirtualMemory、ZwWriteVirtualMemory、ZwProtectVirtualMemory三个函数,用于在注入应用层时写shellcode使用。同时取到KdDebuggerEnabled内核调试标志,若该值为1(即,内核调试为开启状态),则停止后续工作。之后解密驱动文件包含的两个不同版本的DLL模块,该模块最终会注入到被监控的进程中:
完成后,驱动会注册进程创建、模块加载回调例程:
之后创建TDI过滤设备\\Device\\CFPTcpFlt,该设备会挂接到\\Device\\Tcp上,用以监控TCP数据包,接着创建注册表操作回调例程:
同时,该驱动支持在低版本的系统上卸载主流安全软件的进程创建、模块加载回调例程,至此,程序的入口函数结束:
文件系统过滤
驱动模块注册了Minifilter过滤器,其所有前置与后置例程均分别设置为同一个函数:
在前置操作pre_flt_580DB94解析出当前操作进程以及被操作文件,用于规则判定,其判定的逻辑大致如下:
如果被操作文件为驱动本体,则使用IoReplaceFileObjectName将文件重解析为acpi.sys文件,
最终表现出的结果为:当用户试图查看该驱动文件的任何信息时,系统给出的结果均为正常的系统文件acpi.sys的相关信息。
故,前置操作规则总结如下:
1. 放行——主流浏览器、安全软件安装包
2. 阻止——360安全卫士、电脑管家等关键模块
3. 阻止——安全软件急救箱关键模块
4. 重解析——当前驱动文件为同路径下acpi.sys
5. (特定情况下)禁止——浏览器加载安全防护模块
6. 放行——其他
在后置操作post_flt_580F400中,除放行主流浏览器、安全软件安装包外,还针对安全软件和explorer对\drivers*的打开进行了过滤,目的是为了阻止安全软件的驱动加载:
最终结果为:当列表中匹配到的安全软件或用户试图访问drivers目录下的驱动时,均无法找到任何驱动文件,导致驱动加载失败。
后置操作规则总结如下:
1. 放行——主流浏览器、安全软件安装包
2. 对explorer以及安全软件打开 \drivers* 目录操作返回无文件
进程创建、模块加载、注册表操作回调
进程创建回调中,通过比对进程文件名的hash值判定当前进程是否拦截:
修改ntdll.dll模块的内存属性,之后在模块加载回调中写入shellcode,最后插入APC执行:
该段shellcode会加载上文提到的DLL模块,并进行导入表重定位,最后调用模块入口点执行,如下图所示:
在注册表操作回调中,过滤掉安全软件对注册表项包含驱动本体路径的操作:
设备通信
\DosDevices\volmgrmnt 设备通过与应用层注入的dll模块进行通信,维护文件、进程、网络监控列表,同时支持驱动本体文件的更新:
以上就是本驱动模块支持的所有功能。
应用层DLL模块
以32位DLL模块为例,模块启动通过判断当前进程名称执行不同的逻辑,其功能如下图所示:
配置文件的获取
DLL模块首先解析其内部配置文件,该配置文件最初由驱动加载器写入到注册表,再由驱动程序读出后写入DLL模块的.rtext节中:
DLL模块解析该加密数据,最终得到如下内容:
其中字段bkcurl字段即模块的最终配置文件,通过访问该链接,可以看到返回内容如下图:
其中定义了主页锁定链接,浏览器劫持的进程名称,下载者需要下载执行的文件等信息。
浏览器主页劫持
通过带参数重启方式替换浏览器默认主页,实际的被劫持列表还包括上文的配置信息中所列数据。
我们接到过的同类型的用户反馈如下:
其他功能
在联网下拉配置成功后,启动线程将其下回%temp%/随机.tmp/本地命名为desktop.ini,之后启动线程处理其内部字段:
DLL模块回连主控服务器,通过与主控服务器进行通信完成其所定义之功能, 主控服务器的IP地址获取比较有趣,先通过解析ca.jp.ix[a-e].cose.space域名得到返回的假IP,再通过内部换算拿到实际的IP地址。
DLL模块的衍生物
上文介绍了DLL模块会联网获取到到一个配置desktop.ini,其中有一个下载链接为hxxp://pv.mupeng1688.com/skype.exe,该文件伪造了GLOBAL BENEFIT NETWORK COMPANY LLC的签名,通过后台数据查询,可以发现在此之前,该类样本还冒用过Beijing Founder Apabi Technology Limited的签名,
功能分析
衍生物的功能包括“网页暗刷”以及“下载者”功能。功能如下图所示——这是一个典型的“CPM”模式木马。通过自身的前期铺量,后期作为“渠道商”推送其他木马获取利益。通过数据分析发现其推送的类型包含盗号、下载者、刷量、rootkit等各种恶意软件,可谓样样俱全。
这里以下载者功能为例进行简单分析,其工作流程为——判断当前工作环境,避免运行于分析环境或者沙箱中,接着与CC服务器通信获取下载任务,之后下载执行:
查杀截图
目前,360无需升级即可查杀此类木马:
彩蛋
通过同源分析,其中DLL的衍生物所推送的某例calc.exe使用了域名是mini00.com的统计后台:
总结
由于该类病毒通常以盗版系统、伪装激活工具、捆绑外挂及破解软件等方式感染用户机器,我们建议用户:
1. 请尽可能的使用正版操作系统和软件。
2. 软件建议从正规渠道下载,如官方网站或360软件管家等。
3. 如果使用了激活工具或安装了Ghost系统后出现异常状况,可使用360急救箱进行检查。
4. 建议安装360安全卫士并开启全面安全防护功能,可有效拦截此类病毒。
IOCs
[URL/HOST/IP]
hxxp://www.tj678.top
m.yinuolm.com
hxxp://pv.mupeng1688.com
ca.jp.ix[a-e].cose.space
hxxp://www.dqzsy.com/fjr666.ini
hxxp://2345dh.ps1f.com
98.100.119.135
[MD5]
01ccb04891ef1c19a5d750e79b3e2da
59eb7f61033a4b0131e1906ad1831372c
b98b041ae51316cd0f544900ccbf76a4
1b81e2e0919989776e2316a003421f2d
31aee7df1b47a6183061d94e6479e551
df9899c792145395bbc4d5b8795d98c1
fb3fa1d078912fbdacece1685a2333d1
*本文作者:360安全卫士,转载请注明来自FreeBuf.COM