Farhan0629/HEIMDAL

GitHub: Farhan0629/HEIMDAL

Heimdal 是一款基于 Python 与 Streamlit 的教育用 Web 应用动态安全扫描与被动 OSINT 侦察套件,帮助用户在一个仪表盘中完成 SQLi/XSS 漏洞检测并生成详尽的目标情报报告。

Stars: 0 | Forks: 0

Heimdal Banner

👁️ HEIMDAL — Web 应用漏洞守望塔

一个使用 Python 和 Streamlit 构建的专业级、教育用 DAST + OSINT 侦察套件。
检测漏洞、被动分析目标,并生成详尽的情报报告 —— 尽在一个仪表盘中。

功能截图项目结构快速开始API 密钥实验环境道德声明

## 🚀 概述 **Heimdal**(得名于看守彩虹桥的全视北欧神话神明)是一款专为**教育演示、大学本科毕业设计以及安全作品集展示**设计的双模式网络安全工具。 它将两个强大的学科融合在一个经过精心打磨的仪表盘中: | 模式 | 描述 | |------|-------------| | **DAST 扫描** | 主动爬取目标 Web 应用,发现注入点,并探测 SQLi 和 XSS | | **OSINT 侦察** | 被动聚合 DNS、WHOIS、SSL、Shodan、crt.sh、Wayback Machine 和技术指纹 —— *对目标发送零数据包* | ## ✨ 功能 ### 🔴 DAST 扫描引擎 | 功能 | 详情 | |---------|--------| | **Web 爬虫** | 基于 BFS 的异步爬虫 —— 可爬取所有表单和 URL 参数,直到达到配置的深度限制 | | **SQL 注入** | 基于错误 + 绕过认证的 payload,与 MySQL / PostgreSQL / MSSQL / SQLite 的错误特征进行匹配 | | **反射型 XSS** | 检查带有唯一 UUID 标记的 payload 是否在 HTML 响应中存在原始、未转义的反射 | | **严重性分级** | 每个漏洞被评为严重 / 高危 / 中危 / 低危 / 信息 | | **导出** | 每次扫描运行均可导出完整的 `.txt` 压缩包 | ### 🟢 OSINT 侦察引擎 #### 🌐 身份与基础设施 - **IP 解析** + 地理定位(国家、城市、ASN、ISP、组织) - **WHOIS** — 注册商、创建/过期日期、注册组织 - **Shodan InternetDB**(免费,无需密钥)或完整的 **Shodan API**(需密钥) - **crt.sh 证书透明性** 日志 #### 🔍 子域名枚举(5 个来源) Certspotter · AlienVault OTX · URLScan · HackerTarget · crt.sh #### 📡 DNS 分析 - 记录类型:A · AAAA · MX · NS · TXT · CNAME · SOA · CAA · DNSKEY · DS - SPF / DMARC / DNSSEC 检测及**安全徽章评分** - 电子邮件伪造风险评估 #### 🔒 SSL / TLS 检查 - 证书链详情(Subject、Issuer、SAN) - SHA-1 和 SHA-256 指纹 - 公钥类型及位长(RSA / ECDSA) - 剩余天数倒计时及过期警告 - 弱算法检测(SHA-1 签名、短 RSA 密钥) #### 🧠 技术检测(40+ 指纹) | 类别 | 技术 | |----------|-------------| | Web 框架 | React, Next.js, Vue, Nuxt, Angular, Svelte, Ember | | 后端框架 | Django, Flask, FastAPI, Express, Laravel, Symfony, Spring, ASP.NET, Rails | | CMS | WordPress, Joomla, Drupal, Ghost, Magento, Shopify, Wix | | Web 服务器 | Apache, Nginx, IIS, LiteSpeed, Caddy | | JS 库 | jQuery, Bootstrap, Tailwind, Alpine.js, Chart.js | | CDN / WAF | Cloudflare, CloudFront, Akamai, Fastly | | 统计分析 | Google Analytics, GTM, Hotjar, Microsoft Clarity | | 安全 | reCAPTCHA, hCaptcha, CSP, HSTS | 每次检测均包含:**图标 · 类别 · 置信度 % · 证据来源** #### 🛡️ 安全标头分析(符合 OWASP 标准) 对 10 个关键响应标头的评级从 A+ 到 F: `HSTS · CSP · X-Frame-Options · Permissions-Policy · Referrer-Policy · CORP · COEP · COOP · X-Content-Type-Options · CORS` 每个标头卡片显示:**当前值 · 重要性说明 · 攻击风险 · 推荐值 · OWASP 参考** #### 🕷️ 高级爬虫 - 内部 / 外部链接、图片、JS、CSS、表单 - **电子邮箱地址**和**电话号码**提取 - **社交媒体链接**聚合 - **下载链接**检测(PDF、ZIP、DOCX、SQL 等) - **敏感 endpoint** 标记:登录、管理面板、上传页面、API、密码重置、配置/设置 - 获取 `robots.txt` 和 `sitemap.xml` #### 🔌 端口扫描器 - 使用异步扫描 Top-100 TCP 端口 - **风险分级**:严重 · 高危 · 中危 · 低危(基于端口规则) - **Banner grabbing**(服务版本指纹识别) - UI 中可按风险等级筛选 - 结果按威胁严重程度排序 #### 📂 目录暴力破解 - 用户提供字典 (`.txt`) - 可选扩展名 fuzz (`php,asp,txt,bak`) - **结果自动分类**:管理 · 备份 · 配置 · 敏感 · 压缩包 · PHP · HTML · JS - UI 中自动展开管理路径 - HTTP 状态码颜色标识 #### 🕰️ Wayback Machine 集成 - 历史快照 URL 发现 - 过滤有趣的历史 endpoint ## 📸 截图 ### DAST 扫描 — 目标获取

