Bhuvangs04/DNS-Threat-Intelligence-Monitor

GitHub: Bhuvangs04/DNS-Threat-Intelligence-Monitor

一个实时分布式 DNS 威胁情报监控平台,通过多源情报与行为算法检测并可视化 DNS 异常。

Stars: 0 | Forks: 0

# 实时分布式 DNS 威胁情报监控 一个全栈网络安全仪表板,实时监控 DNS 流量,将查询与多个威胁情报源交叉比对,使用行为算法检测异常,并通过实时 SOC 风格深色仪表板呈现所有内容。 ![仪表板预览](https://raw.githubusercontent.com/Bhuvangs04/DNS-Threat-Intelligence-Monitor/main/docs/preview.png) ## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ INGESTION LAYER │ │ Mock DNS Generator ─── Threat Feed Sync (OTX, URLhaus) │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┐ │ PROCESSING LAYER │ │ Normalizer ─── GeoIP Enricher ─── Threat Scorer │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┐ │ INTELLIGENCE LAYER │ │ DGA Detector ─── DNS Tunneling ─── Fast-Flux Detection │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┐ │ DASHBOARD LAYER │ │ REST API ─── Socket.IO (Real-time) ─── Web Dashboard │ └─────────────────────────────────────────────────────────────┘ ``` ## 🔧 技术栈 | 层 | 技术 | |----|------| | 后端 | Node.js, Express | | 实时 | Socket.IO | | 数据库 | MongoDB + Mongoose | | 前端 | 纯 HTML/CSS/JS | | 图表 | Chart.js | | 地图 | Leaflet.js (CartoDB 深色底图瓦片) | | 地理 IP | geoip-lite | | 威胁情报源 | URLhaus、AlienVault OTX、AbuseIPDB | ## 🚀 快速开始 ### 先决条件 - [Node.js](https://nodejs.org/) (v18+) - [MongoDB](https://www.mongodb.com/)(本地或 [Atlas](https://www.mongodb.com/atlas) 免费层) ### 安装 ``` # 克隆仓库 git clone cd NS_Project # 安装依赖 npm install # 配置环境 cp .env.example .env # 使用您的 MongoDB URI 和可选的 API 密钥编辑 .env # 启动服务器 npm run dev # 打开仪表板 # 导航至 http://localhost:3000 ``` ### 环境变量 | 变量 | 是否必需 | 默认值 | 描述 | |------|----------|--------|------| | `MONGODB_URI` | 是 | `mongodb://localhost:27017/dns-threat-intel` | MongoDB 连接字符串 | | `PORT` | 否 | `3000` | 服务器端口 | | `ABUSEIPDB_API_KEY` | 否 | — | AbuseIPDB API 密钥(免费层) | | `OTX_API_KEY` | 否 | — | AlienVault OTX API 密钥(免费) | | `MOCK_DNS_ENABLED` | 否 | `true` | 启用模拟 DNS 流量生成 | | `MOCK_DNS_INTERVAL_MS` | 否 | `1500` | 模拟查询间隔(毫秒) | | `MOCK_MALICIOUS_RATIO` | 否 | `0.15` | 恶意流量占比(0-1) | ## 🛡️ 检测方法 ### 1. DGA 检测(域名生成算法) 使用 **香农熵分析** 与 **字符频率分析** 识别算法生成的域名。合法域名(如 `google.com`)的熵较低(约 2.5),而 DGA 域名(如 `xk7qm3nz.xyz`)的熵较高(约 3.8+)。 ### 2. DNS 隧道检测 通过以下方式监控数据外泄: - 异常长的子域名标签(>20 字符) - 对同一基础域名的高频查询 - 十六进制编码的子域名模式 - TXT 查询类型滥用 ### 3. 快速流检测 通过跟踪单个域名的 IP 轮换识别快速流式托管网络。合法域名通常解析到 1-3 个 IP;快速流域名会在数分钟内轮换 5-10+ 个 IP。 ### 4. 威胁情报匹配 将每个 DNS 查询与缓存的指标交叉比对,来源包括: - **URLhaus(abuse.ch)** — 恶意分发 URL - **AlienVault OTX** — 社区威胁情报脉冲 - **AbuseIPDB** — IP 信誉数据 - **种子黑名单** — 内置已知恶意域名列表 ## 📊 仪表板功能 - **实时统计栏** — 总查询数、威胁数、活动告警数、威胁率、每分钟查询数 - **查询时间线** — 实时双轴折线图(查询 vs 威胁) - **查询类型分布** — 动画甜甜圈图(A、AAAA、MX、TXT、CNAME、NS) - **严重性分级** — 按严重程度的水平进度条 - **威胁世界地图** — 带脉冲严重性标记的地理热力图 - **实时威胁订阅源** — 可按严重性筛选的滚动订阅 - **顶级恶意域名** — 按命中次数和分数排名的表格 - **域名详情弹窗** — 点击查看完整威胁情报 - **CSV 导出** — 下载威胁数据用于报告 - **浏览器通知** — 关键威胁推送告警 ## 📁 项目结构 ``` NS_Project/ ├── server/ │ ├── index.js # Express + Socket.IO server │ ├── config/db.js # MongoDB connection │ ├── models/ │ │ ├── DnsQuery.js # DNS query schema │ │ ├── ThreatIndicator.js # Cached threat indicators │ │ └── Alert.js # Generated alerts │ ├── services/ │ │ ├── mockDnsGenerator.js # Simulated DNS traffic │ │ ├── threatFeedSync.js # Threat feed polling + seed list │ │ ├── enrichmentService.js # GeoIP enrichment │ │ └── detectionEngine.js # DGA, tunneling, fast-flux │ ├── routes/ │ │ ├── queries.js # /api/queries │ │ ├── threats.js # /api/threats │ │ ├── alerts.js # /api/alerts │ │ └── stats.js # /api/stats │ └── utils/ │ ├── threatScorer.js # Composite scoring │ └── geoip.js # IP geolocation ├── public/ │ ├── index.html # Dashboard SPA │ ├── css/styles.css # Dark SOC theme │ └── js/ │ ├── app.js # Main initialization │ ├── socket.js # Socket.IO client │ ├── charts.js # Chart.js setup │ ├── map.js # Leaflet map │ ├── threatFeed.js # Live feed cards │ └── domainDetail.js # Detail modal ├── .env.example ├── package.json └── README.md ``` ## 🔬 技术说明 ### 实时 DNS 捕获(高级) 在 Linux/Unix 系统上进行生产部署时,系统可通过以下方式扩展以在 53 端口捕获真实 DNS 数据包: - 通过 `pcap` 或 `cap` npm 包使用 **原始套接字捕获** - 使用 **eBPF** 实现内核级 DNS 钩子,实现零拷贝捕获 - 拦截 **DNS over HTTPS (DoH)** 与 **DNS over TLS (DoT)** 这需要 root/管理员权限,且不包含在演示配置中。 ### 分布式架构(可扩展性) 面向企业级部署,系统设计支持: - 使用 **Apache Kafka** 或 **Redis Streams** 进行分布式消息代理 - 检测引擎工作节点的水平扩展 - 使用 **STIX/TAXII** 标准格式进行机器间情报共享 - 集成 **响应策略区域 (RPZ)** 实现自动 DNS 阻断 ## 👥 团队 | 成员 | 角色 | |------|------| | 成员 1 | 后端与基础设施 | | 成员 2 | 情报引擎 | | 成员 3 | 前端仪表板 | ## 📄 许可证 MIT 许可证 — 仅供教育用途。
标签:CMS安全, DGA检测, DNS隧道, GeoIP, JavaScript, MITM代理, OTX, Python, SOC仪表盘, T1043, T1573, URLhaus, WebSocket, 依赖分析, 分布式系统, 响应大小分析, 域名监控, 威胁情报, 威胁评分, 安全可视化, 实时DNS监控, 实时分析, 开发者工具, 异常检测, 快速流检测, 数据归一化, 无后门, 时间线生成, 暗色主题, 网络威胁检测, 网络安全, 自定义脚本, 行为算法, 隐私保护