retr0verride/MirageNet
GitHub: retr0verride/MirageNet
全栈恶意软件网络欺骗平台,在隔离实验室中接管多协议流量并捕获完整 C2 通信。
Stars: 0 | Forks: 0

适用于隔离实验室环境的恶意软件分析 Sinkhole。
**MirageNet** 是一个全栈恶意软件 Sinkhole 和网络欺骗平台,专为隔离的实验室环境设计。它拦截恶意软件样本可能触及的每一个协议 —— DNS, HTTP/HTTPS, SMTP, FTP, Telnet, IRC, SOCKS5, DoT 等 —— 并做出足以乱真的响应,以保持样本处于活动和报告状态,同时捕获其完整的 C2 流量。
## GUI 截图

## 功能特性
### 网络服务
| Service | Port(s) | Notes |
|---------|---------|-------|
| DNS (UDP + TCP) | 53 | 所有查询 → `redirect_ip`;DGA 熵 NXDOMAIN;公网 IP 池;FCrDNS 一致性 |
| DNS-over-TLS | 853 | RFC 7858;与普通 DNS 共享完整的解析器逻辑 |
| HTTP | 80 | IP 检测欺骗,NCSI/captive-portal 处理程序,DoH sinkhole,WebSocket sinkhole,动态文件存根 |
| HTTPS | 443 | TLS 1.2+ ECDHE+AEAD;基于 SNI 的证书伪造;ALPN h2+http/1.1;HTTP/2 GOAWAY 降级 |
| SMTP / SMTPS | 25 / 465 | STARTTLS 升级;完整 AUTH 日志记录;邮件归档到磁盘 |
| POP3 / POP3S | 110 / 995 | 最小状态机;STLS 升级 |
| IMAP / IMAPS | 143 / 993 | STARTTLS;支持 EXAMINE 和 STATUS |
| FTP | 21 | 仅 PASV 模式;上传保存至 `logs/ftp_uploads/`,带有 UUID 前缀 |
| Telnet | 23 | Mirai/IoT 僵尸网络目标;伪造的 BusyBox root shell;记录凭证 |
| IRC / IRC+TLS | 6667 / 6697 | RFC 1459 及 CAP 协商;记录所有 C2 频道流量 |
| SOCKS5 | 1080 | RFC 1928;从 CONNECT 记录真实目标 host:port |
| TFTP | 69 | RFC 1350;WRQ 保存至 `logs/tftp_uploads/` |
| NTP | 123 | Stratum 2;合理的 RFC 5905 Reference ID |
| TCP catch-all | 9999 | 协议自动检测:HTTP / TLS / SSH / SMTP / FTP / IRC / SOCKS / RDP / SMB / MySQL / DNS |
| UDP catch-all | 9998 | |
| REST API | 8443 | `/api/status`, `/api/evasion?ip=X`, `/api/correlation?ip=X`, `/api/detection?ip=X` |
### 欺骗与检测加固
- **Evasion detection** —— 沙箱域名探测,DGA 熵评分,IP 检测滥用追踪,User-Agent 轮换指纹识别,心跳模式分析
- **Sinkhole detection monitor** —— 检测恶意软件何时意识到自己被 Sinkhole,并记录触发该行为的具体启发式规则
- **Connection correlation** —— DNS→HTTP 链,多服务侦察时间线,基于 IP 的会话图
- **OS fingerprint spoofing** —— TTL,TCP 窗口大小,DF 位,基于 socket 的 MSS(Windows / Linux / macOS / Solaris 配置文件)
- **TTL mangle rule** —— 通过 `xt_TTL` 使出站数据包携带合理的 WAN TTL(默认为 54)
- **Public IP pool** —— A 记录响应在合理的公网 IP 间轮换;击败单一 RFC-1918-IP 启发式检测
- **Signed Certificate Timestamp stubs** —— 伪造的证书包含可解析的 SCT 扩展(OID 1.3.6.1.4.1.11129.2.4.2)以满足支持 CT 的恶意软件
- **Response delay jitter** —— 随机的 HTTP 延迟击败基于时间的沙箱指纹识别;连通性探测绕过延迟
### TLS 证书基础设施
- 启动时生成自签名的 Root CA
- 按需伪造基于 SNI 的证书;缓存在 `certs/mitm/`
- `load_cert_chain()` 后立即删除临时文件 —— 磁盘上不残留私钥材料
### 日志与导出
- GUI 中的彩色实时日志,带有级别过滤标签和 LIVE/PAUSED 滚动指示器
- 结构化 JSONL 事件日志(`logs/events.jsonl`)—— 适配 CAPEv2, Splunk, ELK 的流水线
- GUI 中的 JSON 事件查看器,支持搜索、过滤,达到 20,000 行上限时自动导出
- 通过 tcpdump 进行 PCAP 捕获,100 MB 轮转(`--pcap`)
## 系统要求
- **OS**: Kali Linux(推荐)或任何带有 `iptables` 的 Debian/Ubuntu 系统
- **Python**: 3.11 – 3.13
- **Root**: 绑定端口 < 1024 和管理 iptables 规则所需
```
pip install -r requirements.txt
```
| Package | Purpose |
|---------|---------|
| `dnslib` | DNS 线格式编码/解码 |
| `cryptography` | TLS 证书生成 |
| `scapy` | TCP 指纹注入(可选) |
| `setproctitle` | 进程名显示(可选) |
| `python-iptables` | iptables 绑定 —— 仅 UDP;TCP NAT 使用 subprocess CLI |
| `pefile` | PE 文件存根生成(可选) |
## 快速入门(简易版)
### 1. 安装
```
sudo bash install-miragenet.sh
```
这会将 MirageNet 安装到 `/opt/miragenet-sinkhole`,创建启动器(`/usr/local/bin/miragenet-gui`, `/usr/local/bin/miragenet-sinkhole`),并安装一个 systemd 单元。
### 2. GUI 使用说明
当你需要按钮、实时状态和事件查看时使用 GUI。
```
miragenet-gui
```
在 GUI 中:
1. 点击 `Start` 以启动 sinkhole 服务。
2. 使用 `Overview`, `Events`, 和 `Settings` 标签页。
3. 关闭前点击 `Stop`。
注意:
- 从桌面会话运行(而非纯 SSH)。
- 你可能会收到 polkit/pkexec 提权提示。
### 3. CLI 使用说明
用于无头实验室和脚本编写。
```
# 标准 CLI 启动器
sudo miragenet-sinkhole --no-stealth --log-level DEBUG
# 完全拦截 + packet capture
sudo miragenet-sinkhole --full-intercept --pcap
```
停止 CLI:
- 如果在前台运行:`Ctrl+C`
- 如果作为服务运行:`sudo systemctl stop miragenet-sinkhole`
### 4. 更新
#### 从 git clone 更新
```
git pull
sudo bash install-miragenet.sh
```
#### 安装 / 离线更新(USB, 物理隔离)
在你的 Windows 机器上(只需一次网络连接):
```
.\make-bundle.ps1
```
这将下载所有必要的 wheels 并生成 `miragenet-bundle.sh` —— 一个内嵌 base64 编码 wheels 的单一 bash 脚本。将整个 MirageNet 文件夹复制到 USB,然后在 Kali 上:
```
sudo bash /media/usb/MirageNet/miragenet-bundle.sh
```
完整演示请参阅 [KALI_USB_DEPLOYMENT.md](KALI_USB_DEPLOYMENT.md)。
### 5. 移除(卸载)
```
sudo systemctl disable --now miragenet-sinkhole 2>/dev/null || true
sudo rm -f /etc/systemd/system/miragenet-sinkhole.service
sudo systemctl daemon-reload
sudo rm -f /usr/local/bin/miragenet-sinkhole /usr/local/bin/miragenet-gui
sudo rm -f /usr/share/applications/miragenet-sinkhole.desktop
sudo rm -rf /opt/miragenet-sinkhole
```
可选清理:
```
sudo rm -f /var/log/mirage_net.json
```
## 配置
所有设置位于 `config.json`。GUI 设置面板展示了最常用的字段,并为活动网络接口提供了一个 **Auto-detect** 按钮。
关键字段:
| Field | Default | Description |
|-------|---------|-------------|
| `general.redirect_ip` | `10.10.10.1` | 所有 DNS 查询解析到的 IP;必须可从受害者路由可达 |
| `general.interface` | `eth0` | 用于 iptables REDIRECT 规则的接口;启动时自动检测 |
| `general.iptables_mode` | `gateway` | `gateway`(NAT 所有受害者流量)或 `local` |
| `general.spoof_public_ip` | `98.6.112.145` | 由 IP 检测服务(ip-api.com, ipify.org 等)返回的 IP |
| `general.spoof_ttl` | `54` | 通过 iptables mangle 设置的出站数据包 TTL;`0` 禁用 |
| `general.tcp_fingerprint` | `true` | 欺骗 OS TCP 栈签名 |
| `dns.nxdomain_entropy_threshold` | `3.2` | DGA 检测香农熵截断值 |
| `dns.public_response_ips` | list | A 记录响应池;空 = 始终返回 `redirect_ip` |
## 架构
```
miragenet_sinkhole.py — core sinkhole (all services, iptables, TLS, analysis)
miragenet_gui.py — Tkinter dashboard
core/
config_schema.py — typed dataclass config with deep-merge loader
analysis.py — ConnectionCorrelator, EvasionDetector, SinkholeDetectionMonitor
net_manager.py — iptables NAT + mangle manager
resolver.py — DNS resolver logic
utils.py — logging, path sanitisation, privilege helpers
ftp_handler.py — FTP protocol handler (extracted, DI-injected)
http_handler.py — HTTP/HTTPS handler (extracted)
smtp_handler.py — SMTP/SMTPS handler (extracted)
telnet_handler.py — Telnet handler (extracted)
constants.py — shared string constants
```
## REST API
API 服务绑定在端口 8443 (HTTPS)。
| Endpoint | Description |
|----------|-------------|
| `GET /api/status` | 运行中的服务、运行时间、连接数 |
| `GET /api/evasion?ip=X` | 某源 IP 的逃逸事件 |
| `GET /api/correlation?ip=X` | 某源 IP 的跨服务会话时间线 |
| `GET /api/detection?ip=X` | 某源 IP 的 Sinkhole 检测事件 |
## 安全模型
MirageNet 是一个研究工具,而非生产服务。它被设计用来**接收**攻击者流量,而不是暴露在互联网上。
请参阅 [SECURITY.md](SECURITY.md) 了解漏洞报告策略以及尽管采用隔离网络部署模型但仍应用的缓解措施列表(日志注入清理、shell 注入防护、路径穿越防护、磁盘耗尽限制、禁用弱 TLS)。
## 更新日志
参见 [CHANGELOG.md](CHANGELOG.md)。版本控制遵循 [CalVer](https://calver.org/):`YYYY.MM.DD-N`。
当前版本:**2026.03.23-2**
## 许可证
参见 [LICENSE](LICENSE)。
标签:C2 拦截, DAST, DNS 欺骗, HTTPS 中间人, IoT 安全, IP 地址批量处理, PE 加载器, Python, 僵尸网络检测, 全栈安全, 协议模拟, 威胁情报, 密码管理, 开发者工具, 恶意软件分析, 无后门, 沙箱, 流量捕获, 流量汇聚, 混合加密, 网络拓扑, 蓝队防御, 蜜罐, 证书利用, 逆向工具, 隔离环境