跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

精选回复

发布于

0x00 前言

Asynrat是使用C Sharp开发的C2工具。本文仅分析Asynrat的技术细节,从技术研究的角度介绍检测方法。

注:

本文选取的AsyncRAT更新日期为2020年5月9日。

0x01 简介

异步捕获的优势

AsyncRAT的技术细节

检测方法

0x02 AsyncRAT的优点

AsyncRAT由C Sharp开发,应用于Windows系统。它具有以下优点:

支持从Pastebin.com读取C2服务器的配置信息

支持在内存中加载PE文件

支持C#或VB代码的动态编译和执行

支持u盘感染,可以感染所有用开发的exe文件。NET在u盘里。

支持自动读取保存在Firefox和Chrome浏览器中的密码

通过欺骗用户点击,UAC被绕过来要求权力。

通过C#接口技术,提高了程序的可扩展性。在程序实现中,每个函数对应一个类,这个类被编译成一个dll文件。当需要加载时,服务器将它发送给客户端。客户端通过Activator实例化该类。CreateInstance,然后调用该类的方法。

0x03 AsyncRAT的技术细节

根据异步控制面板上的功能,对该部分逐一进行分析,如下图所示

2-1.png

1.SendFile

(1)记忆

加载内存exe文件,它支持以下两种类型:

反射

使用装配。加载到加载C#程序

详情请参考之前的文章《从内存加载.NET程序集(Assembly.Load)的利用分析》。

朗佩

通过替换进程内存来加载exe文件

可以选择以下程序作为注入程序:

aspnet _编译器. exe

RegAsm.exe

MSBuild.exe

RegSvcs.exe

vbc.exe

注:

以上5个exe文件位于Microsoft.NET框架的安装目录中,与AsyncClient.exe的位数一致。

随着会话被32位AsyncClient.exe弹回,默认会找到32位Microsoft.NET框架的安装目录,例如:C:\ Windows \ Microsoft.net \ Framework \ v 4 . 0 . 30319

随着会话被64位AsyncClient.exe弹回,默认会找到64位Microsoft.NET框架的安装目录,例如:C:\ Windows \ Microsoft.net \ Framework 64 \ v 4 . 0 . 30319

RunPE操作会启动上述五个exe文件中的一个,通过ReadProcessMemory、VirtualAllocEx、WriteProcessMemory和ResumeThread修改进程内存,替换为要加载的exe文件。

这里需要注意的是,要加载的exe文件需要与AsyncClient.exe的位数一致。

由于会话被32位AsyncClient.exe弹回,RunPE操作只能加载32位exe文件。

由于会话被64位AsyncClient.exe弹回,RunPE操作只能加载64位exe文件。

详情请参考之前的文章《傀儡进程的实现与检测》。

(2)磁盘

将exe文件上传到目标主机的%Temp%目录,将其重命名为随机字符串,然后用Powershell启动exe文件。执行后,不会删除%Temp%目录中的exe文件。

2. Monitoring

(1)远程桌面

监控屏幕实时获取目标桌面的内容(只监控,不操作)

调用Graphics类的CopyFromScreen实现屏幕截图

关于Python实现的监控屏幕的详细内容,请参考之前的文章《Pupy利用分析——Windows平台下的屏幕控制》。

(2)键盘记录器

获取实时目标主机键盘输入的消息和进程名。

用钩子实现键盘录音

(3)密码恢复

获取保存在Firefox和Chrome浏览器中的密码。

技术细节请参考之前的文章《渗透技巧——导出Firefox浏览器中保存的密码》和《渗透技巧——导出Chrome浏览器中保存的密码》。

(4)文件管理器

文件管理,还支持7zip的隐蔽安装和文件的压缩解压。

如何隐藏7zip安装:

在%Temp%目录下创建一个新的文件夹7-Zip并释放文件7z.exe和7z.dll。

(5)流程经理

流程管理,支持查看和关闭流程。

(6)报告窗口

监控重要流程。当指定的进程在目标主机上运行时,控制终端会弹出提示信息。

