首页 渗透工具 正文

Adaptix Serverless C2 实战部署指南:基于 AWS Lambda + DynamoDB 的无服务器 C2 传输插件

摘要

在红队攻防评估与对抗仿真场景中,C2(Command & Control)基础设施的暴露面一直是操作安全的焦点:传统 C2 服务器需要监听入站端口、持有公网 IP,极易被蓝队溯源和封堵。Adaptix Serverless C2 的出现改变了这一局面——这是一套面向 AdaptixC2 v1.2 的开源无服务器 C2 传输插件,它以 AWS Lamb...

在红队攻防评估与对抗仿真场景中,C2(Command & Control)基础设施的暴露面一直是操作安全的焦点:传统 C2 服务器需要监听入站端口、持有公网 IP,极易被蓝队溯源和封堵。Adaptix Serverless C2 的出现改变了这一局面——这是一套面向 AdaptixC2 v1.2 的开源**无服务器 C2 传输插件**,它以 AWS Lambda + DynamoDB 作为中继基础设施,让 Agent 的全部流量表现为发往 AWS 端点的出站 HTTPS 请求,C2 服务器本身无需任何入站端口和公网 IP。

Adaptix Serverless C2 无服务器 C2 架构拓扑图

产品介绍:什么是 Adaptix Serverless C2

adaptix-serverless-c2 是一个专为 AdaptixC2 v1.2 设计的 Serverless C2 传输插件。它将 C2 通信链路中的"中继层"完全迁移到云端:Agent 不再直连团队服务器,而是将加密的 check-in 请求发送到 AWS Lambda Function URL,由无状态的 Lambda 中继写入 DynamoDB,再由运行在 AdaptixC2 内部的监听器插件异步拉取处理。整个过程中,C2 服务器只发起对 DynamoDB 的出站轮询,对外呈现"零监听端口"的姿态。

项目采用完全开源的方式发布,主要组件构成如下:

组件 路径 用途
Kharon agent agent/ 捆绑的 Kharon 植入体(C++ 源码)
Terraform deploy/aws/ Lambda + DynamoDB + IAM + KMS 基础设施
Lambda relay deploy/aws/lambda/ 无状态 HTTP 到 DynamoDB 代理,带出站轮询
Listener plugin listener/ AdaptixC2 插件,负责 DynamoDB 轮询与 Kharon 协议桥接
Kharon configs kharon/ Agent/监听器扩展器的 AXS 命令注册与配置
Patches patches/ 支持 BeaconServerless 的 AdaptixC2 源码补丁
Profiles profiles/ 用于 Lambda URL 的 Malleable HTTP 配置文件
Scripts scripts/ 安装、构建、部署、卸载脚本

核心功能

BeaconServerless 监听器:插件为 AdaptixC2 新增了 BeaconServerless 监听器类型,操作员可以像配置普通 HTTP 监听器一样,在 Web UI 中完成 Lambda URL、API Key、轮询间隔等参数的设置,并上传 Malleable 配置文件对流量外观进行定制。

出站轮询弥合异步间隙:Lambda + DynamoDB 的架构天然异步——Agent 注册时,Lambda 首次查询 outbound 表往往还没来得及被监听器写入响应。插件在 Lambda 侧实现了最长 8 秒的出站轮询循环,确保 Checkin 响应在 Checkin 阶段即可返回,而不是延迟到下一次 GetTask。

密钥持久化:Agent 的加密密钥通过 TsExtenderDataSave/TsExtenderDataLoad(基于 SQLite)持久化存储,团队服务器重启后仍能恢复已注册 Agent 的会话密钥,不会出现"重启即掉线"的尴尬。

GET/POST 随机交替:Kharon Agent 采用 HTTP_METHOD_USE_BOTH 模式,在 GET 与 POST 请求之间随机切换。GET 请求将数据放在 id 查询参数中(按配置文件进行 base64 编码),POST 请求则将原始二进制数据放入 HTTP body,Lambda 对两种模式透明处理。

