Trident09/DNS-Guard_FYP_SEM_X
GitHub: Trident09/DNS-Guard_FYP_SEM_X
一个综合性的域名威胁情报分析平台,结合机器学习与 AI 助手,全面检测 DNS 滥用、钓鱼、配置错误及域名误植等安全风险。
Stars: 0 | Forks: 0
# DNS Guard
**域名威胁情报平台** — 分析任何域名的 DNS 滥用、配置错误、网络钓鱼、域名误植和安全威胁。本项目作为毕业设计(Final Year Project)构建。
## 功能
| 功能 | 描述 |
|---|---|
| **威胁评分** | 基于机器学习的 0-100 风险评分,配有径向仪表盘 |
| **DNSSEC 检查** | 验证 DNSKEY、RRSIG、DS 记录 |
| **WHOIS 分析** | 注册商、域名年龄、到期时间、新注册/即将过期域名标记 |
| **WHOIS Diff** | 检测多次扫描之间的变更 |
| **证书透明度** | 证书数量、通配符检测、激增警报 |
| **被动 DNS** | 历史 IP 解析、快速通量检测 |
| **域名误植检测** | 针对顶级品牌的编辑距离匹配 |
| **子域名枚举** | 暴力破解 + CT 日志发现 |
| **反向 IP** | 同服务器域名、高密度托管检测 |
| **威胁情报** | Spamhaus DBL + PhishTank 黑名单检查 |
| **IP 地理定位图** | 带有悬停提示的 SVG 世界地图 |
| **特征重要性图表** | 来自机器学习模型的 SHAP 风格条形图 |
| **风险摘要** | 每次扫描的可行性建议 |
| **AI 聊天机器人** | 感知上下文的 DNS 安全助手 (Groq API + 备用方案) |
| **PDF 报告** | 综合性可下载报告 |
| **深色 / 浅色模式** | 持久化主题切换 |
| **最近搜索** | 首页上的 localStorage 历史记录 |
## 架构
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Frontend │────▶│ Backend │────▶│ AI Service │
│ Next.js 14 │ │ FastAPI │ │ FastAPI │
│ Port 3000 │ │ Port 8000 │ │ Port 8001 │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
PostgreSQL Redis Qdrant
Port 5432 Port 6379 Port 6333
```
- **Frontend** — Next.js 14 App Router, Tailwind CSS, Recharts, Lucide 图标
- **Backend** — FastAPI, Celery workers, ReportLab PDF 生成
- **AI Service** — FastAPI, scikit-learn 集成模型, Groq API (LLaMA 3.1)
- **PostgreSQL** — 持久化存储
- **Redis** — Celery 任务队列 / 代理
- **Qdrant** — 用于 RAG 的向量数据库(聊天机器人知识库)
## 快速开始
### 前置条件
- Docker & Docker Compose
- (可选)用于 AI 聊天机器人的 [Groq API key](https://console.groq.com)(免费额度)
### 1. 克隆与配置
```
git clone
cd FYP
cp .env.example .env
# 如果需要,编辑 .env(默认设置开箱即用)
```
### 2. 启动所有服务
```
docker compose up --build -d
```
### 3. 打开应用
```
http://localhost:3000
```
### 4. 停止
```
docker compose down
```
## 环境变量
有关所有变量,请参阅 `.env.example`。主要变量如下:
| 变量 | 默认值 | 描述 |
|---|---|---|
| `POSTGRES_USER` | `dnsabuse` | 数据库用户 |
| `POSTGRES_PASSWORD` | `changeme` | **请在生产环境中修改** |
| `POSTGRES_DB` | `dnsabuse_db` | 数据库名称 |
| `REDIS_URL` | `redis://redis:6379/0` | Redis 连接 |
| `AI_SERVICE_URL` | `http://ai:8001` | 内部 AI 服务 URL |
| `GROQ_API_KEY` | _(空)_ | Groq API 密钥 — 可在 console.groq.com 免费获取 |
| `LLM_MODEL` | `llama-3.1-8b-instant` | Groq 模型名称 |
| `VIRUSTOTAL_API_KEY` | _(空)_ | 可选 — 增强威胁情报 |
| `SHODAN_API_KEY` | _(空)_ | 可选 — 增强反向 IP 查询 |
| `SECRET_KEY` | `changeme` | **请在生产环境中修改** |
## 项目结构
```
FYP/
├── frontend/ # Next.js 14 app
│ ├── app/
│ │ ├── page.tsx # Home / search page
│ │ ├── layout.tsx # Root layout + SEO metadata
│ │ ├── analyze/[domain]/
│ │ │ ├── page.tsx # Analysis results page
│ │ │ └── layout.tsx # Per-domain SEO metadata
│ │ └── api/
│ │ ├── analyze/route.ts # Proxy → backend /analyze
│ │ ├── chat/route.ts # Proxy → backend /chat
│ │ └── report/[domain]/pdf/ # Proxy → backend PDF
│ └── components/
│ ├── ThreatScoreCard.tsx # Radial gauge
│ ├── RiskSummary.tsx # Recommendations panel
│ ├── FeatureImportanceChart.tsx # SHAP-style bar chart
│ ├── GeoMap.tsx # SVG world map
│ ├── WhoisDiff.tsx # WHOIS change detection
│ ├── DnssecBadge.tsx # DNSSEC status badge
│ ├── ThemeToggle.tsx # Dark/light mode
│ ├── ChatBot.tsx # AI assistant
│ └── ... # Other data cards
│
├── backend/ # FastAPI backend
│ └── app/
│ ├── api/
│ │ ├── analyze.py # Main analysis endpoint
│ │ ├── chat.py # Chat proxy to AI service
│ │ └── reports.py # PDF download endpoint
│ ├── services/
│ │ ├── dns_resolver.py # DNS + DNSSEC resolution
│ │ ├── whois_lookup.py # WHOIS data
│ │ ├── cert_transparency.py # crt.sh CT log queries
│ │ ├── passive_dns.py # Historical DNS records
│ │ ├── typosquat.py # Brand similarity detection
│ │ ├── subdomain_enum.py # Subdomain discovery
│ │ ├── reverse_ip.py # Reverse IP lookup
│ │ ├── threat_intel.py # Spamhaus + PhishTank
│ │ ├── geo_ip.py # IP geolocation (ip-api.com)
│ │ └── pdf_report.py # ReportLab PDF generation
│ ├── workers/tasks.py # Celery async tasks
│ └── config.py # Pydantic settings
│
├── ai/ # AI / ML service
│ └── app/
│ ├── api/
│ │ ├── score.py # Threat scoring endpoint
│ │ └── chat.py # Chatbot endpoint (Groq API + fallback)
│ ├── features/extractor.py # 40-feature vector extraction
│ └── models/
│ ├── ensemble.py # Ensemble model (RF + rules)
│ └── mlp.py # MLP neural network
│
├── scripts/
│ └── update_feeds.py # Threat feed updater
├── data/
│ ├── raw/ # Raw feed data
│ ├── threat_feeds/ # Processed threat feeds
│ └── knowledge_base/ # Qdrant RAG documents
├── docker-compose.yml
├── .env.example
└── .gitignore
```
## API 参考
完整的 endpoint 文档请参见 [`docs/API.md`](docs/API.md)。
### 快速参考
| 方法 | Endpoint | 描述 |
|---|---|---|
| `POST` | `/analyze` | 完整域名分析 |
| `POST` | `/chat` | AI 聊天机器人消息 |
| `GET` | `/report/{domain}/pdf` | 下载 PDF 报告 |
| `GET` | `/whois/{domain}` | 仅 WHOIS 查询 |
| `GET` | `/certs/{domain}` | 证书透明度 |
| `GET` | `/passive-dns/{domain}` | 被动 DNS 历史 |
| `GET` | `/subdomains/{domain}` | 子域名枚举 |
| `GET` | `/reverse-ip/{domain}` | 反向 IP 查询 |
| `GET` | `/threat-intel/{domain}` | 黑名单检查 |
## 机器学习模型
威胁评分模型使用从域名和 DNS 记录中提取的 **40 维特征向量**:
- **词汇特征** (12) — 熵、长度、数字比例、品牌关键词、钓鱼关键词、TLD 风险
- **DNS 记录特征** (14) — A/MX/NS/TXT 记录存在情况、SPF/DKIM/DMARC、快速通量指标
- **DNSSEC 特征** (3) — DNSKEY、RRSIG、DS 记录存在情况
- **复合特征** (7) — 无 DNSSEC、有 MX 但无 SPF/DMARC、高熵、子域名中包含品牌词
集成模型结合了基于规则的评分与 MLP 神经网络。每次评分都会返回特征重要性,以提供可解释性。
## 聊天机器人
AI 助手在配置了 `GROQ_API_KEY` 的情况下使用 **Groq API** (LLaMA 3.1 8B Instant)。如果没有配置密钥,它将回退到涵盖以下内容的综合规则引擎:
- DNSSEC 配置
- SPF / DKIM / DMARC 电子邮件安全
- SSL/TLS 证书
- 子域名安全
- 威胁情报与黑名单
- 域名误植与网络钓鱼
- 滥用报告资源
## 开发
### 在本地运行前端
```
cd frontend
npm install
npm run dev # http://localhost:3000
```
### 在本地运行后端
```
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
```
### 在本地运行 AI 服务
```
cd ai
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8001
```
### 更新威胁源
```
python scripts/update_feeds.py
```
## 许可证
学术项目 — 毕业设计(Final Year Project)。未经安全加固,不得用于生产环境。
标签:AI聊天机器人, Apex, AV绕过, DAST, DLL 劫持, DNSSEC验证, DNS安全分析, DNS滥用检测, FastAPI, IP地理定位, PhishTank, Python, React, SHAP解释性分析, Spamhaus, Syscalls, TCP/IP协议栈, Web安全, WHOIS查询, 协议探测, 域名仿冒检测, 域名威胁情报, 大语言模型, 威胁情报, 子域名枚举, 安全威胁分析, 开发者工具, 恶意软件分析, 情报报告生成, 搜索引擎查询, 无后门, 机器学习, 毕业设计, 测试用例, 系统安全, 网络安全平台, 蓝队分析, 被动DNS, 证书透明度, 请求拦截, 进程管理, 逆向工具, 钓鱼网站检测, 风险评分