自动化威胁情报:我如何构建一个快速、容器化的 IP 分流工具
Source: Dev.to
任务:对抗“分析师疲劳”
作为一名有志成为安全工程师的人,我很快意识到,分流(triage) 是耗时最多的环节。当防火墙标记出数十个可疑连接时,逐个在浏览器中检查既慢又容易出错。于是我构建了 Sentinel‑IP,一个 Python 工具,能够读取 IP 列表并瞬间为其补充威胁情报,将原本需要 30 分钟的手工工作压缩到 30 秒的自动化流程。
- Python – 自动化逻辑与 API 处理
- Docker – 确保工具在任何机器(macOS、Windows、Linux)上都能无痛运行
- AbuseIPDB API – 众包的暴力破解与垃圾邮件活动报告
- AlienVault OTX API – “Pulse” 数据,用于识别与已知恶意软件活动关联的 IP
最初我计划加入 VirusTotal,但其免费套餐每分钟仅允许 4 次请求,这会导致处理 50 个 IP 需要接近 15 分钟。改用 AlienVault OTX 消除了这一瓶颈,使得数十个 IP 能在几秒钟内完成扫描。教训是:再好的数据,如果来得太慢,也无法阻止攻击。
该工具读取一个简单的 ips.txt 文件作为输入,查询上述 API,并生成一份整洁的 results.csv 供分析师审阅。
核心逻辑
for ip in tqdm(ips, desc="Analyzing"):
abuse_score = check_abuse_ip(ip) # Returns % confidence
otx_pulses = check_alienvault(ip) # Returns count of threat pulses
results.append({
'IP': ip,
'Abuse_Score%': abuse_score,
'OTX_Pulses': otx_pulses
})
使用场景
防火墙日志“转储”
情景: 公司防火墙拦截了数百次失败的 SSH 登录尝试。
应用: 将日志中的 IP 复制到 Sentinel‑IP。
影响: 能立即筛选出 Abuse Score 为 100 % 的 IP,帮助你只关注已确认的僵尸网络,而不是逐一调查每一个拦截记录。
钓鱼邮件头部分析
情景: 有一封可疑邮件被上报,邮件头部中包含 “Source IP”。
应用: 将该 IP 输入工具进行检测。
影响: 若 AlienVault OTX 显示多个与 “Credential Harvesting”(凭证收集)相关的 pulse,你即可获得该邮件为恶意的直接证据,并可在网络中将其彻底清除。
项目洞察
API 稳健性
对 404 Not Found(通常表示该 IP “干净”)与 401 Unauthorized 错误的区分处理,确保工具在遇到异常时仍能继续运行。
容器化
Docker 卷(volume)使容器能够直接把 CSV 文件写入宿主机的桌面,输出文件随时可用。
数据关联
当一个 IP 同时拥有高 Abuse Score 且 多个 OTX pulse 时,被归类为 “Critical” 威胁,需要立即封禁。
获取代码
欢迎前往 GitHub 查看完整源码并为项目贡献代码:
Sentinel‑IP 仓库 – [GitHub link]
如果觉得有用,别忘了给仓库点个 ⭐!