⚠️ 重要声明
法律与道德准则
- :本文所述技术仅可在拥有明确书面授权且完全控制的网络环境中使用。
AdaptixC2 是一款开源的后渗透利用与对抗仿真框架,服务端基于 Go 语言,客户端基于 C++ QT。支持多种监听协议(Gopher、HTTP/HTTPS),提供图形化界面及插件扩展功能。从源码编译、环境配置(Go、Qt)、证书生成到启动服务、创建监听器、生成载荷及 BOF 扩展集成的完整流程。适用于拥有明确授权的网络环境下的安全研究与教学目的。

AdaptixC2 是一个可扩展的后渗透利用与对抗仿真框架,专为渗透测试和红队操作设计。
GitHub 项目:https://github.com/Adaptix-Framework/AdaptixC2 官方文档:https://adaptix-framework.gitbook.io/adaptix-framework/ 中文版:https://github.com/myisake/AdaptixC2_i18n
git clone https://github.com/Adaptix-Framework/AdaptixC2.git
cd AdaptixC2
要构建服务器和扩展器,需要安装额外的依赖。
官方提供了一键安装脚本 pre_install_linux_all.sh,可自动安装所需依赖并配置环境。
# 添加执行权限
chmod +x ./pre_install_linux_all.sh
# 运行脚本
./pre_install_linux_all.sh all
server:仅服务端依赖client:仅客户端依赖all:全部依赖 (服务端 + 客户端)根据操作系统选择对应的命令:(安装所有依赖)
Debian/Ubuntu
sudo apt install gcc g++ build-essential make cmake mingw-w64 g++-mingw-w64 libssl-dev qt6-base-dev qt6-base-private-dev libxkbcommon-dev qt6-websockets-dev qt6-declarative-dev
Arch Linux
sudo pacman -S --needed mingw-w64 make cmake openssl libxkbcommon qt6-base qt6-websockets qt6-declarative
macOS (需先安装 Homebrew)
brew install make cmake openssl qt@6
# 使用 wget 下载 Go 1.25.4 安装包
wget https://go.dev/dl/go1.25.4.linux-amd64.tar.gz -O /tmp/go1.25.4.linux-amd64.tar.gz
# 移除旧版本 Go (如果存在)
sudo rm -rf /usr/local/go /usr/local/bin/go
# 解压到 /usr/local
sudo tar -C /usr/local -xzf /tmp/go1.25.4.linux-amd64.tar.gz
# 创建全局符号链接(软链接)
sudo ln -s /usr/local/go/bin/go /usr/local/bin/go
source ~/.bashrc (或对应 shell 的配置文件) 以使 go 命令生效。运行 go version 可确认版本# 克隆补丁仓库到临时目录
git clone https://github.com/Adaptix-Framework/go-win7 /tmp/go-win7
# 将补丁源码移动到系统目录,供后续编译引用
sudo mv /tmp/go-win7 /usr/lib/
dist 目录。make
同时生成服务端(含扩展器)与客户端
AdaptixServer 和扩展器(goplugins)必须使用相同版本的 golang 包构建。
# 编译服务端 + 扩展器
make server-ext
# 或 make server
# 编译服务端
make extenders
# 编译扩展器
生成服务端与扩展器
标准编译 (Linux/macOS):
make client
make client-fast
直接运行 make 命令编译会在编译客户端时失败
补充翻译依赖
# 安装 Qt6 翻译工具链
sudo apt install qt6-tools-dev qt6-tools-dev-tools qt6-l10n-tools -y
重新构建项目
# 1. 进入你的项目根目录
cd ~/AdaptixC2_i18n-0.9
# 2. 彻底删除旧的构建目录,以清除所有缓存(包括 CMake 的失败配置)
rm -rf build/
# 3. 执行清理(如果 Makefile 中有 clean 目标)
make clean
# 4. 开始全新的构建过程
make
# 进入目录
cd dist
# 添加脚本执行权限
chmod +x ./ssl_gen.sh
# 运行脚本
./ssl_gen.sh
openssl req -x509 -nodes -newkey rsa:2048 -keyout server.rsa.key -out server.rsa.crt -days 3650
生成的 server.rsa.crt 和 server.rsa.key 需放置在 dist 目录(与 adaptixserver 同路径),否则需在 profile.json 中指定绝对路径
AdaptixServer 通过 profile.json 配置文件启动
配置文件在参数中指定,必须包含 JSON 格式的配置文件。-profile
{
"Teamserver": {
"interface": "0.0.0.0",
"port": 4321,
"endpoint": "/endpoint",
"password": "pass",
"only_password": true,
"operators": {
"operator1": "pass1",
"operator2": "pass2"
},
"cert": "server.rsa.crt",
"key": "server.rsa.key",
"extenders": [
"extenders/beacon_listener_http/config.json",
"extenders/beacon_listener_smb/config.json",
"extenders/beacon_listener_tcp/config.json",
"extenders/beacon_agent/config.json",
"extenders/gopher_listener_tcp/config.json",
"extenders/gopher_agent/config.json"
],
"access_token_live_hours": 12,
"refresh_token_live_hours": 168
},
"ServerResponse": {
"status": 404,
"headers": {
"Content-Type": "text/html; charset=UTF-8",
"Server": "AdaptixC2",
"Adaptix Version": "v1.0"
},
"page": "404page.html"
},
"EventCallback": {
"Telegram": {
"token": "",
"chats_id": []
},
"Slack": {
"webhook_url": ""
},
"Webhooks": [
{}
],
"new_agent_message": "New agent: %type% (%id%)\n\n%user% @ %computer% (%internalip%)\nelevated: %elevated%\nfrom: %externalip%\ndomain: %domain%",
"new_cred_message": "New secret [%type%]:\n\n%username% : %password% (%domain%)\n\nStorage: %storage%\nHost: %host%",
"new_download_message": "File saved: %path% [%size%] from %computer% (%user%)"
}
}
Team 服务器:
ServerResponse:
勾选自定义安装
勾选个人用户或者或填写公司名称(可随便填)
登录 Qt 账户(若没有的话需要注册)
启动在线安装程序
确认安装组件
安装菜单文件夹(默认或者自定义)
或可参考 AdaptixC2 官网文档,按照下方截图中的选项勾选
选择 CMakeLists.txt 文件(AdaptixClient 目录下)
勾选 Release,然后点击 Configure(配置项目)
更新包,完成后重新打开项目
提示安装缺失的依赖包
将构建类型改为 Release,然后点击构建项目(Ctrl+B)
1、创建发布目录
mkdir "C:\Users\Demo\Desktop\AdaptixC2 Client"
copy "C:\Users\Demo\Desktop\AdaptixC2\AdaptixClient\build\Desktop_Qt_6_10_1_MinGW_64_bit-Release\AdaptixClient.exe" "C:\Users\Demo\Desktop\AdaptixC2 Client"
windeployqt.exe 是 Qt 官方提供的 Windows 平台应用程序打包工具,专为简化 Qt 程序部署而设计。它的核心功能是自动分析一个 Qt 可执行文件(.exe)所依赖的所有 Qt 动态链接库、插件、翻译文件等,并将它们复制到该可执行文件所在的目录,从而生成一个可以在没有安装 Qt 开发环境的 Windows 电脑上独立运行的应用程序包
# 进入发布目录
cd "C:\Users\Demo\Desktop\AdaptixC2 Client"
# 运行 windeployqt.exe 打包工具
D:\Qt\6.10.1\mingw_64\bin\windeployqt.exe AdaptixClient.exe
生成后的文件
运行 AdaptixClient.exe 程序
AdaptixC2 提供了 Docker Compose 配置文件,用于使用预定义的环境快速构建和运行。通过 --profile 参数可以激活不同的服务组合
| 简介 | 描述 | 命令 |
|---|---|---|
| build-server | 仅构建服务器 | docker compose --profile build-server up |
| build-extenders | 只构建扩展器 | docker compose --profile build-extenders up |
| build-server-ext | 一起构建服务器和扩展器 | docker compose --profile build-server-ext up |
| runtime | 服务器运行时容器 | docker compose --profile runtime up -d |
# 启动服务端(指定配置文件为 profile.json)
./adaptixserver -profile profile.json
./AdaptixClient
连接服务器成功
CallBack addresses (回连地址):编码到 Agent 中的、用于回连的一个或多个 C2 地址(如公网 IP:端口)
选择操作系统后点击生成保存即可
1.执行生成的载荷 (Agent)
# 切换木马存放目录
cd Downloads
#查看当前文件
ls
#添加执行权限
chmod +x kali
#执行生成的载荷 (Agent)
./kali
查看会话图(Sessions Graph)
查看会话表(Sessions Table)
默认即可
360 & 腾讯电脑管家
静态检测:初始生成的载荷能够绕过静态检测
动态执行:运行后触发行为检测被 360 拦截
二次静态扫描:拦截后重新扫描,载荷静态特征被识别
火绒安全
静态检测:载荷落地立即被识别并隔离(落地即杀)
Windows Defender
隔离处理:文件被自动移至隔离区
实时防护:立即拦截(落地即杀)
卡巴斯基
文件检测:文件写入磁盘时立即被检测并删除(落地即杀)
会话图
会话表
选择会话,点击右键选择 Console 进入交互式控制台
vim /root/AdaptixC2/dist/start.sh
#!/bin/bash
# AdaptixC2 服务器启动脚本
# 功能:动态读取配置文件并启动服务器,智能显示实际访问地址
# 使用:./start.sh
# 使用当前目录下的 profile.json
# ./start.sh 其他配置文件.json
# 使用指定的配置文件
# 切换到脚本所在目录,确保相对路径可靠执行
cd "$(dirname "$0")" || exit 1
# 配置文件名(支持命令行参数指定,默认使用 profile.json)
CONFIG="${1:-profile.json}"
echo "[*] 启动 AdaptixC2 服务器"
echo "[*] 配置文件:$CONFIG"
# 检查配置文件是否存在
if [ ! -f "$CONFIG" ]; then
echo "[错误] 配置文件不存在:$CONFIG" >&2
exit 1
fi
# 动态读取配置并显示地址
INTERFACE=$(grep -o '"interface":[[:space:]]*"[^"]*"' "$CONFIG" | head -1 | cut -d'"' -f4)
PORT=$(grep -o '"port":[[:space:]]*[0-9]*' "$CONFIG" | head -1 | tr -cd '0-9')
ENDPOINT=$(grep -o '"endpoint":[[:space:]]*"[^"]*"' "$CONFIG" | head -1 | cut -d'"' -f4)
# 确定实际访问地址
ACCESS_IP="$INTERFACE"
if [ "$INTERFACE" = "0.0.0.0" ] || [ "$INTERFACE" = "::" ] || [ "$INTERFACE" = "127.0.0.1" ] || [ "$INTERFACE" = "localhost" ] || [ -z "$INTERFACE" ]; then
ACCESS_IP=$(hostname -I 2>/dev/null | awk '{print $1}')
[ -z "$ACCESS_IP" ] && ACCESS_IP="127.0.0.1"
fi
# 显示服务地址(仅当配置完整时)
if [ -n "$ACCESS_IP" ] && [ -n "$PORT" ] && [ -n "$ENDPOINT" ]; then
echo "[*] 服务地址:https://${ACCESS_IP}:${PORT}${ENDPOINT}"
fi
echo "----------------------------------------"
# 信号处理函数
cleanup(){
echo -e "\n[*] 收到终止信号,正在停止服务器..."
# 杀死服务器进程
kill $SERVER_PID 2>/dev/null
wait $SERVER_PID 2>/dev/null
exit 0
}
# 捕获信号
trap cleanup SIGINT SIGTERM
# 启动服务器(后台运行,并记录 PID)
echo "[*] 按 Ctrl+C 停止服务器"
./adaptixserver -profile "$CONFIG" &
SERVER_PID=$!
# 等待服务器进程结束
wait $SERVER_PID
chmod +x /root/AdaptixC2/dist/start.sh
# 服务端
vim ~/Desktop/"AdaptixC2 Server.desktop"
[Desktop Entry]
Type=Application
Name=AdaptixC2 Server
Comment=AdaptixC2 服务端
Exec=/root/AdaptixC2/dist/start.sh
Icon=/root/AdaptixC2/AdaptixClient/Resources/SyncLogo.png
Terminal=true
Categories=Network;System;
# 客户端
vim ~/Desktop/"AdaptixC2 Client.desktop"
[Desktop Entry]
Type=Application
Name=AdaptixC2 Client
Comment=AdaptixC2 客户端
Exec=/root/AdaptixC2/dist/AdaptixClient
Icon=/root/AdaptixC2/AdaptixClient/Resources/Logo.png
Terminal=false
Categories=Network;Security;
StartupWMClass=AdaptixClient
chmod +x ~/Desktop/"AdaptixC2 Client.desktop"
chmod +x ~/Desktop/"AdaptixC2 Server.desktop"
# 验证.desktop 文件语法
desktop-file-validate ~/Desktop/"AdaptixC2 Client.desktop"
desktop-file-validate ~/Desktop/"AdaptixC2 Server.desktop"
# 将已创建好的桌面文件复制到系统应用目录
sudo cp ~/Desktop/"AdaptixC2 Client.desktop" /usr/share/applications/
sudo cp ~/Desktop/"AdaptixC2 Server.desktop" /usr/share/applications/
# 赋予执行权限
sudo chmod +x /usr/share/applications/"AdaptixC2 Client.desktop"
sudo chmod +x /usr/share/applications/"AdaptixC2 Server.desktop"
# Ubuntu/Kali
apt install g++-mingw-w64-x86-64-posix gcc-mingw-w64-x86-64-posix mingw-w64-tools
# Arch
pacman -Syu mingw-w64-x86_64-gcc mingw-w64-x86_64-gcc-libs
git clone https://github.com/Adaptix-Framework/Extension-Kit
cd Extension-Kit
make
添加完成后的插件扩展
选择 _扩展名-kit.axs 文件
右键菜单 -> Load new(加载新文件)
主菜单 -> AxScript -> Script manager(脚本管理器)。
进入 console 控制台使用 help 命令可查看
仅限 Windows 操作系统有效
adwssearch 执行 ADWS 查询 badtakeover 使用 BadSuccessor 技术进行账户接管 dcsync single 对单个用户执行 DCSync 操作 dcsync all 对域内所有用户执行 DCSync 操作 ldapsearch 执行 LDAP 查询 ldapq computers 从 LDAP 获取计算机列表 readlaps 读取计算机的 LAPS 密码
certi auth 使用证书进行认证 (PKINIT + UnPAC-the-hash) certi enum 枚举 AD 中的 CA 和模板 certi request 请求注册证书 certi request_on_behalf 代表另一个用户请求证书 (ESC3) certi shadow Shadow Credentials 攻击 - 写入 KeyCredentialLink 并获取证书
kerbeus asreproasting 执行 AS-REP 烘焙 kerbeus asktgt 获取 TGT kerbeus asktgs 获取 TGS kerbeus changepw 根据提供的 TGT 重置用户密码 kerbeus dump 导出票据 kerbeus hash 计算 rc4_hmac, aes128_cts_hmac_sha1, aes256_cts_hmac_sha1 哈希 kerbeus kerberoasting 执行 Kerberoasting 攻击 kerbeus klist 列出票据 kerbeus ptt 提交一个 TGT kerbeus describe 解析并描述票据 kerbeus purge 清除票据 kerbeus renew 续订 TGT kerbeus s4u 执行 S4U 约束委派滥用 kerbeus cross_s4u 跨域执行 S4U 约束委派滥用 kerbeus tgtdeleg 通过滥用 Kerberos GSS-API 为当前用户获取可用的 TGT(无需提权) kerbeus triage 以表格格式列出票据
mssql 1434udp 从 1434/UDP 获取 SQL Server 连接信息 mssql adsi 从 ADSI 链接服务器获取 ADSI 凭据 mssql agentcmd 使用代理作业执行系统命令 mssql agentstatus 枚举 SQL 代理状态和作业 mssql checkrpc 枚举链接服务器的 RPC 状态 mssql clr 在存储过程中加载并执行 .NET 程序集 mssql columns 枚举表中的列 mssql databases 枚举 SQL 数据库 mssql disableclr 禁用 CLR 集成 mssql disableole 禁用 OLE 自动化过程 mssql disablerpc 禁用链接服务器上的 RPC 和 RPC 出站 mssql disablexp 禁用 xp_cmdshell mssql enableclr 启用 CLR 集成 mssql enableole 启用 OLE 自动化过程 mssql enablerpc 启用链接服务器上的 RPC 和 RPC 出站 mssql enablexp 启用 xp_cmdshell mssql impersonate 枚举可被模拟的用户 mssql info 收集 SQL Server 信息 mssql links 枚举链接服务器 mssql olecmd 使用 OLE 自动化过程执行系统命令 mssql query 执行自定义 SQL 查询 mssql rows 获取表中的行数 mssql search 在表中搜索列名 mssql smb 通过 xp_dirtree 强制 NetNTLM 认证 mssql tables 枚举数据库中的表 mssql users 枚举具有数据库访问权限的用户 mssql whoami 从 SQL 服务器收集登录用户、映射用户和角色 mssql xpcmd 通过 xp_cmdshell 执行系统命令
ldap get-acl 获取对象的 ACL/安全描述符 ldap get-attribute 获取特定属性值(支持逗号分隔列表) ldap get-computers 列出域中所有计算机 ldap get-groups 列出域中所有组 ldap get-groupmembers 列出组的所有成员 ldap get-delegation 获取对象的委派配置 ldap get-domaininfo 从 rootDSE 获取域信息 ldap get-maq 获取机器账户配额 (ms-DS-MachineAccountQuota) ldap get-object 获取对象的所有属性 ldap get-rbcd 获取对象的 RBCD 配置 ldap get-spn 获取对象的 SPN ldap get-uac 获取对象的 UAC 标志 ldap get-users 列出域中所有用户 ldap get-usergroups 列出用户所属的所有组 ldap get-writable 查找您具有写入权限的对象 ldap move-object 将对象移动到不同的 OU ldap add-ace 向对象的 DACL 添加 ACE ldap add-attribute 向属性添加一个值 ldap add-computer 向域中添加计算机 ldap add-delegation 向对象添加委派 SPN ldap add-group 向域中添加组 ldap add-groupmember 向组添加成员 ldap add-ou 添加组织单元 ldap add-rbcd 添加 RBCD 委派 ldap add-sidhistory 向对象的 sidHistory 属性添加 SID ldap add-spn 向对象添加 SPN ldap add-user 向域中添加用户 ldap add-uac 向对象添加 UAC 标志 ldap add-genericall 向对象的 DACL 添加 GenericAll ACE ldap add-genericwrite 向对象的 DACL 添加 GenericWrite ACE ldap add-dcsync 向对象的 DACL 添加 DCSync ACE ldap add-asreproastable 使用户可被 AS-REP 烘焙 (设置 DONT_REQ_PREAUTH) ldap add-unconstrained 在对象上启用无约束委派 ldap add-constrained 设置/替换委派 SPN ldap set-attribute 设置/替换属性值 ldap set-delegation 设置/替换委派 SPN ldap set-owner 设置对象的所有者(需要 WriteOwner 权限) ldap set-spn 设置/替换对象的所有 SPN ldap set-password 设置/重置用户密码 ldap set-uac 设置 UAC 标志(替换所有) ldap remove-ace 从对象的 DACL 中移除 ACE ldap remove-attribute 移除属性或属性值 ldap remove-delegation 移除委派 SPN ldap remove-dcsync 从对象的 DACL 中移除 DCSync ACE ldap remove-genericall 从对象的 DACL 中移除 GenericAll ACE ldap remove-genericwrite 从对象的 DACL 中移除 GenericWrite ACE ldap remove-groupmember 从组中移除成员 ldap remove-object 从域中移除对象 ldap remove-rbcd 移除 RBCD 委派 ldap remove-spn 从对象中移除 SPN ldap remove-uac 从对象中移除 UAC 标志
askcreds 提示输入凭据 autologon 检查注册表中的自动登录信息 credman 检查当前用户的 Windows 凭据管理器以查找保存的 Web 密码 get-netntlm 获取当前用户的 NetNTLM 哈希 hashdump 转储 SAM 哈希 cookie-monster 定位并复制 Edge/Chrome/Firefox 使用的 cookie 文件 nanodump 使用系统调用转储 LSASS nanodump_ppl_dump 绕过 PPL 并转储 LSASS nanodump_ppl_medic 绕过 PPL 并转储 LSASS nanodump_ssp 将安全支持提供程序 (SSP) 加载到 LSASS 中 underlaycopy 使用低级 NTFS 访问方式复制文件 (MFT 或元数据模式)
getsystem token 将当前代理提升为 SYSTEM 并通过模拟获得 TrustedInstaller 组权限 uacbybass sspi 通过 SSPI 数据报上下文伪造来自虚假网络认证的令牌 uacbybass regshellcmd 修改 ms-settings\Shell\Open\command 注册表键并执行自动提升的 EXE (ComputerDefaults.exe) potato-dcom DCOMPotato - 通过 SeImpersonate 特权获取 SYSTEM 权限 potato-print 通过打印后台处理程序进行本地权限提升 (命名管道模拟)
execute-assembly 在进程中执行 .NET 程序集 noconsolation 在代理内存中运行非托管 EXE/DLL
inject-cfg 将 shellcode 注入目标进程,并通过覆盖 combase.dll!__guard_check_icall_fptr 劫持执行 inject-sec 使用节映射将所需 shellcode 注入目标进程 inject-poolparty 使用指定的 pool party 技术将所需 shellcode 注入目标进程 inject-32to64 从 WOW64 (32 位) 进程向原生 64 位进程注入 x64 shellcode [需要 32 位代理]
jump psexec 尝试通过 PsExec 在远程目标上生成会话 jump scshell 尝试通过 SCShell 在远程目标上生成会话 invoke winrm 使用 WinRM 在其他系统上执行命令 invoke scshell 使用 SCShell 通过修改服务二进制路径在其他系统上执行命令 (无文件) token make 根据给定凭据创建模拟令牌 token steal 从进程中窃取访问令牌 runas 使用显式凭据以其他用户身份运行命令 (RunasCs-like)
firewallrule add 使用 COM 添加新的入站或出站防火墙规则 screenshot_bof 替代的截图功能,不执行 fork n run (由 @codex_tf2 提供) sauroneye 在目录中搜索包含特定关键词的文件 (SauronEye 移植版,由 @shashinma 移植为 BOF)
findobj module 识别加载了特定模块的进程 findobj prochandle 识别正在使用特定进程句柄的进程 process conn 显示已建立 TCP 和 RDP 连接的进程的详细信息
arp 列出 ARP 表 cacls 列出指定文件或目录的用户权限,支持通配符 dir 列出指定目录中的文件。支持通配符 (例如 'C:\Windows\S*")。可选地,可以使用 /s 参数执行递归列表 env 列出进程环境变量 ipconfig 列出 IPv4 地址、主机名和 DNS 服务器 listdns 列出 DNS 缓存条目。尝试查询并解析每个条目 netstat 执行 netstat 命令以显示网络连接 nslookup 进行 DNS 查询 privcheck alwayselevated 使用注册表检查是否启用了 Always Install Elevated privcheck hijackablepath 检查路径环境变量中可用于提权的可写目录 (FILE_ADD_FILE) privcheck tokenpriv 列出当前令牌权限并突出显示已知的脆弱权限 privcheck unattendfiles 检查可能包含敏感信息的残留无人值守安装文件 privcheck unquotedsvc 检查未加引号的服务路径 privcheck vulndrivers 检查系统上是否有任何服务使用已知的易受攻击驱动程序 (基于 loldrivers.io/) routeprint 列出 IPv4 路由 uptime 列出系统启动时间及其运行时长 useridletime 显示用户空闲时长,以秒、分钟、小时和天显示 whoami 列出 whoami /all 信息
smartscan 智能端口扫描 taskhound 从远程系统收集计划任务 quser 查询远程机器上的用户会话,提供会话信息 nbtscan NetBIOS 名称扫描器 (类似 nbtscan)

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online