Adaptix C2:跨平台渗透测试与对抗仿真框架

项目描述

Adaptix C2是一个专业的后渗透测试和对抗仿真框架,采用服务器/客户端架构设计。服务端使用Golang开发,客户端采用C++ QT框架实现跨平台支持。该框架提供完整的加密通信、多用户协作、图形化操作界面,支持Windows、Linux和MacOS系统的代理程序。

功能特性

  • 跨平台GUI客户端 - 基于QT6开发,支持Linux、Windows和MacOS操作系统
  • 服务器/客户端架构 - 支持多用户协作操作,实现团队协同渗透测试
  • 全加密通信 - 所有通信内容均经过加密处理,确保数据传输安全
  • 插件化架构 - 监听器和代理程序均采用插件化设计,支持功能扩展
  • 任务与作业管理 - 完整的任务调度和作业存储系统
  • 凭证管理器 - 集中管理渗透测试过程中获取的各种凭证信息
  • 目标管理器 - 系统化管理和跟踪渗透测试目标
  • 文件与进程浏览器 - 远程文件系统和进程管理功能
  • 代理网络拓扑 - 图形化显示代理连接关系和会话链路
  • Socks代理支持 - 支持Socks4、Socks5和Socks5认证代理
  • 端口转发 - 本地和反向端口转发功能
  • BOF支持 - Beacon对象文件支持
  • 健康检查 - 代理程序健康状态监控
  • 远程终端 - 完整的远程命令行交互功能
  • AxScript引擎 - 内置脚本引擎支持自动化任务

安装指南

服务端安装(Linux)

sudo apt update
sudo apt install mingw-w64 make -y
wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz -O /tmp/go1.24.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go /usr/local/bin/go
sudo tar -C /usr/local -xzf /tmp/go1.24.4.linux-amd64.tar.gz
sudo ln -s /usr/local/go/bin/go /usr/local/bin/go

# Windows 7支持
git clone https://github.com/Adaptix-Framework/go-win7 /tmp/go-win7
sudo mv /tmp/go-win7 /usr/lib/

客户端安装(Linux)

sudo apt install gcc g++ build-essential make cmake libssl-dev \
qt6-base-dev qt6-websockets-dev qt6-declarative-dev -y

客户端安装(macOS)

brew install make cmake openssl qt@6

使用说明

基本操作流程

  1. 项目创建与连接
// 创建认证配置文件
AuthProfile* profile = MainAdaptix::Login();
// 启动主界面
GlobalClient->Start();
  1. 监听器管理
// 创建HTTP/S Beacon监听器
bool success = HttpReqListenerStart("http-listener", "http", configData, profile, &message, &ok);
  1. 代理生成与管理
// 生成新代理
bool success = HttpReqAgentGenerate(listenerName, listenerType, agentName, configData, profile, &message, &ok);

// 发送命令到代理
bool success = HttpReqAgentCommand(jsonData, profile, &message, &ok);

图形界面操作

框架提供完整的图形化操作界面,包括:

  • 会话管理表格视图
  • 网络拓扑图形显示
  • 任务执行监控
  • 文件浏览器
  • 进程管理器
  • 远程终端模拟器

核心代码

主程序入口

// main.cpp - 应用程序主入口
#include <main.h>
#include <MainAdaptix.h>

MainAdaptix* GlobalClient = nullptr;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setQuitOnLastWindowClosed(true);

    GlobalClient = new MainAdaptix();
    GlobalClient->Start();
    
    return a.exec();
}

代理管理核心类

// Agent.h - 代理对象管理
class Agent
{
public:
    AdaptixWidget* adaptixWidget = nullptr;
    AgentData data = {};
    
    // 代理状态管理
    void Update(QJsonObject jsonObjAgentData);
    void MarkItem(const QString &mark);
    void SetColor(const QString &color) const;
    
    // 任务管理
    QString TasksCancel(const QStringList &tasks) const;
    QString TasksDelete(const QStringList &tasks) const;
    
    // 网络拓扑关系
    void SetParent(const PivotData &pivotData);
    void AddChild(const PivotData &pivotData);
};

命令执行引擎

// Commander.h - 命令解析与执行
class Commander : public QObject
{
    QString agentType;
    QString listenerType;
    
public:
    // 命令处理
    CommanderResult ProcessInput(QString agentId, QString cmdline);
    
    // 命令注册
    void AddRegCommands(const CommandsGroup &group);
    void AddAxCommands(const CommandsGroup &group);
    
private:
    // 预处理钩子
    QString ProcessPreHook(QJSEngine *engine, const Command &command, 
                          const QString &agentId, const QString &cmdline, 
                          const QJsonObject &jsonObj, QStringList args);
};

WebSocket通信模块

// WebSocketWorker.h - 实时通信处理
class WebSocketWorker : public QThread
{
    AuthProfile* profile;
    QWebSocket* webSocket = nullptr;
    
public:
    void run() override;
    
signals:
    void connected();
    void received_data(QByteArray data);
    void websocket_closed();
    
private slots:
    void is_connected();
    void is_binaryMessageReceived(const QByteArray &data);
};

脚本引擎集成

// AxScriptEngine.h - 脚本引擎支持
class AxScriptEngine : public QObject
{
    std::unique_ptr<QJSEngine> jsEngine;
    ScriptContext context;
    
public:
    // 脚本执行管理
    bool execute(const QString &code);
    void registerEvent(const QString &type, const QJSValue &handler, 
                      QTimer* timer, const QSet<QString> &list_agents, 
                      const QSet<QString> &list_os, 
                      const QSet<QString> &list_listeners, const QString &id);
    
    // 菜单系统集成
    void registerMenu(const QString &type, AbstractAxMenuItem* menu, 
                     const QSet<QString> &list_agents, 
                     const QSet<QString> &list_os, 
                     const QSet<QString> &list_listeners);
};

终端模拟器实现

// QTermWidget.h - 完整终端模拟功能
class QTermWidget : public QWidget
{
    TerminalDisplay* m_terminalDisplay;
    Emulation* m_emulation;
    
public:
    // 终端控制
    void sendText(const QString &text);
    void setTerminalFont(const QFont &font);
    void setColorScheme(const QString &name);
    
    // 会话管理
    void setHistorySize(int lines);
    void scrollToEnd();
};

该框架通过模块化设计实现了完整的C2系统功能,包括代理管理、命令控制、通信加密、图形界面等核心组件,为渗透测试人员提供专业级的工具支持。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-09-23 16:24  qife  阅读(10)  评论(0)    收藏  举报