DAST Scan Tab

### OSINT 侦察 — 情报仪表盘

OSINT Recon Tab

## 🗂️ 项目结构 ``` heimdal/ ├── src/ │ └── app.py # Streamlit dashboard — DAST + OSINT Recon tabs │ ├── backend/ │ ├── __init__.py │ ├── models.py # VulnerabilityScanner, ScanResult, ReconResult dataclasses │ ├── payloads.py # SQLi / XSS payload library │ ├── scanner.py # Async DAST crawler + vulnerability scan engine │ ├── recon.py # Passive OSINT orchestrator (asyncio.gather parallel) │ ├── tech_detect.py # Technology fingerprinting (40+ signatures) │ ├── header_analyzer.py # OWASP security header grading (A+ → F) │ ├── subdomains.py # 5-source subdomain aggregator │ ├── wayback.py # Wayback Machine CDX API wrapper │ ├── crawler.py # HTML BFS crawler with extraction │ ├── portscan.py # Async TCP port scanner with risk levels │ ├── dirrec.py # Async directory brute-forcer with categorisation │ ├── export.py # TxtExporter — per-run .txt bundle │ └── settings.py # ~/.config/heimdal/ bootstrap │ ├── conf/ │ ├── config.json # Bundled defaults (timeouts, threads, max pages) │ └── keys.json # API key placeholders (null by default) │ ├── assets/ │ ├── style.css # Glassmorphism dark theme │ ├── banner.jpg # Project banner │ └── screenshots/ # README screenshots │ ├── lab/ │ └── vulnerable_app.py # Deliberately vulnerable Flask app for testing │ ├── requirements.txt ├── CHANGELOG.md └── README.md ``` ## ⚡ 快速开始 ### 1. 克隆仓库 ``` git clone https://github.com/youruser/heimdal.git cd heimdal ``` ### 2. 创建虚拟环境(推荐) ``` python -m venv venv # Windows venv\Scripts\activate # macOS / Linux source venv/bin/activate ``` ### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 4. 启动仪表盘 ``` streamlit run src/app.py ``` 应用将在您的默认浏览器中通过 **http://localhost:8501** 打开。 ## 🧪 实验环境(可选但推荐) Heimdal 附带了一个故意留下漏洞的 Flask 应用,用于**安全、合法的本地测试**: ``` python lab/vulnerable_app.py ``` 然后将 DAST 扫描器指向: ``` http://127.0.0.1:5055/ ``` 该实验应用包含故意的 SQLi 和 XSS 漏洞,以展示 Heimdal 的检测能力。 ## 🔑 API 密钥 Heimdal 开箱即用,**无需任何 API 密钥**,使用的是免费的公共 API。可选密钥可解锁额外的数据源: | 密钥 | 提供商 | 用途 | 免费层? | |-----|----------|----------|------------| | `shodan` | Shodan.io | 完整 Host API(端口、漏洞、地理定位)| ❌ 付费 | | `virustotal` | VirusTotal | 子域名枚举 | ✅ 是 | | `hunter` | Hunter.io | 子域名枚举 | ✅ 是 | | `bevigil` | BeVigil | 移动/子域名情报 | ✅ 是 | | `netlas` | Netlas.io | 子域名枚举 | ✅ 是 | | `zoomeye` | ZoomEye | 子域名枚举 | ✅ 是 | | `binedge` | BinaryEdge | 子域名枚举 | ✅ 是 | | `facebook` | Facebook CT | 证书透明性 | ✅ 是 | | `urlscan` | URLScan.io | 子域名枚举 | ✅ 是 | | `otx` | AlienVault OTX | 子域名 + 威胁情报 | ✅ 是 | **如需添加密钥**,请编辑 `~/.config/heimdal/keys.json`: ``` { "shodan": "YOUR_SHODAN_KEY_HERE", "virustotal": "YOUR_VT_KEY_HERE" } ``` ## 🛠️ 配置 编辑 `~/.config/heimdal/config.json` 以调整扫描行为: ``` { "max_pages": 12, "max_forms_per_page": 8, "request_timeout": 10, "concurrent_requests": 10, "port_scan_timeout": 1.0 } ``` | 参数 | 默认值 | 描述 | |-----------|---------|-------------| | `max_pages` | `12` | 爬虫访问的最大页面数 | | `max_forms_per_page` | `8` | 每页测试的最大表单数 | | `request_timeout` | `10` | HTTP 请求超时时间(秒) | | `concurrent_requests` | `10` | 异步并发级别 | | `port_scan_timeout` | `1.0` | 每个端口的 TCP 连接超时时间 | ## 📦 环境要求 ``` streamlit>=1.32 aiohttp>=3.9 dnspython>=2.6 python-whois>=0.9 cryptography>=42 beautifulsoup4>=4.12 requests>=2.31 ``` 使用以下命令安装所有依赖: ``` pip install -r requirements.txt ``` ## 🏗️ 架构 ``` ┌─────────────────────────────────────────────────────────┐ │ src/app.py (Streamlit UI) │ │ ┌─────────────┐ ┌──────────────────────┐ │ │ │ DAST Tab │ │ OSINT Recon Tab │ │ │ └──────┬──────┘ └──────────┬───────────┘ │ └──────────┼────────────────────────────── ┼─────────────┘ │ │ ┌──────▼──────┐ ┌────────▼──────────┐ │ scanner.py │ │ recon.py │ │ payloads.py │ │ (asyncio.gather) │ └─────────────┘ └──┬──┬──┬──┬──┬────┘ │ │ │ │ │ ┌────────────┘ │ │ │ └──────────────┐ │ ┌─────┘ │ └───────────┐ │ ▼ ▼ ▼ ▼ ▼ tech_detect header_ crawler.py portscan dirrec subdomains analyzer wayback.py .py .py ssl/dns/ .py whois/shodan ``` - **所有扫描/侦察逻辑均位于 `backend/` 目录** — 完全无头化,无需 Streamlit 即可测试 - **`app.py` 仅作为 UI** — 可在不触及后端逻辑的情况下替换为 CLI 或 FastAPI 接口 - **`ReconResult` dataclass** 是唯一事实来源 — 所有模块写入字段,app.py 读取字段 ## ⚖️ 道德声明 ``` THIS TOOL IS PROVIDED FOR EDUCATIONAL AND AUTHORIZED TESTING PURPOSES ONLY. Only scan applications you own or have explicit written authorization to test. Authorized targets include: • DVWA (Damn Vulnerable Web Application) • OWASP Juice Shop • The bundled lab/vulnerable_app.py • Your own web applications in a controlled environment Unauthorized scanning of third-party systems may violate computer misuse laws in your jurisdiction (e.g. Computer Fraud and Abuse Act, UK Computer Misuse Act). The authors accept no liability for misuse of this software. ``` ## 📄 许可证 本项目仅供**教育用途**。作者保留所有权利。

怀揣 ❤️ 为网络安全社区打造 · 大学毕业设计项目

标签:CISA项目, DAST, ESC4, GitHub, Kubernetes, OSINT, Python, Streamlit, 实时处理, 恶意软件分析, 无后门, 访问控制, 逆向工具