个人学习日记

Async的分析

Word count: 1.8kReading time: 6 min
2020/10/23 Share

0x00 概述

AsyncRAT也是一个APT组织喜欢使用的RAT,该木马最初由Github用户NYAN-x-CAT开发,此后该工具被黑客用于各种网络间谍活动中。

0x01 描述

可以看到,该软件具有十分强大的功能,其除了能够对目标进行最基本的远程间谍活动外,还可使用USB设备突破物理隔离、使用bot killer清除目标上的竞争对手等。

image-20201022142930518

0x02 开始分析

样本名 MqVQz80T.exe
MD5 0e64fe220a9f9ba9336d5c105e97af49
创建时间 2043-08-24 08:18:35
第一次在VT上传时间 2020-03-27 17:58:01

可以看到,创建时间戳其实被修改过了的,这么以来,无法通过时间戳来判定攻击时间。

使用dnspy查看该木马,可以看到,这是一个AsyncRAT木马(根据代码特征)。

右键,转到入口点。

image-20201022144307993

  • 初始化配置信息

    在函数Settings.InitializeSettings()中,初始化配置信息,包括Hosts、Ports等信息。这些信息都是使用aes256进行解密的。

    image-20201022144857356

  • 创建互斥体

    在MutexControl.CreateMutex()函数中创建名为hxtipdgolvjvpzu的互斥体。

    image-20201023214057009

  • 反调试

    在Anti_Analysis.RunAntiAnalysis()函数中进入反调试。

    image-20201022145854026

    • 检测vmware和virtualbox

      image-20201022150046473

    • 判断程序是否被调试

    • 对抗沙箱

      image-20201022152543552

    • 判断硬盘容量是否大于61000000000L(56.81G)来检测机器是否为真实机器。

      image-20201022152701213

    • 检测当前机器系统是否为xp系统,因为目前大多用户都是使用win7及以上系统了。(而使用xp系统的,可能是分析师233)

      image-20201022152805625

  • 安装机制

    AsyncRAT还提供了安装机制来实现持续化。

    首先会判断当前程序运行路径是否为安装路径,如果是的话,则代表安装过了,不执行任何操作,否则继续往下执行。接着还会遍历进程列表,判断当前程序名是否在进程列表中,以确保程序运行的唯一性,避免多开。

    image-20201022154758043

    如果当前进程运行权限是管理员权限,则会通过添加到计划任务的方式来实现持续化。

    image-20201022155141628

    否则,会通过添加到注册表启动项的方式来实现持续化。

    image-20201022155241951

    在实现持续化以后,会在原文件的基础上添加一堆随机值,并且将此释放到安装目录下(%Temp%\svchost.exe)。

    image-20201022160258567

    通过010Editor,我们也能够很轻易发现生成的文件和源文件的不同。

    image-20201022160330125

    然后在临时目录下生成和执行.bat批处理文件。

    该批处理文件主要用于启动安装后的文件

    image-20201022160554024

    以上步骤结束后,则程序退出了。

  • 检查是否存在挖矿程序

    请注意,原版的AsyncRAT并无这个功能!该木马是魔改后的AsyncRAT。通过遍历进程,看看其参数是否包含--donate-level=这个参数,来判断是否存在挖矿进程。

    image-20201022175257659

  • 守护进程

    最后通过提高进程权限,来帮助下面的守护进程(当然,在这次的样本中没有启用该功能。)

    image-20201022160930011

    设置线程为一直在线状态。

    image-20201022160948953

  • 上线机制

    image-20201022162920235

    • Reconnect()函数用于重新连接。

    image-20201022163116244

    • InitalizeClient()用于初始化客户端

      首先,会判断Pastebin是否为空,如果不为空的话则会使用DownloadString的方式从Pastebin上获取到hosts和ports,再去进行连接。

      image-20201022164138507

      如果Pastebin为空的话,根据host和port进行连接。

      image-20201022164508920

      连接成功后,则会调用IdSender.SenderInfo()来进行手机受感染主机的信息,包括受感染主机系统版本、用户名、所安装杀软名称等信息。

      image-20201022173114068

      image-20201022170029934

      在此之后,木马程序调用msgPack.Encode2Bytes函数对上面收集到的信息进行封包。该函数会调用Encode2Stream函数,由于这里是map类型来存储数据的,所以会调用this.WriteMap来进行处理。然后再通过Zip压缩。

      image-20201022170954273

      关于该this.WriteMap()函数的处理,在这里我将引用ADLab实验室的报告里的图,更容易理解。

      下图引自ADLab实验室的报告:https://mp.weixin.qq.com/s/T15pdznZZ4ZsVVpcKrWlnQ(侵权必删。)

      ADLab

      并且通过Send函数发送出去。Send函数先将数据包的长度发送出去,然后再数据包的内容发送到服务端上。

      image-20201022174519827

      并且该木马还具有心跳机制,用来返回ping值和挖矿程序存活情况。(这是该木马魔改的,原版的并不是发送挖矿程序存货情况的,而是返回当前最前面的窗口名称)

      AsyncRAT 挖矿

      原版的:

      image-20201022181701385

  • 远程控制阶段

    作为一个RAT,接受远程控制是其基本功能,而通常的木马都是将功能硬编码在木马里,而在AsyncRAT中,确是将功能做成DLL放在了服务端!然后通过传输,把功能插件传输过去,在内存里加载。(这可真是鸡贼,大大增加了木马的灵活性,可以使用不同的插件。)

    可以看到,都是调用插件的Plugin.Plugin函数。

    image-20201022184028503

    在内存加载的插件里,还会根据不同的参数来调用不同的功能。

    image-20201022184328353

    在这里我将引用ADLab实验室的报告里的图,更容易理解。整个调用功能的流程就是这样!这种内存加载的方式,大大增加了木马的灵活程度,也大大增加分析人员的分析难度(无法从客户端得知服务端那边的功能)。

    下图引自ADLab实验室的报告:https://mp.weixin.qq.com/s/T15pdznZZ4ZsVVpcKrWlnQ(侵权必删。)

    ADLAB2

    在这里,我也无法确认该木马的功能,因为可能会有魔改(由于功能插件都是从服务端那边传过来调用的,所以从客户端是无法得知调用了什么功能)。在这里我们简单描述一下原版的功能。

    模块的名称 模块实现的功能
    Chat.dll Chat
    Extra.dll Visit Website 、Send MessageBox、、Disable Windows Defender 、Set Wallpaper、Blank Screen
    FileManager.dll File Manager
    FileSearcher.dll File Searcher
    LimeLogger.dll Keylogger
    Miscellaneous.dll BotsKill 、USB Spread 、Seed Torrent 、Remote Shell 、DOS Attack 、Execute.NET Code
    Options.dll Close、Restart、Uninstall、Show Floder、Get Admin Privileges、reportWindow、Logoff、Restart、Shutdown
    ProcessManager.dll Process Manager
    Recovery.dll Password Recovery
    RemoteCamera.dll Webcam
    RemoteDesktop.dll Remote Desktop
    SendFile.dll Send File To Disk、Update
    SendMemory.dll Send File To Memory

    可以看到,该远控功能还是挺多的,是一个十分完善的远控。

0x03 总结

该远控功能强大,本次分析的样本是AsyncRAT的魔改版,整体上来看并无太大的改动,只是在原有的基础上,添加了检测挖矿程序存活情况的功能,由此可以推测,已有人使用AsyncRAT协助挖矿!AsyncRAT本身是一个开源的项目,因此会有许多人修改其源码为自己所用。

由于该远控是开源的,以及距离公开已经有两三年了,目前的杀毒软件都能对其进行查杀。

0x04 参考链接

《新攻击新武器:盲眼鹰APT组织最新攻击》

《分析asyncRAT远控的数据包格式及通讯建立过程》

CATALOG
  1. 1. 0x00 概述
  2. 2. 0x01 描述
  3. 3. 0x02 开始分析
  4. 4. 0x03 总结
  5. 5. 0x04 参考链接