一键式安装与卸载:install.sh 脚本自动完成备份、打补丁、检测 GOEXPERIMENT、编译插件、重建服务端、恢复数据、注册 systemd 服务的全流程,大幅降低部署门槛。

技术优势

无暴露面的通信架构

Kharon Agent (target)
    |
    | HTTPS GET/POST (outbound only, randomly alternated)
    v
AWS Lambda Function URL (stateless relay)
    |
    | Store inbound / Poll outbound (up to 8s)
    v
DynamoDB (inbound + outbound tables)
    ^
    | Poll every 5 seconds
    |
Listener Plugin (inside AdaptixC2)
    |
    | TsAgent API + TsExtenderData (key persistence)
    v
AdaptixC2 Teamserver + UI

完整的数据流如下:

  1. Kharon Agent 通过 HTTPS 向 Lambda Function URL 发送加密的 check-in 请求;
  2. Lambda 将原始数据存入 DynamoDB 的 inbound 表;
  3. Lambda 轮询 outbound 表最长 8 秒,弥合注册阶段的异步间隙;
  4. 若存在响应,Lambda 将其返回给 Agent 并标记为已投递;
  5. AdaptixC2 监听器插件每 5 秒轮询 DynamoDB inbound 表,获取未处理记录;
  6. 监听器解析 Kharon 线路协议(LokyCrypt 加密),完成 Agent 的注册或更新;
  7. 操作员下发命令时,监听器将其加密为 Kharon 格式写入 outbound 表;
  8. Agent 下一次 check-in 时,Lambda 从 outbound 表取回响应返回给 Agent。

Kharon 线路协议解析

Kharon Agent 使用基于 HTTP 的自定义二进制协议,监听器需要兼容三种数据格式:

  • 新 Agent 注册:[36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key];
  • 已连接 Agent 的 GetTask 请求:[36-byte UUID][encrypted_payload],包尾不再附带密钥;
  • 密钥覆盖场景:当 payload 较小时,位于 TotalLen-16 的 16 字节密钥会重叠进 UUID 区域。以 44 字节数据包为例,密钥从偏移 28 开始,覆盖 UUID 的第 28-35 字节以及全部加密数据。

监听器会自动检测这三种格式并正确处理,这也是该插件在协议还原上最有技术含量的部分。

OPSEC 设计

  • 所有 Agent 流量均为发往 *.lambda-url.*.on.aws 端点的出站 HTTPS,与正常云服务调用难以区分;
  • C2 服务器无需入站端口,可藏身于内网或任意出口受限环境;
  • DynamoDB 记录通过 TTL 自动过期,默认 24 小时;
  • CloudWatch 日志使用 KMS 加密,保留期仅 3 天;
  • Lambda relay 通过 API key 请求头进行身份验证;
  • 可进一步结合 CloudFront 自定义域名实现域名前置。

需要客观认识的一点是:Lambda 轮询循环会给响应带来 0-8 秒的额外延迟,这是无服务器架构换取隐蔽性的固有代价。

使用方式:从零部署完整教程

环境准备

部署前请确认满足以下前置条件:

  • 已完成凭证配置的 AWS 账户(aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23(监听器插件需与服务端二进制匹配 GOEXPERIMENT)
  • 已安装 AdaptixC2 v1.2
  • 支持 mingw 目标的 clang++:apt install clang lld
  • NASM 汇编器:apt install nasm
  • objcopy:apt install binutils-mingw-w64-x86-64

AWS 账户配置

在 AWS 控制台中创建专用于部署的 IAM 用户:

  1. 进入 **IAM > Users > Create user**,命名为 adaptix-deployer;
  2. 选择 **Attach policies directly**,附加以下 AWS 托管策略:
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  3. 为 KMS 添加内联策略:点击 **Add permissions > Create inline policy > JSON**,粘贴以下内容并命名为 KMSFullAccess:
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}
  1. 创建用户后,进入 **Security credentials > Create access key,选择 Command Line Interface (CLI)**,妥善保存 Access Key ID 和 Secret Access Key。

