RAT样本分析

样本分析
在这里插入图片描述
在这里插入图片描述
信息熵表明该恶意程序可能在内存中存在有效负载。

查看字符串和导入表:在这里插入图片描述
在这里插入图片描述
Software\Microsoft\Windows\CurrentVersion表明程序执行某些和注册表相关的操作,CreateProcessA或ShellExecuteA可能用来执行进行下阶段的有效负载,找一找也能发现和注册表相关的APIRegSetValueExA、RegCreateKeyExA。

沙箱
在沙箱中运行了下该恶意程序。

第一个指标,恶意程序一直在尝试联系恶意域名stonecold.ddns.net:

在这里插入图片描述
成功链接后,发送多个 TCP 数据包,在指定端口上创建2502套接口。

第二个指标,恶意软件启动后立即在临时文件目录释放了文件:在这里插入图片描述
查看进程列表,可以知道,第一阶段的恶意程序在资源中提取了三个文件,分别是 cmdkuqqy, cckgcf.exe 和 ka9zcqw3l6l48a1uuba,然后执行第二阶段的恶意样本cckgcf.exe,将提取的另外俩个文件作为参数传递。

在这里插入图片描述
cckgcf.exe
在这里插入图片描述
GetCommandLineW函数接收命令行参数,这里应该是接收刚刚俩个加密文件。如果参数获取成功,才会进行下一步,进行解密。

恶意程序的API都经过混淆,需要动态解析出来:

在这里插入图片描述
单步调试可以发现隐藏在恶意软件进程中的shellcode,该shellcode是一个可以执行的PE格式文件:

在这里插入图片描述
这种技术叫做进程挖空技术。其中启动一个处于挂起状态的进程,在本例中是恶意软件本身。然后在挂起的进程中分配内存,并将 shellcode 写入该内存。最后将映像基址更改为 shellcode 的起始地址,进程从挂起状态恢复。现在它将从注入的 shellcode 开始执行

可以直接将shellcode提取出来,单独分析。

再看下沙箱:在这里插入图片描述
该第二阶段恶意程序在注册表下创建了一个值为ratotpvvsmo.exe的值,在run位置创建的注册表项值可以实现恶意程序的持久化。

ratotpvvsmo.exe
第三阶段和第二阶段在初始化执行的是相同的操作:在这里插入图片描述
从另一个加密资源中提取数据并解密,在这里应该还有一个shellcode。

同样的操作将shellcode提取出来。

第四阶段在这里插入图片描述
第四阶段是一个.NET库的DLL文件,还加了Eazfuscator保护器。

dnSpy打开效果如下:

在这里插入图片描述
将其解混淆可以得到:在这里插入图片描述
提取配置文件在这里插入图片描述
smethod_16 是一个静态方法,用于加载和提取可执行文件的资源数据。

调用 FindResourceEx寻找资源,使用 LoadResource 加载查找到的资源,返回资源句柄。LockResource 获取资源的内存地址。这里的目的是读取加密资源的前四个字节,从加密资源中获取四个字节的解密密钥。

在这里插入图片描述
它还用于使用指定的 Guid 和 Rfc2898DeriveBytes 类生成加密密钥,然后使用 RijndaelManaged 类解密输入的字节数组。在这里插入图片描述
RijndaelManaged 是AES的实现。在这里插入图片描述
在这里实现了资源的加载,下断点可以得到该恶意程序解密配置文件。在这里插入图片描述
动态调试可以看到,解密后的RAT配置:在这里插入图片描述
该恶意软件根据上述配置文件调整其设置,然后执行 RAT 配置中提供的一系列步骤。然后它继续创建互斥锁,从注册表中查询机器 GUID,并在 %appdata% 中创建一个包含机器 GUID 值的文件夹。此文件夹是恶意软件的主要工作目录。

在这里插入图片描述
之后会在系统中创建一个run.dat文件。它获取当前日期时间并将这些值作为字节保存在Run.dat文件中。这可能被用作特定系统中感染开始时间的指标。

解析字符串
在这里插入图片描述
恶意软件在运行过程中动态解析字符串,以规避检测。其结构中包含了基于 LOL bins(Living Off the Land 二进制文件)的预定义名称和路径值。通过在运行时组合这些值,恶意软件能够伪装其恶意文件和进程,使其看起来像 Windows 的本机二进制文件,从而降低被发现的风险。在这里插入图片描述
在上面的截图中,可以看到恶意软件从可用的结构中选择了DNS Monitor和dnsmon.exe。

解析C2
恶意软件通过动态配置所有必要设置,解析其 C2 服务器的域名和端口号以建立连接。解析出的端口号为 2502,C2 服务器的地址为 stonecold.ddns.net。

在这里插入图片描述
在代码中,0x9C6 的十进制值正好对应 2502。

恶意软件会创建一个异步套接字并尝试建立连接。由于其代码结构动态化,相关参数值是从不同的方法调用中获取的。一旦建立连接,恶意程序会持续向 C2 服务器以异步方式发送心跳消息,以维持通信。

当前,因 C2 服务器已关闭,恶意软件的后续执行停止。

使用互联网模拟器,我们可以通过模拟 C2 服务器处于活动状态来欺骗恶意软件。然而,恶意软件包含某种身份验证机制,在创建套接字之前会等待服务器的特定响应。这里使用 Netcat 监听指定端口,发现恶意软件持续发送心跳数据包,如以下截图所示:在这里插入图片描述
在这里插入图片描述
通过分析,可以确认 C2 服务器使用的是一个 DuckDNS 域。DuckDNS 是一项免费动态 DNS 服务,允许域名绑定到不断变化的 IP 地址,主要用于合法用途,如远程访问设备。然而,攻击者也可以滥用此服务,将其用于恶意软件的命令与控制 (C2) 通信。攻击者选择 DuckDNS 的原因包括隐藏 C2 服务器的实际位置、保持匿名、规避检测,并能够快速应对域名或服务器被封禁的情况。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值