导语:7月13日,360安全卫士检测到一起网站广告位挂马事件,大量网络广告出现集体挂马,广告内容以同城交友等诱惑信息为主,预警为“擒狼”木马攻击。

第一章 概述

7月13日,360安全卫士检测到一起网站广告位挂马事件,大量网络广告出现集体挂马,广告内容以同城交友等诱惑信息为主,预警为“擒狼”木马攻击。我们通过对整个挂马攻击的分析溯源发现,这个木马主要功能是锁定浏览器的主页并带有远程控制后门,作者通过木马谋取暴利,是一起典型的黑产行为。 

该木马通过漏洞执行,安装服务和驱动,通过驱动锁定浏览器主页,服务实现自启动并将自身注入系统进程.连接C&C下载配置和插件,其中一个插件劫持淘宝客的推广ID来实现流量变现,不排除还有其他插件实现静默安装等更多的黑产行为.

在分析过程中我们发现,利用漏洞传播仅仅是该木马的其中一种推广方式,但仅仅是这一种推广方式,在7月13日一天内,360安全卫士就拦截了3万多次攻击.因此,我们有理由相信此木马应该有一个庞大的安装基数和日活量,才能使木马作者维持稳定的盈利,支持其继续开发.

第二章 运行效果

木马执行后,全程静默安装,没有任何提示,重启计算机后,服务和驱动被加载,主页被锁定.

1.png

图1

第三章 漏洞利用

此次挂马攻击主要是使用的Kaixin exploit kit(挂马攻击包),是近年来比较活跃的挂马组合攻击包,也是目前已公开发现的国内唯一一个专门提供挂马攻击的服务,该挂马攻击包会混合使用多个Java、Flash和IE漏洞进行挂马,此次攻击使用的较新的漏洞主要是针对Edge 浏览器的CVE-2016-7200/ CVE-2016-7201漏洞,针对Flash的CVE-2016-4117漏洞,针对IE浏览器的CVE-2016-0189漏洞。

黑客通过一些网站的广告位嵌入含漏洞的网页,诱导用户点击.

2.png

图2

如果不慎点击这些广告位就可能触发带漏洞攻击的页面,如CVE-2016-0189[1]漏洞:

3.png

图3

4.png

图4

如果此时受害者是一台没有打补丁的机器,就会触发相应漏洞,开始下载木马并执行:

5.png

图5

第四章 技术细节  

Dropper

流程图

6.png

图6

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,随后作者为了避免程序被分析进行调试器检测。

7.png

图7

检测windbg和ollydbg以及pchunter。

8.png

图8

检查是否处于调试状态。

9.png

图9

判断参数是否正确,从文件rsrd节解密数据,用Zlib库解压数据后获得以下文件。

1.png

创建注册表4d36e965-e325-11ce-bfc1-08002be10318目录,添加InstallName、LastDeleteData、LocalizedInfo、LowerLogoData项。

其中LastDeleteData包含锁主页驱动, workdll, 配置文件等.

为了保证开机自启动,通过延时删除替换系统dll,设置dll开机启动,尝试注入svchost程序。

首先遍历进程找到要注入的系统进程,申请空间注入代码。

10.png

图10

因为通过远程线程调用启动注入代码容易引起杀毒软件监控,所以恶意程序hook 了ZwOpenfile函数,当svchost打开文件时创建线程启动注入的程序。

11.png

图11

注册延时替换文件,将sens.dll文件在系统重启的时候替换为Acset.dat文件,设置注册表 "HKEY_LOCAL_MACHINESystemCurrentControlSetservicesSENSStart" 使sens.dll开机启动。

12.png

图12

1502181212500308.png

图13

设置开机启动系统System Event Notification Service服务

1502181221910499.png

图14

为了保证程序成功运行,如果系统进程无法注入,则程序自己创建dllhost进程注入。

15.png

图15

随后通过HTTP向http://tj.xinyu88.com/tongji.php?userid=CCC555&mac=${MAC}&osver=${OSVER}&a=${INSSTATE}发送统计信息。

16.png

图16

17.png

图17

在重启系统之后,sens.dll被替换为Acset.dat文件,典型的运行白名单加载恶意程序方式,Acset调用LoadLibrary加载sens.lang文件,即CCC555.exe本身,随后启动注入程序注入svchost并且hook ZwOpenFile来启动注入代码。

18.png

图18

被注入的svchost释放驱动文件,文件名称为dump_{随机服务}.sys,为了躲避查杀,dump_后面的部分使用系统现有服务名,利用msbpdrv_tsp~.inf文件安装驱动。

