开源 C2 框架 AdaptixC2 (变色龙) 最新安装攻略

开源 C2 框架 AdaptixC2 (变色龙) 最新安装攻略

前言

在红队演练与高对抗渗透测试中,C2(Command and Control)框架的选择至关重要。AdaptixC2(社区常称其为“变色龙”)是一款近年来备受瞩目的开源 C2 框架。它以轻量化、高隐蔽性、多协议通信以及出色的免杀能力著称。

在这里插入图片描述

目前该项目迭代非常迅速,截至 2026 年 3 月 2 日,最新版本已更新至 v1.2。相比早期版本,v1.2 在架构稳定性上有了长足进步,配置文件也从 .json 转向了更具可读性的 .yaml 格式。


1. 环境准备与服务端安装

AdaptixC2 的服务端建议部署在 Linux 环境(如 Ubuntu 或 Debian)中,以确保最佳的性能和兼容性。

1.1 下载与依赖安装

首先克隆仓库并执行官方提供的依赖安装脚本:

apt update git clone https://github.com/Adaptix-Framework/AdaptixC2.git cd AdaptixC2 # 赋予脚本执行权限并安装服务端依赖chmod +x pre_install_linux_all.sh && ./pre_install_linux_all.sh server 
在这里插入图片描述

1.2 编译服务端

使用 make 指令进行编译,编译完成后,所有的二进制文件将输出到 dist 目录中。

在执行编译命令前,建议在终端中设置环境变量。这可以极大地加快 go mod download 的速度,避免因网络超时导致的报错。直接在当前终端执行以下命令:

# 启用 Go Modules 功能exportGO111MODULE=on # 设置七牛云镜像源exportGOPROXY=https://goproxy.cn,direct 
make server-ext 
在这里插入图片描述

1.3 生成 SSL 证书

AdaptixC2 服务端通过 HTTPS 协议进行安全通信,因此运行前必须配置 SSL 证书。官方提供了一个便捷的 ssl_gen.sh 脚本,用于生成有效期为 10 年的自签名证书。

cd dist chmod +x ssl_gen.sh && ./ssl_gen.sh 

在交互界面中,按需填写证书信息

----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Tokyo Locality Name (eg, city) []:Tokyo Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []:Infrastructure Common Name (e.g. server FQDN or YOUR name) []: Email Address []: 

完成后目录下会生成 server.rsa.crtserver.rsa.key

1.4 启动服务端

在启动前,请检查 profile.yaml 配置文件,确认端口、证书路径及鉴权信息无误。

# 启动服务端 ./adaptixserver -profile profile.yaml 

2. 客户端安装(跨平台)

AdaptixC2 的客户端基于 Qt 框架开发,支持 Linux 和 Windows 双平台。

2.1 Linux 客户端编译

在 Linux(如 Kali)上,你需要安装 Qt6 相关开发库:

# 安装编译套件及 Qt6 依赖aptinstall-y 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 # 执行编译make client # 启动客户端 ./AdaptixClient 

2.2 Windows 客户端编译

对于 Windows 用户,官方目前推荐使用 MSYS2 环境进行编译,这种方式比传统安装 Qt IDE 更加轻量、快捷。

1. 安装 MSYS2 基础环境

MSYS2 GitHub Releases 下载最新安装包(如 msys2-x86_64-xxx.exe),并安装至默认路径 C:\msys64

2. 配置开发工具链与 Qt6

为了确保编译性能和兼容性,请使用 UCRT64 环境。终端中执行以下命令启动 shell:

C:\msys64\msys2_shell.cmd -defterm -here -no-start -msys 

接着运行以下命令换源并安装必要的构建工具和 Qt6 库:

sed-i"s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* pacman -Syu--noconfirm pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-qt6 
提示:如果项目不需要静态编译,可将 qt6-static 换成普通的 qt6
3. 执行自动化构建

配置完成后,进入 AdaptixC2 源码目录下的客户端文件夹,启动编译:

  1. 定位到目录:AdaptixClient\
  2. 双击运行脚本:build.bat

编译完成后,生成的二进制文件存放在源码目录下的 dist 文件夹中。

注意:如果在运行 build.bat 时提示找不到编译器,请确保 C:\msys64\mingw64\binC:\msys64\ucrt64\bin 已添加到系统的 PATH 环境变量中,或者脚本内已正确指向 MSYS2 路径。
在这里插入图片描述

