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 地址批量处理, 安全学习资源, 安全编程, 日志审计, 红队作战, 网络信息收集, 自动化控制