Strix 开源 AI 渗透测试工具的中文维护分支。当前分支已合并上游 v1.6.2,默认中文体验,优先解决国内模型接入、Burp / Caido 工作流、受限网络兼容,以及本地源码扫描落地问题。
- 完整吸收上游当前发布版的功能、修复和新架构
- 保留
strix-cn既有的中文文档、中文提示和中文报告输出 - 保留 Burp / Caido 流量驱动的常规渗透测试工作流与本地模型、兼容网关适配
- 保留本地开发者熟悉的 CLI 入口、常用参数和恢复路径
- 吸收上游 MCP server 支持(
~/.strix/mcp-servers.json配置,agent 按需调用) - 新增
--workspace-file把本地辅助文件注入沙箱 workspace - 报告新增情境化 CVSS、反证 / 置信度闭环与
update_vulnerability_report修订通道 LLM_API_BASE指向 Anthropic 协议端点时,裸模型名自动按/v1/messages路由- 交互界面为上游 Go / Bubble Tea TUI;本地 Viewer 内置,无需额外前端安装
- 支持
LLM_EXTRA_HEADERS、LLM_DISABLE_STREAMING、STRIX_REASONING_EFFORT=max - Web Search 支持 Exa 与 Perplexity,可通过配置选择 Provider;Exa 支持搜索结果摘要和页面全文抓取
- 支持通过 Vercel AI Gateway 接入多个模型 Provider
- 默认沙箱镜像基线
ghcr.io/usestrix/strix-sandbox:1.3.0;本地目录统一走挂载模式
- 只能在你拥有或获得明确书面授权的目标上运行
- Burp/Caido 流量驱动模式下,不要一次性把整站大量接口流量导给 Strix;按功能点分批测试
- 对增删改类接口保持谨慎,不建议把高风险破坏性操作直接交给 AI
- AI 会把任务分发给多个专家代理,复杂扫描通常需要较长时间
- 多代理渗透测试:侦察、利用、验证和报告并行协作
- Web、代码库、API 契约、域名、IP、Burp/Caido 流量驱动测试支持
- 真实 PoC 验证:报告包含可复现步骤和证据
- Burp / Caido 联动:适合“采集一个功能点,再开始测试”的工作流
- 中文交付体验:CLI、TUI、README、关键 docs、报告默认中文
- 本地兼容优先:支持 OpenAI-compatible 网关、本地模型和代理环境
- Docker 已启动
- Python 3.12+
- Go 1.24+
- 仅源码仓库下的交互模式需要,例如
strix、strix --burp-port 8081 - 官方 wheel / 发布包已内置 Go TUI sidecar,不需要额外安装 Go
- 仅源码仓库下的交互模式需要,例如
- 一个可用的 LLM 接入方式
- 推荐:OpenAI-compatible 网关、本地模型、LiteLLM 路由
- 兼容:OpenAI、Anthropic、Vertex AI、Bedrock、Azure、ChatGPT 订阅登录
# 获取当前分支源码
git clone https://github.com/wpsec/strix-cn.git
cd strix-cn
# 创建虚拟环境并安装
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
python -m pip install -e .
# 如果要直接在源码仓库里使用交互式 TUI / Burp/Caido 流量入口
# macOS 可先安装 Go
brew install go
# 确认版本
.venv/bin/strix --version
go version在其他机器(例如 Kali)使用当前分支前,先拉取最新提交并刷新源码安装:
cd /home/tmp/strix-cn
git pull --ff-only
.venv/bin/python -m pip install -e .
.venv/bin/strix --version如果工作树存在未提交改动,请先确认并保留这些改动,再执行 git pull。
说明:
- 源码仓库下的交互模式会直接运行 Go / Bubble Tea TUI;如果本机没有
go,启动strix或strix --burp-port 8081时会报Bubble Tea TUI binary not found - 只跑无交互模式
-n/--non-interactive时,不依赖本机 Go TUI - 使用官方 wheel / 发布包安装时,Go sidecar 已随包提供,不需要额外安装 Go
# 准备 overlay 构建依赖的基础镜像
docker pull ghcr.io/usestrix/strix-sandbox:1.3.0
# 国内网络可选:配置构建镜像源
export STRIX_KALI_APT_MIRROR="http://mirrors.tuna.tsinghua.edu.cn/kali"
export STRIX_GO_PROXY="https://goproxy.cn,direct"
export STRIX_GO_SUMDB="sum.golang.google.cn"
export STRIX_NPM_REGISTRY="https://registry.npmmirror.com"
export STRIX_PIP_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"
# 推荐:在上游 1.3.0 基础上叠加当前分支改动
./scripts/docker-overlay.sh local
# 如果你明确修改了大量基础环境,再执行完整构建
# ./scripts/docker.sh local
# 指定 Strix 使用本地镜像
export STRIX_IMAGE="strix-sandbox:local"# 示例:兼容网关 / 自建入口 / 国内可访问模型网关
export STRIX_LLM="openai/your-compatible-model"
export LLM_API_KEY="your-api-key"
export LLM_API_BASE="https://your-gateway.example/v1"
# 可选 思考推理等级
export STRIX_REASONING_EFFORT="high"
# 支持的推理等级,根据你的模型而来,正常写high就行了
比如 GPT的模型
low 轻度
medium 中
high 高
xhigh 高
max Ultra
# 也可以将配置写入项目目录的 .env;已 export 的变量优先级更高
# STRIX_LLM=openai/your-compatible-model
# LLM_API_KEY=your-api-key
# LLM_API_BASE=https://your-gateway.example/v1
# 可选:额外路由头
export LLM_EXTRA_HEADERS='{"X-Tenant":"acme"}'
# 可选:受限网络或兼容网关流式不稳定时关闭 streaming
export LLM_DISABLE_STREAMING="false"
# 可选:启用实时 Web 搜索(二选一或同时配置)
# export PERPLEXITY_API_KEY="your-perplexity-api-key"
# export EXA_API_KEY="your-exa-api-key"
# export STRIX_WEB_SEARCH_PROVIDER="auto" # auto、exa 或 perplexity
# export STRIX_EXA_SEARCH_TYPE="auto" # auto、fast、instant、deep-lite、deep、deep-reasoning
# export STRIX_EXA_NUM_RESULTS="5" # 1-100
# 可选:受限网络环境
export HTTP_PROXY="http://127.0.0.1:7897"
export HTTPS_PROXY="http://127.0.0.1:7897"
export ALL_PROXY="socks5://127.0.0.1:7897"配置优先级为:已 export 的环境变量 > 项目目录 .env > ~/.strix/cli-config.json > 默认值。
.env 不应提交到 Git;请使用 .env.example 保存变量名和占位符。
# 本地代码扫描
.venv/bin/strix --target ./app-directory
# Web 应用扫描
.venv/bin/strix --target https://example.com
# Burp/Caido 流量驱动常规渗透测试
.venv/bin/strix --burp-port 8081
# Token 限制
.venv/bin/strix --token-limit 100M --target https://example.com
# 将已经在测试的任务,token上线重新标定
.venv/bin/strix --resume <run_name> --token-limit 200M单个数据包如果目的是让 Strix 深入测试并尝试形成有效漏洞,直接使用常规扫描入口的 --request:
.venv/bin/strix \
--request ./burp-request.txt \
--issue "检查该请求涉及的参数是否存在越权、注入或可获得更高权限的利用链" \
-n这条命令会启动完整的 AI 渗透测试链路、Docker sandbox、Caido 代理、子 Agent 和原生漏洞报告。请求文件只是起始证据,Agent 会在授权范围内重放基线、分析相关接口和业务流程、变异参数并验证实际影响,不会停在一次固定探针的响应比较上。未指定 --target 时,Strix 从请求的 Scheme、Host 和 Port 自动建立目标;指定 --target 或 --target-list 时,请求的 Host/Port 必须命中授权目标。
入口边界如下:
| 入口 | 适用目的 | 执行引擎 |
|---|---|---|
--verify --request |
确定性复测、修复回归、证明已知假设 | 受限验证执行器 |
--request |
以单个数据包为入口的完整 AI 渗透测试 | 完整 AI Agent 图 |
--burp-port |
从 Burp/Caido 流量采集并测试功能点 | 完整目标级扫描链路 |
--target |
常规目标级渗透测试 | 常规 Agent 图 |
因此,--verify 的结果是“复测证据”,不代表它已经完成一次完整的单包测试;想让 AI 自主扩展测试面,应使用常规扫描入口的 --request。
常规扫描入口不使用额外的安全模式配置,也不存在 STRIX_MODE 或 --mode。--scan-mode quick|standard|deep 是上游原生的扫描深度配置;--verify 是独立的确定性复测命令,不是可持久化的安全模式。
报告产物遵循上游原生结构,仅将用户可见标题和字段翻译为中文:penetration_test_report.md 是执行摘要,vulnerabilities/*.md 是单漏洞明细,另有 vulnerabilities.json、vulnerabilities.csv 和 findings.sarif。多请求、权限变化或影响扩大的漏洞会在单漏洞报告中追加 攻击链路 纵向路径视图;它是报告展示扩展,不改变原生报告字段和判定规则。
运行产物位于 strix_runs/<run-name>/,包括 penetration_test_report.md、vulnerabilities/*、vulnerabilities.json、vulnerabilities.csv、run.json 和 findings.sarif。
常规扫描入口会按完整 Agent 图测试目标;单请求只提供上下文,不会改变报告格式、作用域校验或 Agent 工具能力。
验证计划由当前配置的 Strix LLM 根据“漏洞描述 + 脱敏请求结构”生成。模型只提出漏洞标签、目标字段、验证能力、探针和判定器,随后由本地校验器检查字段白名单、动作、载荷、请求数量和副作用边界;模型调用失败或意图不完整时直接阻断,不按漏洞名称匹配固定模板,也不猜测请求中不存在的字段。运行前请先完成模型配置,至少设置 STRIX_LLM、LLM_API_KEY,以及兼容网关所需的 LLM_API_BASE。
确认漏洞时报告会提供“可复现 PoC”和已执行探针请求;未复现、阻断或证据不足时会提供“未复现证明”,包括控制请求、探针请求、响应状态码、长度、响应指纹和未满足的判定条件。报告中的原始请求和实际重放请求仍按原样保留,便于在 Burp Repeater 中复核。
需要第二授权身份时,使用 --secondary-request 提供第二个 Burp 请求包;需要受控出站验证时,使用 --canary-url 提供由操作员控制的公网 Canary 地址。模型不能自行指定第二身份请求或出站目标。
当前版本没有 OOB 回调确认能力,Canary 回显只记录为证据不足,不会单凭回显确认服务端请求伪造。
--verify 用于复核一个具体漏洞,不启动常规扫描或整站攻击面发现。提供 Burp 的 Raw HTTP / Copy as cURL 请求,以及一句自然语言问题描述,Strix 会先生成验证计划,确认后才启动与常规扫描一致的 Docker sandbox,并通过容器内配置的 Caido 代理发送受限探针请求;计划阶段不会启动容器或发送请求。需要 AI 自主探索测试面时,使用上面的常规扫描入口 --request,不要把 --verify 当作单包完整扫描入口。
# 交互模式:按提示粘贴请求和漏洞描述
.venv/bin/strix --verify
# 非交互模式:请求文件和描述均由参数提供
.venv/bin/strix --verify \
--request ./burp-request.txt \
--issue "疑似 IDOR,修改订单 ID 后可能读取其他用户订单" \
-n --yes
# 修复后复测:沿用历史验证计划和探针
.venv/bin/strix --verify \
--baseline <历史运行名> \
--request ./burp-request-after-fix.txt \
-n --yes
# 跨身份对象边界:额外提供第二个授权身份的同端点请求
.venv/bin/strix --verify \
--request ./primary-request.txt \
--secondary-request ./secondary-request.txt \
--issue "疑似对象访问边界问题" \
-n --yes
# 需要受控出站验证时:只使用操作员控制的 Canary 地址
.venv/bin/strix --verify \
--request ./burp-request.txt \
--canary-url https://canary.example/strix-test \
--issue "疑似服务端出站请求边界问题" \
-n --yes交互模式中,请求内容以单独一行 __STRIX_END__ 结束。执行前会展示识别出的漏洞类型、目标字段、验证动作、预计请求数和副作用提示;JSON 请求会递归暴露叶子字段,例如 body.dataPackage.configList[0].conditionSql,不需要手工填写参数路径。IDOR/BOLA 等需要第二身份的场景会继续要求提供第二个请求包。Raw 请求缺少 Scheme 时,如果同源 Origin 或 Referer 已明确给出协议,复测命令会自动采用;否则交互式复测只询问一次使用 http 还是 https,非交互式复测会直接阻断。
复测结果和可复制的 Burp Repeater 请求保存在 strix_runs/<run-name>/,包括 verification-plan.json、verification-result.json、verification-evidence.jsonl 和 penetration_test_report.md。执行环境记录为 docker-sandbox,复测完成后会清理临时容器;容器启动或执行失败时不会回退到宿主机直连,而是生成证据不足的报告。--verify 与 --target、--burp-port 和 --resume 互斥;只能对已获得授权的目标执行。
# 本地代码库
strix --target ./app-directory
# GitHub 仓库
strix --target https://github.com/org/repo
# Web 应用
strix --target https://your-app.com# OpenAPI / Swagger 文件
strix --target ./openapi.yaml --target https://api.your-app.com
# Postman collection 导出文件
strix --target ./collection.postman_collection.json --target https://api.your-app.com
# 通过 Postman collection id 实时拉取
export POSTMAN_API_KEY="PMAK-..."
strix --target "postman://<collection-uuid>?env=<environment-uuid>"--burp-port 启动 Burp/Caido 流量驱动的常规扫描,从进入的请求、响应、会话和功能流程建立测试上下文,再交给完整 Agent 链路进行常规渗透测试。它不是 --verify 的单漏洞复测。
# 仅使用 Burp/Caido 流量建立测试上下文
strix --burp-port 8081
# 同时显式限制目标主机
strix --target https://example.com --burp-port 8081推荐工作流:
- 在 Burp 中把上游代理指向
127.0.0.1:8081 - 浏览器继续走 Burp,先手工完成一个完整功能点
- 回到 Strix 后在对话框发送
开始测试,冻结当前功能点并暂停继续采集 - 当前功能点测完后发送
下一功能点,重新开启下一轮采集 - 全部功能点完成后发送
结束测试,生成总报告
这种“单功能采集 -> 开始测试 -> 切换下一功能”的方式,比一次性灌入整站流量更稳定;每个功能点都会进入常规 Agent 渗透测试流程,也更符合当前 strix-cn 的 Burp/Caido 工作流。
burp 将想要测试的功能点击完成后,代理到 strix, 输入开始测试
测试开始,rootagent 会梳理当前接口信息,启一个攻击面分析专家子 agent
子 agent 分析
分析完后返回给 rootagent,rootagent 根据分析结果,下发对应的子 agent 专家进行测试
本地报告
# 多目标测试(源码 + 已部署应用)
strix -t https://github.com/org/app -t https://staging.example.com
# 从文件读取目标
strix --target-list ./targets.txt
# 兼容参数:只挂载工作目录
strix --mount ./huge-monorepo --instruction "Review the changed auth flow"
# 聚焦测试
strix --target api.example.com --instruction "重点测试 IDOR、认证绕过和业务逻辑缺陷"
# 从文件读取详细说明
strix --target api.example.com --instruction-file ./instruction.md
# 快速模式 + diff-scope
strix -n --target ./ --scan-mode quick --scope-mode diff --diff-base origin/main
# 限制扫描级有效 Token,优先完成严重/高危漏洞路径
strix -n --target ./ --token-limit 100M
# 恢复之前中断的运行
strix --resume <run_name>--token-limit 是整次扫描的有效 Token 上限,按模型调用的 input_tokens + output_tokens 统计;支持整数及 K/M/G/T/B 后缀,例如 100M 表示 100,000,000 Token。未配置时不限制 Token,但仍会记录实际用量。配置后扫描会优先执行 P0/P1 的授权、攻击面、严重/高危漏洞发现、验证和报告,再进入中低危扩展测试。
Token 用尽时运行状态会标记为 token_limit_exhausted,报告会明确列出已完成测试、未完成阶段、跳过任务和严重度覆盖范围,不能将未覆盖区域视为“未发现问题”。--max-budget-usd 仍然只负责费用限制;两者同时配置时,任一限制先达到都会停止继续扩展测试。
如果因 Token 上限耗尽而提前结束,运行状态会保留为可恢复运行。使用 --resume 可以从原运行记录继续未完成的任务,不会从头开始扫描。恢复时默认沿用原始 Token 上限;由于该上限已经耗尽,必须显式提供更大的累计总上限:
# 原扫描使用 --token-limit 100M,恢复时将累计总上限提高到 200M
strix --resume <run_name> --token-limit 200M这里的 200M 是整次扫描的累计总上限,不是额外增加 200M;如果原运行已经消耗约 98M,恢复后大约还可使用 102M。恢复时不要再次指定 --target、--target-list 或 --mount,目标和未完成任务计划会从原运行记录恢复。若耗尽的是模型供应商的 API 余额或配额,而不是 Strix 的 --token-limit,则需要先补充供应商额度或更换可用模型。
每次扫描结果都会实时落盘。你可以直接在浏览器中查看运行状态、漏洞详情、代理图和历史运行:
# 打开最近一次运行
strix view
# 或者打开指定运行
strix view <run_name>Viewer 默认只绑定到本机回环地址,读取本地 strix_runs/ 目录中的结果文件,不需要额外前端安装。
如果你不想直接使用按量 API Key,也可以使用当前版本内置的 ChatGPT 订阅登录能力:
strix auth login chatgpt
export STRIX_LLM="chatgpt/gpt-5.6-luna"
export STRIX_REASONING_EFFORT="high"
strix --target ./app-directory
strix auth status
strix auth logoutStrix 已支持通过 skills 接入常见编码代理:
npx skills add usestrix/strix这会安装 4 个技能,分别覆盖无头扫描与结果读取、云端托管渗透测试 API 驱动、修复后复扫验证,以及 CI 场景下的 PR 安全扫描。编码代理既可以直接驱动本地开源 CLI,也可以在没有本地 Docker 或 LLM Key 时走托管云端能力。
相关参考:
[AGENTS.md](AGENTS.md):本地快速说明- docs.strix.ai/llms.txt:CLI 文档
- docs.app.strix.ai:云端 API 文档
strix-pentest:无头扫描与结果读取strix-cloud-api:通过云端平台 REST API 驱动扫描strix-fix-findings:修复并复扫验证strix-ci-setup:在 CI 中接入 PR 扫描
无交互场景下可使用 -n/--non-interactive:
strix -n --target https://your-app.comGitHub Actions 示例:
name: strix-penetration-test
on:
pull_request:
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install strix-cn
run: |
python -m pip install -U pip
python -m pip install "git+https://github.com/wpsec/strix-cn.git"
- name: Run Strix
env:
STRIX_LLM: ${{ secrets.STRIX_LLM }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
run: strix -n -t ./ --scan-mode quick- CLI 参考:
docs/usage/cli.mdx - 配置说明:
docs/advanced/configuration.mdx - 贡献说明:
CONTRIBUTING.md - 同步计划:
docs/plan/071-v1.5.0主线全量吸收与兼容迁移方案.md
Strix 构建在多个优秀的开源项目之上,包括 LiteLLM、Caido、Nuclei、Playwright 和 Bubble Tea。感谢这些项目的维护者。
Strix 会主动对目标发起安全测试。请仅在你拥有或已获得明确书面授权的系统上运行,并严格遵守约定范围与适用法律。对于未经授权的使用或由此产生的后果,使用者自行承担责任。