- name
- tool-supply-chain-audit
- description
- 审计 AboutSecurity skills 中引用的渗透工具与 f8x 安装器、arsenal 投递物仓库、tchkiller --check 之间的同步状态。当新增或修改了 skill、往 f8x 加了新工具、或者想检查工具覆盖完整性时使用此 skill。涉及关键词:工具审计、f8x 覆盖、arsenal 同步、--check 检查、工具链维护。
# 工具供应链审计
当 skill 引用了一个渗透工具,需要保证 4 个环节同步,形成完整的**工具供应链**:
```
Skill 引用工具 → f8x 安装函数 → f8x arsenal 投递 → tchkiller --check 检查
① ② ③ ④
```
任何一环缺失都会导致:agent 加载了 skill 却找不到工具、投递物缺失、环境检查遗漏。
## 审计流程
### Phase 1: 提取 Skill 工具清单
扫描目标 skill 目录下的所有 `.md` 文件(SKILL.md + references/),提取工具引用:
**提取规则**:
- 代码块中的命令首词(`python3 xxx.py`, `./tool`, `tool --flag`)
- 工具表格中的工具名
- `wget/curl` 下载的工具 URL
- `Skill(skill="xxx")` 交叉引用中涉及的工具
**分类**:每个工具标记类型:
- `PATH` — 系统 PATH 中可直接调用(nmap, curl, impacket-*)
- `PENTEST` — 安装在 `/pentest/` 下的 PoC/脚本(noPac, zerologon)
- `ARSENAL` — 需要预编译多平台二进制投递到目标(fscan, chisel)
- `PIP` — Python pip 安装(tccli, certipy)
- `SYSTEM` — 系统自带/apt 安装(mount, nsenter, tcpdump)
### Phase 2: 对比 f8x 覆盖
打开 f8x 脚本(`<f8x-repo>/f8x`),检查每个工具:
**f8x 安装检查**(详见 → `references/f8x-architecture.md`):
1. 是否有版本变量(`xxx_Ver="v1.0"`,文件顶部 ~行 40-430)
2. 是否有安装函数(`Pentest_xxx_Install()`)
3. 是否注册到 `F8X_TOOL_LIST`(~行 10706+,格式 `name|function|level`)
4. 是否在对应的安装组调用(`cloud()` / `Ad_Tools()` 等)
**判断标准**:
- `SYSTEM` 类工具(apt 包)→ 不需要 f8x 覆盖,跳过
- `PATH` 类且已通过 pip/go install 安装的 → 检查 f8x 是否有函数
- `PENTEST` 类(git clone 的 PoC)→ 必须有 f8x 安装函数
- `PIP` 类 → 应有 f8x 安装函数
### Phase 3: 对比 Arsenal 覆盖
检查工具是否适合 arsenal 投递,并对比当前 arsenal 配置:
**Arsenal 适合条件**(满足任一):
- Go/Rust 静态编译二进制,有 GitHub Releases 多平台预编译文件
- 需要在目标机上直接执行的工具(不是攻击机上用的)
- 已有的 agent 类工具(ligolo-agent, frpc)
**不适合 arsenal 的**:
- Python 脚本(需要运行环境)
- 攻击机本地工具(nmap, responder)
- 系统工具(apt 包)
**f8x arsenal 检查**(详见 → `references/f8x-architecture.md`):
1. 是否在 `ARSENAL_TOOLS` 列表(~行 11110+)
2. 如果工具 release 格式非标准,是否有自定义 `case` 块
3. 涉及哪些平台(linux_amd64, linux_arm64, windows_amd64)
### Phase 4: 对比 tchkiller --check
检查工具是否注册到 tchkiller 的环境检查(详见 → `references/tchkiller-check-architecture.md`):
1. `pentest_tools` 列表(~行 294)— PATH 中的渗透工具
2. `_ARSENAL_TOOLS` 列表(~行 427)— arsenal 投递物检查
3. mkdir 提示信息中的工具列表
### Phase 5: 检查 Skill 路径正确性
对 `PENTEST` 类工具,检查 skill 中是否使用了绝对路径:
- 应该用 `/pentest/工具名/脚本.py` 而不是裸名 `脚本.py`
- 路径应与 f8x 安装函数中的 `$P_Dir/xxx` 一致(默认 `/pentest/`)
## 输出格式
```markdown
# 工具供应链审计报告
## 审计范围
- Skills: xxx, yyy
- f8x: /path/to/f8x
- tchkiller: /path/to/main.py
## 工具清单
| 工具 | 类型 | 引用来源 | f8x 安装 | Arsenal | --check | Skill 路径 |
|------|------|----------|----------|---------|---------|------------|
| noPac | PENTEST | ad-domain-attack | ✅ | N/A | ❌ | ✅ /pentest/noPac/ |
| fscan | ARSENAL | tool-delivery | ✅ | ✅ | ✅ | ✅ |
| tcpdump | SYSTEM | k8s-sidecar-attack | N/A | N/A | N/A | N/A |
## 缺失项(需要修复)
1. ❌ `xxx` 未在 f8x 中注册 → 需要添加安装函数
2. ❌ `yyy` 适合 arsenal 但未添加 → 检查 release 格式后添加
3. ❌ `zzz` 未在 --check 中注册
## 已完整覆盖
✅ 所有 PATH/PENTEST/ARSENAL 类工具已同步
```
## 关键文件路径
| 文件 | 作用 |
|------|------|
| `<f8x-repo>/f8x` | f8x 安装器主脚本 |
| `<tchkiller-repo>/main.py` | tchkiller 入口(含 --check) |
| `<skills-repo>/` | Skill 仓库根目录 |
| `<tchkiller-repo>/prompt/system.py` | 系统提示词(本地资源路径) |
| `<tchkiller-repo>/mcp_server.py` | MCP 工具(含 locate_tool) |
Ver no GitHub