Skip to content

Latest commit

 

History

History
494 lines (378 loc) · 21.3 KB

File metadata and controls

494 lines (378 loc) · 21.3 KB

参考手册

文档首页 · 使用:使用者指南 · 本页用于查询参数,完整操作流程见对应主题。

本文档是 cyber 的完整参考,涵盖命令结构、配置、LLM Provider、各扫描器用法、资源查询和常见问题。


命令结构

aiscan [全局参数] <subcommand> [子命令参数]
命令 类型 功能
agent agentic LLM Agent;无任务输入时进入交互式 REPL;--ioa-url 增加协作连接,不改变任务模式
scan pipeline 服务、Web、认证和 POC 的事件流水线,可选后续 AI 验证与情报搜索
gogo scanner 主机存活、端口、服务、banner 和指纹发现
spray scanner Web 探测、HTTP 指纹、常见文件、爬取和路径检查
zombie scanner 授权弱口令检测
neutron scanner 模板化 POC 检测
proton scanner 敏感信息扫描(API 密钥、令牌、凭证、密码),支持管道输入
katana scanner Web 爬虫(仅 full 版)
passive scanner 网络空间搜索 FOFA/Hunter(仅 full 版)
arsenal tool mgr 安全工具包管理(install/update/remove)
cyberhub query 查询已加载的指纹和 POC 模板
ioa serve service 启动 IOA HTTP server
ioa spaces/messages/context/nodes query IOA 查询

查看帮助:aiscan -h、aiscan scan -h、aiscan neutron -h


配置

配置文件发现、优先级、初始化、profile 选择和 Web 保存规则统一见配置与初始化。下列结构用于查阅字段;具体发行版只加载其已声明的扩展。

配置文件结构

# LLM Provider
llm:
  provider: ""        # 协议类型:openai(默认,兼容所有 OpenAI API)或 anthropic
  base_url: ""        # API base URL(留空使用 provider 默认值)
  api_key: ""         # API key(建议使用环境变量)
  model: ""           # 模型名称
  context_window: 0    # 真实 Token 数;0 表示按模型推断,未知模型默认 128000
  max_tokens: 0        # 单次最大输出;0 使用默认值 16384
  proxy: ""           # 访问 LLM API 的 HTTP proxy

  # 多 LLM profile 配置(可选;只手动切换,不自动 fallback)
  active_profile: deepseek
  providers:
    - id: deepseek
      name: DeepSeek
      provider: openai
      base_url: https://api.deepseek.com/v1
      api_key: "sk-..."
      model: deepseek-chat
      context_window: 128000
      max_tokens: 16384
    - id: openai
      name: OpenAI
      provider: openai
      api_key: "sk-..."
      model: gpt-4o

# Cyberhub 资源服务
cyberhub:
  url: ""
  key: ""
  mode: ""            # merge(默认)或 override
  proxy: ""           # scanner/工具出口代理:socks5://、trojan://、vless://、clash://
  mitm: true          # 记录工具流量(默认开);false = 纯代理路由,不拦截/不抓包

# IOA 协作
ioa:
  url: ""
  node_name: ""
  space: ""

# Agent 交互输出
output:
  preset: "default"       # default、verbose 或 full
  # reasoning: "hidden"   # hidden 或 full
  # tool_calls: "compact" # hidden 或 compact
  # tool_arguments: "hidden" # hidden、preview 或 full
  # tool_results: "hidden"   # hidden、preview 或 full
  # live_status: true      # thinking/tooling/talking 瞬时状态
  # usage: true            # 瞬时状态中的 token/上下文用量

# 扫描默认值
scan:
  verify: ""          # on / off;留空由执行节点按模型是否存在决定

# 通用选项
misc:
  debug: false
  quiet: false
  no_color: false

Agent 输出

output.preset 提供三组基线;未注释的细粒度字段会覆盖所选 preset:

输出项 default verbose / -v full / -vv
reasoning hidden full full
tool_calls compact compact compact
tool_arguments hidden preview preview
tool_results hidden preview full
live_status true true true
usage true true true

默认输出只保留紧凑的工具调用摘要,不显示 reasoning、结构化参数或工具结果。tool_calls: hidden 是总开关,同时隐藏工具参数和结果。live_status: false 只关闭动态状态,仍按策略输出静态工具摘要;usage: false 只隐藏动态状态中的 token 和上下文用量,不产生或删除永久统计行。

