History-free lightweight snapshot (docs/skill only). Large binaries and media published via Gitea Releases.
376 lines
14 KiB
Markdown
376 lines
14 KiB
Markdown
---
|
||
name: tscanplus
|
||
description: >-
|
||
Operates TscanPlus security scanner via MCP tools or CLI for authorized targets only.
|
||
Use when the user mentions TscanPlus, port/URL/POC/subdomain scanning, MCP integration,
|
||
ip_scan, tscan_scan, or recon on IPs, domains, or URLs in any AI assistant with MCP support.
|
||
---
|
||
|
||
# TscanPlus 扫描助手
|
||
|
||
通过 **MCP 工具**(首选)或 **CLI** 驱动 TscanPlus(与无影 GUI 版共享 `config.yaml`、`config.db`)。参数语义对齐 **TscanClient** 命令行版(`-m` 八大模块、`-h/-u/-d/-ck` 等)。
|
||
|
||
> 本文档为 Agent Skill,可放入宿主技能目录,或复制章节到自定义系统提示。对话示例见 [examples.md](examples.md)。
|
||
|
||
## 授权(强制)
|
||
|
||
- 仅对用户**明确拥有书面授权**的目标扫描(自有 lab、渗透项目 scope 内)。
|
||
- 未获授权时:**拒绝扫描**,并说明原因。
|
||
- 默认避免:全端口 `1-65535`、大范围 C 段、生产环境、开启 `poc_check`/`pwd_check`/`poc_full`,除非用户明确要求。
|
||
- 资产过多时不要一次开启全部模块,以免耗时过久或占满 CPU。
|
||
- 扫描前用一句话复述:目标、模块、是否含 POC/爆破。
|
||
|
||
## 产品能力概览
|
||
|
||
TscanPlus / CLI 集成八大安全检测模块:
|
||
|
||
| 模块 | CLI `-m` | MCP 单工具 | 说明 |
|
||
|------|----------|------------|------|
|
||
| 端口扫描 | `port` | `ip_scan` | IP/CIDR、存活探测、端口、可选服务指纹/POC/弱口令 |
|
||
| Web 指纹 | `url` | `url_scan` | URL 指纹识别、Title、可选联动 POC |
|
||
| POC 验证 | `poc` | `poc_scan` | xray 1.0 格式 POC,可按指纹或全量 |
|
||
| 弱口令 | `crack` | `pwd_crack` | 多协议爆破,`targets` 为 `host:port` |
|
||
| 目录枚举 | `dir` | `dir_scan` | 路径爆破,可自定义字典 |
|
||
| JS 敏感信息 | `js` | `js_scan` | JS 文件中密钥、接口等 |
|
||
| 子域名 | `domain` | `subdomain_scan` | 字典 + 可选 API(key 在 config.yaml) |
|
||
| 空间测绘 | `cyber` | `cyber_search` | Hunter/FOFA 等(引擎在 config.yaml) |
|
||
|
||
**多模块联动**使用 `tscan_scan`,`modules` 对应 `-m`,流程与 GUI 项目管理一致:
|
||
|
||
**cyber → domain → port → crack → url → poc → dir → js**
|
||
|
||
前一项的**全部结果**会作为下一项的输入。常用组合(授权 lab 内):
|
||
|
||
| 场景 | `modules` / CLI `-m` |
|
||
|------|----------------------|
|
||
| 内网主机摸底 | `port,url,poc` 或 `port,poc,crack` |
|
||
| Web 专项 | `url,poc,dir,js` |
|
||
| 域名资产 | `domain,port,url,poc` |
|
||
| 测绘后深挖 | `cyber,port,url,poc` |
|
||
|
||
## MCP 工具选型
|
||
|
||
| 用户意图 | 优先工具 | 说明 |
|
||
|----------|----------|------|
|
||
| 单 IP/CIDR 看端口 | `ip_scan` | `target` 必填;先小范围 `ports` |
|
||
| 多目标只扫端口+弱口令+POC | `ip_scan` 或 `tscan_scan` | `ip_scan` 用 `pwd_check`/`poc_check` |
|
||
| 一批 URL 指纹/Web | `url_scan` | `targets` 逗号分隔 |
|
||
| 已知 URL 打 POC | `poc_scan` | 慎用 `poc_full` |
|
||
| 弱口令 | `pwd_crack` | `targets`: `192.168.1.1:22,192.168.1.1:3306` |
|
||
| 目录 / JS | `dir_scan` / `js_scan` | 需完整 URL |
|
||
| 子域名 | `subdomain_scan` | `domains`;API 需 config |
|
||
| 空间测绘 | `cyber_search` | `query` 对齐 `-ck` |
|
||
| 多阶段、结果传递 | `tscan_scan` | 大任务可分阶段执行 |
|
||
|
||
## 通用参数(MCP / CLI)
|
||
|
||
| MCP / 含义 | CLI | 默认 | 说明 |
|
||
|------------|-----|------|------|
|
||
| `project` | `-pr` | 未指定→`MCP` | 写入 `config.db` 的项目名;见下文「项目 MCP」 |
|
||
| `fresh_project` | — | `false` | 指定 `project` 时是否先清空该项目 |
|
||
| `proxy` | `-proxy` | 配置全局代理 | HTTP/SOCKS5;**端口扫描仅 SOCKS5** |
|
||
| `include_results` | — | `true` | 响应 JSON 是否带 `data.results` |
|
||
| `result_limit` | — | `200` | 每类结果最多条数,最大 `2000` |
|
||
| `ping_scan` | 未用 `-np` 即探测 | `true` | 存活探测 |
|
||
| `smart_scan` | 未用 `-nosmart` | `true` | 大网段启发式扫描(`tscan_scan`) |
|
||
| `timeout` | `-time` | `3` | 通用超时(秒) |
|
||
| `web_timeout` | `-wt` | `10` | Web 超时(秒) |
|
||
|
||
**结果存放:**
|
||
|
||
- MCP 工具返回 JSON(`data.results`、`data.counts`)。
|
||
- CLI 写日志 `TscanPlus-Result.txt` 及各模块 txt,并写入 **`config.db`**(可与 GUI 共用)。
|
||
|
||
## 项目名 `MCP` 的行为
|
||
|
||
| 情况 | 行为 |
|
||
|------|------|
|
||
| 未传 `project` | 使用 **`MCP`**,**本次工具调用前**自动清空该项目数据 |
|
||
| 传 `project=自定义名` | 默认**追加**;清空则 `fresh_project=true` |
|
||
|
||
**GUI 注意:** 单工具(如 `ip_scan`)可能不在项目列表显示行,但 `ipscan` 等表可有 `Project='MCP'`;`tscan_scan` 会在 `project` 表登记。
|
||
|
||
---
|
||
|
||
## 各模块参数(MCP ↔ CLI)
|
||
|
||
### 1. 端口扫描 `ip_scan`(`port`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `target` | `-h` | 必填 | `192.168.1.1`、`192.168.1.0/24`、范围 |
|
||
| `ports` | `-p` | `Top100` | `22`、`1-65535`、`22,80,443` |
|
||
| `thread` | `-t` | `600` | 并发 |
|
||
| `timeout` | `-time` | `3` | 秒 |
|
||
| `ping_scan` | 默认探测 / `-np` 关闭 | `true` | 存活探测 |
|
||
| `ip_finger` | 服务指纹 | 配置项 | 服务识别 |
|
||
| `poc_check` | 联动 POC | `false` | 开放端口转 URL 后 POC |
|
||
| `pwd_check` | 联动 crack | `false` | 弱口令 |
|
||
| `proxy` | `-proxy` | — | 建议 SOCKS5 |
|
||
|
||
`tscan_scan` 额外:`ports_add`→`-pa`,`exclude_hosts`→`-hn`,`smart_scan`→`-nosmart` 取反。
|
||
|
||
### 2. Web 指纹 `url_scan`(`url`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `targets` | `-u` / `-uf` 内容 | 必填 | URL,逗号或换行分隔 |
|
||
| `thread` | URL 线程 | `50` | |
|
||
| `web_timeout` | `-wt` | `10` | 秒 |
|
||
| `finger` | `-finger` | `tiny` | `tiny` / `min` / `all` |
|
||
| `cookie` | `-cookie` | — | 认证场景 |
|
||
| `poc_check` | 联动 POC | `false` | |
|
||
| `proxy` | `-proxy` | — | |
|
||
|
||
### 3. POC `poc_scan`(`poc`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `targets` | `-u` | 必填 | HTTP(S) URL |
|
||
| `thread` | `-num` | `20` | POC 并发 |
|
||
| `poc_full` | `-full` | `false` | `true` 时不匹配指纹,扫全部 POC |
|
||
| `poc_name` | `-pocname` | — | 如 `weblogic` |
|
||
| `poc_level` | `-poclevel` | `1+2+3+4+5` | 级别过滤 |
|
||
| `proxy` | `-proxy` | — | |
|
||
|
||
POC 路径在 `config.yaml`(xray 1.0 格式),与 GUI 一致。
|
||
|
||
### 4. 弱口令 `pwd_crack`(`crack`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `targets` | `-h` | 必填 | **`host:port`**,逗号分隔 |
|
||
| `services` | `-s` | `all` | `ssh,mysql,rdp` 等 |
|
||
| `user` | `-user` | 内置字典 | 逗号分隔多个 |
|
||
| `pwd` | `-pwd` | 内置字典 | |
|
||
| `cmd` | `-c` | `whoami` | 成功后执行命令 |
|
||
| `thread` | `-br` | `1` | 爆破线程 |
|
||
| `timeout` | `-time` | `3` | |
|
||
|
||
### 5. 子域名 `subdomain_scan`(`domain`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `domains` | `-d` | 必填 | 逗号分隔主域 |
|
||
| `sub_api` | `-api` | `false` | API key 在 `config.yaml` |
|
||
| `sub_dict` | `-dc` | 内置 | **绝对路径** |
|
||
| `ports` | 联动扫描端口 | `80,443` | 发现子域后的端口 |
|
||
| `proxy` | `-proxy` | — | |
|
||
|
||
### 6. 目录 `dir_scan`(`dir`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `urls` | `-u` | 必填 | 基 URL |
|
||
| `thread` | `-ds` | `20` | |
|
||
| `dict` | `-dd` | 内置 10k | **绝对路径** |
|
||
| `timeout` | `-time` | `3` | |
|
||
| `proxy` | `-proxy` | — | |
|
||
|
||
### 7. JS `js_scan`(`js`)
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `urls` | `-u` | 必填 | |
|
||
| `timeout` | `-time` / Web | `3` | |
|
||
| `proxy` | `-proxy` | — | |
|
||
|
||
### 8. 空间测绘 `cyber_search`(`cyber`)
|
||
|
||
与 GUI「空间测绘」页字段下拉一致;`field` 决定如何把 `query` 转成各引擎 API 语句。
|
||
|
||
| MCP 参数 | CLI | 默认 | 说明 |
|
||
|----------|-----|------|------|
|
||
| `query` | `-ck` | 必填 | 见下表「query 写法」 |
|
||
| `field` | 查询类型 | `domain` | 见下表 |
|
||
| `engines` | — | config 已启用 | 逗号分隔引擎名 |
|
||
| `project` / `fresh_project` | `-pr` | `MCP` / `false` | 同通用参数 |
|
||
| `include_results` / `result_limit` | — | `true` / `200` | 同通用参数 |
|
||
|
||
**`field` 可选值(对齐 GUI):**
|
||
|
||
| `field` | GUI 名称 | `query` 示例(不加引号) |
|
||
|---------|----------|-------------------------|
|
||
| `domain` | 域名 | `example.com` |
|
||
| `ip` | IP 地址 | `1.1.1.1`、`192.168.1.0/24` |
|
||
| `port` | 端口 | `80`、`3306` |
|
||
| `product` | 应用 | `nginx`、`apache` |
|
||
| `title` | 标题 | `管理后台` |
|
||
| `service` | 服务 | `mysql`、`ssh` |
|
||
| `cert` | 证书 | 证书关键词 |
|
||
| `icp` | 备案 | 备案号或主体名 |
|
||
| `body` | Body | 页面正文关键词 |
|
||
| `icon` | Icon | Icon URL 或 hash |
|
||
| `custom` | 自定义 | 各平台完整语法,如 `domain="example.com" && port="443"` |
|
||
|
||
**用法要点:**
|
||
|
||
- **推荐**:选具体 `field`,`query` 只填关键词(与 GUI 搜索框相同),不要写 `domain="xxx"` 这类包装语法。
|
||
- **`custom`**:各测绘平台语法不同,一般无法跨平台通用;需自行按平台调试。
|
||
- **多关键词**:逗号分隔,如 `example.com,example.net`(与 GUI 一致)。
|
||
- CLI `-ck` 常写完整语句时,MCP 应设 `field=custom`;或 `-ck example.com` 配合默认 `domain`。
|
||
|
||
`tscan_scan` 中用 `cyber_query` 传查询内容,`cyber_field` 传上表字段类型(默认 `domain`)。
|
||
|
||
### 9. 综合扫描 `tscan_scan`
|
||
|
||
在单模块参数基础上,常用额外字段:
|
||
|
||
| MCP 参数 | CLI | 说明 |
|
||
|----------|-----|------|
|
||
| `targets` | `-h/-u/-d/-ck` 等 | 按 `modules` 解析目标 |
|
||
| `modules` | `-m` | 默认 `port,url,poc` |
|
||
| `domains` | `-d` | `domain` 模块主域 |
|
||
| `cyber_query` | `-ck` | 测绘语句 |
|
||
| `ports` / `ports_add` | `-p` / `-pa` | |
|
||
| `exclude_hosts` | `-hn` | |
|
||
| `thread` / `url_thread` / `poc_thread` / `dir_thread` | `-t` 等 | |
|
||
| `finger` | `-finger` | |
|
||
| `poc_full` / `poc_name` / `poc_level` | POC 相关 | |
|
||
| `crack_*` | `-s/-user/-pwd/-c/-br` | 弱口令 |
|
||
| `sub_api` / `sub_dict` | 子域 | |
|
||
| `dir_dict` | `-dd` | |
|
||
|
||
---
|
||
|
||
## 推荐参数(默认保守)
|
||
|
||
**单主机端口(首选入门):**
|
||
|
||
```yaml
|
||
tool: ip_scan
|
||
target: "10.0.0.1"
|
||
ports: "80,443,8080,8443,22"
|
||
ping_scan: true
|
||
ip_finger: false
|
||
poc_check: false
|
||
pwd_check: false
|
||
thread: 200
|
||
timeout: 3
|
||
include_results: true
|
||
result_limit: 100
|
||
```
|
||
|
||
**内网 C 段(lab,控制范围):**
|
||
|
||
```yaml
|
||
tool: tscan_scan
|
||
targets: "192.168.1.0/24"
|
||
modules: "port,url"
|
||
ports: "Top100"
|
||
thread: "300"
|
||
ping_scan: true
|
||
smart_scan: true
|
||
include_results: true
|
||
result_limit: 200
|
||
```
|
||
|
||
**仅在用户明确要求时启用:** `poc_check`、`pwd_check`、`poc_full`、`modules` 含 `poc`/`crack`、全端口。
|
||
|
||
---
|
||
|
||
## MCP 接入
|
||
|
||
### stdio(推荐)
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"tscanplus": {
|
||
"command": "/绝对路径/TscanPlus",
|
||
"args": ["mcp", "stdio"]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Streamable HTTP(推荐远程传输)
|
||
|
||
```bash
|
||
TscanPlus mcp serve -listen 127.0.0.1:8088
|
||
# 或显式指定:-transport streamable
|
||
```
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"tscanplus": {
|
||
"url": "http://127.0.0.1:8088/mcp"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### HTTP+SSE(旧版兼容)
|
||
|
||
```bash
|
||
TscanPlus mcp serve -listen 127.0.0.1:8088 -transport sse
|
||
```
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"tscanplus": {
|
||
"url": "http://127.0.0.1:8088/sse"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
GUI:**AI 辅助 → MCP 服务配置** 可选择传输模式(Streamable HTTP / HTTP+SSE),启停服务并导出 Skill 模板 zip。
|
||
|
||
各宿主引用见 [README.md](README.md)。
|
||
|
||
---
|
||
|
||
## 调用后如何汇报
|
||
|
||
解析 JSON(`success`、`message`、`data`):
|
||
|
||
1. **摘要**:目标、模块、开放端口/URL 数、高危 `poc_vul`。
|
||
2. **表格化列表**:`results.ipscan` / `urlscan` / `poccheck` / `pwdcrack` / `dirscan` / `jsfinder` / `subdomain` / `cyber` 关键字段。
|
||
3. **`project_cleared: true`**:已清空默认 `MCP` 项目旧数据。
|
||
4. `counts` > `result_limit`:说明仅返回前 N 条,全量在 `config.db` 或 GUI。
|
||
|
||
不要只回复「扫描完成」。
|
||
|
||
---
|
||
|
||
## 常见工作流
|
||
|
||
1. **IP → Web → 漏洞:** `ip_scan`(常见 Web 端口)→ 拼 URL → `url_scan` → 用户确认 → `poc_scan`
|
||
2. **子域 → 端口 → Web:** `subdomain_scan` → `tscan_scan`(`modules=port,url`)→ 按需 POC
|
||
3. **测绘 → 扫描:** `cyber_search` → 提取 IP/URL → 用户确认 → `ip_scan` / `url_scan`
|
||
4. **单项目持续:** 全程 `project=pentest-xx`,阶段结束用 `fresh_project=true` 重扫
|
||
|
||
## 排错
|
||
|
||
| 现象 | 处理 |
|
||
|------|------|
|
||
| 看不到 TscanPlus 工具 | 检查 MCP 配置、二进制绝对路径、重载 MCP |
|
||
| 长时间无响应 | 同步阻塞扫描;缩小 `ports`/`targets`,先关 POC/爆破 |
|
||
| 卡在 `xxx open` | 升级版本;重启 `mcp serve` 或 GUI 内 MCP 服务 |
|
||
| GUI 无 MCP 项目行 | 单工具可能不写 `project` 表;查库表或改用 `tscan_scan` |
|
||
| 测绘/子域无结果 | 检查 `config.yaml` 中 API Key、Engines |
|
||
| 结果与 GUI 不一致 | 共用同一 `config.yaml` / `config.db` |
|
||
|
||
## MCP 不可用时的 CLI
|
||
|
||
```bash
|
||
# 默认:port + url + poc(-h 触发)
|
||
TscanPlus -h 192.168.1.1/24
|
||
|
||
TscanPlus -m port -h 192.168.1.1 -p 80,443,3306 -t 600
|
||
TscanPlus -m url,poc,dir,js -uf urls.txt -finger tiny
|
||
TscanPlus -m domain,port,url,poc -d example.com -api
|
||
TscanPlus -m crack -h 192.168.1.1 -p 22 -s ssh -user root -pwd 123456
|
||
TscanPlus -m cyber,port,poc -ck 'domain="example.com"'
|
||
TscanPlus -pr MyProject -m port,url,poc -h 192.168.1.1
|
||
|
||
TscanPlus mcp stdio
|
||
TscanPlus mcp serve -listen 127.0.0.1:8088
|
||
TscanPlus mcp serve -listen 127.0.0.1:8088 -transport sse
|
||
```
|
||
|
||
CLI 不自动清空项目;MCP 未指定 `project` 时默认 `MCP` 且每次调用前清空。
|