3. 扩展增强:Extension-Kit 插件安装

为了发挥 AdaptixC2 的最大威力,建议安装官方提供的 Extension-Kit 扩展包,它极大地增强了后渗透阶段的功能。

3.1 编译扩展插件

笔者在 Kali 环境下进行编译。

aptinstall g++-mingw-w64-x86-64-posix gcc-mingw-w64-x86-64-posix mingw-w64-tools cd Extension-Kit make
在这里插入图片描述
在这里插入图片描述

3.2 加载扩展

  1. 将编译好的 Extension-Kit-main 文件夹完整复制到客户端机器。
  2. 打开 Adaptix 客户端,点击菜单栏:Extensions -> Script manager
  3. 在空白处右键 -> Load new,选择 extension-kit.axs 文件。

加载成功后如下图。

在这里插入图片描述

渗透时,命令将极大丰富。

在这里插入图片描述

4. 配置文件 profile.yaml 解析

接续上文,我们将重点解析 profile.yaml 中的核心配置项。理解这些参数不仅有助于顺利启动服务端,更是实现流量隐蔽化安全防御的关键。

AdaptixC2 的配置文件分为两大块:Teamserver(控制端交互)HttpServer(通信层伪装)

4.1 Teamserver 基础设置

这部分定义了客户端(红队人员)如何连接到服务端。

字段说明安全建议
interface监听网卡,0.0.0.0 表示监听所有接口。建议在生产环境绑定内网 IP 或特定 IP。
port团队服务器端口,默认 4321修改为非常用端口以规避扫描。
endpoint客户端连接的 URL 路径,如 /endpoint增加路径复杂度,防止未授权尝试。
password通用连接密码。结合 only_password: true 使用,简化单人操作。
operators多用户模式,可为不同成员分配独立账号。团队协作时建议开启,便于审计。
cert/key指向前文生成的 SSL 证书和私钥。务必确保路径正确,否则无法启动。

4.2 Extenders & Scripts (插件扩展)

  • extenders: 定义了服务端支持的协议监听器(Listener),如 HTTP、SMB、TCP、DNS 等。每一行对应一个功能模块的配置文件。
  • axscripts: 脚本自动化扩展。如需默认加载 Extension-Kit,可取消注释并指向 .axs 文件。

4.3 令牌时效管理

  • access_token_live_hours: 访问令牌有效期(默认 12 小时)。
  • refresh_token_live_hours: 刷新令牌有效期(默认 7 天)。过期后需重新登录客户端。

4.4 HttpServer 伪装与安全

这部分直接决定了当外部(如安全扫描器)访问你的 C2 地址时,服务端表现出的“面具”。

① 错误页面伪装 (error)

当访问非法路径时,服务端会返回自定义的 404 页面和 Header。

  • status: 返回码(如 404)。
  • headers: 自定义响应头。注意: 默认配置中含有 Server: "AdaptixC2",在实战中强烈建议修改为 nginxApache 以隐藏特征。
  • page: 指定一个真实的 HTML 文件(如 404page.html),模仿正常网站行为。
② 流量特性 (http)
  • max_header_bytes: 限制 Header 大小,防止缓冲区溢出攻击。
  • enable_http2: 开启 HTTP/2 支持,增加通信效率且更符合现代 Web 流量特征。
  • timeouts: 各类超时设置。建议保持默认,或根据不稳定的网络环境调大 request_timeout_sec
③ 加密强度控制 (tls)
  • min_version / max_version: 强制使用 TLS 1.2 或 1.3,弃用不安全的老旧协议。
  • cipher_suites: 定义加密套件。通过限定套件,可以使 C2 流量的 JA3 指纹更接近常见的合法服务(如 Cloudflare 或常见 CDN)。

Read more

开源一套正在建设的现代 C++ 教程!

开源一套正在建设的现代 C++ 教程!

🚀开源一套正在建设的现代 C++ 教程! 笔者吐槽:靠有点像卖课的,但真不是,笔者纯出于兴趣维护的。笔者想了想,有时候光看各种各样的文章。显得太零碎。亮出来代码示例吧,显得太冗余。那为什么不专门维护一个仓库好好做这个事情呢? 所以笔者决定,试试看利用Github仓库托管一下。 TL;DR 好的教程都有TL;DR,一句话——这边请: GitHub Pages: 点击访问,获得更好更加流畅的阅读体验(嘶,Github静态网页有可能访问速度比较慢,如果有朋友有需求,可以尝试看看下面的仓库克隆下来本地预览) 啥,想看看原仓库,在这里: 👉:Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP: 现代 C++ 嵌入式(MCU/Linux)开发完整教程,深入讲解 C++11–C++23、零开销抽象、RAII 与性能优化! 现在正在想办法看看支持模拟机和真机实战确保代码可靠。

