第 8 章 · 02 技能体系 本节摘要:本节讲透 Strix 的核心机制之一——技能(Skills)。LLM 的安全知识「广而浅」:它知道 SQL 注入的存在,却缺乏老牌渗透测试员手里的解析器怪癖、WAF 绕过、链式攻击等「肌肉记忆」。Skills 就是把这些深度专家知识打包成结构化的 Markdown,在 agent 创建时按上下文动态注入最多 5 个到它的系统 prompt 里,把一个通用 agent 瞬间「特化」成某个漏洞类/框架/工具的专家。本节覆盖:Skills 的设计思想、「最多 5 个」的注入机制、八大分类全景、一个 skill 该长什么样,以及「好的 skill 包含什么」。理解了它,你才算真正理解 Strix 为什么比裸 LLM 强。
本节摘要:本节讲透 Strix 的核心机制之一——技能(Skills)。LLM 的安全知识「广而浅」:它知道 SQL 注入的存在,却缺乏老牌渗透测试员手里的解析器怪癖、WAF 绕过、链式攻击等「肌肉记忆」。Skills 就是把这些深度专家知识打包成结构化的 Markdown,在 agent 创建时按上下文动态注入最多 5 个到它的系统 prompt 里,把一个通用 agent 瞬间「特化」成某个漏洞类/框架/工具的专家。本节覆盖:Skills 的设计思想、「最多 5 个」的注入机制、八大分类全景、一个 skill 该长什么样,以及「好的 skill 包含什么」。理解了它,你才算真正理解 Strix 为什么比裸 LLM 强。
内容来源:原项目文档
docs/advanced/skills.mdx与strix/skills/README.md,汉化并套用体系化模板。
💡 本节是前面多章提及的「skills」的官方正解。第 5、6 章讲过的各类漏洞,在 Strix 里都对应一个
/vulnerabilitiesskill。
阅读完本节,你应当能够:
通用大模型的安全知识是广而浅的。你问它「什么是 SQL 注入」,它能讲得头头是道;但你让它真正去打一个有 WAF、用了参数化但又拼了一段、数据库是某个冷门版本的目标,它往往只会最基础的 ' OR 1=1--。
真正的渗透测试员手里有一堆**非显然(non-obvious)**的招式:
这些知识不在论文里、不在 OWASP 速查表里,而散落在实战经验里。Skills 的使命就是把这些深度、专门化的知识直接塞进 agent 的上下文,让它从一个「通用选手」变成「当前任务的专家」。
⚠️ 别把 Skills 当成「RAG 检索文档」。它们不是「让模型查资料」,而是在 agent 出生那一刻,把专家知识焊进它的系统 prompt,成为它「天生就会」的东西。这决定了 agent 后续每一步推理的起点。
这是 Skills 体系最关键的机制,值得单独讲透。
当 Strix 为某个子任务派生(spawn)一个 agent 时,会根据当前上下文选出最多 5 个与该任务相关的 skill,把它们注入到这个 agent 的系统 prompt 里:
# 为「测试认证机制」派生的 agent 自动加载相关 skills create_agent( task="Test authentication mechanisms", skills=["authentication_jwt", "business_logic"] )
注入后,这个 agent 就能访问 skill 提供的三类内容:
这个数字是上下文预算与专注度之间的权衡:
💡 「选哪些」比「选多少」更重要。Strix 的选择逻辑基于上下文相关性:任务是测 JWT,就选
authentication_jwt;目标是 Supabase 应用,就追加supabase。这套相关性匹配,正是 agent 编排(第 3 章)的职责之一。你要做的是保证 skill 库里有足够精准的选项可供挑选——这也是为什么后面要讲「好的 skill 包含什么」。
Strix 的 skill 库按用途分成八大类。下面是完整分类表与代表 skill(本教程第 5、6、7 章分别对应其中若干类)。
/vulnerabilities —— 漏洞类(核心)核心漏洞类的深度利用技巧。这是 skill 库的主干,与第 5、6 章一一对应:
| Skill | 覆盖范围 |
|---|---|
authentication_jwt |
JWT 攻击、算法混淆、claim 篡改 |
idor |
对象引用攻击、水平/垂直越权 |
sql_injection |
SQLi 变体、WAF 绕过、盲注技巧 |
xss |
XSS 类型、过滤绕过、DOM 利用 |
ssrf |
服务端请求伪造、协议处理器 |
csrf |
跨站请求伪造、token 绕过 |
xxe |
XML 外部实体、OOB 外带 |
rce |
远程代码执行向量 |
business_logic |
逻辑缺陷、状态操纵、竞态 |
race_conditions |
TOCTOU、并发请求攻击 |
path_traversal_lfi_rfi |
文件包含、路径穿越 |
open_redirect |
跳转绕过、URL 解析陷阱 |
mass_assignment |
属性注入、隐藏参数污染 |
insecure_file_uploads |
上传绕过、扩展名技巧 |
information_disclosure |
数据泄漏、基于错误的枚举 |
subdomain_takeover |
悬挂 DNS、云资源认领 |
broken_function_level_authorization |
提权、角色绕过 |
/frameworks —— 框架类框架专属的测试模式:
| Skill | 覆盖范围 |
|---|---|
fastapi |
FastAPI 安全模式、Pydantic 绕过 |
nextjs |
Next.js SSR/SSG 问题、API 路由安全 |
/technologies —— 第三方技术类第三方服务与平台安全:
| Skill | 覆盖范围 |
|---|---|
supabase |
Supabase RLS 绕过、认证问题 |
firebase_firestore |
Firestore 规则、Firebase 认证 |
/protocols —— 协议类协议专属的测试技巧:
| Skill | 覆盖范围 |
|---|---|
graphql |
GraphQL 自省、批量查询、resolver 问题 |
/reconnaissance —— 侦察类被动发现与攻击面测绘:
| Skill | 覆盖范围 |
|---|---|
asset_discovery |
CT 证书、TLS SAN 透视、被动 DNS、ASN/IP 资产枚举 |
/tooling —— 工具类沙箱 CLI 的核心侦察与扫描工具的操作手册:
| Skill | 覆盖范围 |
|---|---|
nmap |
端口/服务扫描语法与高信号扫描模式 |
nuclei |
模板选择、严重度过滤、速率调优 |
httpx |
HTTP 探测与指纹输出模式 |
ffuf |
字典爆破、matcher/filter 策略、递归 |
subfinder |
被动子域枚举与来源控制 |
naabu |
快速端口扫描与显式速率/验证控制 |
katana |
爬取深度/JS/已知文件行为与陷阱 |
sqlmap |
SQLi 枚举与受控提取工作流 |
/cloud —— 云类云服务商安全测试:覆盖 AWS、GCP、Kubernetes 等(第 7 章已讲)。
/custom —— 社区贡献类社区贡献的、面向专门或行业场景的 skill。这一类是本章第 4 节「自定义 skill」的舞台,也是「从用到造」的桥梁。两个值得注意的源码感知(source-aware)skill:
source_aware_whitebox(/coordination):白盒编排手册source_aware_sast(/custom):semgrep/AST/密钥/供应链静态分诊工作流dependency_cve_scanning(/custom):基于 trivy 的 SCA 工作流,用 create_dependency_report 上报已知依赖 CVE💡 分类是「目录」,不是「隔离」。agent 选 skill 时可以跨类组合:打一个跑在 AWS 上的 Supabase + GraphQL 应用,可能同时注入
supabase+graphql+aws+sql_injection+business_logic——刚好 5 个,精准覆盖。
每个 skill 都是一个带 YAML frontmatter 的 Markdown 文件。frontmatter 提供元数据(name 和 description),正文按固定小节组织:
--- name: skill_name description: 简要描述这个 skill 的覆盖范围 --- # Skill 标题 关于这个漏洞/技术的关键洞察。 ## Attack Surface 本 skill 覆盖什么、在哪里找。 ## Methodology 逐步的测试方法。 ## Techniques 如何发现并利用这个漏洞。 ## Bypass Methods 如何绕过常见防护。 ## Validation 如何确认发现、避免误报。
⚠️ frontmatter 的
name必须与文件名一致(或可被加载器映射),description要写清「这个 skill 管什么场景」,因为它会参与 agent 选 skill 时的相关性匹配。描述写得含糊,skill 就可能在该被选中时没被选中——等于白写。
社区贡献 skill 时,文档明确给出「好 skill」的四条标准:
💡 「上下文感知」是最拉开差距的一条。一个写「Pydantic v2 在某版本下会把 X 类型 coerce 成 Y,从而绕过校验」的 skill,价值远高于一个泛泛讲「FastAPI 要测输入校验」的 skill。前者是只有踩过坑才知道的知识,后者 GPT 自己就会说。
新手常问:既然 skill 是知识,为什么不把所有 skill 一次性塞进 root agent 的系统 prompt,省得每次选?
答案在第三节那张图里——上下文是稀缺资源:
aws skill 的 agent 在测一个纯本地 Node 应用时,可能误把正常行为往云配置错误上靠。动态注入的精髓是:每个 agent 只带它这次任务真正需要的知识。这既是经济学,也是认知科学——专家之所以是专家,不仅因为他知道得多,更因为他在对的时刻调用对的知识。
vulnerabilities/frameworks/technologies/protocols/reconnaissance/tooling/cloud/custom,可跨类组合。name+description)+ Attack Surface/Methodology/Techniques/Bypass/Validation 五段正文。理解了 skill 的机制与结构,下一节先看一个不用自己搭环境的选项——Strix Cloud;然后再回到本地,在第 4 节亲手写两个自定义 skill,完成「从用到造」的闭环。