19.png

图19

作者为了避免sys文件被直接发现引起怀疑,加载驱动后将驱动文件替换为微软官方mlang.dll。

20.png

图20

Workdll被注入services同时hook ZwMapViewOfSection,当services调用ZwMapViewOfSection函数则通过CreateThread函数使workdll开始工作。

21.png

图21

驱动模块

驱动文件带有已经被吊销的数字签名,

22.png

图22

获取配置文件,读取注册表指定位置“HKEY_CLASSES_ROOTCLSID{4d36e965-e325-11ce-bfc1-08002be10318}”中的LastDeleteData项获取配置信息

23.png

图23

24.png

图24

解密得到配置文件

锁主页配置:

25.png

图25

后门配置

26.png

图26

通过”InstallName”项,获取当前安装的服务和驱动文件的文件名

27.png

图27

28.png

图28

收集主机中的收藏夹

遍历收藏夹和”Desktop”上的“.lnk .url” 文件, 并提取 链接地址

29.png

图29

初始化配置信息

1502181454844014.png

图30

31.png

图31

判断延时删除项,检测服务启动项的状态,对服务进行守护

32.png

图32

33.png

图33

34.png

图34

注册文件监听过滤器

35.png

图35

36.png

图36

文件增删改查时,都会记录到日志上

监控进程创建事件

系统所有的进程创建,均会通知驱动,驱动会根据PID 维护一个进程列表

37.png

图37

创建进程事件的回调

判断指定的进程,符合条件则注入DLL

38.png

图38

申请内存,注入”WorkDll”, 后续工作交由Ring3完成

39.png

图39

Workdll

Dropper启动后从注册表读取保存的workdll文件,把workdll注入到系统进程,workdll加载后将尝试从本地加载缓存的配置文件.没有则从C&C下载新的配置

40.png

图40

配置缓存路径为c:windowstemp,文件名为~G{计算机名CRC32取反}.tmp,内容经过加密分段存放.

41.png

图41

其中GlobalConfig配置内容为:

42.png

图42

加载完配置后进入加载插件流程

43.png

图43

和配置一样插件也有本地缓存,文件名为~TP112FA.tmp,内容为zlib压缩的dll文件

插件的Flag对应表:

11.png

从表中可以看出该模块具有后门的基本功能,包括删除文件,下载dll和exe,加载到进程等.

对于当前插件Flag为0x91,即 类型为DLL,加载到浏览器,数据为zlib压缩

44.png

图44

加载插件模块

45.png

图45

然后进入命令循环,每隔60秒连接服务器

46.png

图46

连接C&C为 pzds1.thebestsites.in

47.png

图47

48.png

图48

淘宝客劫持插件

通过workdll下载的插件CED566ED.rar是一个淘宝客PID劫持插件,功能为检测到淘宝购物链接时,向浏览器注入JS脚本,把原来的淘宝客PID替换成配置文件中的PID.来达到盈利的目的.

读取配置中的pid列表

49.png

图49

setJsForTaobao函数,设置js中的参数

50.png

图50

Js脚本,来自从服务器下载的配置

51.png

图51

针对淘宝设置js脚本

52.png

图52

针对京东设置js脚本

53.png

图53

从代码中可以看到插件还有替换HTML的功能,但是由于配置文件设置的是测试字符串,这项功能并没有触发.

54.png

图54

html-replacing配置

45.png

图55

第五章 对抗

在样本分析过程中遇到了大部分木马常见的对抗手段,包括反调试、反虚拟机、白利用,驱动隐藏、注册表存储文件等,可见作者在免杀上面花费了不少时间和精力.

l  拼接API函数名称并动态加载

56.png

图56

l  通过检测鼠标位置来对抗虚拟机行为分析

57.png

图57

l  白利用

利用合法带有数字签名的DLL文件加载木马DLL

58.png

图58

l  延时替换文件

利用MoveFileEx函数的MOVEFILE_DELAY_UNTIL_REBOOT模式实现系统重启时替换文件

59.png

图59

l  驱动文件隐藏

驱动加载成功后,删除驱动文件,修改注册表,使指向的驱动文件为操作系统的白文件,这样在用户层就找不到加载的驱动文件.

60.jpg

图60

l  常见调试工具进程检测

61.png

图61

l  驱动模块中检测是否被调试

62(1).jpg

62(2).png

图62

l  驱动中检测安全类和其他锁主页的模块

63.png

图63

只有未检测到安全类和其他锁主页的模块时,才会触发锁主页和淘宝客劫持的行为.

第六章 溯源

