以快连VPN恶意安装包为例,攻击流程如下。

当在搜索引擎中搜索“快连VPN”时,会在搜索结果中出现托管恶意安装包的水坑网站(letssvpn[.]vip),域名试图模仿快连VPN的英文名LetsVPN。攻击者可能对该网站做了SEO优化,使其出现在搜索结果的首页。

进入水坑网站,直接展示下载页面,两个选项指向同一个下载链接。下载的ZIP压缩包中包含一个MSI安装文件。

安装程序
安装包文件的基本信息如下。
MD5 | dddbd75aab7dab2bde4787001fd021d3 |
文件名 | Kuaivpn-n-3.msi |
文件大小 | 43.34 MB (45449728字节) |
VT上传时间 | 2024-03-12 09:52:33 UTC |
其中包含kuaivpn.exe文件,安装程序将其释放到”C:\PRogram Files\Kuaivpn\Kuaivpn\Kuai\tdata\emoji”目录下并运行。



恶意软件kuaivpn.exe的基本信息如下。
MD5 | 94d05e7b1b18869de70047e08f2ca1e7 |
文件名 | kuaivpn.exe |
文件大小 | 26.60 MB (27893248字节) |
创建时间 | 2024-03-01 09:58:11 UTC |
PDB路径 | D:\\zm\\9.14\\ProxyDll\\7.2\\11.12\\k\\KUAI\\letsvpn\\MQQApPEarance\\x64\\Release\\MQQAppearance.pdb |
VT上传时间 | 2024-03-12 10:55:06 UTC |
kuaivpn.exe释放”C:\ProgramData\ckq”,释放文件实际为ZIP压缩包,其中包含正常的快连VPN安装程序。然后kuaivpn.exe从文件内部嵌套的数据中解密出一个DLL文件并加载,调用其导出函数'_levnc'。

解密DLL数据的方式为按字节加9,然后异或0x27。

DLL的导出函数_lenvc首先检测样本是否被调试。还会查看CPU数量是否小于2,以及物理内存大小是否不低于3GB,但这些检测实际并没有启用。

组装用于存放白加黑组件的目录路径,保存目录在”C:\ProgramData”下,以随机字符串命名。值得注意的是,目录名称后面跟”_n”,最后的木马会根据这个后缀选择连接的C2服务器。

释放并运行BAT脚本,通过注册表设置关闭UAC提示。

内置的ZIP压缩包解压到上面指定的目录中,解压密码在代码中硬编码,为"@Sp15p%"。


白加黑组件中的恶意DLL拆分为了c和k两个文件。

从”C:\ProgramData\ckq”中解压出正常的安装程序letsvpn-latest.exe。

用copy命令将c和k合并为libemb.dll。

运行letsvpn-latest.exe用以迷惑受害者,同时启动fhbemb.exe,并删除ckq压缩包和中间文件c、k。至此,安装程序kuaivpn.exe完成操作。
Loader
fhbemb.exe通过动态加载的方式调用libemb.dll的导出函数ProcessMain。

恶意DLL为Loader程序,导出函数ProcessMain查找同目录下的LP.TXT文件,从中解密出远控木马并加载运行。

通过ntdll.dll获取API,在解密之后再调用RtlDecompressBuffer解压,恢复出待加载的PE数据。

木马
木马程序为使用HP-socket通信库的修改版gh0st RAT。首先会检测是否被调试,以及CPU数量和物理内存大小。

木马内置多个C2服务器的IP和端口,在函数MwInitC2List(sub_1001F6FD)中初始化包含这些C2信息的加密字符串。

函数MwCheckAnDChooseC2(sub_1001FF01)依次异或解密这些字符串,并与木马进程对应的EXE文件所在目录名进行比对:如果解密字符串在”|#$|”分隔符之前的部分和目录名中”_”之后的字符串相同,则选择其中的IP和端口作为C2服务器。而如果所有字符串都不能匹配,则退出程序。攻击者通过这种方式保证木马程序在期望的运行环境中才会发起网络通信。

解密包含C2信息的加密字符串,所得结果如下,去掉可能用于测试的内网IP(192.168.0.225)和本地回环地址(127.0.0.1),共涉及44个IP。
如果木马程序没有管理员权限,则尝试以管理员身份重新运行,如果已经具备管理员权限,则建立持久化。

建立持久化时,先将白加黑组件复制到新创建的目录下,仍保留相同的目录名后缀(这里是”_n”)。然后创建名为"Windows Eventn"的服务指向EXE文件的新位置。

根据实现远控指令的函数可以看出,木马支持通过插件扩展功能。

发表评论