mcpField
A
analyzing-indicators-of-compromise

analyzing-indicators-of-compromise

github.com/mukul975安全35.2k468 次安装8 周前更新
代码仓库

关于 analyzing-indicators-of-compromise

面向安全分析师的 IOC 分析技能,提供从分类、跨来源情报丰富到置信度评估和记录的流程。强调多来源核验与分析师判断,不应单独用于高风险拦截决策。

主要功能

  1. 01IOC 分类与安全去武器化
  2. 02VirusTotal 等多源情报丰富
  3. 03MISP 活动关联与基础设施分析
  4. 04分级置信度和处置建议
  5. 05记录调查结果并导出 STIX

适用场景

  1. 01快速分诊钓鱼邮件或告警中的 IOC
  2. 02摄取前评估批量情报源指标
  3. 03为事件调查补充网络指标上下文

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-indicators-of-compromise

安装后在 Claude Code 中输入/analyzing-indicators-of-compromise确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

分析失陷指标

适用场景

在以下情况下使用此技能:

  • 钓鱼邮件或警报产生了需要快速分诊的 IOC(URL、IP 地址、文件哈希)
  • 自动化情报源提供了大量 IOC,需要在导入拦截控制措施前进行置信度评分
  • 事件调查需要对观察到的网络痕迹进行上下文丰富

不要单独使用此技能来做高风险拦截决策——务必将自动化丰富与分析师判断结合起来,尤其是在涉及共享基础设施(CDN、云服务提供商)时。

前提条件

  • VirusTotal API 密钥(免费版或 Enterprise),用于多款杀毒引擎和沙箱查询
  • AbuseIPDB API 密钥,用于 IP 信誉检查
  • MISP 实例或 TIP,用于与已知攻击活动交叉比对
  • 安装了 requests 和 vt-py 库的 Python,或带有预置连接器的 SOAR 平台

工作流

步骤 1:规范化并分类 IOC 类型

在进行丰富之前,对每个 IOC 进行分类:

  • IPv4/IPv6 地址:检查是否为 RFC 1918 私有地址(跳过外部丰富),验证格式
  • 域名/FQDN:为安全处理而进行去武装(evil[.]com),通过 tldextract 提取注册域名
  • URL:分别提取域名和路径;检查是否为重定向器
  • 文件哈希:识别哈希类型(MD5/SHA-1/SHA-256);优先使用 SHA-256 以确保唯一性
  • 电子邮件地址:拆分为域名(检查 MX/DMARC)和本地部分,以便进行模式分析

在文档中对 IOC 进行去武装(将 . 替换为 [.],将 :// 替换为 [://]),以防意外点击。

步骤 2:多源丰富

VirusTotal(文件哈希、URL、IP、域名):

import vt

client = vt.Client("YOUR_VT_API_KEY")

# File hash lookup
file_obj = client.get_object(f"/files/{sha256_hash}")
detections = file_obj.last_analysis_stats
print(f"Malicious: {detections['malicious']}/{sum(detections.values())}")

# Domain analysis
domain_obj = client.get_object(f"/domains/{domain}")
print(domain_obj.last_analysis_stats)
print(domain_obj.reputation)
client.close()

AbuseIPDB(IP 地址):

import requests

response = requests.get(
    "https://api.abuseipdb.com/api/v2/check",
    headers={"Key": "YOUR_KEY", "Accept": "application/json"},
    params={"ipAddress": "1.2.3.4", "maxAgeInDays": 90}
)
data = response.json()["data"]
print(f"Confidence: {data['abuseConfidenceScore']}%, Reports: {data['totalReports']}")

MalwareBazaar(文件哈希):

response = requests.post(
    "https://mb-api.abuse.ch/api/v1/",
    data={"query": "get_info", "hash": sha256_hash}
)
result = response.json()
if result["query_status"] == "ok":
    print(result["data"][0]["tags"], result["data"][0]["signature"])
步骤 3:通过攻击活动归因提供上下文

查询 MISP,查找与该 IOC 匹配的现有事件:

from pymisp import PyMISP

misp = PyMISP("https://misp.example.com", "API_KEY")
results = misp.search(value="evil-domain.com", type_attribute="domain")
for event in results:
    print(event["Event"]["info"], event["Event"]["threat_level_id"])

检查 Shodan 中的 IP 上下文(托管服务提供商、开放端口、横幅信息),以判断该 IP 是否属于防弹托管服务或合法云服务提供商(存在误报风险)。

步骤 4:分配置信度评分和处置方式

应用分级决策框架:

  • 拦截(高置信度 ≥ 70%):VT 上 ≥15 个杀毒引擎检出,AbuseIPDB 评分 ≥70,匹配已知恶意软件家族或攻击活动
  • 监控/警报(中等置信度 40–69%):5–14 个杀毒引擎检出,AbuseIPDB 评分中等,未归因到攻击活动
  • 列入白名单/调查(低置信度 <40%):≤4 个杀毒引擎检出,没有滥用报告,属于合法服务(Google、Cloudflare CDN IP)
  • 误报:合法业务服务被错误标记;记录并从未来的警报中排除
步骤 5:记录并分发

在 TIP/MISP 中记录调查结果,包括:

  • 收集到的所有丰富数据(时间戳、来源、评分)
  • 处置决定及理由
  • 已采取的拦截措施(防火墙、代理、DNS 黑洞)
  • 相关事件工单编号

导出为 STIX 指标对象,并适当设置置信度字段。

核心概念

术语定义
IOC失陷指标——表明可能发生失陷的可观察网络或主机痕迹
丰富从多个情报来源为原始 IOC 添加上下文数据的过程
去武装修改 IOC(将 . 替换为 [.]),以防在文档中意外触发
误报率被错误标记为恶意的良性痕迹所占百分比;对调整拦截阈值至关重要
黑洞将恶意域名查询重定向到良性 IP 的 DNS 服务器,以便在不完全拦截流量的情况下进行检测
TTLIOC 在拦截控制措施中的生存时间;IP 指标应在 30 天后过期,域名应在 90 天后过期

工具与系统

  • VirusTotal:多引擎恶意软件扫描和威胁情报平台,集成了 70 多个 AV 引擎、沙箱报告和社区评论
  • AbuseIPDB:由社区维护的 IP 信誉数据库,提供 90 天的滥用报告历史记录
  • MalwareBazaar (abuse.ch):免费的恶意软件哈希库,包含 YARA 规则关联和恶意软件家族标签
  • URLScan.io:免费的 URL 分析服务,可捕获屏幕截图、DOM 和网络请求,用于钓鱼 URL 分析
  • Shodan:提供全互联网扫描数据,包括托管服务提供商、开放端口和横幅信息,用于丰富 IP 信息

常见误区

  • 封禁共享基础设施:CDN IP(Cloudflare 104.21.x.x、AWS CloudFront)可能合法托管恶意内容,但封禁该 IP 会影响数千个合法网站。
  • 过度执着于 VT 评分:VT 检测数较低并不代表无害——零日恶意软件和定制 APT 工具起初的评分通常为 0。请检查沙箱行为、MISP 和被动 DNS。
  • 未对 IOC 进行去武器化处理:在电子邮件或 Confluence 文档中粘贴有效 IOC,可能触发自动 URL 扫描器或钓鱼工具。
  • 没有过期策略:没有 TTL 的 IOC 会无限期积累在阻止列表中;当基础设施被合法用户重新利用时,会产生误报。
  • 过度依赖单一来源:VirusTotal 汇总了 AV 的判断,但这些判断可能全都错误,或滞后于新出现的恶意软件。对于高风险决策,请使用 3 个以上的独立来源。

评论

支持 Markdown