输出优先级为 -q > -vv > -v > output 配置 > default。-q 只显示最终回答;-v 和 -vv 会完整覆盖 output 中的 preset 和细粒度字段。此配置只影响 Agent 交互输出,不改变 scanner 输出或 --debug 日志,也不改变最终回答的 stdout 输出。

交互模式下 Ctrl+O 按 default → thinking → full → default 循环固定 preset。当前为自定义细粒度配置时,第一次按键先切换到 default,之后再继续循环。


全局参数

全局参数建议放在子命令之前。只有 scan 支持在命令之后继续写全局参数并自动提取;其他 scanner 后面的参数原样传给对应引擎,避免短参数冲突。

LLM 参数

参数 说明
--provider LLM 协议类型:openai(OpenAI-compatible)或 anthropic
--base-url LLM API base URL
--api-key LLM API key(也可用环境变量)
--model 模型名称(默认 gpt-4o)
--context-window 模型上下文窗口;自定义模型 ID 建议显式设置
--max-tokens 单次 LLM 响应的最大输出 token 数
--llm-proxy 访问 LLM API 的 HTTP 代理
--ai 将单扫描器命令与意图交给 Agent 执行和分析

Agent 参数

参数 说明
-p, --prompt 自然语言任务描述,或已存在的 prompt 文件路径
-i, --input 目标输入(IP、URL、IP:port、CIDR),可重复
-s, --skill 指定 skill 名称或文件路径,可重复
--task-file 从文件读取任务描述
--heartbeat <分钟> heartbeat 间隔(0 表示关闭,默认 0)
--timeout <秒> 整体超时(默认 3600)
-e, --eval 目标评估标准 — 独立 LLM 判断任务是否达成
--eval-rounds 数字设定评估硬上限,自然语言提供评估节奏指导;默认上限 20
--observe <列表> 安装指定观测处理器:tools,commands,processes,files,http
-o, --output <路径> 将 canonical AOP 事件流写入新的 ProtoJSONL 文件
--output-format <格式> One-shot stdout:text、json 或 stream-json
--json One-shot --output-format=json 的别名
-r, --resume <路径> 只读 AOP 历史并创建 continuation,不修改源文件或隐式开启输出

context_window 使用真实整数,例如 128K 窗口填写 128000,不是 128K。所有正整数都可保存;Web 设置页会对小于 8192 的值显示非阻塞风险提示。

max_tokens 并非无条件发送:Cyber 会预估消息和工具 schema 的 token 数,并按 context_window - 当前上下文 - 4096 自动收紧。若安全预留后没有输出空间,请求会在发送前返回包含窗口、预估输入和预留量的明确错误。上下文接近窗口时会按 Pi 的默认策略自动压缩;服务端返回上下文溢出时会压缩并自动重试一次。

Scanner 参数

全局参数应放在 scanner 命令之前;命令之后的参数由该 scanner 自己解释。例如,aiscan -o events.jsonl gogo ... -o jl 会把 canonical AOP 事件写入 events.jsonl,同时让 gogo 以 JSON Lines 输出原生结果。

参数 说明
--proxy Scanner 代理,支持 socks5://、trojan://、vless://、clash://(订阅自动负载均衡)
--mitm 是否记录工具流量(默认开启)。关闭后为纯代理路由,不拦截/不抓包
--cyberhub-url Cyberhub 资源服务 URL
--cyberhub-key Cyberhub API key
--cyberhub-mode 资源模式:merge(默认)或 override

IOA 参数

参数 说明
--ioa-url IOA server URL
--server-token 当前 IOA 命令作用域的服务凭据
--node-id 通用节点 ID
--node-name 通用节点名称,供注册使用
--space IOA 空间名(默认 default)
--json IOA 查询结果以 JSON 输出

通用参数

参数 说明
--debug 输出调试日志
-v, --verbose 显示完整 reasoning 和预览后的工具参数/结果;重复为 -vv,显示完整工具结果
-q, --quiet 只显示最终回答(优先于 -v/-vv)
--no-color 禁用 ANSI 颜色
--version 输出版本号并退出

参数名冲突说明:顶层参数和 scanner 子命令参数可能同名。例如 aiscan agent -p 中 -p 是自然语言 prompt,aiscan gogo -p 中 -p 是端口参数,aiscan zombie -p 中 -p 是密码参数。cyber 会根据子命令自动区分。


