CYC07/Bifrost-NOX
GitHub: CYC07/Bifrost-NOX
一个基于 AI 微服务架构的透明代理防火墙,通过 MITM TLS 检查和多模型内容分析实现网络流量的智能拦截与分类。
Stars: 1 | Forks: 0
# Bifrost NØX — AI 驱动的网络防火墙







一个由 AI 驱动的透明代理防火墙,利用多层专用机器学习微服务管道,实时拦截、检查和分类网络流量。本项目作为毕业设计(Final Year Project)开发。
## 概述
Bifrost NØX 部署在 Wi-Fi 热点和互联网之间,通过 MITM 代理和 iptables 数据包捕获拦截 HTTP 和 HTTPS 流量。每个请求在返回 ALLOW / BLOCK / CENSOR(允许/阻止/审查)判定前,都会被一个或多个 AI 微服务(图像分类、文档扫描和 NLP)进行毫秒级分析。
```
Device (phone/laptop)
│
▼
Wi-Fi Hotspot (wlan1)
│ iptables REDIRECT / NFQUEUE
▼
C++ Firewall Engine ◄──ZeroMQ IPC──► AI Brain (Python)
│ │
▼ ▼
MITM Gateway (:8080) Master AI Orchestrator (:8000)
TLS interception ┌──────────────────────────┐
SNI extraction │ Image Service (:8001) │
Allowlist bypass │ Document Service(:8002) │
│ Text Service (:8003) │
└──────────────────────────┘
│
▼
Dashboard (localhost:8000)
```
## 功能特性
- **透明 HTTPS 拦截** — 具有按域名生成证书功能的 MITM 代理;当作为热点网关部署时,无需进行客户端配置
- **AI 内容分析** — 使用 CLIP + YOLOv8 进行图像 NSFW/目标检测;使用 YARA + VirusTotal 哈希查询 + 结构异常检测(Isolation Forest)+ 元数据取证分析文档;使用 Presidio + sentence-transformers 检测文本中的 PII(个人身份信息)、API 密钥泄露和 SQL 注入
- **静态规则引擎** — 在 AI 推理之前评估的 IP/端口/域名/关键字规则;可通过仪表板进行配置
- **证书固定(cert-pinned)应用的允许列表** — WhatsApp、Snapchat、Signal、Telegram 以及其他任何固定其 TLS 证书的应用都可以被加入允许列表,直接建立隧道通行而不受检查;如果 MITM 失败,所有其他应用默认被阻止
- **实时仪表板** — 实时 KPI 卡片、威胁源、流量图表、规则管理以及位于 `http://localhost:8000` 的 AI 文件接收功能
- **C++ 数据包引擎** — 具有 10 秒流缓存的 NFQUEUE 处理程序;默认故障开放(fail-open),确保网络访问永远不会被完全阻断
- **VirusTotal 集成** — 对每个扫描的文档进行 SHA-256 哈希查询;可选功能(在 `.env` 中设置 `VIRUSTOTAL_API_KEY`);无密钥时故障开放,确保服务在无密钥情况下仍可正常运行
- **仅主机代理绑定** — MITM 代理会自动检测热点接口 IP 并仅绑定到该接口,确保防火墙主机自身的流量永远不会被拦截
## 系统架构
| 层级 | 组件 | 端口 / IPC |
|---|---|---|
| 数据包捕获 | `network_inspector/cpp/firewall_engine` | NFQUEUE 1 |
| AI 桥接 | `network_inspector/ai_brain.py` | ZMQ `ipc:///tmp/firewall_pipeline` |
| MITM 代理 | `gateway/proxy.py` + `mitm_engine.py` | :8080 |
| 协调器 | `master_ai/orchestrator.py` | :8000 |
| 图像 AI | `image_service/main.py` | :8001 |
| 文档 AI | `document_service/main.py` | :8002 |
| 文本 AI | `text_service/main.py` | :8003 |
| 仪表板 | `dashboard/` | 由协调器在 `/` 提供服务 |
## 安装说明
```
# Clone the repo
git clone https://github.com/CYC07/Bifrost-NOX.git
cd Bifrost-NOX
# System dependencies (Debian / Kali / Ubuntu)
sudo apt update && sudo apt install -y \
tesseract-ocr \
libnetfilter-queue-dev \
build-essential \
g++ \
libzmq3-dev \
python3-dev \
python3-venv
# Python 环境
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Build C++ engine
cd network_inspector/cpp && make && cd ../..
# 生成本地 CA 证书 (HTTPS 拦截所需)
cd gateway && python3 cert_utils.py && cd ..
```
## 运行方式
### 完整堆栈(热点模式)
需要一个处于 AP 模式的 Wi-Fi 适配器(`wlan1`)。首先启动热点,然后运行:
```
source venv/bin/activate
./start_all.sh
```
### 仅网关 + AI 服务(无热点)
用于检查本地机器上的流量或手动路由流量:
```
source venv/bin/activate
# Terminal 1 — AI microservices
uvicorn master_ai.orchestrator:app --host 0.0.0.0 --port 8000 &
uvicorn image_service.main:app --host 0.0.0.0 --port 8001 &
uvicorn document_service.main:app --host 0.0.0.0 --port 8002 &
uvicorn text_service.main:app --host 0.0.0.0 --port 8003 &
# Terminal 2 — MITM proxy
python3 gateway/proxy.py
```
然后将您的浏览器或系统代理设置为 `127.0.0.1:8080`。
### 停止所有服务
```
sudo ./stop_all.sh
```
## 仪表板
启动堆栈后,在浏览器中打开 `http://localhost:8000`。
| 页面 | 描述 |
|---|---|
| 概述 | 实时 KPI 卡片、威胁源、被阻止事件图表 |
| 流量 | 吞吐量图表、协议细分、最近流量 |
| 规则与策略 | 静态规则引擎 — 添加/移除 IP、端口、域名、关键字规则;管理应用允许列表 |
| 威胁 | 带有严重程度和置信度的 AI 分类威胁日志 |
| 日志 | 来自所有服务的原始事件流 |
| 设备 | 所有 AI 微服务的健康状态 |
| 报告 | 会话摘要和导出 |
| AI 接收 | 拖拽式文件分析(图像、PDF、文档) |
## 允许列表(证书固定应用)
像 WhatsApp、Snapchat、Signal 和 Telegram 这样的应用会固定其 TLS 证书,并将拒绝代理本地签名的证书。如果没有允许列表条目,这些连接默认会被**阻止**,并在仪表板上记录为 `PINNED-TLS`。
要允许它们免检通过,请使用“允许列表”面板在**规则与策略**页面上添加主机模式,或通过 API 操作:
```
# 添加 host
curl -X POST http://localhost:8000/allowlist \
-H "Content-Type: application/json" \
-d '{"host": "*.whatsapp.net"}'
# 列出已加入白名单的 host
curl http://localhost:8000/allowlist
# 移除 host
curl -X DELETE http://localhost:8000/allowlist/*.whatsapp.net
```
仪表板中提供了针对 WhatsApp、Snapchat、Signal、Telegram 和 iMessage 的预设按钮。
## VirusTotal 集成
文档服务会计算每个扫描文件的 SHA-256 哈希值,并查询 VirusTotal API。不会上传任何文件字节——仅哈希查询可保护隐私并将延迟保持在较低水平(缓存命中时约 200-500 毫秒)。
| 场景 | 分数 | 判定 |
|---|---|---|
| VT 报告 ≥ 1 个恶意引擎 | 0.99 | BLOCK |
| VT 报告 0 次检测 | 0.0 | 传递给 YARA |
| 文件不在 VT 数据库中 (404) | 0.0 | 传递给 YARA |
| API 不可用 / 未设置密钥 | 0.0 | 传递给 YARA |
要启用此功能,请将您的密钥添加到项目根目录的 `.env` 文件中(该文件已被添加到 .gitignore):
```
echo "VIRUSTOTAL_API_KEY=your_key_here" > .env
```
`./start_all.sh` 会自动加载它。如果没有密钥,服务将仅使用 YARA 检测运行。
## 网络拓扑(热点模式)
| 项目 | 值 |
|---|---|
| 热点 SSID | FYP-AI-Firewall |
| 子网 | 192.168.50.0/24 |
| 网关 | 192.168.50.1 |
| 代理端口 | 8080 |
| 互联网上行链路 | `eth0` 或 USB 网络共享 |
## 项目结构
```
ai_firewall/
├── common/ # Shared schemas, utilities, allowlist module
├── config/ # Persisted rules and allowlist (JSON)
├── dashboard/ # React 18 + Babel frontend (served by orchestrator)
├── document_service/ # YARA + VirusTotal, metadata forensics, structural anomaly, content keywords
├── gateway/ # MITM proxy, TLS engine, certificate authority
├── image_service/ # CLIP, YOLOv8, Tesseract OCR
├── master_ai/ # Orchestrator, rule engine
├── network_inspector/ # C++ NFQUEUE engine + Python ZMQ bridge
├── text_service/ # Presidio PII, sentence-transformers, SQLi
├── start_all.sh # Start full stack
├── start_network.sh # iptables + C++ engine + AI brain
├── stop_all.sh # Stop everything
└── requirements.txt
```
## 技术栈
**AI / ML:** PyTorch · CLIP · YOLOv8 (ultralytics) · Tesseract OCR · sentence-transformers · Presidio · YARA · VirusTotal API · scikit-learn (Isolation Forest)
**后端:** Python 3.11 · Starlette · uvicorn · httpx · ZeroMQ · cryptography
**网络:** iptables · NFQUEUE · C++17 · libnetfilter-queue · Scapy
**前端:** React 18 · Babel standalone · 定制 CSS 设计系统(无框架)
## 许可证
MIT — 详见 `LICENSE` 文件。
标签:AI防火墙, AWS, C++, CLIP模型, DLP, DPI, HTTPS解密, iptables, IP 地址批量处理, NFQUEUE, NLP, Presidio, Python, PyTorch, React, Syscalls, TLS拦截, YOLOv8, ZeroMQ, 中间人攻击, 人工智能, 内容审查, 凭据扫描, 图像分类, 威胁情报, 安全网关, 实时仪表盘, 对抗攻击, 开发者工具, 微服务架构, 恶意流量检测, 敏感信息检测, 数据擦除, 无后门, 毕业设计, 流量监控, 深度包检测, 用户模式Hook绕过, 白名单, 目标检测, 网络安全, 网络安全分析, 网络流量分析, 计算机视觉, 证书固定, 逆向工具, 透明代理, 隐私保护