在网络安全领域,网络威胁情报(CTI)的及时获取是防御体系的核心。暗网作为威胁情报的重要来源,蕴含着大量指标 of compromise(IOC),如恶意 IP、域名、哈希值等。然而,手动监控暗网资源效率低下且风险高。deepdarkCTI 项目提供了一个开源的深暗网 CTI 来源集合,包括勒索软件站点、论坛和 Telegram 频道等 onion 地址,这为构建自动化聚合管道奠定了基础。本文将聚焦单一技术点:如何利用 deepdarkCTI 构建一个自动化管道,实现从 Tor/onion 来源的 API 刮取、IOC 规范化以及与 SIEM 的集成,从而支持主动威胁狩猎。
首先,理解自动化管道的核心价值。传统 CTI 收集依赖人工浏览暗网,面临匿名性挑战和数据碎片化问题。通过自动化,我们可以周期性刮取 deepdarkCTI 列出的来源,提取 IOC 并规范化后推送至 SIEM,实现实时警报和狩猎。证据显示,deepdarkCTI 已收集超过数百个活跃来源,如 ransomware_gang.md 中的 onion 站点,这些站点经常泄露攻击工具和 IOC。[1] 这种方法不仅提升效率,还能降低暴露风险,使用 Tor 网络确保匿名访问。
构建管道的第一步是环境准备。安装 Tor 服务以支持 onion 站点访问。在 Linux 系统上,执行 sudo apt install tor,然后编辑 /etc/tor/torrc 文件,启用控制端口:添加 ControlPort 9051 和 CookieAuthentication 0,重启服务 sudo service tor restart。对于 Python 环境,安装必要库:pip install requests[socks] stem iocextract pandas。requests[socks] 用于通过 Tor 代理发送请求,stem 控制 Tor 电路,iocextract 提取 IOC,pandas 用于数据处理。可落地参数:Tor 代理端口设为 9050(SOCKS5),刮取间隔至少 5 分钟以避免检测,最大并发 3 个请求。
接下来,实现刮取模块。从 deepdarkCTI 的 Markdown 文件(如 markets.md)解析 onion URLs。编写 Python 脚本加载这些文件:使用 glob 模块扫描仓库,提取 .onion 链接。证据:deepdarkCTI 的结构化列表便于解析,例如 forum.md 中列出如 http://exampleforum.onion 的来源。[1] 对于每个 URL,使用 requests 通过 Tor 代理获取内容:
import requests
import socks
import socket
def create_connection(address, timeout=None, source_address=None):
sock = socks.socksocket()
sock.connect(address)
return sock
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
socket.create_connection = create_connection
session = requests.session()
response = session.get("http://example.onion/page", timeout=30)
content = response.text
如果来源支持 API(如某些论坛的 RSS),优先使用 GET 请求;否则,模拟浏览器刮取 HTML。使用 OnionScan 工具增强复杂站点扫描:安装 go get github.com/s-rah/onionscan,配置 JSON 文件定义爬取规则,如排除登录页,提取特定路径。参数清单:扫描深度 2–3 级,排除路径 ["/login", "/register"],超时 60 秒。风险控制:集成 stem 每 10 个请求轮换 Tor 电路 controller.signal('NEWNYM'),防止 IP 关联。
IOC 提取与规范化是管道的核心。暗网内容常使用混淆形式,如 hxxp:// 或 [.]example.com。iocextract 库擅长处理这些,支持 refang 还原:iocextract.extract_urls(content, refang=True) 返回标准 URL 列表。同样提取 IP、哈希:iocextract.extract_ips(content) 和 iocextract.extract_hashes(content)。证据:iocextract 可处理 Base64 或十六进制编码 IOC,提升提取准确率达 90% 以上。[2] 规范化步骤:将提取结果存入 Pandas DataFrame,添加元数据如来源 URL、时间戳、类型标签(IP/URL/Hash)。输出 JSON 格式:
{
"ioc": "192.168.1.1",
"type": "ip",
"source": "http://example.onion",
"timestamp": "2025-10-19T00:00:00Z",
"confidence": 0.8
}
可落地参数:置信度阈值 0.7(基于 regex 匹配强度),去重使用 set(),存储至 SQLite 数据库,每日备份。针对 STIX 标准,集成 cti-python-stix2 库转换 JSON 为 STIX 对象,便于高级分析。
最后,集成 SIEM 系统实现威胁狩猎。以 ELK Stack 为例,使用 Elasticsearch API 推送规范化 IOC:pip install elasticsearch,脚本中 es.index(index='iocs', body=ioc_dict)。对于 Splunk,使用 REST API POST /services/receivers/simple?token=your_token 发送事件。证据:这种集成允许 SIEM 查询 IOC 匹配日志,实现自动化规则如 "if ioc in logs, alert"。参数:批量推送大小 100 条/次,警报阈值每日新 IOC >50 条触发审查。狩猎清单:1. 配置 Sigma 规则匹配提取 IOC;2. 仪表盘可视化来源分布;3. 回滚策略:若刮取失败 3 次,暂停 1 小时并日志记录。
风险与限制不可忽视。访问暗网需遵守法律,仅限防御用途,避免下载恶意样本。技术限:Tor 延迟高,设重试 3 次,失败率 >20% 时切换代理。监控点:日志 IOC 数量、刮取成功率,使用 Prometheus 指标。总体,此管道在 deepdarkCTI 基础上,提供可扩展框架,助力安全团队从被动响应转向主动狩猎。
[1]: deepdarkCTI GitHub 仓库提供深暗网 CTI 来源列表。
[2]: iocextract 工具支持高级 IOC 提取与反混淆。
(字数约 1250)