LLM 协议与 Profile

支持的协议

协议 用途 默认 Base URL 环境变量
openai OpenAI 及 DeepSeek、OpenRouter、Groq、Moonshot、Ollama 等 OpenAI-compatible API https://api.openai.com/v1 OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL
anthropic Anthropic Messages API 及兼容网关 https://api.anthropic.com/v1 ANTHROPIC_API_KEY / ANTHROPIC_BASE_URL / ANTHROPIC_MODEL

除 Anthropic 协议外,其余模型服务统一使用 openai,通过 base_url、model 和 api_key 指定实际服务。其他 provider 名称会直接报错。

多 LLM Profile 字段

llm.providers 的每项支持 id、name、provider、base_url、api_key、model、proxy、timeout、max_tokens 和 context_window。选择、合并与保存规则见模型 profiles,当前会话模型的操作见Agent 指南。

Provider 配置示例

# 环境变量
export CYBER_API_KEY="sk-..."
aiscan agent -p "检查目标" -i http://target.example

# DeepSeek(OpenAI-compatible)
aiscan agent --provider openai --base-url https://api.deepseek.com/v1 --api-key "sk-..." --model deepseek-chat

# Ollama(OpenAI-compatible;部分部署可使用任意非空 API key)
aiscan agent --provider openai --model llama3 --base-url http://localhost:11434/v1 --api-key local

# 任意 OpenAI 兼容 API
aiscan agent --base-url https://my-proxy.example/v1 --api-key "$MY_KEY" --model my-model

# 通过代理访问 LLM API
aiscan agent --llm-proxy http://127.0.0.1:7890

代理(Proxy)

Scanner 代理

--proxy 参数为扫描器设置代理:

aiscan scan -i http://target.example --proxy socks5://127.0.0.1:1080
aiscan scan -i http://target.example --proxy trojan://password@server:443
aiscan scan -i http://target.example --proxy vless://uuid@server:443?security=tls
aiscan scan -i http://target.example --proxy clash://https://subscribe.example/link

Agent 模式下还可通过 proxy 工具在运行时动态管理代理,详见 Agent 模式详解。

流量捕获与多级代理(MITM Hub)

运行期本地 MITM Hub 为接入出口配置的内置客户端和遵循代理环境变量的外部程序提供路由。外部程序忽略环境变量、自建连接或使用不支持的协议时,不能保证其流量经过 Hub。

  • 稳定前端:Hub 监听固定本地地址,一次性注入到所有工具(env + 内置 client),地址不变。
  • 动态后端:出口代理链由 proxy 命令驱动(节点/订阅/负载均衡),proxy switch/auto 切换 Hub 后续连接的上游,已建立的 TCP 连接不会因此迁移。

两个命令职责分明,均为命令行优先:

  • proxy —— 管理代理(订阅、切换、负载均衡、一次性 proxy <url> <cmd> 直连)。
  • mitm —— 查看已捕获流量:mitm flows [--host --status --type --last]、mitm flow <id>、mitm analyze、mitm clear。

捕获默认开启,可用 --mitm=false 或配置 mitm: false 关闭(转为纯路由,不拦截 HTTPS、不抓包、无需信任 CA)。HTTPS 捕获会为工具注入 Hub CA(CURL_CA_BUNDLE/SSL_CERT_FILE 等);对裸 IP 目标的 HTTPS 因证书无 IP SAN 可能被严格校验拒绝,使用主机名不受影响。

作为 Cairn Runner 运行时,每次工具执行的流量元数据和 body 前缀会作为 http.exchange.v1 证据进入流量表(敏感头在 Runner 侧脱敏),覆盖实际通过 Hub 且被捕获的工具流量。单个 request/response body 最多保留 8 MiB,超出部分会在 Flow 的 error 中标记为 truncated;保留中的 body 总量默认不超过 2 GiB,淘汰流量时对应文件会一并回收。

LLM API 代理

--llm-proxy 单独为 LLM API 请求设置 HTTP 代理:

aiscan agent --llm-proxy http://127.0.0.1:7890 -p "检查目标" -i http://target.example

直接使用扫描器

gogo:服务发现

aiscan gogo -i 192.168.1.0/24 -p top2
aiscan gogo -i 10.0.0.10 -p 80,443,8080
aiscan gogo -i targets.txt -p all

spray:Web 探测和指纹

