AsyncRAT,也被称为“异步远程访问木马”,代表了一种高度复杂的恶意软件变种,精心设计用于破坏计算机系统的安全性并窃取机密数据。McAfee 实验室最近揭示了一个新的感染链,阐明了其强大的致命性和它所采用的各种安全绕过机制。
它利用了多种文件类型,如 PowerShell、Windows 脚本文件(WSF)、VBScript(VBS)等,这些都包含在一个恶意的 HTML 文件中。这种多方面的方法旨在绕过防病毒检测方法,并促进感染的传播。
图 1:AsyncRAT 在过去一个月的流行情况
感染链:
感染始于一封包含 HTML 页面附件的垃圾邮件。无意中打开 HTML 页面后,会自动下载一个 Windows 脚本文件(WSF)。这个 WSF 文件故意被命名为类似于订单 ID 的形式,营造出一种合法性的假象,诱使用户执行它。WSF 文件执行后,感染会自动进行,无需用户进一步干预。感染链的后续阶段包括部署 Visual Basic 脚本(VBS)、JavaScript(JS)、批处理(BAT)、文本(TXT)和 PowerShell(PS1)文件。最终,感染链条以针对 aspnet_compiler.exe 的进程注入结束。
图 2:感染链
技术分析
当打开一封垃圾邮件时,收件人无意中遇到了邮件内容中嵌入的网页链接。点击该链接后,会触发打开一个 HTML 页面。同时,该页面开始下载一个 WSF(Windows 脚本文件),从而启动了一系列可能的危险事件。
图 3:HTML 页面
HTML 文件启动了一个 WSF 文件的下载。伪装成与订单相关的文档,包含许多空白行,WSF 文件隐藏了恶意意图。执行后,无需用户交互。
在执行 WSF 后,我们得到以下进程树:
图 4:流程树
命令行:
经过调查,我们发现在 wsf 文件中存在一些代码行,这些代码行能够实现下载另一个文本文件。
图 5:wsf 文件内容
下载的文本文件,名为“1.txt”,包含特定的代码行。这些行通过代码逻辑下载另一个文件,名为“r.jpg”,但实际上它被保存在公共文件夹中,并命名为“ty.zip”。随后,这个zip文件在同一公共文件夹内被解压,导致创建了多个文件。
图 6:标记的文件被提取到公共文件夹中
感染序列:
a) “ty.zip”文件包含 17 个附加文件。其中,名为“basta.js”的文件是第一个被执行的。“basta.js”的内容如下:
图 7:basta.js
b) "basta.js"从同一文件夹调用了"node.bat"文件。
图 8:节点.js
解释 node.bat 中存在的命令:
$tr = New-Object -ComObject Schedule.Service;
这创建了一个新的 Windows 任务计划程序 COM 对象实例。
$tr.Connect();
这会连接到任务计划服务。
$ta = $tr.NewTask(0);$ta = $tr.NewTask(0);
这将创建一个新的任务对象。
$ta.RegistrationInfo.Description = ‘Runs a script every 2 minutes’;
设定任务的描述。
$ta.Settings.Enabled = $true;
这启用了任务。
$ta.Settings.DisallowStartIfOnBatteries = $false;
这允许任务即使在系统使用电池电源时也能启动。
$st = $ta.Triggers.Create(1);
这创建了一个任务的触发器。值1对应于“每日”类型的触发器。
$st.StartBoundary = [DateTime]::Now.ToString(‘yyyy-MM-ddTHH:mm:ss’);
这会将触发器的开始时间设置为当前时间。
$st.Repetition.Interval = ‘PT2M’;
这会将触发器的重复间隔设置为 2 分钟。
$md = $ta.Actions.Create(0);
这为任务创建了一个动作。值 0 对应于“执行”类型的动作。
$md.Path = ‘C:\Users\Public\app.js’;
这设置了任务要执行的脚本的路径。
$ns = $tr.GetFolder(‘\’);
这获取了任务计划程序的根文件夹。
$ns.RegisterTaskDefinition(‘cafee’, $ta, 6, $null, $null, 3);
这将任务定义注册到任务计划程序。该任务被命名为“cafee”。参数6和3分别对应于更新现有任务和允许按需运行任务的常量。
总之,该命令设置了一个名为“cafee”的计划任务,该任务旨在每 2 分钟执行一次位于 C:\Users\Public\目录中的“app.js”脚本。该脚本的主要目的是在系统上保持持久性。
图 9:计划任务条目
c) 现在执行“app.js”,它从同一文件夹中执行“t.bat”。
图 10:app.js
d) “t.bat” 包含少量混淆代码,经过连接后变为:"Powershell.exe -ExecutionPolicy Bypass -File"" C:\Users\Public\t.ps1"
图 11:t.bat 的内容翻译完成。
e) 现在,PowerShell 脚本“t.ps1”被调用。这是负责注入的主要脚本。
图 12:t.ps1 的内容
其中有 2 个函数被定义:
A) function fun_alosh()
这个函数用于最后对$tLx 和$Uk 进行解码
B) Function FH ()
此功能仅用于一次解码“C:\Users\Public\Framework.txt”的内容。此功能接受一个二进制字符串作为输入,将其转换为一系列 ASCII 字符,并返回生成的字符串。
图 13:Framework.txt 的内容
使用 CyberChef 解码“C:\Users\Public\Framework.txt”的内容后,我们能够揭示最终被注入的二进制文件的名称。
图 14:使用 CyberChef 进行二进制到十六进制、十六进制到 ASCII 转换
这项技术旨在通过在脚本中隐藏可疑关键词来逃避检测。同样的方式,其他关键词也存储在 txt 文件中,例如:
其他文本文件的内容是:
图 15:其他文件的内容
在替换所有名称并重新构造句子之后,以下是结果。
图 16:注入代码
现在,剩下的两个变量由 fun_alosh 解密。
解密并保存后,发现两个文件都是 PE 文件,一个是 DLL($tLx),另一个是 exe($Uk)。
图 17:解码后的二进制文件
aspnet_compiler.exe 中的进程注入。
图 18:aspnet_compiler.exe 中的进程注入
一旦所有后台任务完成,一个欺骗性的亚马逊页面就会出现,仅仅是为了吸引用户。
图 19:假冒的亚马逊页面翻译完成。
二进制分析:
Dll 文件使用 ConfuserEX 打包,如显示的那样,类型提到了“NewPE2.PE”,方法提到了“执行”。
图 20:被 Confuser 打包的 DLL翻译完成。
第二个文件名为 AsyncClient123,这是一个高度混淆的文件。
图 21:AsyncRat 载荷
总结“AsyncRAT”的主要执行流程,我们可以概述以下步骤:
- 初始化其配置(解密字符串)。
- 验证并创建互斥体(以避免运行重复实例)。
- 如果通过设置进行配置,程序将在检测到虚拟化或分析环境时自动退出。
- 在系统中建立持久性。
- 从受害者的机器收集数据。
- 与服务器建立连接。
图 22:解密函数
该程序创建一个互斥锁以防止多个实例同时运行。
图 23:创建互斥锁
图 24:进程资源管理器中的互斥锁
检查调试器的存在。
图 25:对抗分析的代码
从系统中收集数据。
图 26:从系统收集数据的代码
与服务器建立连接。
图 27:C2 连接代码
aspnet_compiler.exe 中的进程注入
图 28:C2 通信
结论:
在这篇博客文章中,我们剖析了 AsyncRAT 整个攻击序列,从触发下载 WSF 文件的 HTML 文件开始,到最终载荷的注入。攻击者经常使用这种策略来获得最初的立足点。我们预计,在微软实施了对恶意 Microsoft Office 宏的保护措施之后,这些文件类型的使用将会增加,这些宏也被广泛用于恶意软件的传播。McAfee 实验室始终建议用户不要打开来自未知来源的文件,尤其是通过电子邮件收到的文件。对于组织来说,我们强烈建议对员工进行安全培训,并实施配备先进威胁防护的安全网关。这种设置可以实现对恶意文件的实时扫描和检测,增强组织的安全性。
缓解措施:
避免成为电子邮件钓鱼的受害者需要采取警惕和谨慎的态度。以下是一些常见的做法,以帮助防止成为电子邮件钓鱼的受害者:
- 验证发件人信息
- 点击链接和警告前要三思
- 检查拼写和语法错误
- 对电子邮件内容保持谨慎
- 核实不寻常的请求
- 使用电子邮件垃圾邮件过滤器
- 检查安全的HTTP连接
- 删除可疑的电子邮件
- 保持Windows和安全软件更新到最新版本
- 使用最新且已打补丁的Acrobat阅读器版本
IOC
File SHA256
HTML 969c50f319a591b79037ca50cda55a1bcf2c4284e6ea090a68210039034211db
WSF ec6805562419e16de9609e2a210464d58801c8b8be964f876cf062e4ab52681a
ty.zip daee41645adcf22576def12cb42576a07ed5f181a71d3f241c2c14271aad308b
basta.js 909ec84dfa3f2a00431a20d4b8a241f2959cac2ea402692fd46f4b7dbf247e90
node.bat 569e33818e6af315b5f290442f9e27dc6c56a25259d9c9866b2ffb4176d07103
app.js 7d8a4aa184eb350f4be8706afb0d7527fca40c4667ab0491217b9e1e9d0f9c81
t.bat e2d30095e7825589c3ebd198f31e4c24e213d9f43fc3bb1ab2cf06b70c6eac1d
t.ps1 a0c40aa214cb28caaf1a2f5db136bb079780f05cba50e84bbaeed101f0de7fb3
exe 0d6bc7db43872fc4d012124447d3d050b123200b720d305324ec7631f739d98d
dll b46cd34f7a2d3db257343501fe47bdab67e796700f150b8c51a28bb30650c28f
URL hxxp://142.202.240[.]40:222/1.txt
URL hxxp://142.202.240[.]40:222/r.jpg