Cherno-x/adaptix-cli
GitHub: Cherno-x/adaptix-cli
一个为 Adaptix C2 框架打造的 Go 命令行客户端,专为 AI agent 集成与自动化安全测试场景设计,支持从终端完成 beacon 管理与各类操作。
Stars: 0 | Forks: 0
# adaptix-cli
[English](README.md) | [中文](README_zh.md)
一个用于 [Adaptix C2](https://github.com/Adaptix-Framework/AdaptixC2) 框架的命令行界面,使用 Go 编写。
`adaptix-cli` 让你可以从终端驱动 Adaptix Teamserver —— 列出 beacon、执行 shell 命令、传输文件、管理监听器/隧道/凭据 —— 使用与 Qt GUI 客户端相同的 REST API。它专为 **AI agent 集成和自动化**而构建:每个命令都有一个 `--json` (`-j`) 模式,可返回原始、可解析的 JSON,并且内置了 Claude Code skill,使得 AI agent 可以通过自然语言端到端地操作 C2。
该二进制文件名为 `axcli`(项目名为 `adaptix-cli`,命令为 `axcli`)。
## 快速开始
```
# 构建
go build -o axcli .
# Login(凭据保存至 ~/.adaptix/config.json)
./axcli login --url https://127.0.0.1:8443 -u admin -p your_password
# 列出 beacon(包含 alive/dead Status 列的表格)
./axcli beacons
# 在 beacon 上执行 shell 命令
./axcli shell --id ABCD1234 "whoami /all"
# 交互式 beacon 控制台(自动等待结果)
./axcli console --id ABCD1234
# 上传文件到 beacon
./axcli upload --id ABCD1234 --file /tmp/payload.exe --remote-path "C:\\temp\\payload.exe"
# 从 beacon 下载文件(beacon -> server -> 本地 cwd,自动同步)
./axcli download --id ABCD1234 --path "C:\\secret\\data.txt"
```
## 功能说明
| 功能 | 方式 |
|------------|-----|
| 发现并识别 beacon | `beacons` / `agent list` — 显示存活/死亡状态、主机、用户、OS、进程 |
| 在 beacon 上执行命令 | `shell`, `ps`, `ls`, `cat`, `cd`, `pwd`, `getuid`, `disks`, `kill`, `jobs` |
| 文件传输 | `upload`(单次),`download`(beacon→服务器→本地 cwd,自动执行) |
| 交互式 REPL | `console` — 多命令会话,自动等待结果 |
| Beacon 控制 | `sleep`, `rev2self`, `terminate` |
| 服务器管理 | `listener`, `tunnel` (socks4/5, 端口转发), `creds`, `targets`, `screenshot`, `chat`, `otp` |
| 任务生命周期 | `task list` / `cancel` / `delete`, `download-mgr` 用于服务器端下载 |
| AI / 脚本 | 所有命令支持 `-j` 原始 JSON;内置 Claude Code skill |
### Beacon 存活/死亡状态
`Status` 列会报告 `alive` 或 `dead`。当 Teamserver 将 beacon 标记为 `Inactive`、`Terminated` 或 `Disconnect` 时,该 beacon 即为 `dead`;对于设置了 sleep 间隔的 beacon,如果其签到时间远远超过了设定的 sleep 窗口期,它也会回退为 `dead` 状态(镜像了 Qt 客户端的健康检查机制)。
### 下载流程
下载在底层分为两个阶段(beacon 将文件推送到服务器,然后你再获取它),但 `download` 命令会自动完成这两步:它将任务加入队列,等待 beacon 完成,并使用远程路径的 basename 将文件写入**当前工作目录**。只有在需要重新获取过去的下载内容或在使用了 `--no-wait` 之后,才使用 `download-mgr`。
```
axcli download --id X --path "C:\\secret\\data.txt" # auto-sync to ./data.txt
axcli download --id X --path "C:\\secret\\data.txt" -o /tmp/d # custom output path
axcli download --id X --path "C:\\secret\\data.txt" --no-wait # queue only
axcli download-mgr list # server-side downloads
axcli download-mgr sync --file-id # fetch to cwd
axcli download-mgr delete # cleanup
```
如果文件在 beacon 上不存在,`download` 会快速失败并返回 beacon 的错误信息(例如 `Error [2]: FILE_NOT_FOUND`),而不是一直超时。
## 配置
成功登录后,凭据会持久化保存到 `~/.adaptix/config.json` (0600) 文件中。
```
{
"url": "https://127.0.0.1:8443",
"username": "admin",
"password": "your_password",
"endpoint": "/api/v1",
"insecure": true,
"access_token": "jwt_token_here",
"refresh_token": "jwt_refresh_here"
}
```
**优先级(从高到低):** CLI 标志 (`--url`, `-u`, `-p`) → 环境变量 (`ADAPTIX_URL`, `ADAPTIX_USER`, `ADAPTIX_PASSWORD`) → 配置文件。
JWT token 会被缓存,并在返回 401 错误时自动刷新。重新运行 `axcli login` 可强制重新认证。
## 命令参考
### 快捷命令(对 AI 友好)
| 命令 | 描述 | 示例 |
|---------|-------------|---------|
| `beacons` | 列出所有 beacon(包含状态) | `axcli beacons` |
| `shell` | 执行 shell 命令 | `axcli shell --id X whoami` |
| `ls` | 列出目录 | `axcli ls --id X --path C:\\` |
| `cat` | 读取文件 | `axcli cat --id X C:\\file.txt` |
| `cd` | 切换目录 | `axcli cd --id X C:\\Windows` |
| `pwd` | 打印工作目录 | `axcli pwd --id X` |
| `ps` | 列出进程 | `axcli ps --id X` |
| `getuid` | 获取当前用户 | `axcli getuid --id X` |
| `sleep` | 设置 sleep 间隔 | `axcli sleep --id X 5s --jitter 20` |
| `rm` | 删除文件/目录 | `axcli rm --id X C:\\file.txt` |
| `mkdir` | 创建目录 | `axcli mkdir --id X C:\\newdir` |
| `cp` | 复制文件 | `axcli cp --id X src dst` |
| `mv` | 移动/重命名文件 | `axcli mv --id X src dst` |
| `disks` | 列出磁盘 (Windows) | `axcli disks --id X` |
| `kill` | 结束进程 | `axcli kill --id X 1234` |
| `jobs` | 列出/结束任务 | `axcli jobs --id X` |
| `terminate` | 结束 agent | `axcli terminate --id X process` |
| `rev2self` | 恢复模拟令牌 | `axcli rev2self --id X` |
| `upload` | 上传文件 | `axcli upload --id X --file local --remote-path remote` |
| `download` | 下载文件(自动同步到 cwd) | `axcli download --id X --path remote` |
| `console` | 交互式 REPL | `axcli console --id X` |
### 交互式控制台
一个带有实时任务输出的交互式 beacon 控制台,类似于 Qt GUI 客户端:
```
axcli console --id ABCD1234
axcli console --id ABCD1234 --poll 3 --timeout 120
axcli console --id ABCD1234 --no-wait # fire-and-forget
```
**Console 标志:** `--poll N`(任务轮询间隔,默认 5s) · `--timeout N`(默认 120s) · `--no-wait`。
| 在控制台内部 | |
|---|---|
| `ls [path]` · `cat ` · `cd ` · `pwd` | 文件操作 |
| `ps` · `getuid` · `disks` · `kill ` · `jobs [kill ]` | 进程 / 任务操作 |
| `download ` · `upload ` | 文件传输(download 会自动同步到 cwd) |
| `sleep [jitter]` · `rev2self` · `terminate [method]` | beacon 控制 |
| `shell ` | 显式 shell |
| `tasklist` · `clear` · `help` · `exit`/`quit` | 会话 |
**任何无法识别的命令都会作为 `shell ` 执行** —— 输入 `ipconfig` 等同于 `shell ipconfig`。
### 管理命令
| 命令 | 子命令 | 描述 |
|---------|-------------|-------------|
| `agent` | list, remove, command, raw, generate, console-clear, tag, mark, color | Agent 管理 |
| `task` | list, cancel, delete | 任务管理 |
| `listener` | list, create, stop, edit, pause, resume | 监听器管理 |
| `download-mgr` | list, sync, delete | 下载文件管理 |
| `tunnel` | list, socks5, socks4, lportfwd, rportfwd, stop | 隧道/代理管理 |
| `creds` | list, add, remove | 凭据管理 |
| `targets` | list, add, remove | 目标管理 |
| `screenshot` | list, image | 截图管理 |
| `service` | list, call | 服务管理 |
| `chat` | (位置参数) | 发送聊天消息 |
| `otp` | (标志) | 生成一次性密码 |
### 全局标志
| 标志 | 简写 | 描述 |
|------|-------|-------------|
| `--url` | | Teamserver URL |
| `--user` | `-u` | 用户名 |
| `--password` | `-p` | 密码 |
| `--endpoint` | | API 前缀(默认:`/api/v1`) |
| `--json` | `-j` | 原始 JSON 输出 |
| `--insecure` | `-k` | 跳过 TLS 验证(默认:true) |
## 构建
```
# Debug build
go build -o axcli .
# 优化后的 release build
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o axcli .
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o axcli .
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o axcli.exe .
```
## Claude Code Skill
项目内置了一个 Claude Code skill,位于[`.claude/skills/adaptix.md`](.claude/skills/adaptix.md)。通过将其复制(或符号链接)到你的 Claude skills 目录来安装:
```
cp .claude/skills/adaptix.md ~/.claude/skills/adaptix.md
```
然后在 Claude Code 会话中使用 `/adaptix` 调用它,即可通过自然语言操作 C2。
## API 协议
CLI 封装了 Adaptix Teamserver REST API:
1. **认证**:JWT (`POST /login` → access_token + refresh_token)
2. **Shell**:通过 AxScript 解析器执行 `POST /agent/command/raw`(与 Qt GUI 路径相同)
3. **结构化命令**:使用结构化参数 JSON 执行 `POST /agent/command/execute`
4. **上传**:文件被 base64 编码并作为命令参数发送
5. **下载**:`download` 将任务加入队列,等待 beacon 完成,然后自动同步到 cwd;`download-mgr sync` 重新获取服务器端的下载文件
6. **控制台**:轮询 `GET /agent/task/list` 以等待命令结果
## 授权说明
此工具用于授权的安全测试、红队行动,以及针对你拥有或获得明确授权评估的 Adaptix C2 基础设施进行的检测工程。请勿将其用于未经许可测试的系统。作者不对滥用行为承担责任。
标签:C2框架, EVTX分析, Golang, IP 地址批量处理, 安全学习资源, 安全编程, 日志审计, 红队作战, 网络信息收集, 自动化控制