aiscan spray -u http://target.example
aiscan spray -u http://target.example --finger
aiscan spray -l urls.txt --finger

zombie:弱口令检测

aiscan zombie -i ssh://127.0.0.1:22 --top 3
aiscan zombie -i ssh://admin@127.0.0.1:22 -p admin123

注意:zombie -p 是密码参数,不是 agent 的 prompt 参数。

neutron:POC 检测

参数 说明
-u, --target URL、host 或 ip:port,可重复
-l, --list 目标文件
-t, --templates 自定义模板文件或目录
--id 按模板 ID 执行
--finger 按指纹过滤模板
--tags 按 tag 过滤模板
-s, --severity 按严重性过滤
-c, --concurrency 模板并发数
--rate-limit 每秒执行上限
-j, --json JSON Lines 输出
--template-list 列出匹配模板(不执行)
aiscan neutron -u http://target.example -s critical,high
aiscan neutron -u http://target.example --finger nginx
aiscan neutron -l targets.txt --tags cve,rce -c 10 --rate-limit 20
aiscan neutron -u http://target.example -t ./pocs --id shiro-detect -j

proton:敏感信息扫描

参数 说明
-i, --input 目标文件或目录
-l, --list 包含多个目标路径的文件
-e, --expression 自定义正则表达式(可重复)
-t, --templates 自定义模板文件或目录
-c, --category 内置模板类别:keys, spray, all(默认 keys)
--id 按规则 ID 过滤
--tags 按 tag 过滤
-s, --severity 按严重性过滤
-j, --json JSON Lines 输出
-o, --output 将 proton 原生结果写入文件;canonical AOP 输出使用命令前的全局 -o
--template-list 列出匹配规则(不执行)
aiscan proton -i /path/to/project
aiscan proton -i . --tags cloud --severity high
aiscan proton -i . -e "AKIA[0-9A-Z]{16}" -e "password\s*[:=]"
aiscan proton --template-list -c keys
# 管道输入
curl -s http://target/api | aiscan proton
cat .env | aiscan proton -c keys

katana:Web 爬虫(仅 full 版)

aiscan katana -u https://target.example -d 3 -jc
aiscan katana -u https://target.example -hl -d 3 -jc       # headless
aiscan katana -u https://target.example -hh -d 2            # hybrid
参数 说明
-hl, --headless 启用 headless 浏览器爬取
-hh, --hybrid 启用 headless hybrid 爬取
-cwu, --chrome-ws-url 连接已有 Chrome 实例

passive:网络空间搜索(仅 full 版)

aiscan passive -s fofa 'domain="example.com"'
aiscan passive -s hunter 'domain.suffix="example.com"'
数据源 凭据参数 环境变量
fofa --fofa-key FOFA_KEY
hunter --hunter-api-key HUNTER_API_KEY
shodan-idb 无需 API key —

Cyberhub 资源

Cyberhub 提供外部指纹库和 POC 模板,可以扩充或替换内置资源。

aiscan scan -i http://target.example --cyberhub-url http://127.0.0.1:9000 --cyberhub-key "$CYBER_CYBERHUB_KEY"

资源模式:merge(默认,合并内置和远程)或 override(远程覆盖内置)。

cyberhub 查询命令

aiscan cyberhub search --finger tomcat
aiscan cyberhub search --cve CVE-2021-44228
aiscan cyberhub search --vendor apache --product tomcat
aiscan cyberhub list poc --severity critical --limit 10
aiscan cyberhub id tomcat

结构化查询标志:--finger、--cve、--vendor、--product、--poc、--tag、-s、--limit、-j。

本地缓存位于 ~/.cyber/cache/,TTL 24 小时。


scan 参数

行为与执行范围见扫描指南,当前二进制的参数以 aiscan scan -h 为准。

参数 含义 默认
-i, --input URL、IP、IP:port 或 CIDR,可重复 无
-l, --list 每行一个目标的文件 无
--mode quick 或 full quick
--ports 资源端口集合、范围或列表 quick 为 all,full 为 -
--thread 引擎容量缩放基准,不是聚合硬上限 1000
--timeout 每个探测超时秒数 5
--dict、--rule 字典与变形规则文件,可重复 无
--word 路径词汇生成表达式 无
--default-dict、--advance 默认字典、advance 插件 关闭
--user、--pwd 认证检测候选用户名、密码,可重复 无覆盖
--zombie-top 默认弱口令组合数量 由引擎解析
--max-neutron-per-finger 每个指纹的模板上限 20
--broad-poc 无匹配指纹时也运行 POC 关闭
--verify on、off 未指定时采用节点配置,否则有模型开启、无模型关闭
--sniper 指纹的后续漏洞情报搜索 关闭
-j, --json 完成后输出 gogo/spray 原生 JSON Lines 关闭
--trace、--debug 调度观察、底层日志 关闭
--no-color 关闭终端颜色 关闭