和 “一生锁页”的关系

在分析过程中,我们发现样本和 “一生锁页”相似度极高,经详细对比,确认CCC555.exe就是“一生锁页”的免杀版.

64.png

图64

“一生锁页”官方网站普通版说明:

65.png

图65

可以看到,普通版也有自动更新和后台管理功能.

免杀版说明:

在官网注册推广账号后,可以看到还有免杀版.

66.png

图66

“一生锁页”的官网上作者提到是软件免费,并留有捐赠通道,给人的感觉是单纯凭兴趣开发.

67.png

图67

但是当注册账号,登录管理平台后的页面里又说有其他方式盈利,显然前后矛盾.

根据前面的分析,我们推测其所说的其他方式应该是淘宝客劫持.

68.png

图68

而来自网友的反馈,确实有人在不知情的情况下中过此木马.

69.png

图69

多个线索都证明”一生锁页”带有后门.具有静默安装和电商推广、淘宝PID劫持等行为.

利益链

结合多个数据,我们整理出一个“一生锁页”的利益链:

70.png

图70

1.作者制作锁主页普通版木马通过官方主页推广,用户和推广者并不知道有后门,表面上通过锁主页的提成盈利,其实更大部分来自于后门插件的淘宝客窃取.

2.作者制作锁主页免杀版木马,针对有固定用户量的推广者,推广者可能使用下载站捆绑或网站挂马等方式实现推广,这些推广者应该知道软件带有后门,锁主页和后门插件窃取淘宝客的收益由推广者和作者共同分成.

普通版和免杀版对比

Workdll导出函数

71.png

图71

Workdll字符串对比

72.png

图72

Workdll解密函数

73.png

图73

Workdll写注册表函数

74.png

图74

驱动文件版本号比较:

75.png

图75

驱动字符串比较

76.png

图76


普通版和免杀版主要区别

111.png

在分析普通版样本过程中,我们发现C&C域名可以直接访问,可以直接看到淘宝客劫持的收益

77.png

图77

经过查看js脚本中的连接,直接访问配置,返回下面的数据[hxn1] 

78.png

图78

其中 邮箱字段就是 一生锁页官网上的QQ邮箱

79.png

图79

尝试使用其中的密码登录免杀版的C&C服务器的VNC成功,

获取SVN的账号和密码,下载了2个库

80.png

图80

在网站源码中,找到Mysql密码,得到免杀版的账号,日活等信息

php代码中有证据表明有淘宝PID劫持和推广链接ID劫持,免杀等行为.

81.png

图81

网站源码中还有制造静默安装包的模块,这个功能是在http://120.24.47.99/服务器完成的

82.png

83.png

图8 2 图 83

在这个服务器中就有渠道号CCC555的安装程序, 其中包含“后门”字样

84.png

图84

配置文件:

85.png

图85

和分析的样本中的相同

服务器数据统计

普通版淘宝客盈利统计 newbe.in

86.png

图86

数据从2016年5月8日开始

可以看到两个明显的峰值,分别是2016年11月11和2016年12月12,和电商的销售旺季重合.这两天提成分别是88594和101675.

截止到2017年7月26日, 448天内累计点击量1173万,成交量42万,提成 219万元.

免杀版用户数统计

我们对免杀版所有用户数量进行了统计,结果如下:

87.jpg

图87

其中我们分析的样本CCC555.exe,即userid为16的用户数据刚好从7月13日暴增,和我们检测到的数据刚好吻合.

88.jpg

图88

第七章 自检

用户可以通过手动检测查看是否中招:

注册表:

HKEY_CLASSES_ROOT CLSID{4d36e965-e325-11ce-bfc1-08002be10318}

其中 InstallName不固定

89.png

图89

    HKEY_LOCAL_MACHINESoftwareMicrosoftCOM3下新增了COMVersion项

90.png

图90

COMVersion的值为机器ID和时间戳

temp目录:

c:windowstemp目录中:

91.png

图91

网络:

每隔1分钟向 120.25.239.40或52.78.96.21的11900端口发送数据包

第八章 总结

经过前面的分析,我们可以看出作者在这个项目上投入了大量的时间和精力,独立实现了应用层、驱动以及管理平台,代码量比较大,应该是全职开发.并且有自己的推广渠道,是一起打着免费锁主页的旗号通过后门来变现的黑产行为. 

作者以为没有弹窗,不会影响终端用户的体验就不会被发现,就可以和推广者”达到彼此共赢”,闷声发大财了.天网恢恢疏而不漏,只要有恶意行为,总有被发现的一天.

源链接

Hacking more

...