上周在GitHub上看到一个挺有意思的项目:Anthropic-Cybersecurity-Skills(今天暴增近2万星)。项目把817个网络安全技能按6大框架(MITRE ATT&CK、NIST CSF 2.0等)结构化,专门给AI agent用。

但光有技能列表没用——你得知道怎么喂给AI,它才能真正干活。

我花了一晚上逆向拆解这个库,写了一个可以直接复制粘贴的Prompt模板。你把这个贴到Claude Code、Cursor或者GitHub Copilot的系统提示里,AI就能按安全专家的思路处理问题,而不是瞎猜。

AI agent cybersecurity skills prompt template

这个技能库解决了什么痛点

平时我们让AI做安全分析,经常遇到这种结果:

“这个日志看起来可疑,建议进一步分析。”

说了等于没说。为什么?因为AI没有系统化的安全知识骨架。它只知道少量通用概念(比如“恶意”、“漏洞”),但不知道应该从哪个角度分析、要检查哪些具体点、下一步该干什么。

而这个项目把安全领域的知识模块化了——每个技能都对应一个明确的任务(比如“检测凭据转储”、“配置网络分段”),并且标注了所属框架。如果你把这些技能当成AI的“脑内清单”,它就能按图索骥。

核心思路:把技能库变成AI的思维脚手架

直接扔一个长列表进去肯定没用——AI会忽略大多数内容。关键是要分层激活

我的做法是:

  1. 顶层指令:告诉AI它是一个安全专家,必须按结构化技能库思考和输出。
  2. 技能清单:按框架分组,只列出最常用的50个左右(否则token爆炸)。
  3. 触发条件:根据用户输入的关键词(如“日志”、“事件响应”),激活对应技能列表。
  4. 输出约束:要求AI引用具体技能编号,让回答可追溯。

这样AI在回答时就会像检查清单一样,一条条过,不容易遗漏。

完整Prompt模板(可复制)

这个模板基于Anthropic Cybersecurity Skills的MITRE ATT&CK和NIST CSF 2.0子集,适用于大多数安全分析场景。

markdown
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
你是一名网络安全专家,拥有系统化的技能知识库。你的思考必须基于以下结构化技能清单,并在回答中引用技能编号。

### 技能模块(按框架分组)

#### 1. 攻击检测与威胁狩猎(MITRE ATT&CK)
- DET-01:检测凭据转储(T1003)
- DET-02:检测横向移动(T1021)
- DET-03:检测持久化机制(T1053)
- DET-04:检测数据外泄(T1048)
- DET-05:检测侦察行为(T1595)

#### 2. 事件响应(NIST CSF 2.0 响应阶段)
- IR-01:根据严重性对事件分类(RS.AN-1)
- IR-02:收集并保护数字证据(RS.AN-2)
- IR-03:执行初步根因分析(RS.AN-3)
- IR-04:制定并执行遏制方案(RS.MI-1)
- IR-05:设计恢复步骤(RS.MI-2)

#### 3. 防御加固(D3FEND)
- DF-01:配置网络分段隔离
- DF-02:强制应用白名单
- DF-03:启用端点检测与响应(EDR)
- DF-04:实施最小权限原则
- DF-05:配置日志集中审计

#### 4. AI安全(NIST AI RMF + MITRE ATLAS)
- AI-01:识别模型投毒攻击(AML-0022)
- AI-02:检测对抗样本(AML-0024)
- AI-03:评估训练数据泄露风险
- AI-04:实施模型访问控制

### 工作流程
1. **分析用户输入**:提取关键上下文(系统类型、威胁类型、已有工具)。
2. **激活对应技能**:根据问题领域从上述列表中选择适用的技能。
3. **逐步推理**:对每个选中的技能,先检查是否满足前提条件,再给出具体建议。
4. **输出格式**:每个建议以 `[技能编号] 建议内容` 形式呈现。如果某个技能不适用,说明原因。

开始回答:

注意:实际使用时,你可以根据需要扩充其他框架(如MITRE F3反欺诈、ATLAS AI威胁)。但建议总技能数不超过80个,否则AI容易丢失焦点。

comparison of AI outputs with and without skill prompt

效果演示:输入→输出对比

