关键词
间谍组织,多功能后门,隐写加载器
最近,ESET分析人员发现了多起针对亚洲知名公司和地方政府的针对性攻击。这些攻击是由一个以前未知的间谍组织——Worok实施的,该组织自2020年以来一直处于活跃状态。Worok的工具集包括一个C++加载程序CLRLoad、一个PowerShell后门PowHeartBeat和一个C#加载程序PNGLoad,它采用隐写技术从PNG文件中提取隐藏的恶意负载。
-
东亚某电信公司 -
中亚的一家银行 -
东南亚某海运业公司 -
中东的一个政府实体 -
南部非洲的一家私营公司
-
中亚的一家能源公司 -
东南亚公共部门实体
图1:目标区域的可视化热图
根据攻击目标以及受害主机上部署的工具推测,Worok的主要目标是窃取信息。
获得访问权限后,攻击者部署了多个公开可用的侦察工具,包括Mimikatz、EarthWorm、ReGeorg和NBTscan。接下来是自定义植入程序,包括第一阶段加载程序,以及第二阶段的.NET加载程序(PNGLoad)。但是分析人员没有检索到任何有效载荷。在2021年,第一阶段的加载程序是一个CLR(CLRLoad)程序集。而在2022年,它在大多数情况下已被一个功能齐全的PowerShell后门(PowHeartBeat)所取代,这两种攻击链如图2所示。
图2:攻击链对比
CLRLoad是32位和64位通用的WindowsPE。它是一个用C++编写的加载器,是公共语言运行时(CLR)程序集形式的DLL文件,用于加载下一阶段的PNGLoad。其代码是从位于磁盘上的合法目录中的文件加载的,目的是为了误导受害者或事件响应机制。
-
C:ProgramFilesVMwareVMwareToolsVMwareVGAuthxsec_1_5.dll -
C:ProgramFilesUltraViewermsvbvm80.dll -
C:ProgramFilesInternetExplorerJsprofile.dll -
C:ProgramFilesWinRarRarExtMgt.dll -
C:ProgramFiles(x86)FoxitSoftwareFoxitReaderlucenelib.dll
CLRLoad通过32位变体中的CorBindToRuntimeExWindowsAPI调用或64位变体中的CLRCreateInstance调用,实现从解密出的文件路径加载CLR汇编。
PowHeartBeat是一个用PowerShell编写的多功能后门,使用各种技术(如压缩、编码和加密)进行混淆处理。基于ESET遥测,分析人员认为PowHeartBeat在最近的Worok活动中取代了CLRLoad,用以启动PNGLoad。
第二层首先使用base64解码下一层代码,然后使用3DES_CBC解密。解密后,再使用gzip算法解压,从而得到第三层的PowerShell代码,也就是真正的后门。它分为两个主要部分:配置和处理后门命令。
后门代码也是用PowerShell编写的,并使用HTTP或ICMP与C&C服务器进行通信。它的通信过程如图4所示。
(1)配置
配置包含多个字段,包括版本号、可选代理配置和C&C地址。表1描述了不同版本中配置字段的含义。
字段名称 |
描述 |
nouse/ikuyrtydyfg(其他样本) |
未使用 |
ClientId |
客户端标识符,用于以下目的: |
Version |
PowHeartBeat的版本号。 |
ExecTimes |
发出RunCmd(命令运行)命令时允许的执行尝试次数。 |
UserAgent |
用于C&C通信的Useragent。 |
Referer |
用于C&C通信的referer标头。 |
接受编码 |
未使用 |
CookieClientId |
用于构造C&C通信的Cookie标头的值。 |
UrlHttps |
用于C&C通信的协议。 |
UrlDomain |
用作C&C服务器的URL、域名或IP地址。 |
UrlSendHeartBeat |
后门向C&C服务器请求命令时使用的URL路径。 |
UrlSendResult |
后门将结果发送回C&C服务器时使用的URL路径。 |
GetUrl |
完整的URL,是上面URL元素的连接,用于向C&C服务器发送请求命令。 |
PutUrl |
与GetUrl相同,但用于将结果发送回C&C服务器。 |
currentPath |
未使用 |
ProxyEnableFlag |
后门是否使用代理的标志。 |
Proxymsg |
ProxyEnableFlag设置为true时使用的代理地址。 |
Interval |
GET请求之间休眠的时间(以秒为单位)。 |
BasicConfigPath |
包含UpTime、DownTime、DefaultInterval和Domains的可选配置文件的路径。若文件存在,这些值将被覆盖。 |
UpTime |
后门开始运行的时间,这意味着它开始向C&C服务器发出GET请求。 |
DownTime |
后门停止向C&C服务器发出请求的时间。 |
DomainIndex |
用于与C&C服务器通信的当前域名索引。如果响应的是不同于304的错误信息,则DomainIndex会增加。 |
SecretKey |
用于解密/加密配置的密钥。 |
IfLog |
未使用 |
IfLogFilePath |
指示是否启用日志记录的标志。 |
logpath |
日志文件的路径。 |
ProxyFile |
可选代理配置的文件路径。如果为空或无法在文件系统中找到,则从注册表值HKCUSoftwareMicrosoftWindowsCurrentVersionInternetSettingsProxyServer中检索用户的代理设置。 |
IfConfig |
指示是否使用配置文件的标志。 |
(2)数据加密
(3)C&C通讯
-
HTTP
-
ICMP
从PowHeartBeat的2.4版本开始,HTTP被ICMP取代,发送数据包的时间限制为6秒,且未做分片处理。通过ICMP进行通信很可能是逃避检测的一种方式。
2.4及更高版本没有大的变化,但代码中有一些修改:
在请求命令之前,PowHeartBeat会发送一个包含字符串abcdefghijklmnopqrstuvwxyz的心跳,这是通知C&C服务器后门已准备好接收命令。
后门执行命令包含字符串abcdefghijklmnop。
心跳的格式如图8所示。
clientID和clientflag区别在于,clientID在每个样本中都不同,而clientflag在每个使用ICMP的样本中都是相同的。heartbeatflag表示后门是否在发送心跳。来自C&C服务器的响应具有图9描述的格式。
关于将结果发送到C&C服务器的请求,服务器更改为post模式,字符串abcdefghijklmnop更改为结果数据。
PowHeartBeat具有多种功能,包括命令/进程执行和文件操作。表2列出了样本支持的各种命令。
表2:PowHeartBeat命令说明
字段名称 |
命令标识符 |
描述 |
Cmd |
0x02 |
执行PowerShell命令 |
Exe |
0x04 |
执行进程 |
FileUpload |
0x06 |
将文件上传到受害者主机,使用gzip压缩 |
FileDownLoad |
0x08 |
从受害主机下载文件,并将文件路径、文件长度、创建时间、访问时间和文件内容返回给C&C服务器 |
FileView |
0x0A |
获取特定目录的文件信息: ·文件名 ·文件属性 ·最后写入时间 ·文件内容 |
FileDelete |
0x0C |
删除文件 |
FileRename |
0x0E |
重命名或移动文件 |
ChangeDir |
0x10 |
更改后门的当前工作路径 |
Info |
0x12 |
根据指定参数获取信息: ·“基本信息”:ClientId、Version、主机名、IP地址、explorer.exe版本和大小信息、OS、Interval、当前目录、驱动器信息(名称、类型、可用空间和总大小)、当前时间 ·“时间间隔信息”:Interval和当前时间 ·“域名信息”:解密的配置文件内容 |
Config |
0x14 |
更新配置文件内容并重新加载配置 |
N/A |
0x63 |
后门退出 |
如果后门发生错误,会向C&C服务器的POST请求中加入特定的命令标识符0x00,来表明发生了错误。在将信息发送回C&C服务器之前,数据需要经过gzip压缩。
分析人员没有获得与PNGLoad一起使用的.png样本文件,但PNGLoad的操作方式表明它应该与有效的PNG文件一起使用。为了隐藏恶意负载,Worok使用C#中的位图对象,只从文件中获取像素信息,而不是文件元数据。这意味着Worok可以将其恶意负载隐藏在有效的、看起来无害的PNG图像中,从而隐蔽自身。
(1)样本
SHA-1 |
文件名 |
检测名称 |
备注 |
3A47185D0735CDECF4C7C2299EB18401BFB328D5 |
script |
PowerShell/PowHeartBeat.B |
PowHeartBeat2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D |
script |
PowerShell/PowHeartBeat.A |
PowHeartBeat2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 |
script |
PowerShell/PowHeartBeat.B |
PowHeartBeat2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 |
script |
PowerShell/PowHeartBeat.B |
PowHeartBeat2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 |
script |
PowerShell/PowHeartBeat.A |
PowHeartBeat1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF |
script |
PowerShell/PowHeartBeat.A |
PowHeartBeat1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 |
tmp.ps1 |
PowerShell/PowHeartBeat.B |
PowHeartBeat2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 |
tmp.ps1 |
PowerShell/PowHeartBeat.A |
PowHeartBeat2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF |
script |
PowerShell/PowHeartBeat.A |
PowHeartBeat2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 |
vix64.dll |
MSIL/PNGLoader.A |
PNGLoader |
728A6CB7A150141B4250659CF853F39BFDB7A46C |
RarExtMgt.dll |
MSIL/PNGLoader.A |
PNGLoader |
864E55749D28036704B6EA66555A86527E02AF4A |
jsprofile.dll |
MSIL/PNGLoader.A |
PNGLoader |
8DA6387F30C584B5FD3694A99EC066784209CA4C |
vssxml.dll |
MSIL/PNGLoader.A |
PNGLoader |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 |
xsec_1_5.dll |
MSIL/PNGLoader.A |
PNGLoader |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE |
msvbvm80.dll |
MSIL/PNGLoader.A |
PNGLoader |
CDB6B1CAFEE098615508F107814179DEAED1EBCF |
lucenelib.dll |
MSIL/PNGLoader.A |
PNGLoader |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D |
vsstrace.dll |
Win64/CLRLoad.C |
CLRLoad |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 |
ncrypt.dll |
Win32/CLRLoad.A |
CLRLoad |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C |
ncrypt.dll |
Win32/CLRLoad.A |
CLRLoad |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 |
wlbsctrl.dll |
Win64/CLRLoad.E |
CLRLoad |
05F19EBF6D46576144276090CC113C6AB8CCEC08 |
wlbsctrl.dll |
Win32/CLRLoad.A |
CLRLoad |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 |
安全32.dll |
Win64/CLRLoad.H |
CLRLoad |
CBF42DCAF579AF7E6055237E524C0F30507090F3 |
dbghelp.dll |
Win64/CLRLoad.C |
CLRLoad |
(2)文件路径
MainPath |
LogFilePath |
IfLogFilePath |
C:ProgramFilesVMwareVMwareTools |
C:ProgramFilesVMwareVMwareToolsVMwareVGAuthreadme.txt |
C:ProgramFilesVMwareVMwareToolsVMwareVGAuthVMWSU_V1_1.dll |
C:ProgramFilesWinRar |
C:ProgramFilesWinRarrarinstall.log |
C:ProgramFilesWinRardes.dat |
C:ProgramFilesUltraViewer |
C:ProgramFilesUltraViewerCopyRights.dat |
C:ProgramFilesUltraVieweruvcr.dll |
(3)网络
Domain |
IP |
None |
118.193.78[.]22 |
None |
118.193.78[.]57 |
airplane.travel-commercials[.]agency |
5.183.101[.]9 |
central.suhypercloud[.]org |
45.77.36[.]243 |
(4)互斥量
9xvzMsaWqxMy
(5)MITRE ATT&CK
该表是使用MITREATT&CK框架的11版本构建的。
战术 |
ID |
名称 |
描述 |
侦察 |
T1592.002 |
收集受害者主机信息:软件 |
PowHeartBeat收集explorer.exe的信息。 |
T1592.001 |
收集受害者主机信息:硬件 |
PowHeartBeat收集有关驱动器的信息。 |
|
T1590.005 |
收集受害者网络信息:IP地址 |
PowHeartBeat收集受感染计算机的IP地址。 |
|
资源开发 |
T1583.004 |
获取基础设施:服务器 |
Worok使用自己的C&C服务器。 |
T1588.002 |
获得能力:工具 |
Workok在受感染的机器上部署了多个公开可用的工具。 |
|
T1583.001 |
获取基础设施:域名 |
Worok注册域名以促进C&C通信。 |
|
T1588.005 |
获得能力:漏洞利用 |
Workok使用了ProxyShell漏洞。 |
|
T1587.001 |
开发能力:恶意软件 |
Worok开发了自己的恶意软件:CLRLoad、PNGLoad、PowHeartBeat。 |
|
T1587.003 |
开发能力:数字证书 |
Worok创建了Let'sEncryptSSL证书,以便为恶意软件启用双向TLS身份验证。 |
|
执行 |
T1059.001 |
命令和脚本解释器:PowerShell |
PowHeartBeat是用PowerShell编写的。 |
持久性 |
T1505.003 |
服务器软件组件:WebShell |
Worok使用webshell ReGeorg。 |
防御规避 |
T1140 |
去混淆/解码文件或信息 |
Worok使用各种基于XOR的自定义方案来加密PowHeartBeat、PNGLoad和CLRLoad中的字符串和日志。 |
T1036.005 |
伪装:匹配合法名称或位置 |
PNGLoad样本部署在看起来合法的VMWare目录中。 |
|
凭证访问 |
T1003.001 |
操作系统凭证转储:LSASS内存 |
Worok使用Mimikatz从LSASS内存中转储凭据。 |
发现 |
T1082 |
系统信息发现 |
PowHeartBeat收集操作系统信息。 |
T1083 |
文件和目录发现 |
PowHeartBeat可以列出文件和目录。 |
|
T1046 |
网络服务发现 |
Worok使用NbtScan获取受感染机器的网络信息。 |
|
T1124 |
系统时间发现 |
PowHeartBeat收集受害者的时间信息。 |
|
收集 |
T1005 |
来自本地系统的数据 |
PowHeartBeat从本地系统收集数据。 |
T1560.002 |
压缩收集的数据 |
PowHeartBeat gzip压缩数据,然后将其发送到C&C服务器。 |
|
命令与控制 |
T1071.001 |
应用层协议:Web协议 |
一些PowHeartBeat变体使用HTTP作为与C&C服务器的通信协议。 |
T1090.001 |
代理:内部代理 |
PowHeartBeat处理受害者机器上的代理配置。 |
|
T1001.002 |
数据混淆:隐写术 |
PNGLoad从.png文件中提取像素值以重建有效负载。 |
|
T1573.002 |
加密通道:非对称加密 |
PowHeartBeat与C&C服务器使用HTTPS通信。 |
|
T1095 |
非应用层协议 |
一些PowHeartBeat变体使用ICMP作为与C&C服务器的通信协议。 |
|
T1132.001 |
数据编码:标准编码 |
Worok在PowHeartBeat和PNGLoad中使用XOR编码。 |
|
T1132.002 |
数据编码:非标准编码 |
Worok使用其他盐的XOR编码算法。 |
|
泄密 |
T1041 |
通过C2信道泄密 |
PowHeartBeat使用其C&C通信渠道来泄露信息。 |
编辑|延俊杰
审校|邓铁洪、何双泽
本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。联系信息进入公众号后点击“关于我们”可见。
原文始发于微信公众号(国家网络威胁情报共享开放平台):间谍组织Worok大揭底
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论