Anthropic-Cybersecurity-Skills 漏洞扫描工作流 Agent API 参考与实战指南
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
导读
本指南围绕 Anthropic-Cybersecurity-Skills 仓库中building-vulnerability-scanning-workflow技能展开,完整解读其 API 参考文档 及配套的可执行脚本 agent.py,涵盖 Nmap 漏洞扫描编排、CISA KEV 威胁情报增强、风险优先级打分、Nessus REST API 对接与 ServiceNow 工单自动化。读完本文,你将能够理解该 Agent 的核心函数签名、CLI 调用方式、外部 API 依赖关系,并能直接运行或二次开发这一套"扫描 → 增强 → 优先级排序 → 报告 → 工单"的漏洞管理流水线。
该技能归属于仓库 817 个结构化网络安全技能中的soc-operations子域,其完整能力定义见 SKILL.md,并被映射到 NIST CSF(DE.CM-01、DE.AE-02、DE.AE-06、RS.MA-01)与 MITRE ATT&CK(T1595.002、T1190、T1046)框架。
一、整体架构:一个函数式漏洞管理流水线
api-reference.md开篇即点明该 Agent 的核心职责:编排 Nmap 与 Nessus 扫描、用 CISA KEV 数据丰富发现结果、应用基于风险的优先级排序、生成修复报告。结合 agent.py 的main()入口,其执行链路为:
fetch_cisa_kev() → run_nmap_vuln_scan() → launch_nessus_scan()(可选) → prioritize_vulnerabilities() → generate_report() → 写 JSON 报告从源码结构看,该 Agent 采用串行函数式设计:每个公开函数职责单一、输入输出明确,便于 Agent(如 Claude Code、GitHub Copilot 等 20+ 平台)按 API 参考逐函数调用与组合。同时 SKILL.md 将其定位为 SOC 团队的周期性漏洞评估流程:不只是单次扫描,而是与 SIEM 告警关联、构建修复跟踪仪表盘的闭环体系。
二、依赖清单与运行前提
api-reference.md给出了两份精确依赖:
| 包 | 版本要求 | 用途 |
|---|---|---|
| python-nmap | >= 0.7.1 | Nmap 扫描编排(nmap.PortScanner) |
| requests | >= 2.28 | REST API 通信(Nessus、ServiceNow、CISA KEV) |
agent.py 还使用标准库json、logging、os、argparse、datetime,无额外第三方依赖。实际部署前提(来自 SKILL.md):
- 具备漏洞扫描器:Tenable Nessus Professional、Qualys VMDR 或 OpenVAS/Greenbone 任选其一;
- 拥有带关键性分级(business-critical / standard / development)的资产清单;
- 扫描器到所有目标网段具备网络可达性(网络扫描或 Agent 扫描均可);
- SIEM 集成用于结果摄入与关联分析;
- 补丁管理系统(WSUS、SCCM、Intune)用于修复跟踪。
注意:该技能明确声明不用于渗透测试或主动利用——漏洞扫描发现弱点,渗透测试验证可利用性,两者边界清晰。
三、CLI 使用方式
api-reference.md提供了两条可直接复制的 CLI 命令:
python agent.py --targets 192.168.1.0/24 --ports 1-1024 --output report.json python agent.py --targets 10.0.0.0/16 --nessus-url https://nessus:8834 --nessus-keys "access;secret"对照 agent.py 的参数解析,完整参数如下:
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
--targets | 是 | 无 | 目标主机或 CIDR,如10.0.0.0/16 |
--ports | 否 | 1-1024 | 扫描端口范围 |
--nessus-url | 否 | 无 | Nessus API 地址,如https://nessus:8834 |
--nessus-keys | 否 | 无 | Nessus API Key,格式accessKey;secretKey |
--output | 否 | vuln_report.json | 报告输出路径 |
main()的执行流程揭示了 CLI 的最小可用语义:仅提供--targets即可完成一次"KEV 加载 → Nmap 扫描 → 优先级排序 → 报告生成"的完整闭环;只有同时传入--nessus-url与--nessus-keys时才触发 Nessus 扫描启动(launch_nessus_scan)。需要注意:prioritize_vulnerabilities在此处传入空资产关键性映射{},即无资产上下文时默认 criticality 为 1.0。
四、核心函数逐个解析
api-reference.md定义了 6 个核心函数,下面结合 agent.py 逐一展开实现细节。
4.1run_nmap_vuln_scan(targets, ports)
运行 Nmap,使用
-sV --script=vulners,vulscan进行服务版本探测与漏洞匹配。
def run_nmap_vuln_scan(targets, ports="1-1024"): scanner = nmap.PortScanner() scanner.scan(hosts=targets, ports=ports, arguments="-sV --script=vulners,vulscan") # 遍历 all_hosts() → all_protocols() → 每个端口,提取 state/name/version/script实现要点:
-sV开启版本探测;--script=vulners,vulscan加载 NSE 漏洞匹配脚本(需本机安装 vulners 与 vulscan 脚本库);- 结果被规整为结构化字典列表,每个条目含
host、port、protocol、state、service、version及scripts(NSE 脚本原始输出); - 返回结果直接进入后续
prioritize_vulnerabilities处理。
4.2fetch_cisa_kev()
下载 CISA Known Exploited Vulnerabilities JSON 目录,返回 CVE ID 集合。
def fetch_cisa_kev(): url = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json" resp = requests.get(url, timeout=30) resp.raise_for_status() kev_set = {v["cveID"] for v in resp.json()["vulnerabilities"]} return kev_set要点:请求超时 30 秒并raise_for_status()显式失败;将目录扁平化为set[str],为后续 O(1) 的cve in kev_set成员判断服务。该数据集是美国政府维护的"已确认被积极利用"漏洞清单,也是下文风险评分的 1.5 倍加权依据。
4.3launch_nessus_scan(nessus_url, api_keys, scan_name, targets)
通过 Nessus REST API 创建并启动漏洞扫描。
def launch_nessus_scan(nessus_url, api_keys, scan_name, targets): headers = {"X-ApiKeys": api_keys, "Content-Type": "application/json"} scan_config = { "uuid": "advanced", "settings": { "name": scan_name, "text_targets": targets, "launch": "ON_DEMAND", "enabled": True, }, } # POST {nessus_url}/scans → 取 scan.id # POST {nessus_url}/scans/{scan_id}/launch → 启动实现要点:认证头使用X-ApiKeys: accessKey=...;secretKey=...(CLI 传入格式access;secret会被 Agent 组装);两个 POST 请求均带verify=not os.environ.get("SKIP_TLS_VERIFY") == "true",即实验室自签名证书场景可设SKIP_TLS_VERIFY=true跳过 TLS 校验(生产环境务必保持校验开启)。
4.4prioritize_vulnerabilities(vulns, kev_set, asset_criticality_map)
应用风险评分:
risk_score = CVSS * asset_criticality * (1.5 if KEV),分配 P1–P4 优先级。
这是整个工作流的决策核心。源码实现:
risk_score = cvss * criticality # criticality 默认 1.0,来自 asset_criticality_map if cve in kev_set: risk_score *= 1.5 vuln["kev"] = True vuln["risk_score"] = round(risk_score, 1) vuln["priority"] = ( "P1" if risk_score >= 13.5 else "P2" if risk_score >= 7.0 else "P3" if risk_score >= 4.0 else "P4" )优先级阈值推导:由于 KEV 加权 1.5 倍,9.0(CVSS) × 1.5 = 13.5恰好构成 P1 门槛,这与 SKILL.md 中"P1 = 9.0–10.0 + KEV"的 SLA 表完全自洽——即只有被确认积极利用的高危漏洞才会进入 P1 24 小时 SLA 通道。排序按risk_score降序,确保报告头部是风险最高的发现。
4.5create_servicenow_ticket(snow_url, token, vuln)
为高优先级漏洞创建 ServiceNow 事故工单。
ticket = { "short_description": f"[VULN] {cve} on {host}", "description": "CVE / CVSS / Host / Risk Score / CISA KEV ...", "urgency": "1" if kev else "2", "category": "Vulnerability", } requests.post(f"{snow_url}/api/now/table/incident", headers=..., json=ticket, timeout=30)实现要点:使用 Bearer Token 认证;urgency依据 KEV 状态取1/2。SKILL.md 第 6 步展示了更完整的工单模板版本,额外携带short_description的漏洞详情、impact(business-critical 资产置 1)、assignment_group与remediation SLA字段,并设置risk_score >= 8.0的触发阈值。
4.6generate_report(vulns)
生成带优先级分解的格式化漏洞扫描摘要。
源码实现统计 P1/P2 数量,打印报告标题、时间戳、总发现数、P1/P2 数量及 Top 10 P1 条目(CVE、主机、风险分)。SKILL.md 的"输出格式"章节给出了该报告的完整生产形态:扫描时间/范围/时长/覆盖率、按严重级别分组的统计(Critical/High/Medium/Low/Info × New × KEV)、Top Priority(P1 24 小时 SLA)明细、SLA 合规率与已建工单数。
五、外部 API 依赖清单
api-reference.md以表格形式列出了三个外部 API:
| API | 端点 | 用途 |
|---|---|---|
| CISA KEV | https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json | 已知被利用漏洞 |
| Nessus | /scans、/scans/{id}/launch | 扫描管理 |
| ServiceNow | /api/now/table/incident | 工单创建 |
这些端点在 agent.py 中均有对应实现(见上文各函数),且requests依赖(>= 2.28)正是为这三类 REST 通信服务。此外 SKILL.md 还覆盖了 Qualys VMDR(qualysapi库,/api/2.0/fo/scan/端点)作为 Nessus 的平替扫描器。
六、扩展实战:从 API 到完整 SOC 闭环
API 参考聚焦函数级能力,而 SKILL.md 提供了六步工作流将这些函数放入 SOC 生产流程:
- 定义扫描范围与调度:Nessus API 创建周度扫描策略(
launch: "WEEKLY"、rrules: "FREQ=WEEKLY;INTERVAL=1;BYDAY=SA"),支持 Windows 密码认证与 SSH 公钥认证的凭据式扫描(credentialed scan 比纯网络扫描检测更深);Qualys 侧通过option_id指定扫描 profile。 - 处理与排序扫描结果:Nessus 结果以 CSV 导出(
/scans/{id}/export?format=csv),逐行解析 CVSS v3 分数、结合资产关键性映射与 KEV 集合做风险评分——与prioritize_vulnerabilities同源的算法在 SKILL.md 中给出了内联版本。 - 定义修复 SLA:P1(24h)→ P5(下一轮扫描周期),见下文关键概念。
- SIEM 集成检测利用行为:Splunk SPL 将漏洞数据与 Snort/Suricata IDS 日志按
Host:CVEjoin,识别"正在被积极利用的漏洞"并输出 CRITICAL 风险标记;同时对关键资产上的 KEV 漏洞单独告警。 - 构建修复跟踪仪表盘:按严重级别统计未关闭漏洞、计算 SLA 逾期状态(
days_open > sla_days → OVERDUE)、输出 90 天修复趋势(timechart span=1w)。 - 自动化修复工单:对
risk_score >= 8.0的发现批量创建 ServiceNow 工单。
七、关键概念速查
| 术语 | 定义 |
|---|---|
| CVSS | 通用漏洞评分系统,0–10 标准化漏洞严重性评级 |
| CISA KEV | CISA 维护的已知被利用漏洞目录,列明已确认积极利用的漏洞,需强制修复 |
| Credentialed Scan | 使用认证访问的漏洞扫描,检测深度优于纯网络扫描 |
| Asset Criticality | 决定修复优先级的业务影响分级(mission-critical、business-critical、standard) |
| Remediation SLA | 按严重性规定补丁修复时限的服务水平协议 |
| EPSS | 基于机器学习的利用可能性预测评分 |
对应 SLA 表(来自 SKILL.md,与prioritize_vulnerabilities的 P1–P4 阈值一致):
| 优先级 | CVSS 范围 | 资产类型 | SLA | 示例 |
|---|---|---|---|---|
| P1 Critical | 9.0–10.0 + KEV | 所有资产 | 24 小时 | 生产服务器上的 Log4Shell、EternalBlue |
| P2 High | 7.0–8.9 或 9.0+ 非 KEV | 业务关键 | 7 天 | 无已知利用的 RCE |
| P3 Medium | 4.0–6.9 | 业务关键 | 30 天 | 需认证的提权 |
| P4 Low | 0.1–3.9 | 标准 | 90 天 | 信息泄露、低影响 DoS |
| P5 Informational | 0.0 | 开发 | 下一轮 | 最佳实践建议、配置加固 |
八、典型应用场景
该技能可应用于(源自 SKILL.md 的 Common Scenarios):
- 零日响应:新 CVE 发布后针对受影响软件运行定向扫描,与 KEV 及利用数据库交叉比对;
- 合规审计准备:生成 PCI DSS / HIPAA 漏洞报告,展示扫描覆盖率与修复状态;
- 补丁后验证:重扫已修复系统确认漏洞关闭,更新跟踪仪表盘;
- 网络扩容:新子网加入基础设施时,以合适的策略纳入扫描范围;
- 第三方风险:集成前扫描外部暴露资产,验证供应商补丁合规性。
九、验证与运行方式
仓库为只读研究用途,你可按以下方式在本地复现验证:
# 依赖安装 pip install "python-nmap>=0.7.1" "requests>=2.28" # 最小闭环运行(无需任何外部服务,仅需 Nmap 与 CISA KEV 网络可达) python skills/building-vulnerability-scanning-workflow/scripts/agent.py \ --targets 127.0.0.1 --ports 22,80,443 --output report.json- 完整技能定义与六步工作流:SKILL.md
- 可执行 Agent 源码:agent.py
- 函数级 API 参考:api-reference.md
- 许可证:Apache-2.0
注意运行前提:Nmap 需已安装且vulners/vulscanNSE 脚本可用;访问 CISA KEV 需外网;Nessus/ServiceNow 相关参数仅在对接对应服务时使用。在生产环境请勿设置SKIP_TLS_VERIFY=true。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考