随后配置 AWS CLI:

aws configure
# AWS Access Key ID: <paste access key>
# AWS Secret Access Key: <paste secret key>
# Default region: us-east-1
# Default output format: json

验证凭证是否生效:

aws sts get-caller-identity

步骤一:部署 AWS 基础设施

# 交叉编译适用于 Amazon Linux 的 Lambda relay 二进制
./scripts/build_relay.sh

# 使用 Terraform 部署 Lambda + DynamoDB + IAM
./scripts/deploy_infra.sh

# 记录输出中的 Lambda Function URL,例如:
# lambda_function_url = "https://xxxxx.lambda-url.us-east-1.on.aws"

步骤二:安装插件到 AdaptixC2

./scripts/install.sh /path/to/AdaptixC2

该脚本会自动完成九件事:备份 dist/ 目录(证书、数据库、配置文件),应用 BeaconServerless 连接器源码补丁,从服务端二进制检测 GOEXPERIMENT 标志,使用匹配标志编译监听器插件(.so),重新构建 AdaptixC2 服务端与扩展器,恢复备份文件,安装无服务器监听器插件与 Kharon 扩展器配置,创建或更新 systemd 服务,最后重启 AdaptixC2。

步骤三:在 GUI 中配置监听器

AdaptixC2 Web 管理界面

登录 AdaptixC2 Web UI,进入 Listeners 页面创建新的 BeaconServerless 监听器,主要参数说明如下:

字段 说明 默认值
AWS Region 基础设施部署区域 us-east-1
Lambda URL Terraform 输出中的 Function URL (必填)
Relay API Key 必须与 terraform.tfvars 中的 relay_api_key 一致 (可选)
Inbound Table Agent check-in 数据表 adaptix-inbound
Outbound Table 服务器响应数据表 adaptix-outbound
Poll Interval DynamoDB 轮询频率(秒) 5
TTL Hours DynamoDB 记录过期时间 24

同时上传 profiles/lambda_default.json 中的 Malleable 配置文件,然后启动监听器。

步骤四:生成并执行 Payload

在 GUI 中选择 BeaconServerless 监听器生成 Kharon Agent,按需选择格式(Exe、Dll、Svc)与架构(x64),在目标环境执行后,Agent 会在数秒内完成 check-in 上线。

配置参考

Terraform 变量文件(deploy/aws/terraform.tfvars):

region        = "us-east-1"
function_name = "adaptix-relay"
relay_api_key = "your-secret-key-here"
tags = {
  Project = "adaptix-serverless"
}

卸载

# 从 AdaptixC2 移除插件
./scripts/uninstall.sh /path/to/AdaptixC2

# 销毁 AWS 基础设施
cd deploy/aws && terraform destroy

应用场景

  • 授权红队评估:在获得书面授权的红队行动中,利用无服务器中继隐藏 C2 基础设施真实位置,降低被溯源和反制的风险;
  • 云原生攻防研究:研究 Serverless 架构下的 C2 通信模式,理解异步消息队列式指令下发的协议设计;
  • 蓝队检测工程:从防御视角分析 *.lambda-url.*.on.aws 出站流量特征,构建对应的检测规则与威胁狩猎逻辑;
  • 安全教学实验:在隔离实验环境中演示"零入站端口"C2 的完整搭建流程,作为云安全课程的实战案例。

总结

Adaptix Serverless C2 将 AWS Lambda + DynamoDB 的 Serverless 架构与 AdaptixC2 的插件化设计结合,提供了一套部署门槛低、暴露面小、具备生产可用细节(密钥持久化、协议格式兼容、Malleable 配置)的无服务器 C2 方案。对于需要在授权评估中隐藏基础设施的红队,以及希望研究此类流量特征的蓝队,它都是一个值得深入研究的样本。

项目仓库:https://github.com/stillbigjosh/adaptix-serverless-c2

收藏 0
评论
博主关闭了评论
友情链接