“微马来袭”:首例针对微信的大规模窃密攻击

2021/04/12 来源:金山毒霸作者:金山毒霸

近期毒霸安全团队通过“捕风“威胁感知系统监控到一批针对微信进行窃密攻击的新型木马,借助“微信多开盒”、“简单天气”等流氓软件外壳伪装驻留用户系统, 监控注入微信进程盗取用户登陆的授权令牌等敏感信息,从毒霸安全数据分析溯源看,该家族从2021年3月初借助流氓下载器渠道开始进入活跃传播,预估全网感染用户量超过50W,是我们近年观测到的首例针对PC微信进行大规模窃密攻击的木马家族,根据其传播特点我们将其命名为"微马"家族,其幕后窃取的大批微信登陆令牌信息可能正流向"流量暗刷"、“恶意营销”、"广告引流"等微信相关黑产产业链。

image

随着信息化的发展,个人数据的商业价值越来越高,这也引起了黑产对此的觊觎。而作为个人数据最主要的载体,通讯软件的安全更是重中之重。作为主流的通讯软件,微信承载着大量用户的个人隐私数据。因此,黑产也将黑手伸向了它。

今年3月份,国内首例利用“清粉”软件非法获取微信用户信息的案件在江苏省进行了集中宣判,该黑产团伙通过“清粉”软件非法获取用户微信群聊二维码信息,并将这些群聊二维码以图片形式保存在服务器上,再倒卖给下游的诈骗、赌博等犯罪团伙获利。

本次捕获的样本同样非法获取用户微信的隐私信息,危害性值得我们警惕。毒霸之前发布的几篇报告也有关于个人隐私数据的窃取:

电信、百度源码疑遭泄漏,“驱魔”窃取隐私再起波澜

“流量暗刷与劫持”攻击

披露报告:流氓家族窃取用户浏览隐私活动

窃取用户浏览器隐私的流氓病毒

该木马安装后会通过服务自启动进行持久化。服务执行时,会下载配置文件,根据配置文件进行更新渠道的下发。服务会往Wechat.exe注入两个主要的模块,注入模块是用来执行主要窃密流程、通信模块是负责与服务建立通讯。注入模块通过正则匹配暴力搜索微信内存,找寻到目标内存地址,通过在特定的函数地址下钩子来对相应的变量进行监控,从而窃取用户数据。随后注入模块将数据通过管道发送至服务,由服务完成对c2的通讯。


样本整体执行流程如下:

导图1


行为分析

安装包带有数字签名“Suzhou Dongyou Network Technology Co., Ltd.”,伪装成正规软件产品。安装过程(静默安装)中注册了FsWxService服务,此服务对应落地文件WexService.exe。对应的卸载程序uninst.exe执行后,恶意文件WexService.exe并未删除,FsWxService服务仍然驻留在系统服务中。

WexService.exe是由易语言编写,主要向WeChat.exe注入两个模块,恶意模块与通讯模块。恶意模块进行了加密处理,解密后为易语言编写的pe文件;通讯模块是upx壳的pe文件直接明文存放在代码段中。

WxOpen.exe为微信多开的启动器,无异常行为,是该样本伪装的门面。

2

安装包安装过程中将本地机器的mac地址、安装版本以及浏览器的最近两条浏览信息上报至c2。

pcap

云控协议分析

FsWxService服务自动启动后,样本会下载配置文件,通过配置文件进行后续的操作。

下载的配置文件是一段json格式的配置文件,其混淆方式是对字符串base64编码后进行了逆序处理。样本根据配置文件的字段进行初始化操作:update字段控制更新版本的下发;url字段存放下发版本的下载地址(其中url2中的lib.dat是由des加密,解密后为恶意pe文件);md5为校验值;kjts等空置的字段为快捷链接的配置信息,设置后会在桌面生成广告快捷链接;wsgj字段判断是否对杀软进行规避,若选择规避则在检测到国内主流杀软进程后自关闭服务。

配置

遍历注入微信

WexService.exe对进程WeChat.exe进行了远程线程注入。恶意模块对其进程空间进行遍历,通过正则匹配寻找目标地址进行hook,并将取回的数据进行整理。最后通过通讯模块完成对WexService.exe的通讯,WexService.exe中的服务端采用IOCP完成端口绑定管道句柄,异步通信通过管道完成。从而实现恶意服务与微信之间的进程通讯。

服务端收到数据后根据PackType判断进行相应的数据处理,进行重新整合编码,再发送到c2。样本对收发的数据进行两种方式的处理,一种是base64编码后逆序,一种是base64编码后在前面再加2个字母。

恶意模块主要的恶意行为是安装钩子对所关注的数据进行监控,两处钩子都在WeChatWin.dll模块中,恶意模块根据字节码特征使用正则匹配对该模块进行暴力搜索定位到目标函数点,进行数据的收集。

微信图片_20210407172428

下面是该样本数据传输的流程:

    a. 钩子处理前原始监控数据,此处数据为微信登录时的链接,包含着uin、key、pass_ticket等字段,微信初始化、获取通讯列表/好友信息等都需要使用到这些字段。

a

    b. 跳转进入到位于恶意模块的挂钩函数后,函数对链接进行类型的判断,从而对原始数据进行不同的处理。确定好打包类型PackType,将上述原始数据组合后进行编码。随之打包成json格式,跳转至通讯模块。

b

    c. 通过注入的通信模块发送数据至恶意服务。恶意服务在初始化的时候也在堆空间释放了相同的通信模块。通过创建与打开相同的IO完成端口,获取文件句柄,从而完成进程间的通信。该模块存在多种方式的通信方式,在后续发送数据到c2端时使用的是常规的TCP连接的函数。

c

    d. 恶意服务接收到被注入进程发送过来的数据后,对数据进行解包,进行类型判断后,提取所需内容,重新组包编码逆序后发送至c2。该样本在组包时,使用的是自己内嵌的一段js代码,通过易语言调用该接口进行数据组包的处理。

pcap1

    e. 最终数据包如下,此例为该恶意样本监控到微信登录行为时发送的,uin、key、pass_ticked等数据,该监控点同样会监控到微信浏览的所有链接。

finalPcap

该恶意服务在每次重新启动后都会进行云控配置的下载,从而根据配置进行相应的操作。完成一系列初始化操作后,主要流程就是对被注入进程窃取的信息进行转发。通过"捕风"系统溯源,大部分样本都是由流氓下载器静默安装。



总结

在日常软件的使用中,部分用户因为不熟悉电脑操作,在安装软件时错误的下载到"流氓下载器"。恶意软件利用了流氓软件爆炸似的推广,导致大量用户静默安装了此类恶意软件。从而造成了个人隐私数据泄露等后果。通讯软件承载着大量的个人信息,而作为用户量过亿的微信更是有大量的隐私信息。我们在日常使用软件中应当做到:不下载未知的第三方工具、辅助工具,不在陌生的机器上登录通讯软件。

同时建议用户电脑上及时安装金山毒霸等杀毒软件,对预警的恶意文件及时清理。从而保护自己系统环境的安全。

db



IOCs

MD5:

016f668de65177be42b902aa7dcd6f1d

677f25dc94e40dbf6765f26a2fabc5c4

099bcd838cad2ab75565cca99247b2e6

6bc8dc7610ccd78568912b1b36d4cb30

f82a22f99b545519419420c932250c22

f4b2def2e514a7d35649601d54e1118c

ea4b349f849b07cbf52dca7969bf87be


C2:

pz[.]quyoumei[.]cn

218.93.208.78