-o 保存全局 AOP 事件;-F 读取历史,--view-format markdown -f report.md 输出回放的 Markdown。--report 不是当前 scan 解析器接受的参数。

扫描默认值

scan:
  verify: "auto"       # 当前执行限制见扫描指南;明确启用时在 CLI 指定级别
值 说明
auto 配置默认值;当前 CLI 移除该值但未转为 high,不能据此保证执行验证
off 关闭验证
low / medium / high / critical 验证对应优先级及以上的发现

环境变量汇总

模型配置统一推荐 CYBER_API_KEY、CYBER_BASE_URL、CYBER_MODEL、CYBER_PROVIDER,无需为 aiscan、cyber-audit 等入口分别配置。优先级为显式 CLI > CYBER_* > 配置文件 > 兼容的 LLM_* / provider 环境变量。后者仅补充尚未配置的值。搜索、测绘等独立服务的凭据仍使用各自名称。

变量 说明
OPENAI_API_KEY OpenAI API key
OPENAI_BASE_URL OpenAI-compatible API base URL
OPENAI_MODEL OpenAI/Codex 风格模型名
ANTHROPIC_API_KEY Anthropic API key
ANTHROPIC_BASE_URL Anthropic-compatible API base URL
ANTHROPIC_MODEL Claude Code 风格模型名
CYBER_API_KEY 统一模型 API key,所有 Cyber 二进制共用;覆盖配置文件,显式 CLI 优先
CYBER_BASE_URL 统一 LLM API base URL
CYBER_MODEL 统一模型名
CYBER_PROVIDER 协议类型:openai 或 anthropic
CYBER_LLM_PROXY LLM API 请求代理
CYBER_DATA_DIR 数据目录;优先级低于显式 --data-dir
CYBER_PROXY 扫描工具代理
CYBER_CYBERHUB_URL Cyberhub URL
CYBER_CYBERHUB_KEY Cyberhub API key
CYBER_CYBERHUB_MODE Cyberhub 资源模式
TAVILY_API_KEY Tavily Web Search API key,多个 key 可逗号分隔
FOFA_KEY FOFA API key
HUNTER_API_KEY Hunter API key
RECON_PROXY 被动测绘出站代理
SHODAN_API_KEY、QUAKE_TOKEN、ZOOMEYE_API_KEY、NETLAS_API_KEY Uncover 数据源凭据
CENSYS_API_TOKEN / CENSYS_ORGANIZATION_ID Censys 凭据
CRIMINALIP_API_KEY、PUBLICWWW_API_KEY、HUNTERHOW_API_KEY Uncover 数据源凭据
BINARYEDGE_API_KEY、ONYPHE_API_KEY、GREYNOISE_API_KEY Uncover 数据源凭据
DRIFTNET_API_KEY、DAYDAYMAP_API_KEY、ODIN_API_KEY、NERDYDATA_API_KEY Uncover 数据源凭据
GOOGLE_API_KEY / GOOGLE_API_CX Google Search 凭据
CYBER_RENDER 终端渲染模式:interactive、static、forwarded
CYBER_REPL REPL 输入模式:readline 或 fast
PLAYWRIGHT_CLI_SESSION Playwright 默认 session

运行时业务环境变量只在 pkg/config 解析一次,再通过运行时配置下传。PATH、子进程环境继承以及 Go 标准库的 HTTP_PROXY / HTTPS_PROXY / NO_PROXY 属于操作系统级行为,不纳入业务配置优先级。前端开发服务器的 CYBER_BACKEND_URL 是 Vite 构建期配置,也不进入 Go 运行时配置。


信号处理

有可停止的工作时,Ctrl+C 提交停止请求;没有可停止工作时,CLI 提示再次按键退出,随后 5 秒内再次按 Ctrl+C 以退出码 130 结束进程。交互任务控制见Agent 指南,该退出路径不保证业务资源已完成清理。