入侵指标分析 是做什么的?
何时使用
在以下情况下使用此技能:
- 钓鱼邮件或告警生成IOC(URL、IP地址、文件哈希),需要快速分类处理
- 自动化提交通道提供批量IOC,需要在纳入封堵控制前进行置信度评分
- 事件调查需要对观测到的网络痕迹进行上下文丰富
不要 在重大决策中单独使用此技能——始终将自动化丰富与分析师的判断相结合,特别是对于共享基础设施(CDN、云提供商)。
前提条件
- VirusTotal API密钥(免费版或企业版)用于多引擎杀毒和沙箱查询
- AbuseIPDB API密钥用于IP信誉检查
- MISP实例或威胁情报平台用于对照已知活动进行交叉引用
- 安装了
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("你的VT_API_KEY")
# 文件哈希查询
file_obj = client.get_object(f"/files/{sha256_hash}")
detections = file_obj.last_analysis_stats
print(f"恶意: {detections['malicious']}/{sum(detections.values())}")
# 域名分析
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": "你的密钥", "Accept": "application/json"},
params={"ipAddress": "1.2.3.4", "maxAgeInDays": 90}
)
data = response.json()["data"]
print(f"置信度: {data['abuseConfidenceScore']}%, 报告数: {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服务器,用于检测而不完全阻止流量 |
| TTL | IOC在封堵控制中的生存时间;IP指标应在30天后过期,域名在90天后过期 |
工具与系统
- VirusTotal:多引擎恶意软件扫描器和威胁情报平台,拥有70多个杀毒引擎、沙箱报告和社区评论
- AbuseIPDB:社区维护的IP信誉数据库,提供90天滥用报告历史
- MalwareBazaar (abuse.ch):免费的恶意软件哈希仓库,支持YARA规则关联和恶意软件家族标记
- URLScan.io:免费的URL分析服务,为钓鱼URL分类捕获截图、DOM和网络请求
- Shodan:互联网范围的扫描数据,提供托管提供商、开放端口和横幅信息,用于IP丰富
常见陷阱
- 封禁共享基础设施:CDN IP(如Cloudflare 104.21.x.x、AWS CloudFront)可能合法托管恶意内容,但封禁IP会干扰数千个合法站点。
- VT评分迷恋:低VT检测数并不意味良性——零日恶意软件和定制APT工具通常初始得分为0。请检查沙箱行为、MISP和被动DNS。
- 忘记脱敏:在电子邮件或Confluence文档中粘贴活跃IOC可能触发自动化URL扫描器或钓鱼工具。
- 没有过期策略:不带TTL的IOC会无限期累积在封禁列表中,随着基础设施被合法用户重新利用而生成误报。
- 过度依赖单一来源:VirusTotal汇总了杀毒引擎意见——所有引擎都可能错误或滞后于新出现的恶意软件。对于高风险决策,请使用3个以上独立来源。