# Tool Supply Chain Audit

> 审计 AboutSecurity skills 中引用的渗透工具与 f8x 安装器、arsenal 投递物仓库、tchkiller --check 之间的同步状态。当新增或修改了 skill、往 f8x 加了新工具、或者想检查工具覆盖完整性时使用此 skill。涉及关键词：工具审计、f8x 覆盖、arsenal 同步、--check 检查、工具链维护。

- Skill: `wgpsec/tool-supply-chain-audit` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add wgpsec/tool-supply-chain-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wgpsec/tool-supply-chain-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: wgpsec (https://skillmd.com/u/wgpsec)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wgpsec/tool-supply-chain-audit

---


# 工具供应链审计

当 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） |

