第一章 概述
7月13日,360安全卫士检测到一起网站广告位挂马事件,大量网络广告出现集体挂马,广告内容以同城交友等诱惑信息为主,预警为“擒狼”木马攻击。我们通过对整个挂马攻击的分析溯源发现,这个木马主要功能是锁定浏览器的主页并带有远程控制后门,作者通过木马谋取暴利,是一起典型的黑产行为。
该木马通过漏洞执行,安装服务和驱动,通过驱动锁定浏览器主页,服务实现自启动并将自身注入系统进程.连接C&C下载配置和插件,其中一个插件劫持淘宝客的推广ID来实现流量变现,不排除还有其他插件实现静默安装等更多的黑产行为.
在分析过程中我们发现,利用漏洞传播仅仅是该木马的其中一种推广方式,但仅仅是这一种推广方式,在7月13日一天内,360安全卫士就拦截了3万多次攻击.因此,我们有理由相信此木马应该有一个庞大的安装基数和日活量,才能使木马作者维持稳定的盈利,支持其继续开发。
第二章 运行效果
木马执行后,全程静默安装,没有任何提示,重启计算机后,服务和驱动被加载,主页被锁定.
第三章 漏洞利用
此次挂马攻击主要是使用的Kaixin exploit kit(挂马攻击包),是近年来比较活跃的挂马组合攻击包,也是目前已公开发现的国内唯一一个专门提供挂马攻击的服务,该挂马攻击包会混合使用多个Java、Flash和IE漏洞进行挂马,此次攻击使用的较新的漏洞主要是针对Edge 浏览器的CVE-2016-7200/ CVE-2016-7201漏洞,针对Flash的CVE-2016-4117漏洞,针对IE浏览器的CVE-2016-0189漏洞。
黑客通过一些网站的广告位嵌入含漏洞的网页,诱导用户点击。
如果不慎点击这些广告位就可能触发带漏洞攻击的页面,如CVE-2016-0189[1]漏洞:
如果此时受害者是一台没有打补丁的机器,就会触发相应漏洞,开始下载木马并执行:
第四章 技术细节
Dropper
流程图
Dropper程序运行后,在内存中解密恶意代码,动态获得系统API,最后流程转移到注入代码流程。
注入程序在首次启动时将rsrd节中加密的数据解密并存储到注册表中,随后尝试注入svchost程序,释放白名单文件Acset.dat,将acset.dat设置为重启后重命名为sens.dll,替换掉系统的System Event Notification Service服务,将自身写入sens.lang文件,随后联网发送统计信息.
在系统重启后,系统System Event Notification Service服务模块指向白名单插件sens.dll,白名单插件加载被释放的sens.lang启动注入程序,注入程序注入svchost并且hook ZwOpenFile,hook写入的代码中包含有创建线程,当svchost打开文件时候利用创建线程函数启动注入的代码。
此时被注入的svchost释放并安装驱动文件,驱动加载后删除驱动文件,随后将驱动模块指向微软官方的mlang.dll。
最后svchost将workdll注入services同时hook ZwMapViewOfSection,当services调用ZwMapViewOfSection函数时通过CreateThread函数使workdll开始工作。
细节:
首先提升权限,将当前进程权限提升为SeDebugPrivilege,随后作者为了避免程序被分析进行调试器检测。
检测windbg和ollydbg以及pchunter。
检查是否处于调试状态。
判断参数是否正确,从文件rsrd节解密数据,用Zlib库解压数据后获得以下文件。
创建注册表4d36e965-e325-11ce-bfc1-08002be10318目录,添加InstallName、LastDeleteData、LocalizedInfo、LowerLogoData项。
其中LastDeleteData包含锁主页驱动, workdll, 配置文件等.
为了保证开机自启动,通过延时删除替换系统dll,设置dll开机启动,尝试注入svchost程序。
首先遍历进程找到要注入的系统进程,申请空间注入代码。
因为通过远程线程调用启动注入代码容易引起杀毒软件监控,所以恶意程序hook 了ZwOpenfile函数,当svchost打开文件时创建线程启动注入的程序。
注册延时替换文件,将sens.dll文件在系统重启的时候替换为Acset.dat文件,设置注册表 “HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\SENS\Start” 使sens.dll开机启动。
设置开机启动系统System Event Notification Service服务
为了保证程序成功运行,如果系统进程无法注入,则程序自己创建dllhost进程注入。
随后通过HTTP向http://tj.xinyu88.com/tongji.php?userid=CCC555&mac=${MAC}&osver=${OSVER}&a=${INSSTATE}发送统计信息。
在重启系统之后,sens.dll被替换为Acset.dat文件,典型的运行白名单加载恶意程序方式,Acset调用LoadLibrary加载sens.lang文件,即CCC555.exe本身,随后启动注入程序注入svchost并且hook ZwOpenFile来启动注入代码。
被注入的svchost释放驱动文件,文件名称为dump_{随机服务}.sys,为了躲避查杀,dump_后面的部分使用系统现有服务名,利用msbpdrv_tsp~.inf文件安装驱动。
作者为了避免sys文件被直接发现引起怀疑,加载驱动后将驱动文件替换为微软官方mlang.dll。
Workdll被注入services同时hook ZwMapViewOfSection,当services调用ZwMapViewOfSection函数则通过CreateThread函数使workdll开始工作。
驱动模块
驱动文件带有已经被吊销的数字签名,
获取配置文件,读取注册表指定位置“HKEY_CLASSES_ROOT\CLSID\{4d36e965-e325-11ce-bfc1-08002be10318}”中的LastDeleteData项获取配置信息
解密得到配置文件
锁主页配置:
后门配置
通过”InstallName”项,获取当前安装的服务和驱动文件的文件名
收集主机中的收藏夹
遍历收藏夹和”Desktop”上的“.lnk .url” 文件, 并提取 链接地址
初始化配置信息
判断延时删除项,检测服务启动项的状态,对服务进行守护
注册文件监听过滤器
文件增删改查时,都会记录到日志上
监控进程创建事件
系统所有的进程创建,均会通知驱动,驱动会根据PID 维护一个进程列表
创建进程事件的回调
判断指定的进程,符合条件则注入DLL
申请内存,注入”WorkDll”, 后续工作交由Ring3完成
Workdll
Dropper启动后从注册表读取保存的workdll文件,把workdll注入到系统进程,workdll加载后将尝试从本地加载缓存的配置文件.没有则从C&C下载新的配置
配置缓存路径为c:\windows\temp,文件名为~G{计算机名CRC32取反}.tmp,内容经过加密分段存放.
其中GlobalConfig配置内容为:
加载完配置后进入加载插件流程
和配置一样插件也有本地缓存,文件名为~TP112FA.tmp,内容为zlib压缩的dll文件
插件的Flag对应表:
从表中可以看出该模块具有后门的基本功能,包括删除文件,下载dll和exe,加载到进程等.
对于当前插件Flag为0x91,即 类型为DLL,加载到浏览器,数据为zlib压缩
加载插件模块
然后进入命令循环,每隔60秒连接服务器
连接C&C为 pzds1.thebestsites.in
淘宝客劫持插件
通过workdll下载的插件CED566ED.rar是一个淘宝客PID劫持插件,功能为检测到淘宝购物链接时,向浏览器注入JS脚本,把原来的淘宝客PID替换成配置文件中的PID.来达到盈利的目的.
读取配置中的pid列表
setJsForTaobao函数,设置js中的参数
Js脚本,来自从服务器下载的配置
针对淘宝设置js脚本
针对京东设置js脚本
从代码中可以看到插件还有替换HTML的功能,但是由于配置文件设置的是测试字符串,这项功能并没有触发.
html-replacing配置
第五章 对抗
在样本分析过程中遇到了大部分木马常见的对抗手段,包括反调试、反虚拟机、白利用,驱动隐藏、注册表存储文件等,可见作者在免杀上面花费了不少时间和精力.
拼接API函数名称并动态加载
通过检测鼠标位置来对抗虚拟机行为分析
白利用
利用合法带有数字签名的DLL文件加载木马DLL
延时替换文件
利用MoveFileEx函数的MOVEFILE_DELAY_UNTIL_REBOOT模式实现系统重启时替换文件
驱动文件隐藏
驱动加载成功后,删除驱动文件,修改注册表,使指向的驱动文件为操作系统的白文件,这样在用户层就找不到加载的驱动文件.
常见调试工具进程检测
驱动模块中检测是否被调试
驱动中检测安全类和其他锁主页的模块
只有未检测到安全类和其他锁主页的模块时,才会触发锁主页和淘宝客劫持的行为。
第六章 溯源
和 “一生锁页”的关系
在分析过程中,我们发现样本和 “一生锁页”相似度极高,经详细对比,确认CCC555.exe就是“一生锁页”的免杀版.
“一生锁页”官方网站普通版说明:
可以看到,普通版也有自动更新和后台管理功能.
免杀版说明:
在官网注册推广账号后,可以看到还有免杀版.
“一生锁页”的官网上作者提到是软件免费,并留有捐赠通道,给人的感觉是单纯凭兴趣开发.
但是当注册账号,登录管理平台后的页面里又说有其他方式盈利,显然前后矛盾.
根据前面的分析,我们推测其所说的其他方式应该是淘宝客劫持.
而来自网友的反馈,确实有人在不知情的情况下中过此木马.
多个线索都证明”一生锁页”带有后门.具有静默安装和电商推广、淘宝PID劫持等行为.
利益链
结合多个数据,我们整理出一个“一生锁页”的利益链:
1.作者制作锁主页普通版木马通过官方主页推广,用户和推广者并不知道有后门,表面上通过锁主页的提成盈利,其实更大部分来自于后门插件的淘宝客窃取.
2.作者制作锁主页免杀版木马,针对有固定用户量的推广者,推广者可能使用下载站捆绑或网站挂马等方式实现推广,这些推广者应该知道软件带有后门,锁主页和后门插件窃取淘宝客的收益由推广者和作者共同分成.
普通版和免杀版对比
Workdll导出函数
Workdll字符串对比
Workdll解密函数
Workdll写注册表函数
驱动文件版本号比较:
驱动字符串比较
普通版和免杀版主要区别
在分析普通版样本过程中,我们发现C&C域名可以直接访问,可以直接看到淘宝客劫持的收益
经过查看js脚本中的连接,直接访问配置,返回下面的数据
其中 邮箱字段就是 一生锁页官网上的QQ邮箱
尝试使用其中的密码登录免杀版的C&C服务器的VNC成功,
获取SVN的账号和密码,下载了2个库
在网站源码中,找到Mysql密码,得到免杀版的账号,日活等信息
php代码中有证据表明有淘宝PID劫持和推广链接ID劫持,免杀等行为.
网站源码中还有制造静默安装包的模块,这个功能是在http://120.24.47.99/服务器完成的
在这个服务器中就有渠道号CCC555的安装程序, 其中包含“后门”字样
配置文件:
和分析的样本中的相同
服务器数据统计
普通版淘宝客盈利统计 newbe.in
数据从2016年5月8日开始
可以看到两个明显的峰值,分别是2016年11月11和2016年12月12,和电商的销售旺季重合.这两天提成分别是88594和101675.
截止到2017年7月26日, 448天内累计点击量1173万,成交量42万,提成 219万元.
免杀版用户数统计
我们对免杀版所有用户数量进行了统计,结果如下:
其中我们分析的样本CCC555.exe,即userid为16的用户数据刚好从7月13日暴增,和我们检测到的数据刚好吻合.
第七章 自检
用户可以通过手动检测查看是否中招:
注册表:
1
|
HKEY_CLASSES_ROOT\ CLSID\{4d36e965-e325-11ce-bfc1-08002be10318} |
其中 InstallName不固定
HKEY_LOCAL_MACHINE\Software\Microsoft\COM3下新增了COMVersion项
COMVersion的值为机器ID和时间戳
temp目录:
c:\windows\temp目录中:
网络:
每隔1分钟向 120.25.239.40或52.78.96.21的11900端口发送数据包
第八章 总结
经过前面的分析,我们可以看出作者在这个项目上投入了大量的时间和精力,独立实现了应用层、驱动以及管理平台,代码量比较大,应该是全职开发.并且有自己的推广渠道,是一起打着免费锁主页的旗号通过后门来变现的黑产行为.
作者以为没有弹窗,不会影响终端用户的体验就不会被发现,就可以和推广者”达到彼此共赢”,闷声发大财了.天网恢恢疏而不漏,只要有恶意行为,总有被发现的一天。目前,360网盾可以有效拦截此类网站挂马
360安全卫士拦截木马注入系统进程:
360追日团队(Helios Team)
360 追日团队(Helios Team)是360公司高级威胁研究团队,从事APT攻击发现与追踪、互联网安全事件应急响应、黑客产业链挖掘和研究等工作。团队成立于2014年12月,通过整合360公司海量安全大数据,实现了威胁情报快速关联溯源,独家首次发现并追踪了三十余个APT组织及黑客团伙,大大拓宽了国内关于黑客产业的研究视野,填补了国内APT研究的空白,并为大量企业和政府机构提供安全威胁评估及解决方案输出。
已公开APT相关研究成果