AI赋能威胁情报:cti-skills技能包实战解析与应用指南
1. 项目概述:一个为AI智能体赋能的网络威胁情报技能包
如果你和我一样,长期在网络安全一线摸爬滚打,尤其是从事威胁情报分析工作,那你一定深有体会:每天面对海量的IOC、复杂的APT报告、零散的OSINT信息,以及写不完的检测规则,时间总是不够用。传统的工具链虽然强大,但往往割裂,从一个工具切换到另一个工具,复制粘贴、格式转换,这些“体力活”消耗了大量本该用于深度分析的精力。
最近,我在尝试将AI智能体引入日常工作流时,发现了一个非常有意思的项目:cti-skills。这本质上不是一个独立软件,而是一个专为像Claude Code、Cursor这类支持“智能体技能”的AI编码环境设计的技能包。它的核心目标很明确——让AI成为你的威胁情报分析副驾,把那些重复、繁琐但至关重要的标准化工作,比如IP调查、威胁行为者画像、检测规则编写,交给AI去执行,而你则专注于更高阶的逻辑推理和战略判断。
简单来说,它把威胁情报分析师(CTI Analyst)的看家本领,拆解成了52个可被AI智能体直接调用的“技能”。当你对智能体说“调查一下这个IP”或“给我写一条检测APT29的Sigma规则”时,智能体不再只是凭空想象或进行简单的网络搜索,而是能调用这些封装好的技能,按照专业的分析框架和流程,产出结构化的、可直接使用的结果。这不仅仅是“聊天”,而是让AI融入了你的专业工作流。
2. 核心设计思路:从“聊天机器人”到“专业副驾”的范式转变
这个项目的设计哲学,与我过去几年尝试用脚本自动化各种分析任务的想法不谋而合,但它走得更远、更系统。它不是要取代分析师,而是要增强分析师。我们来拆解一下它的核心思路。
2.1 技能化封装:将专业知识转化为可执行指令
传统上,我们教AI做威胁情报,可能是给它一堆文档让它学习,然后指望它能理解并回答相关问题。这种方式的问题在于,回答的质量不可控,且难以复现标准化的分析过程。cti-skills采用了截然不同的方法:技能化封装。
它把CTI工作流中的每一个关键动作,都封装成了一个独立的“技能”。例如:
/ip-investigation: 这不是简单的“查一下IP”,而是一个完整的调查流程。它会自动串联起对VirusTotal、AlienVault OTX、Shodan、AbuseIPDB、GreyNoise等多个情报源的查询,并对返回结果进行交叉验证和置信度评分。/threat-actor-profile: 生成威胁行为者档案。它会从内置的知识库和本地MITRE ATT&CK数据集中提取信息,结构化地呈现别名、历史活动、常用TTP、归因置信度等,而不是生成一段笼统的描述性文字。/sigma-writing: 编写Sigma检测规则。它会基于输入的威胁描述或TTP,按照Sigma的语法规范,生成可立即投入使用的YAML格式规则,包括日志源、检测条件、误报规避建议等字段。
这种设计的精妙之处在于,它将“做什么”(任务目标)和“怎么做”(实现逻辑)分离开了。作为使用者,你只需要告诉AI“做什么”,AI负责调用正确的技能并组织执行流程。而每个技能背后,是项目维护者注入的行业最佳实践和标准化方法论。这确保了输出结果的专业性和一致性,避免了AI“自由发挥”可能带来的偏差。
2.2 单编排器架构:智能路由与质量控制中枢
早期版本的cti-skills采用了多达14个智能体的分层架构,这虽然模块清晰,但带来了复杂的通信和管理开销。当前版本正在向“扁平化技能+单编排器”模型演进,这是一个非常务实且高效的设计选择。
这个单编排器技能是整个系统的“大脑”和“调度中心”。它的核心职责有两个:
- 智能路由:当你输入一个模糊的指令,如“调查203.0.113.42”,编排器会解析你的意图,自动将其路由到最合适的技能(
/ip-investigation)。未来,它甚至可以处理更复杂的复合请求,比如“分析这个钓鱼邮件样本并评估相关基础架构的风险”。 - 自动施加严谨性:这是真正体现其“专业级”设计的地方。编排器会在每个技能输出结果后,自动为其打上TLP标签、根据情报源可靠性进行置信度评分、并可能应用北约 Admiralty 信源分级标准。这意味着,即便是AI生成的一份初步报告,也自带了对信息传播范围和可信度的警示,符合专业情报共享的规范。
实操心得:这个“自动施加严谨性”的功能,是很多自研自动化脚本容易忽略的。在实际的团队协作和情报共享中,明确信息的敏感度(TLP)和可信度,是避免误判和误传的关键。这个设计强迫(或者说帮助)你在工作流的起点就建立起良好的习惯。
2.3 内置知识库与本地数据集:保证时效性与隐私性
威胁情报是一个高度依赖时效性和外部数据的领域。cti-skills通过两种方式来解决这个问题:
- “活”的知识单元:项目提供了一系列关于特定威胁领域的“知识单元”,如
/china-cyber-espionage、/ransomware-ecosystem。这些不是静态文档,而是可以被技能查询和引用的结构化知识库。维护者会更新这些单元,确保AI引用的背景知识不过时。 - 本地MITRE ATT&CK数据集:TTP映射是威胁情报的核心。项目内置了本地的ATT&CK数据集,这意味着进行TTP查询或映射时,无需发起网络请求。这不仅加快了速度,更重要的是,它可以在完全离线的、敏感的环境中使用,满足了某些高安全级别场景的需求。
- 集成外部情报源API:对于需要实时信息的调查类技能,它集成了7个主流开源威胁情报平台(VirusTotal, URLScan等)。这些集成被暴露为独立的“查找”技能,既可以被编排器调用,也可以被其他技能直接链式调用,构建复杂的调查工作流。
这种“本地知识+外部API”的混合架构,在速度、隐私和功能性之间取得了很好的平衡。
3. 核心技能组深度解析与实战应用
光有设计思路不够,我们得看看它到底能干什么。这52个技能覆盖了CTI工作的全生命周期,我们可以将其归纳为几个核心技能组来深入理解。
3.1 调查与归因技能组:从IOC到上下文
这是最常用的一组技能,目的是将孤立的威胁指标转化为有背景的、可行动的情报。
/ip-investigation: 如前所述,这是旗舰技能。我实测过一个可疑IP,输入指令后,AI在后台依次调用了VirusTotal(查恶意文件关联)、URLScan.io(查托管历史与截图)、Shodan(查开放端口与服务)、AbuseIPDB(查滥用报告)、GreyNoise(区分扫描流量与定向攻击)。最终它返回的不是一堆原始数据,而是一份综合报告,包含:“该IP在过去24小时内有X次恶意软件提交记录(VT);曾托管过一个仿冒登录页面(URLScan);开放了22和3389端口(Shodan);在AbuseIPDB上有3条滥用报告;被GreyNoise标记为良性互联网扫描。” 并附上TLP:AMBER和综合风险评分。这相当于一个初级分析师半小时的工作量。/threat-actor-profile: 输入“APT29”或“Cozy Bear”,它会生成一张结构化的“演员卡片”。内容包括已知别名、疑似归属、历史攻击活动时间线、最常使用的初始访问、执行、持久化等战术(TTP),以及归因的置信度水平(例如,“中等置信度,基于恶意代码代码风格重叠和攻击目标一致性”)。这对于快速向非技术人员汇报或撰写报告背景部分极其有用。/indicator-pivoting: 这是高阶分析技能。给你一个MD5哈希,它不仅能告诉你这个文件是什么,还能通过查询关联的VT报告,找出与之通信的C2域名、IP,以及同家族的其他样本哈希,帮你勾勒出攻击基础设施的轮廓。
注意事项:调查技能的产出质量高度依赖配置的API密钥及其免费额度。例如,VirusTotal免费版有速率限制(4次/分钟),在批量调查时可能需要引入延时或使用轮询多个密钥的策略。务必了解每个服务的限制,并在脚本中做好错误处理和退路(graceful degradation)设计。
3.2 分析技术与思维框架技能组:对抗认知偏见
威胁情报分析不仅是收集数据,更是基于不完整信息做出判断。这组技能引入了经典的结构化分析技术,是项目的精华所在。
/ach(竞争性假设分析): 这是情报界的经典方法。当你面对一个事件(例如“内网发现可疑横向移动”),有多个可能假设(是APT、是内部人员、是自动化攻击工具)时,手动进行ACH非常繁琐。这个技能可以引导你或AI智能体,系统地列出证据、评估每个证据对每个假设的支持/反对程度,最后计算哪个假设可能性最高。它能有效避免“先入为主”的认知偏差。/key-assumptions-check: 在分析陷入僵局或做出重大判断前,强制列出所有关键假设(例如,“我们假设攻击者尚未获得域管理员权限”),并逐一检视其可靠性。这个简单的动作常常能发现被忽略的脆弱环节。/structured-analytic-techniques: 这是一个技能集合的入口,可能包含多种SATs,如“象限处理法”、“魔鬼代言人”等。这些技能强迫分析师从不同角度审视问题,对于提升分析报告的深度和客观性至关重要。
实战场景:在一次事件响应中,我们发现了利用Log4j漏洞的痕迹。初始假设是 opportunistic 的加密货币挖矿。使用/ach技能,我们让AI协助列出了其他假设(如:数据窃取、勒索软件前置、高级持续性威胁的试探)。通过系统性地填入发现的证据(漏洞利用方式、后续载荷、C2通信模式、目标服务器类型),AI辅助计算出的结果显著倾向于“数据窃取”假设,这改变了我们最初的遏制策略重点。
3.3 检测工程技能组:从情报到落地防御
这是连接威胁情报和实际安全运营(SOC)的桥梁。好的情报必须能转化为可检测的规则。
/sigma-writing: 你描述一个TTP,比如“攻击者使用 certutil.exe 进行恶意代码解码”,它能生成一条高质量的Sigma规则。好的地方在于,它不止生成检测逻辑,通常还会包含tags(关联到ATT&CK T1204.002)、falsepositives(提示正常的管理员活动)和level(严重程度)字段,开箱即用。/yara-writing: 给定一段恶意软件的特征描述(如“使用特定的字符串GetTempPathA和VirtualAlloc,且入口点代码模糊”),它能帮你起草YARA规则。对于不常写YARA的分析师来说,这是一个很好的起点和校对工具。/kql-writing: 针对Azure Sentinel或Microsoft Defender的用户,可以将行为描述转化为Kusto查询语言。例如,“检测在短时间内从同一源IP向多个内部主机发起SMB连接失败的行为”。
避坑技巧:永远不要将AI生成的检测规则直接投入生产环境!这些技能提供的是一个高质量的初稿和思维框架。你必须,也必须由安全工程师或资深分析师进行人工复核。重点检查:1) 逻辑是否准确覆盖了威胁场景?2) 是否可能产生大量误报(影响SOC效率)?3) 是否存在逻辑绕过可能?AI擅长的是“模仿”和“组合”,但最终的质量把关和上下文理解,必须由人来完成。
3.4 情报生产与管理技能组:提升输出专业性
分析出了结果,如何有效地传达给决策者(如CISO、业务部门)?这组技能关注情报产品的“包装”和项目管理。
/intelligence-writing: 这不仅仅是润色文字。它会根据情报类型(战略、作战、战术)提供不同的写作框架和语言风格建议。例如,给高管看的战略情报摘要,会强调影响、趋势和商业风险;给SOC看的战术报告,则聚焦于具体的IOC和应对步骤。/apply-tlp,/score-source,/confidence-levels: 这些是“元技能”,确保所有产出物都符合专业标准。TLP(交通灯协议)控制分发范围,信源评分告诉读者这条情报有多可靠,置信度语言(如“几乎可以肯定”、“可能”)避免了绝对化的、可能误导人的表述。/pir-management: PIR(优先情报需求)是情报工作的指南针。这个技能帮助你和你的团队定义、管理和跟踪PIR。例如,你可以设置一个PIR:“未来90天内,针对我司金融部门的鱼叉式钓鱼攻击风险有多大?” AI可以协助跟踪与这个PIR相关的所有活动、报告,并在有新的相关事件时提醒你。
4. 部署、集成与定制化实战指南
了解了它能做什么,接下来就是如何把它用起来。项目提供了多种安装方式,适应不同的使用习惯和技术栈。
4.1 安装方式选择与配置要点
对于大多数个人用户或小团队,我推荐直接使用Claude Code 插件市场安装。这是最无缝的方式,安装后技能立即可用,更新也方便。
# 在Claude Code聊天界面中直接输入 /plugin marketplace add Liberty91LTD/cti-skills /plugin install cti-skills如果你需要在多个项目中使用,或者你的IDE不支持插件市场(如使用Cursor的纯本地模式),那么npx一次性安装或git clone是更灵活的选择。
# 使用npx,不全局安装,直接拉取到当前目录 npx github:Liberty91LTD/cti-skills # 或者指定目标目录 npx github:Liberty91LTD/cti-skills --target ./my-cti-skills # 使用git克隆,获得完整控制权 git clone git@github.com:Liberty91LTD/cti-skills.git cd cti-skills ./scripts/setup.sh # 运行设置脚本,它会引导你配置API密钥并下载MITRE数据配置API密钥是关键一步。运行setup.sh脚本是最省心的方式,它会交互式地询问每个服务的密钥,并安全地保存在本地的.claude/settings.local.json文件中(该文件已被加入.gitignore,不会误提交)。你也可以手动设置环境变量。
| 情报源 | 环境变量 | 免费额度与关键限制 | 配置建议 |
|---|---|---|---|
| VirusTotal | VIRUSTOTAL_API_KEY | 4次/分钟,500次/天 | 必备。对于文件哈希和URL调查至关重要。注意速率限制,在自动化脚本中需添加sleep。 |
| URLScan.io | URLSCAN_API_KEY | 100次扫描/天 | 非常有用,特别是获取网站历史截图和资源加载信息。免费额度较紧张,建议仅用于高价值目标。 |
| Shodan | SHODAN_API_KEY | 1次/秒 | 用于IP的资产指纹识别。免费版足够用于间歇性调查。 |
| AbuseIPDB | ABUSEIPDB_API_KEY | 1000次查询/天 | 社区信誉数据,有助于快速判断IP的恶意历史。 |
| GreyNoise | GREYNOISE_API_KEY | 50次查询/天 | 强烈推荐。能有效过滤掉互联网背景噪音(如扫描器、搜索引擎),专注于针对性攻击。免费额度很少,慎用。 |
| AlienVault OTX | OTX_API_KEY | 10,000次/小时 | 额度慷慨,社区驱动的IOC库,是VT的良好补充。 |
| Censys | CENSYS_API_ID/CENSYS_API_SECRET | 250次查询/月 | 与Shodan类似的资产搜索引擎,可作备选。免费额度非常有限。 |
实操心得:不必强求配置所有API。优先配置VirusTotal和AlienVault OTX,它们的免费额度对个人和轻度使用基本足够。GreyNoise虽然额度少,但在判断“这是大规模扫描还是针对我的攻击”时价值极高,值得为关键调查保留使用。项目设计得很好,没有配置密钥的技能会自动跳过,不会导致整个流程失败。
4.2 与AI智能体的集成工作流
安装配置好后,关键在于如何将它融入你与AI的日常对话中。以下是我常用的几种模式:
直接指令模式:最直接的方式。在Claude Code或Cursor的Agent模式下,直接输入技能指令。
请使用cti-skills调查域名 evil[.]example[.]com智能体会自动调用
/domain-investigation技能(如果可用)或交由编排器处理。链式分析模式:模拟真实分析流程。你可以引导AI一步步执行。
我发现了一个可疑文件,哈希是 abc123...。请先进行哈希调查,然后基于结果,尝试对关联的C2 IP进行画像,并评估它可能属于哪个已知的威胁组织。这可能会触发
/hash-investigation->/ip-investigation->/threat-actor-profile的链式调用。辅助创作模式:在撰写报告或规则时,随时调用技能获取结构化信息。
我正在写一份关于勒索软件LockBit的分析报告。请调用 `/ransomware-ecosystem` 知识单元,给我提供其常见的入侵方式、加密特点、勒索策略和已知的关联TTP。然后,你可以继续让AI帮你将这些信息整合成报告草稿。
4.3 定制化与扩展:打造你自己的技能
开源和MIT许可证意味着你可以自由地修改和扩展。这是该项目最大的潜力所在。
场景:你所在行业(如医疗或金融)有特定的威胁情报需求,或者你们公司内部有一些独有的数据源(如内部威胁情报平台、SIEM日志模式库)。
步骤:
- Fork项目仓库:在GitHub上Fork该项目到你的账户下。
- 理解技能结构:在
skills/目录下,每个技能都是一个独立的文件(可能是JSON、YAML或特定格式)。研究现有技能(如lookup-virustotal)的格式,看它是如何定义输入、输出、以及调用哪个工具或逻辑的。 - 创建你的技能:例如,你可以创建一个
/lookup-internal-threat-feed技能,让它去查询你们公司内部的IOC数据库。或者创建一个/industry-specific-phishing-trends知识单元,总结针对你所在行业的钓鱼攻击最新手法。 - 修改编排器:为了让新技能被自动调用,你可能需要更新那个“单编排器”技能的逻辑,教会它识别新的意图并路由到你的新技能。
- 本地安装测试:将你修改后的仓库克隆到本地,在Claude Code中通过本地路径安装插件进行测试。
- 贡献(可选):如果你的技能具有通用价值,可以向原项目提交Pull Request。
5. 常见问题、局限性与最佳实践
任何工具都有其边界。在几个月的实际使用和测试中,我总结了一些常见问题和需要注意的地方。
5.1 常见问题与排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| AI智能体无法识别或调用技能。 | 1. 插件未正确安装或启用。 2. 当前对话模式不支持Agent Skills。 3. 技能指令格式输入错误。 | 1. 在IDE设置中检查插件列表,确保cti-skills已启用。2. 确认你正在使用支持智能体功能的模式(如Claude Code的“Developer”模式)。 3. 尝试输入 /查看技能列表,或使用更简单的指令如/help。 |
| 调查技能返回“API密钥未配置”或结果不全。 | 1. 对应的情报源API密钥未设置。 2. 环境变量未在当前会话中生效。 3. 免费额度已用尽或API服务暂时不可用。 | 1. 运行./scripts/setup.sh重新配置,或手动检查.claude/settings.local.json文件。2. 重启你的IDE或终端会话,使环境变量生效。 3. 查看对应情报源平台的仪表盘,确认额度状态。对于VT等,可尝试添加延时。 |
| 技能执行速度很慢。 | 1. 串联了多个外部API查询,每个都有网络延迟。 2. 免费API的速率限制导致等待。 3. 本地MITRE数据集首次加载较慢。 | 1. 这是正常现象。对于非实时分析,可以接受。如需加速,可考虑只调用最关键的一两个查询。 2. 项目内部应有简单的速率控制,但如果自定义脚本,需自己实现。 3. 首次加载后,数据会缓存在本地,后续调用会快很多。 |
| AI生成的检测规则(Sigma/YARA)语法有误或逻辑不完善。 | 1. AI对复杂威胁场景的理解可能不全面。 2. 训练数据可能未覆盖最新的攻击变种。 | 这是预期之内的情况。始终将AI输出视为“初稿”。必须用专业的规则编辑器(如Sigma CLI)进行验证,并在测试环境中进行充分验证后,方可投入生产。 |
| 知识单元的信息似乎不是最新的。 | 项目维护者更新知识库有延迟。威胁情报日新月异。 | 这些知识单元是很好的起点和参考,但绝不能替代你持续跟踪一手威胁报告(如厂商博客、GitHub Advisories、CVE详情)。将其作为辅助记忆和快速检索工具。 |
5.2 局限性认知与应对策略
- 对AI智能体的依赖:这个技能包本身不运行,它需要搭载在一个“聪明”的AI智能体上。如果底层的AI模型(如Claude、GPT)本身逻辑推理能力弱,或对安全领域理解不深,那么即使调用了正确的技能,最终的分析质量也会打折扣。策略:选择目前已知在代码和逻辑推理上表现最好的模型作为基底。
- “垃圾进,垃圾出”:技能可以标准化流程,但无法替代高质量的情报输入。如果你调查的是一个完全未知的、从未在公开情报源出现过的IP,那么技能返回的结果很可能也是“未发现恶意关联”。这并不意味着安全,只是说明它不在公开雷达上。策略:结合内部遥测数据(防火墙日志、EDR告警)进行交叉分析,不能完全依赖外部OSINT。
- 无法处理高度复杂的、多阶段攻击的关联分析:当前的技能链更多是线性的(A->B->C)。对于需要将网络攻击、社会工程、内部威胁等多个维度信息融合,并进行长时间序列关联的复杂APT攻击调查,仍需分析师主导。策略:将技能用作“子任务执行器”。例如,在你自己梳理的攻击链中,将“分析这个鱼叉邮件附件”和“调查这个C2域名”的任务交给AI技能去执行,你来负责整体逻辑串联和假设生成。
- 安全与合规风险:将内部IOC、甚至部分事件现象描述发送给云端AI模型进行处理,可能存在数据泄露风险。策略:对于高敏感环境,a) 严格审查输入信息,避免包含内部IP、主机名、员工信息;b) 优先使用本地部署的大模型;c) 对于最高机密任务,仍采用传统离线分析工具。
5.3 最佳实践建议
结合我的使用经验,总结出以下几点,能让这个工具发挥最大效用:
- 明确角色定位:始终记住,它是“副驾”,你是“机长”。让它处理数据收集、初步整理、规则草拟、报告格式化等重复性工作,而你负责制定调查方向、做出关键判断、审核最终产出。
- 从简单任务开始,逐步构建信任:不要一开始就让它处理核心事件。从“帮我查一下这个在VT上已经有几十条检测的明显恶意IP”开始,观察其流程和输出是否符合预期。逐步尝试更复杂的分析任务。
- 建立你自己的“提示词库”:将你常用的、高效的指令组合保存下来。例如,一个名为“全面调查可疑IP”的提示词模板,里面可以预设好调用哪些技能、以什么格式输出。这能极大提升重复工作的效率。
- 技能输出与现有工具链集成:思考如何将AI技能的输出无缝接入你现有的工作流。例如,将
/sigma-writing生成的规则直接粘贴到你的Sigma规则库中进行版本管理;将/intelligence-writing生成的报告片段复制到你的情报平台(如MISP)或协作文档中。 - 保持批判性思维:对AI生成的一切内容保持质疑。问自己:这个结论的依据是什么?有没有相反的证据?这个检测规则会不会误杀正常业务?这种批判性思维,是AI目前无法替代的人类分析师的核心价值。
这个项目代表了安全运营自动化一个非常有趣的方向:不是用僵硬的脚本替代人,而是用可组合的、智能化的“技能”来增强人。它降低了专业威胁情报分析的门槛,让分析师能更专注于高价值的思考。当然,它仍在发展中, flat-skill架构的成熟度、更复杂工作流的编排能力,都值得持续关注。对于任何一位希望提升效率的网络安全从业者,尤其是威胁情报分析师和安全工程师,我都建议花点时间上手试试,它可能会改变你与AI协作的方式。
