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, 证书透明度, 请求拦截, 进程管理, 逆向工具, 钓鱼网站检测, 风险评分