这是一例plugx的样本,使用了一个合法签名的程序 ,使用侧加载的方式加载一个恶意的dll,解密一个dat文件来,在内存中执行一个反射型dll来完成恶意功能。
这个病毒会使用摆渡的方式的来窃取内网的文档数据,具有严重的失泄密隐患。
样本信息
文件: AdobeHelp.exe
大小: 253496 字节
修改时间: 2023年10月27日, 13:03:30
MD5: F26179D65B42720B2A4984D717C309DE
SHA1: 3319A0AF253D487FF8F137DD0F7F0CB3DC94F729
CRC32: AA5CF0EB文件: adobeupdate.dat
大小: 161803 字节
修改时间: 2023年10月27日, 13:03:30
MD5: 38BAABDDFFB1D732A05FFA2C70331E21
SHA1: 39E5B6B33B564E302E8F4A43E96B252BF1B8CCD6
CRC32: A200B3C6文件: hex.dll
大小: 77208 字节
修改时间: 2023年10月27日, 13:03:30
MD5: C33D3D6970DBB19062AE09505A6EB376
SHA1: DB4A2F4BA2AADA8BF12E5D840A0D5921012DBD07
CRC32: E548B9F5文件: AcroRd32.exe
大小: 190144 字节
文件版本: 3.9.0.327
修改时间: 2023年10月27日, 13:03:29
MD5: C70D8DCE46B4551133ECC58AED84BF0E
SHA1: 00626346632FDFB2A1D5831793E92A3601EC4D9F
CRC32: 79CE50B1
整个病毒执行过程分为两个阶段。
第一阶段
样本有三个,其中AcroRd32.exe为Adobe
官方程序,有合法的签名,该程序运行过程中会加载恶意动态库hex.dll
的CEFProcessForkHandlerEx
函数,这个函数会读取同目录下的adobeupdate.dat
文件,对其进行解密,在内存中释放和加载一个dll,这个dll是一个反射型dll,来执行主要的恶意行为。
AcroRd32.exe:
Verified: Signed
Signing date: 8:22 2016/10/13
Publisher: Adobe Systems Incorporated
Company: Adobe Systems Incorporated
Description: Adobe CEF Helper
Product: Adobe CEF Helper
通过动态调试在hex.dll
的VirtualProtect
设置断点,将解密后的dll dump出来。
dump出来的dll信息。
Verified: Unsigned
Link date: 16:10 2020/1/16
MachineType: 32-bit
MD5: F67CA2E8EA7E44890D9D7F045FC7D855
SHA1: E7D1DFB0ECFABE691761F90C789A39CDD691403A
下面详细分析这个dll。
第二阶段
第二阶段主要是进入 dump出的dll 执行
首先,初始化化一段全局变量,解密了一段长度为1828的数据,其中包含了1个互斥量和4个c2
的地址。生成一个随机值设置HKLM/HKCU\Software\CLASSES\ms-pu\CLSID
,创建并隐藏目录%appdata%\Intel\
。
读取程序的命令行参数。
情况一:从U盘启动的场景
若没有参数的话,这是从U盘启动的情形,执行感染系统的操作。
首先,在当前系统中创建目录%userprofile%\AcroRd32cWP\或%alluserprofile%\AcroRd32cWP\
,将自身拷贝到这个目录下,命名为AcroRd32.exe
。
将当前目录的下的3个文件hex.dll,adobeupdate.dat,AdobeHelp.exe
拷贝到这个目录下。
在注册表中添加开机启动项(如下 )。
HKLM\Software\Microsoft\Windows\CurrentVersion\RunAcroRd32cWP
HKCU\Software\Microsoft\Windows\CurrentVersion\RunAcroRd32cWP
指向 %userprofile%\AcroRd32cWP\AcroRd32.exe 177 或%alluserprofile%\AcroRd32cWP\AcroRd32.exe 177
然后执行%userprofile% 或 %alluserprofile%\AcroRd32cWP\AcroRd32.exe 177
,然后退出。
情况二 从主机启动或开机自启动的情形
若有两个参数的话,创建名为nayWCTWyopTwgSLTxfbf
的互斥量,若同名的互斥量存在,则退出 。
若参数为-net
的话,设置2个注册表项(如下 )。然后感染系统并设置开机启动项退出。
HKLM\System\CurrentControlSet\Control\Network\version=1
HKCU\System\CurrentControlSet\Control\Network\Version=1
若参数不为-net
的话。感染U盘,窃取用户的文档,与C2建立通信。
清理与AdobeHelper.exe、AdobeUpdates.exe、AdobeUpdate.exe、AAM Updates.exe、AAM Update.exe
有关的进程、文件和注册表中的开机启动项。
检测当前是否连接移动存储介质,有的话,执行感染U盘和摆渡文件的操作。
感染U盘的过程
感染U盘的过程如下。
首先,设置注册表,用于隐藏文件的后缀名。
Software\Micsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden=0
Software\Micsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSupperHidden=1
Software\Micsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt=1
进而,清理与AdobeHelper.exe、AdobeUpdates.exe、AdobeUpdate.exe、AAM Updates.exe、AAM Update.exe
有关的进程、文件和注册表中的开机启动项。
在U盘的根目录,创建一个隐藏的文件夹X:\ \
,在这个目录下创建文件X:\ \desktop.ini
,写入IconResource=%systemroot%\system32\SHELL32.DLL,7
,该文件的作用是将文件夹的图标修改为了驱动器的icon。
创建一个隐藏文件夹X:\RECYCLERS.BIN\
,在该目录下创建desktop.ini
,写入CLSID={645FF040-5081-101B-9F08-00AA002F954E}
,将文件夹X:\RECYCLERS.BIN\
变成回收站。
将同目录下的的hex.dll AdobeHelp.exe AdobeUpdate.dat
拷贝到X:\RECYCLERS.BIN\
中,将自身拷贝为X:\RECYCLERS.BIN\AdobeUpdate.exe
。
将U盘下的文件移动到 X:\ \
下(跳过 .和… 以及隐藏的目录,卷名.exe
或 Removable Disk(U盘总共的大小).exe
),删除根目录下的lnk文件。
将X:\RECYCLERS.BIN\AdobeHelp.exe
拷贝为X:\Removable Disk(U盘总共的大小).exe
或 X:\卷名.exe
。
AdobeHelp.exe的作用是打开X:\ \
目录,运行病毒主体X:\RECYCLERS.BIN\AdobeUpdate.exe
,执行感染系统的操作。
文件摆渡的过程
创建一个窗口,classname
为static
,来监控可移动存储介质的插入,当有U盘插入的时候,向U盘拷贝文件,或才从U盘中取出窃取的文件。
首先会访问https://www.microsoft.com
,测试当前系统是否连接互联网。
非联网状态
若不能访问https://www.microsoft.com
,首先读取注册表项HKLM/HKCU\System\CurrentControlSet\Network\Version
的值 ,
若Version为1的话,执行命令systeminfo,ipconfig /all,netstat -ano,arp -a,tasklist /v
,将获取到的系统信息保存到U盘中X:\RECYCLERS.BIN\[ms_pu_CLSID]\c3lzLmluZm8
。
遍历系统所有驱动器(跳过U盘),窃取文档文件。
找到后缀名为.doc .docx .ppt .pptx .xls .xlsx .pdf
且大小小于300MB的文件,将目标文件加密拷贝到U盘X:\RECYCLERS.BIN\[ms_pu_CLSID]\
目录下,文件名使用base64编码,对文件内容进行加密,并同步两个文件的时间。
当U盘中的可使用的空间大小(预留1/10的存储空间后)小于10MB,停止拷贝。
生成一个tmp.bat文件,执行
%comspec% /q /c systeminfo > path+c3lzLmluZm8
%comspec% /q /c ipconfig /all >> path+c3lzLmluZm8
%comspec% /q /c netstat -ano >> path+c3lzLmluZm8
%comspec% /q /c arp -a >> path+c3lzLmluZm8
%comspec% /q /c tasklist /v >> path+c3lzLmluZm8
del %0
若当前机器是联接互联网的状态,将从内网搜集到的文件从U盘拷贝到当前机器上%appdata%\Intel
目录下。
将U盘下X:\RECYCLERS.BIN\ X:\RECYCLE.BIN\ X:\RECYCLER.BIN\
路径中(跳过RECYCLERS.BIN
文件)的文件,拷贝到当前系统%appdata%\Intel
目录下,若不是.info
文件,则清空原文件,并同步两个文件的时间。
后门部分
这个样本会和C2进行通信,这部分比较复杂,还没有分析清楚,可参考最后一节的资料。有4个C2地址。
42.99.117.95:443
42.99.117.95:8080
news.169mt.com:8000
news.169mt.com:8090
IOC
hash
文件: AdobeHelp.exe
MD5: F26179D65B42720B2A4984D717C309DE
SHA1: 3319A0AF253D487FF8F137DD0F7F0CB3DC94F729
CRC32: AA5CF0EB文件: adobeupdate.dat
MD5: 38BAABDDFFB1D732A05FFA2C70331E21
SHA1: 39E5B6B33B564E302E8F4A43E96B252BF1B8CCD6
CRC32: A200B3C6文件: hex.dll
MD5: C33D3D6970DBB19062AE09505A6EB376
SHA1: DB4A2F4BA2AADA8BF12E5D840A0D5921012DBD07
CRC32: E548B9F5文件: AcroRd32.exe
MD5: C70D8DCE46B4551133ECC58AED84BF0E
SHA1: 00626346632FDFB2A1D5831793E92A3601EC4D9F
CRC32: 79CE50B1文件
主机上
C:\ProgramData\AcroRd32cWP\AcroRd32.exe、hex.dll、adobeupdate.dat、AdobeHelp.exe、tmp.bat
C:\users\administrator\acrord32cwp\AcroRd32.exe、hex.dll、adobeupdate.dat、AdobeHelp.exe、tmp.bat
%appdata%\Intel 隐藏的目录,这个目录用来保存从U盘摆渡出来的文件U盘中
X:\RECYCLERS.BIN\AdobeUpdate.exe、hex.dll、adobeupdate.dat、AdobeHelp.exe
X:\Removable Disk(U盘总共的大小).exe
X:\卷名.exe 实为AdobeHelp.exe,用于启动AdobeUpdate.exe,打开目录X:\<0xA0>\
X:\<0xA0>\ 用来保存U盘中根目录下原来的文件
X:\RECYCLERS.BIN\[ms_pu_CLSID]\ 用来保存从主机上窃取的文件,文件名使用base64编码,文件内容被加密
X:\RECYCLERS.BIN\[ms_pu_CLSID]\c3lzLmluZm8 这是窃取的系统信息ms_pu_CLSID 这是一个16字节长度的随机字符串,根据系统时间生成,类似于B78FFCDB0E13FAAD、
B80F0B871093FEB1、B9DA1AB8125E02B5、BA156EAF149906B9,生成之后会保存在注册表HKLM/HKCU\Software\CLASSES\ms-pu\CLSID中。注意 主机上的AcroRd32.exe和U盘中AdobeUpdate.exe是一个文件注册表
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\
AcroRd32cWP=%userprofile%\AcroRd32cWP\AcroRd32.exe [数字]
或者AcroRd32cWP=%alluserprofile%\AcroRd32cWP\AcroRd32.exe [数字]HKCU\Software\Micsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden=0
HKCU\Software\Micsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSupperHidden=1
HKCU\Software\Micsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt=1
HKLM\System\CurrentControlSet\Control\Network\version=1
HKCU\System\CurrentControlSet\Control\Network\Version=1
HKLM/HKCU\Software\CLASSES\ms-pu\CLSID互斥量
nayWCTWyopTwgSLTxfbfC2
https://www.microsoft.com
42.99.117.95:443
42.99.117.95:8080
news.169mt.com:8000
news.169mt.com:8090
总结
这个plugx样本是一个典型摆渡型窃密木马,使用分离免杀和白加黑侧加载的方式来躲避检测。解密后的payload是一个反射型的dll,有点像CS的beacon。样本中的api地址都是使用LoadLibrary和GetProcAddress来获取,给静态分析带来很大的工作量。通过U盘进行传播,远控模块比较复杂,目前C2地址已经失效了,但是对于隔离网用户来说,还是有一定的失泄密隐患。
参考资料
-
malware-ioc/quarterly_reports/2020_Q2 at master · eset/malware-ioc · GitHub
-
TA416 使用 PlugX 恶意软件新的 Golang 变种进行攻击 (seebug.org)
-
TA416 Goes to Ground and Returns with a Golang PlugX Malware Loader | Proofpoint US
-
THREAT ANALYSIS REPORT: DLL Side-Loading Widely (Ab)Used (cybereason.com)
-
The Spies Who Loved You: Infected USB Drives to Steal Secrets | Mandiant
-
VirusTotal - IP address - 42.99.117.95
-
PlugXRemovalGuideVersion1 0 PDF | PDF (scribd.com)
-
maltrail/trails/static/malware/plugx.txt at master · stamparm/maltrail · GitHub
-
GitHub - stamparm/maltrail: Malicious traffic detection system
-
[原创]STORAGE_DEVICE_DESCRIPTOR 方式获取硬盘序列号-编程技术-看雪-安全社区|安全招聘|kanxue.com
-
利用window的CLSID可以干的一些事情-CSDN博客
-
116444736000000000的由来 - 知乎 (zhihu.com)
-
ImDisk 命令行用法-CSDN博客
-
New wave of PlugX targets Hong Kong - Avira Blog
-
暴涨3倍!通过受感染 USB 窃密的事件愈发变多 - FreeBuf网络安全行业门户
-
CIRCL » TR-24 Analysis - Destory RAT family
-
A border-hopping PlugX USB worm takes its act on the road – Sophos News
-
THREAT ANALYSIS REPORT: PlugX RAT Loader Evolution (cybereason.com)
-
Examining APT27 and the HyperBro RAT - NetWitness Community - 693490
-
THREAT ANALYSIS REPORT: DLL Side-Loading Widely (Ab)Used (cybereason.com)
-
Detecting Media Insertion or Removal - Win32 apps | Microsoft Learn