(7)网络摄像头

打开摄像机

3.Miscellaneous

(1)机器人黑仔

清除注册表HKLM和HKCU中\ software \ Microsoft \ windows \ current version \ run和software \ Microsoft \ windows \ current version \ runonce中其自身进程保存的条目。

(2)USB扩展

当目标主机连接到USB闪存驱动器时,它会感染USB闪存驱动器中的文件。

将木马客户端复制到u盘并隐藏。默认保存的名称是LimeUSB.exe。

修改所有用。NET在u盘中,通过CSharpCodeProvider更改程序运行过程,并添加以下代码:

使用系统;

使用系统。诊断;

使用系统。反思;

使用系统运行时。InteropServices

[assembly:assembly商标(' % Lime % ')]

[程序集:Guid(“% Guid %”)

静态类%LimeUSBModule%

{

公共静态void Main()

{

尝试

{

系统诊断。过程。开始(@“% File %”);

}

抓住{ }

尝试

{

系统诊断。过程。开始(@“%有效负载%”);

}

抓住{ }

}

}

用户在启动正常文件的同时会隐蔽执行U盘中的木马客户端

(3)种子洪流

向目标主机发送种子文件并下载

目标主机需要安装尤特朗特或者比特流

(4)远程外壳

弹出一个交互式的煤矿管理局窗口

(5)拒绝服务攻击

向指定域名持续发送超文本传送协议数据包

(6)执行。网络代码

在目标主机上动态编译C#或者动词代码并执行

模板文件包含弹框和下载执行的功能

我提取出了其中编译C#代码并执行的功能,代码示例如下:

使用系统;

使用系统100 . CodeDom

使用系统CodeDom。编译器;

使用系统。反思;

命名空间CodeDomProviderTest

{

班级计划

{

静态void Main(string[] args)

{

string source=@ '

使用系统;

使用系统窗户。形式

命名空间异步

{

公开课程

{

公共静态void Main(string[] args)

{

尝试

{

消息框.show(' Hello World ' ');

}

抓住{ }

}

}

}';

codedom provider codedom provider=codedom provider .创建提供程序(“cs harp”);

尝试

{

var编译器选项='/target:winexe/platform:any CPU/optimize-';

定义变量编译器参数=新编译器参数();

编译器参数引用程序集。添加('系统。dll’);

编译器参数引用程序集。添加('系统。窗户。表格。dll’);

编译器参数GenerateExecutable=true

编译器参数GenerateInMemory=true

编译器参数编译器选项=编译器选项;

编译器参数TreatWarningsAsErrors=false

编译器参数IncludeDebugInformation=false

var编译器结果=codedom提供程序.CompileAssemblyFromSource(编译器参数,源代码);

如果(编译器结果。错误。计数0)

{

foreach(编译器错误编译器结果中的编译器错误。错误)

{

控制台WriteLine(字符串。格式("{ 0 } \行:{1} -列:{ 2 } \文件:{3}",编译器错误。错误文本,

编译器错误。行,编译器错误。列,编译器错误。文件名));

打破;

}

}

其他

{

装配装配=编译器结果。已编译的程序集;

MethodInfo methodInfo=程序集。入口点;

object injObj=assembly .CreateInstance(methodInfo .姓名);

对象[]参数=新对象[1];

if (methodInfo .GetParameters().长度==0)

{

参数=空

}

方法信息.Invoke(injObj,parameters);

}

}

接住(例外ex)

{

控制台WriteLine(例如。消息);

}

}

}

}

(7)文件搜索器

搜索指定后缀名的文件并打包成活力文件

4.Extra

(1)访问网站

启动默认浏览器并访问指定URL,界面不隐藏

发送MessageBox

在目标主机上弹出对话框

(3)聊天

在目标主机上弹出对话框,实时显示输入的内容

(4)获得管理员权限

使用cmd.exe以管理权限重新启动木马客户端,这个操作会在用户桌面弹出UAC框,需要用户选择允许后才能运行

如果用户未选择允许,会一直弹出UAC对话框

UAC对话框的程序位置将暴露木马客户端的路径。

如果想伪造一个更可信的UAC对话框(不暴露程序的位置),可以参考之前文章《A dirty way of tricking users to bypass UAC》中的思路。

(5)空白屏幕

运行功能:

通过WinAPI CreateDesktop()创建一个随机名称的虚拟桌面,内容为空。当切换到这个空的虚拟桌面时,用户无法操作该桌面。

停止功能:

通过WinAPI SwitchDesktop()切换到原始桌面

(6)禁用Windows Defender

通过修改注册表关闭Windows Defender,通常在Win10系统上使用。

(7)设置壁纸

设置用户的桌面。

5.Server

阻止客户端

指定拒绝IP回拨的特洛伊木马客户端。

6.Builder

(1)连接

DNS:指定C2服务器的IP,可以设置多个。

端口:指定C2服务器的端口,可以设置多个端口。

Pastebin:从Pastebin.com读取C2服务器信息,包括DNS和端口。

内容示例:

127.0.0.1:6606:7707:8808

(2)安装

用作配置木马客户端自启动的功能。

开启此功能后,木马客户端会被复制到指定位置。

文件名可以重命名。

您可以选择%AppData%或%Temp%目录作为文件路径。

木马客户端以普通用户权限执行时,会在注册表HKCU \软件\微软\ Windows \当前版本\运行中添加条目,以新的木马客户端名称作为注册表项的名称,以新的木马客户端路径作为注册表项的数据。

当特洛伊木马客户端以管理员权限执行时,它将使用schtasks命令创建计划任务。该命令的示例:

schtasks/create/f/sc on登录/rl最高/tn /tr

预设任务的名称是新的木马客户端名称,预设任务将在用户登录时执行。

(3)杂项

组:对木马客户端进行分类。

互斥:设置互斥,避免木马客户端重复启动。

反分析:

包括以下功能:

DetectManufacturer,通过WMI获取系统信息(select * from Win32 _ ComputerSystem),检查制造商是否包含字符VIRTUAL、vmware或VirtualBox。

DetectDebugger,使用WinAPI CheckRemoteDebuggerPresent()检查是否是调试器。

检测沙箱,使用WinApi GetModuleHandle()检查SbieDll.dll是否存在。

IsSmallDisk,检查硬盘大小是否小于60Gb。

Isxp,检查系统名是否包含字符xp。

工艺标准:

将进程设置为保护进程。如果保护进程意外关闭,将导致BSOD。

详情请参考之前的文章《结束进程导致BSOD的利用分析》。

延迟:延迟执行的时间。

(4)组装

您可以手动设置文件属性,也可以复制指定文件的文件属性。

(5)图标

设置文件图标

(6)建造

简单混淆器:简单混淆是通过重命名实现的。

关键代码:

私有静态ModuleDefMD重命名混淆(Module中的ModuleDefMD)

{

ModuleDefMD module=inModule

IRenaming rnm=new namespaces rename();

模块=rnm。重命名(模块);

rnm=新类重命名();

模块=rnm。重命名(模块);

rnm=新方法重命名();

模块=rnm。重命名(模块);

rnm=新属性重命名();

模块=rnm。重命名(模块);

rnm=新字段重命名();

模块=rnm。重命名(模块);

返回模块;

}

}

0x04 检测方法

1.查找可疑文件

路径:%AppData%和%Temp%目录

2.使用自动运行来检查可疑的启动项目。

(1)注册地

HKLM \软件\微软\ Windows \当前版本\运行

HKCU \软件\微软\ Windows \当前版本\运行

(2)计划任务清单

3.后台可疑流程

AsyncRAT的木马客户端只是exe文件形式,运行时会产生可疑进程。

4.通信流程

检查可疑进程的外部通信流量。

5.使用防病毒软件

目前杀毒软件会拦截AsyncRAT。

0x05 小结

本文从技术研究的角度分析了AsyncRAT的技术细节,并介绍了检测方法。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。