White-Hat-007/DARKLAYR---Tor-Traffic-Forensic-Correlation-Engine

GitHub: White-Hat-007/DARKLAYR---Tor-Traffic-Forensic-Correlation-Engine

该工具是一个取证研究框架,通过结合 Zeek 遥测、ASN 情报和概率关联,为 Tor 流量分析生成带有置信度评分的调查线索。

Stars: 1 | Forks: 0

# 🕵️ DARKLAYR:Tor 流量取证关联引擎 ![Python](https://img.shields.io/badge/python-3.8%2B-brightgreen) ![平台](https://img.shields.io/badge/platform-Linux-FCC624?logo=linux&logoColor=black) ![Ubuntu](https://img.shields.io/badge/platform-Ubuntu-E95420?logo=ubuntu&logoColor=white) ![状态](https://img.shields.io/badge/status-research--only-orange) ![类型](https://img.shields.io/badge/type-forensic--research-blueviolet) ![焦点](https://img.shields.io/badge/focus-Tor%20Traffic%20Correlation-red) # 🔍 概述 **DARKLAYR** 是一个取证优先的 Tor 流量关联与归因框架,旨在支持涉及匿名化基础设施的合法网络犯罪调查。 该系统**不尝试去匿名化**,也不主张确定性归因。相反,它通过以下方式重建调查上下文: - PCAP 证据获取 - Zeek 协议遥测 - Tor 中继情报 - ASN 基础设施归因 - 行为与异常关联 - 概率置信度评分 该引擎围绕一个核心调查原则设计: DARKLAYR 将碎片化的网络观测结果转化为具有置信度评分的调查线索,同时恪守道德和法律边界。 # 🧠 调查理念 一旦流量进入加密的洋葱路由基础设施,传统的监控系统就会失去可见性。 DARKLAYR 通过聚焦以下方面来解决这个问题: - 可观察行为 - 基础设施上下文 - 时序关系 - 协议转换 - 统计一致性 - 异常解读 目标不是直接识别用户,而是生成: - 高置信度基础设施候选者 - 网络归因上下文 - 可复现的取证证据 - 可解释的调查线索 # ⚙️ 分层架构 该引擎跨五个受控的调查层运行: | 层级 | 功能 | |---|---| | **流量生成与捕获** | 受控的 Tor 流量模拟与数据包获取 | | **网络证据提取** | 基于 Zeek 的协议分析与结构化遥测 | | **Tor 情报与拓扑** | 中继元数据收集与基础设施映射 | | **取证关联与归因** | 多因素概率关联 | | **置信度评分与报告** | 带有可解释评分的排序调查输出 | # 📌 目录 - [核心功能](#-core-features) - [流水线架构](#-pipeline-architecture) - [工作流](#-workflow) - [组件](#-components) - [流量生成](#1-traffic-generation) - [PCAP 捕获](#2-pcap-capture) - [Zeek 分析](#3-zeek-analysis) - [ASN 扩展](#4-asn-enrichment) - [Tor 中继情报](#5-tor-relay-fetcher) - [关联引擎](#6-correlation-engine) - [置信度评分模型](#-confidence-scoring-model) - [输出](#-output) - [项目结构](#-project-structure) - [安装](#-installation) - [技术栈](#-tech-stack) - [道德声明](#-ethical-notice) - [结论](#-conclusion) # 🚀 核心功能 | 功能 | 描述 | |---|---| | 🌐 **受控 Tor 流量生成** | 通过 SOCKS 在隔离环境中模拟基于 Tor 的流量 | | 📡 **PCAP 证据获取** | 使用 tcpdump 捕获原始数据包 | | 🔍 **Zeek 遥测提取** | 多层协议分析与取证日志记录 | | 🌍 **ASN 情报扩展** | 使用 Team Cymru 进行 IP → ASN → 组织映射 | | 🧠 **概率关联引擎** | 多信号置信度评分 | | 🕸️ **Tor 中继情报获取器** | 通过 Onionoo 实时获取 Tor 中继元数据 | | 📊 **取证就绪报告** | CSV 输出与调查摘要 | # 🔄 流水线架构 ``` graph TD A[Tor Traffic Generation
torsocks + curl] --> B[PCAP Capture
tcpdump / Raw Evidence] B --> C[Zeek Analysis
Protocol Telemetry logs] C --> D[CSV Normalization
zeek-cut tool] D --> E[ASN Enrichment
Team Cymru WHOIS] D --> F[Tor Relay Intelligence
Onionoo API details] E --> G[Probabilistic Correlation Engine
Multi-Signal Attribution] F --> G G --> H[Confidence-Scored Output
Investigative Leads] style A fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff style B fill:#1565c0,stroke:#0d47a1,stroke-width:2px,color:#fff style C fill:#00838f,stroke:#006064,stroke-width:2px,color:#fff style G fill:#e65100,stroke:#bf360c,stroke-width:2px,color:#fff style H fill:#c62828,stroke:#b71c1c,stroke-width:2px,color:#fff ``` 每个阶段都是模块化的、可复现的,并且可独立审计。 # 🔧 工作流 ``` Tor Traffic → PCAP → Zeek Logs → CSV → ASN Enrichment → Correlation → Confidence Output ``` # 📦 组件 # 1. 流量生成 使用 `torsocks` 通过基于 SOCKS 的路由生成受控的 Tor 流量。这会产生真实的加密浏览行为,而不会与实际用户交互。 ``` #!/bin/bash echo "[*] Starting Tor..." tor & sleep 10 echo "[*] Generating traffic..." for i in {1..200}; do torsocks curl -s https://duckduckgo.com > /dev/null done echo "[✓] Traffic generation complete" ``` # 2. PCAP 捕获 使用 tcpdump 捕获流量,以保留原始数据包级别的证据,用于离线取证分析。 ``` #!/bin/bash echo "[*] Capturing traffic for 10 minutes..." timeout 600 tcpdump -i enp0s3 -nn -w data/raw/tor_traffic.pcap echo "[✓] Capture complete" ``` # 3. Zeek 分析 使用 Zeek 处理捕获的 PCAP,以生成结构化的取证遥测数据。 生成的日志包括: * `conn.log` * `ssl.log` * `socks.log` * `tunnel.log` * `weird.log` * `packet_filter.log` ## 运行 Zeek ``` mkdir -p data/zeek_logs cd data/zeek_logs zeek -C -r ../raw/tor_traffic.pcap ``` ## 将日志转换为 CSV ``` for f in *.log; do zeek-cut < "$f" | tr '\t' ',' > "../csv/${f%.log}.csv" done ``` # 4. ASN 扩展 观察到的 IP 通过 Team Cymru 的 WHOIS 情报服务进行扩展,包含: * 自治系统号 (ASN) * 组织所有权 * 基础设施归因 ``` import pandas as pd from cymruwhois import Client conn = pd.read_csv("data/csv/conn.csv") cymru = Client() def lookup(ip): try: r = cymru.lookup(ip) return f"AS{r.asn}", r.owner except: return "Unknown", "Unknown" results = [] for ip in conn["id.orig_h"].dropna().unique(): if ip.startswith(("127.", "10.", "192.168")): continue asn, org = lookup(ip) results.append([ip, asn, org]) df = pd.DataFrame(results, columns=["ip", "asn", "organization"]) df.to_csv("data/outputs/asn_results.csv", index=False) ``` # 5. Tor 中继获取器 从 Onionoo API 获取实时中继元数据,以围绕观察到的流量构建基础设施上下文。 ``` import requests url = "https://onionoo.torproject.org/details?running=true" data = requests.get(url).json() relays = [] for r in data["relays"]: relays.append({ "ip": r.get("or_addresses", [""])[0].split(":")[0], "nickname": r.get("nickname"), "country": r.get("country") }) print(relays[:5]) ``` # 6. 关联引擎 DARKLAYR 的取证核心。 该引擎关联: * 流量体积 * 协议多样性 * 时间一致性 * ASN 信誉 * 基础设施所有权 * 行为异常 以生成按置信度排序的调查候选者。 ``` import pandas as pd conn = pd.read_csv("data/csv/conn.csv") asn = pd.read_csv("data/outputs/asn_results.csv") flow_counts = conn["id.resp_h"].value_counts().to_dict() results = [] for ip, count in flow_counts.items(): score = 0 # Signal 1 — Flow Volume score += min(count / 100, 0.3) # Signal 2 — ASN Reputation match = asn[asn["ip"] == ip] if not match.empty: if "Hetzner" in match["organization"].values[0]: score += 0.3 else: score += 0.2 # Signal 3 — Protocol Diversity proto_count = conn[conn["id.resp_h"] == ip]["proto"].nunique() score += min(proto_count * 0.05, 0.1) # Penalty — Loopback Artifact if ip == "127.0.0.1": score -= 0.2 results.append([ip, score]) df = pd.DataFrame(results, columns=["IP", "Confidence"]) df = df.sort_values("Confidence", ascending=False) df.to_csv("data/outputs/correlation_results.csv", index=False) print(df) ``` # 📊 置信度评分模型 | 信号 | 最大权重 | 用途 | | ------------------ | ---------- | ---------------------------------- | | 流量体积 | +0.30 | 更高活跃度会增加相关性 | | ASN 信誉 | +0.30 | 对 Tor 友好的托管提供商赋予更高权重 | | 协议多样性 | +0.10 | 多协议行为关联 | | 环回惩罚 | -0.20 | 减少 localhost 的误报 | 分数越高表示调查优先级越高,而非确定性。 # 📄 输出 生成的输出包括: | 文件 | 用途 | | ------------------------- | ------------------------------ | | `asn_results.csv` | ASN 与组织归因 | | `correlation_results.csv` | 排序后的置信度评分候选者 | 示例: ``` IP Confidence 203.0.113.45 0.70 198.51.100.12 0.55 192.0.2.88 0.40 ``` # 📁 项目结构 ``` DARKLAYR/ ├── data/ │ ├── raw/ │ ├── zeek_logs/ │ ├── csv/ │ └── outputs/ │ ├── scripts/ │ ├── traffic/ │ ├── capture/ │ ├── zeek/ │ ├── enrichment/ │ └── correlation/ │ ├── fetcher/ ├── dashboard/ ├── docs/ ├── requirements.txt ├── setup.sh └── README.md ``` # ⚡ 安装 ## 安装依赖 ``` sudo apt update sudo apt install -y tor tcpdump zeek tshark python3-pip pip3 install -r requirements.txt ``` # 🛠️ 技术栈 | 层级 | 工具 | | ------------------ | ---------------------------- | | 流量生成 | `tor`, `torsocks`, `curl` | | 数据包捕获 | `tcpdump` | | 协议分析 | `zeek`, `zeek-cut`, `tshark` | | 扩展 | `cymruwhois` | | 处理 | `python`, `pandas`, `numpy` | | 情报 | Onionoo API | | 报告 | CSV / 结构化输出 | # 🔬 工作原理:Zeek + ASN 数据源 + 关联 DARKLAYR 通过结合三个核心网络情报层来关联流量模式,以识别可能的 Tor 中继: 1. **Zeek 遥测提取**: - Zeek 监控原始 PCAP 捕获,并将其解析为特定于协议的结构化事件日志(`conn.log`、`ssl.log`、`socks.log`)。 - 引擎分析网络连接,以检测 Tor 特有的 TLS 握手指纹(例如,特定的密码套件、随机的服务器名称)以及流量体积/频率异常。 2. **ASN 基础设施扩展**: - 引擎通过 Team Cymru 的 WHOIS 服务处理目标 IP,将 IP 映射到它们各自的**自治系统号 (ASN)** 和组织所有者。 - 优先处理针对已知托管 Tor 中继的 ASN(例如 Hetzner、OVH、DigitalOcean)的流量,并赋予更高的归因权重。 3. **概率关联**: - **关联引擎**聚合连接频率、协议多样性和基础设施信誉,以计算**置信度评分**(范围从 `0.0` 到 `1.0`)。 - 中继被动态排序,在不解密任何 payload 的情况下输出高概率的调查候选者。 # 📸 输出截图 以下是 DARKLAYR 取证关联引擎生成的可视化图表与报告: ### 1. 网络证据与元数据 捕获的数据包显示了跨多个网络流的连接详情和元数据: ![捕获的网络元数据](https://raw.githubusercontent.com/White-Hat-007/DARKLAYR---Tor-Traffic-Forensic-Correlation-Engine/main/Captured%20packets'%20network-level%20metadata.png) ### 2. 节点指纹识别 关联的 IP 列表指示了已识别的节点足迹及其各自的组织属性: ![节点指纹](https://raw.githubusercontent.com/White-Hat-007/DARKLAYR---Tor-Traffic-Forensic-Correlation-Engine/main/Nodes'%20Fingerprints.png) ### 3. 流量模式验证 显示正常网络流与类 Tor 流量序列对比的图表: ![无非 Tor 流量](https://raw.githubusercontent.com/White-Hat-007/DARKLAYR---Tor-Traffic-Forensic-Correlation-Engine/main/No%20Tor-like%20Flows.png) ### 4. 关联分析 连接时间、流大小分布和中继验证匹配的分析: ![关联引擎](https://raw.githubusercontent.com/White-Hat-007/DARKLAYR---Tor-Traffic-Forensic-Correlation-Engine/main/Correlation%20Engine.jpeg) ### 5. 流概览架构 数据包流的高级概览以及关联模型如何映射流量: ![流概览](https://static.pigsec.cn/wp-content/uploads/repos/cas/9b/9b4397a8489bf58e74ae9cd8793dc887983258094b0acc54046dc1bd957dd467.jpg) # ⚠️ 局限性 虽然 DARKLAYR 在识别基础设施候选者方面非常有效,但它在以下关键限制下运行: * **无个人匿名绕过**:该引擎不会绕过 Tor 的加密层或揭示用户身份;它仅映射网络基础设施路径。 * **托管误报**:共享的 ASN(例如同时托管 Tor 中继和普通 Web 服务器的大型云提供商)有时会扭曲相关性分数,需要人工验证。 * **电路动态**:Tor 电路是动态变化的(通常每 10 分钟一次)。如果捕获窗口没有对齐,关联准确性会随着时间推移而降低。 * **流量填充防御**:Tor 内置的流量填充和丢弃 cell 防御机制会掩盖时序信号,从而降低流量体积指标的有效性。 # ⚖️ 道德声明 DARKLAYR 是一个取证研究框架。 它: * ❌ 不对真实用户进行去匿名化 * ❌ 不攻击 Tor 网络 * ❌ 不绕过加密保护 * ✅ 专门在受控环境中运行 * ✅ 专注于行为关联方法论 * ✅ 恪守道德和法律的调查边界 所有使用必须遵守适用的法律、机构政策和道德研究标准。 # 🧾 结论 DARKLAYR 表明,有效的网络犯罪调查不需要打破匿名性——它需要理解分层、关联证据,并从可观察的行为中提取意义。 该系统通过以下方式重建调查上下文: * 时序关系 * 协议转换 * 基础设施归因 * 异常解读 * 概率置信度建模 DARKLAYR 不产生身份。 它产生线索。 因为在分层的基础设施中,每一个可观察的模式都会留下可追踪的行为——而每一次剥丝抽茧都会留下一条线索。 *为取证研究而生。带着意图设计。负责任地部署。*
标签:Python, Rootkit, Tor, Zeek, 数字取证, 无后门, 网络安全, 网络流量分析, 自动化脚本, 逆向工具, 隐私保护