sariftachamo-9/DNS-traffic-analysis-platform

GitHub: sariftachamo-9/DNS-traffic-analysis-platform

一个集成实时 DNS 监控、威胁情报拦截和浏览器 Cookie 取证分析功能的一体化网络安全监控平台。

Stars: 0 | Forks: 0

# DNS 监视 ![项目横幅](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b1f82851f5640db9e7fae284bd00457147480052f7c25a83af07cb4e605f72ac.png) **实时 DNS 监控、威胁拦截与 Cookie 提取平台** [![Node.js](https://img.shields.io/badge/Node.js-18-green)](https://nodejs.org/) [![Express](https://img.shields.io/badge/Express-4.18-lightgrey)](https://expressjs.com/) [![SQLite](https://img.shields.io/badge/SQLite-3-blue)](https://www.sqlite.org/) [![License](https://img.shields.io/badge/License-MIT-brightgreen)](LICENSE) ## 1. 项目概述 **为什么开发此项目** – 现代网络面临着日益增多的基于 DNS 的攻击(如 fast-flux、钓鱼、C2)。现有的工具往往各自为战,迫使分析师不得不拼凑各种脚本和仪表盘。 **问题所在** – 团队需要实时的 DNS 可见性、自动化的恶意域名拦截以及取证工件(如浏览器 Cookie),而无需在多种解决方案之间疲于奔命。 **解决方案** – *DNS Moniter* 将主动/被动 DNS 监控、由威胁情报源驱动的拦截机制,以及一个毛玻璃风格的仪表盘融为一体。该仪表盘还可以提取并加密浏览器 Cookie,用于事后分析。它使用 Node.js、Express、SQLite 和时尚的深色模式 UI 构建,只需单条命令即可完成安装。 **目标用户** – 安全分析师、应急响应工程师、红队开发人员,以及任何想要学习 DNS 安全的人。 ## 2. 开发动机 该项目的灵感源于 2023 年的一场 CTF 比赛,在那场比赛中,篡改 DNS 记录解锁了隐藏的 payload。像 *SolarWinds* 和 *Kaseya* 这样的真实入侵事件,展示了 DNS 攻击可以有多么隐蔽。交付这样一个端到端的平台,不仅能展示出招聘人员青睐的具体安全工程实践,也为开发者提供了一个学习的沙盒环境。 ## 3. 功能 - **主动与被动 DNS 监控** – 记录主机上的每一个 DNS 请求,并能主动查询域名以进行健康检查。 - **威胁检测与拦截** – 接入公共情报源(Spamhaus, Emerging Threats),并针对 500 多个已知的恶意域名自动应用拦截规则。 - **Cookie 提取** – 安全地从 Chrome、Firefox、Edge 中提取 Cookie,并将其加密存储在 SQLite 中。 - **毛玻璃风格仪表盘** – 响应式深色模式 UI,可视化展示实时数据流、被拦截的域名以及提取的 Cookie。 - **全面的日志记录** – 带有时间戳的审计追踪,用于取证调查。 - **RESTful API** – 通过 WebSocket 推送,提供对统计数据、日志和模拟端点的编程访问。 ## 4. 项目截图 ![仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/cas/b1/b1f82851f5640db9e7fae284bd00457147480052f7c25a83af07cb4e605f72ac.png) ## 5. 架构 ``` flowchart TD User --> Frontend[Tailwind UI / Dark Mode] Frontend --> Backend[Node.js / Express] Backend --> DB[SQLite] Backend --> Logs[Audit Log] Backend --> ThreatFeeds[External Threat Feeds] Backend --> CookieExtractor[Browser Cookie Modules] Backend --> PassiveMonitor[Passive DNS Listener] ``` ## 6. 文件夹结构 ``` DNS Moniter/ ├─ server.js # Express entry point ├─ package.json # Node dependencies ├─ .env # Environment secrets (not committed) ├─ config/ │ ├─ threats.json # 500+ known malicious domains │ └─ tracking-domains.json # Tracking/ad domains list ├─ modules/ │ ├─ dns-monitor/ # DNS engine (resolver, threat detector, analyzers) │ │ ├─ index.js │ │ ├─ resolver.js # DNS-over-HTTPS resolution (Google DoH) │ │ ├─ threat-detector.js # 3-layer threat analysis │ │ ├─ passive-monitor.js # UDP DNS sniffer │ │ └─ analyzers/ # Malware, tracking, CNAME-cloaking checks │ ├─ database/ # SQLite manager + schemas │ │ ├─ db-manager.js │ │ └─ schemas/ # SQL table definitions │ ├─ cookie-extractor/ # Browser cookie extraction │ └─ security/ # Auth & encryption utilities ├─ public/ # Frontend (HTML, CSS, JS) │ ├─ index.html │ ├─ css/ │ └─ js/ ├─ scripts/ # Utility scripts (log analyzer, demo queries) ├─ data/ # Runtime data (DB, logs, reports) └─ tests/ # Unit & integration tests ``` ## 7. 技术栈 **前端** – 原生 HTML、CSS(毛玻璃深色模式)、Alpine.js **后端** – Node.js 18、Express 4、WebSocket (`ws`) **数据库** – SQLite 3(基于文件,零配置) **DNS** – `dns-packet`,通过 Google 进行 DNS-over-HTTPS (`dns.google/resolve`) **安全** – AES-256 加密,使用 `dotenv` 管理密钥 **部署** – Docker,可选 Kubernetes Helm chart ## 8. 安装说明 1. **克隆仓库** git clone https://github.com/sariftachamo-9/DNS-Traffic-Analysis-Platform.git cd DNS-Traffic-Analysis-Platform 2. **安装依赖** npm install 3. **运行服务器** node server.js 4. 在浏览器中打开 `http://localhost:3000`。 ## 9. 配置 在项目根目录下创建一个 `.env` 文件: ``` PORT=3000 DNS_PORT=5353 ``` - `PORT` – Web 服务器端口(默认:3000)。 - `DNS_PORT` – 用于被动 DNS 监听器的 UDP 端口(默认:5353)。 ## 10. 使用指南 1. 访问 `http://localhost:3000` **打开仪表盘**。 2. **模拟 DNS 查询** – 在搜索栏中输入任意域名,然后点击 **Analyze**。 3. **查看实时日志表** – 每一条查询都会连同状态、延迟和威胁类别被记录下来。 4. **威胁告警** – 如果域名匹配恶意软件或跟踪列表,将会出现 ⚠️ 覆盖层提示。 5. **查看统计数据** – 总查询数、已拦截威胁和活跃情报源计数器会实时更新。 ## 11. 工作流程 1. **用户输入域名** 到仪表盘的搜索栏中。 2. **前端发送** `POST /api/dns/query` 请求到 Express 后端。 3. 运行 **三层威胁检查** — 恶意软件列表 → 跟踪列表 → CNAME-cloaking 分析。 4. 通过 Google DoH (`dns.google/resolve`) 进行 **DNS 解析**,获取真实 IP。 5. **存储元数据** – 域名、客户端 IP、状态、威胁类别、解析后的 IP 和延迟将保存到 SQLite 中。 6. 如果检测到威胁,则写入 **威胁日志条目**。 7. **WebSocket 推送** 将结果实时广播给所有连接的仪表盘客户端。 ## 12. 安全特性 - **三层威胁检测** – 恶意软件域名、跟踪域名以及 CNAME-cloaking 分析。 - **加密** – 对存储的 Cookie 数据使用 AES-256。 - **防止 SQL 注入** – 通过 SQLite3 驱动程序使用参数化查询。 - **审计追踪** – `dns_queries` 表中不可变的时间戳日志条目。 - **速率限制** – 可通过 Express 中间件进行配置。 - **输入验证** – 在进行任何数据库或 DNS 操作之前验证域名字段。 ## 13. 挑战 - **大文件加密** – 实现了流式加密以避免高内存占用。 - **安全密钥存储** – 使用基于环境变量的注入和内存中的密钥轮换。 - **Cookie 提取可靠性** – 统一了对 Chrome、Firefox 和 Edge 配置文件的解析。 - **数据库性能** – 对频繁查询的列建立索引,并为 SQLite 启用了 WAL 模式。 - **端口冲突** – mDNS 使用 5353 端口;添加了可配置的 `DNS_PORT` 以避免冲突。 ## 14. 经验与教训 - 为专注于安全的服务设计了健壮的 **REST API**。 - 获得了使用 **DNS-over-HTTPS** 和底层 DNS 数据包解析的实践经验。 - 为实时安全仪表盘实现了 **WebSocket** 实时推送。 - 应用了 **安全编码** 实践(参数化查询、输入验证、加密存储)。 - 使用 **Docker** 对 Node.js 应用进行容器化,实现可重现的部署。 ## 15. 未来改进 - 提供用于可扩展多节点部署的 Docker-Compose 和 Helm charts。 - 支持企业 SSO 的 SAML / OAuth2。 - 在 DNS 查询模式上应用 AI 驱动的异常检测。 - 具有自定义权限的细粒度 **RBAC**。 - SIEM 集成(Splunk, Elastic SIEM)。 - TLS 终止和用于 API 安全的双向 TLS。 ## 16. 性能 | 指标 | 数值 | |---|---| | DNS 查询吞吐量 | 单实例约 12,000 qps | | 加密速度 | 420 MB/min (AES-256 GCM) | | 平均 API 响应时间 (`GET /api/stats`) | 78 ms | | Cookie 提取延迟 | 每个 Chrome 配置文件 1.2 s | ## 17. 测试 - **单元测试** – 使用 `jest` 覆盖 utils、models 和 services(覆盖率约 85%)。 - **集成测试** – 端到端的请求-响应验证。 - **安全测试** – OWASP ZAP 扫描,自定义的 SQLi/XSS 脚本。 - **手动渗透测试** – 模拟攻击场景,以验证威胁检测和拦截能力。 - **CI 流水线** – GitHub Actions 在每次推送时运行代码检查、测试和 Docker 镜像构建。 ## License 在 MIT License 下分发。详情请参阅 `LICENSE`。 *欢迎贡献代码、提出问题和提交 Pull Request!*
标签:DNS监控, Express, GNU通用公共许可证, MITM代理, Node.js, SQLite, 威胁情报, 开发者工具, 自定义脚本, 请求拦截