By Ne0inhk
计算机基础知识总结(八股文总结----计算机网络、操作系统、数据库、c++、数据结构与算法)

计算机基础知识总结(八股文总结----计算机网络、操作系统、数据库、c++、数据结构与算法)

一、操作系统 0.内存管理 01.什么是虚拟内存?为什么需要虚拟内存? 虚拟内存为程序提供比实际物理内存更大的内存空间,同时提高内存管理的灵活性和系统的多任务处理能力。虚拟地址空间就是进程所能看到的内存空间,这段空间是连续的、独立的,实际地址空间则是内存上的空间,这段是所有进程共享的、有限的空间。虚拟内存就是把实际地址空间映射到虚拟地址空间的技术,这样就实现了内存隔离、内存扩展、物理内存管理、页面交换等技术。内存隔离就是每个进程都有自己的虚拟地址空间,因此一个进程无法访问另一个进程的内存。内存扩展就是虚拟内存让每个进程拥有比实际大的内存空间地址,可以处理更多的数据、更大的进程。物理内存管理,内存空间不足时把不常用的数据转移到硬盘上,释放内存,以助于更多进程使用。页面交换,进程可能会造成外部内存碎片,可能会导致内存空间不足,这时把不常用的数据交换到硬盘上,再交换回来,就能消除内存碎片,之前技术是内存分段,现在都是内存分页,一页或几页的内存交换就能解决内存不足的问题,而且效率高,内存分段的大数据在硬盘上读取速度慢。 02.什么是内存分段和分页?作用是什么? 内存分段是将一个程序

By Ne0inhk
深入理解 Java 虚拟机-04 垃圾收集器

深入理解 Java 虚拟机-04 垃圾收集器

深入理解 Java 虚拟机-04 垃圾收集器 收集算法是内存回收的方法论,而垃圾收集器是内存回收的实践者。 JDK 9 之后,(Serial,CMS) 以及(ParNew,Serial Old)的组合已经被废弃了,默认收集器也变成了 G1。 垃圾回收就像打扫房间一样,当你在打扫房间的时候同时又在制造垃圾,那么房间很难打扫干净,因此 Java 垃圾回收一个被人所诟病的点就是 Stow The World(stw),直译就是停止这个世界,即 Java 垃圾回收会导致某段时间内进程完全无响应,在当前越来越追求低时延的环境下,这是很多系统不愿意接受的。 除了时延,还有一个关注的方向是吞吐量,比如把房子全部打扫一遍,那么接下来很久可能都不用再打扫了,如果每次只打扫一块区域,那么确实打扫的很快,但接下来又会频繁打扫。 因此虽然随着技术的进步,收集器的综合表现(内存占用、延迟、吞吐量)在提高,但直到现在还没有最好的收集器出现,更加不存在“万能”

By Ne0inhk
Windows下MATLAB与C/C++混合编程:DLL生成与调用实战

Windows下MATLAB与C/C++混合编程:DLL生成与调用实战

Windows下MATLAB与C/C++混合编程:DLL生成与调用实战 在科学计算与工程开发中,MATLAB凭借其便捷的矩阵运算和可视化能力广受青睐,但面对大规模数据处理或高性能算法时,C/C++的执行效率优势无可替代。将二者结合,通过动态链接库(DLL) 实现混合编程,既能发挥MATLAB的易用性,又能借助C/C++提升核心代码性能。本文将手把手教你在Windows环境下完成从C/C++ DLL编写、编译到MATLAB调用的全流程,附带完整代码与避坑指南! 一、核心原理与准备工作 1. 核心逻辑 C/C++编译生成的DLL文件包含可被外部程序调用的函数,通过__declspec(dllexport)声明导出函数,并使用extern "C"指定C链接规范,避免C++的名称修饰(name mangling)问题,确保MATLAB能正确识别函数名。 MATLAB通过loadlibrary函数加载DLL,解析函数接口后,使用calllib函数调用目标函数,实现数据交互。 2.

By Ne0inhk