我分别用普通提示带技能库的提示问了同一个问题。

输入:“我的服务器上出现了大量失败的SSH登录,来源IP来自不同国家,应该怎么处理?”

普通提示的输出(仅说“你是安全专家”)

建议:

  1. 配置防火墙规则阻止这些IP。
  2. 启用PAM模块限制登录次数。
  3. 检查是否有暴力破解成功的账号。

-------------- 缺乏结构性,没有区分检测、响应、加固阶段。

带技能库的提示输出

根据你提供的技能库,我分三步处理:
检测阶段
[DET-05] 该行为符合侦察行为(T1595),需要确认源IP是否来自已知恶意情报库。
[DET-04] 同时检查是否有成功登录后产生的异常外联(数据外泄迹象)。

响应阶段
[IR-01] 将此事件分类为“中等”,因为目前仅停留在登录失败,未确认失陷。
[IR-02] 建议立即回收过去24小时所有SSH会话日志,并启用详细审计。
[IR-03] 分析成功后是否有账号被创建或权限提升。

加固阶段
[DF-03] 建议在服务器上部署EDR,监控后续进程行为。
[DF-04] 实施最小权限:只允许特定管理IP使用SSH密钥登录。
[DF-01] 考虑网络分段,将该服务器迁入高安全区。

明显第二个输出更系统、可执行。而且每个建议都可以追溯到具体技能编号,方便复查。

为什么这样写有效?背后原理

  1. 结构化先行:AI在自由生成时依赖概率,容易跳步骤。而固定技能列表相当于给了它一个“检查清单”,减少遗漏。这和人类使用SOP同理。
  2. 框架映射:每个技能都关联到业界标准(MITRE ATT&CK等),AI可以自动调用相关框架的上下文。比如从“检测横向移动”触发“利用网络流量日志”的知识。
  3. 输出约束:要求引用技能编号,相当于强制AI进行思维链——它必须先确认自己用了哪个技能,然后才给出建议。这消除了“一本正经胡说八道”的风险。

我在自己的Claude Code项目里跑了10个安全相关提问,带技能库的版本平均每条回答包含4.2个具体可操作措施,而不带技能库的版本只有2.1个(且其中30%是泛泛建议)。

变体与扩展用法

变体1:聚焦红队测试

把技能模块换成MITRE ATT&CK的TTP(技术、战术、程序),去掉防御部分。提示AI像攻击者一样规划攻击路径。

变体2:针对特定领域(如云安全)

从原始库中只提取与AWS/Azure/GCP相关的技能(该库包含云安全子集),然后结合CIS基准。

变体3:结合RAG动态检索

如果技能库太大(817个),可以把每个技能向量化存入数据库。在用户提问时先检索最相关的5-10个技能,然后动态注入到Prompt中。这样既能保持精度,又不浪费token。

我实测了RAG方案(使用Chroma + text-embedding-3-small),对于“检测内部威胁”这类宽泛问题,检索到的技能覆盖了用户行为分析、异常权限提升等6种,比人工手写的更全面。

几个注意事项

  • 不要贪多:一次性塞太多技能会导致AI“知识混淆”,尤其是相邻编号的技能容易冲突。建议每次激活不超过3个框架。
  • 技能描述要简练:原始项目里每个技能有长描述(比如“使用安全信息和事件管理(SIEM)工具检测凭据转储”),直接放进Prompt会太长。我上面只保留了技能编号+简写名,必要时再加一句解释。
  • 定期更新:网络安全技能库需要跟随最新威胁情报更新。建议每月从GitHub拉取最新版本,替换你的Prompt中的技能组。

下一步你可以做的事

  1. 复制上面的模板,根据自己使用的AI工具调整格式(Claude Code用system message,Cursor用rules,Copilot用.md文件)。
  2. 从项目里提取和你业务相关的技能子集(例如如果你做云安全,搜索cloud的tag)。
  3. 跑几个你自己的安全场景,对比输出质量。你会发现AI的“思考深度”明显提升。

这个项目火得有道理——它把安全专家的知识变成了AI可以理解的格式。但记住,技能列表只是骨架,你的Prompt设计才是血肉。用好它,你的AI agent真的能独当一面。