Janakar-cloud/Domain_Analayzer

GitHub: Janakar-cloud/Domain_Analayzer

一款集成化的域名情报与安全评估工具,通过CT日志、DNS、TLS、WHOIS及威胁情报接口持续监控组织的外部攻击面并生成可审计报告。

Stars: 0 | Forks: 0

### 域名情报 域名情报(Domain Intelligence)是一个对 Windows 友好的 Python 应用程序,旨在帮助安全和 IT 团队了解其组织域名上的暴露情况。它查询公共记录、检查证书并审查网站内容,以突出显示潜在风险和需要修复的区域。您可以在本地运行它,通过简单的 Web UI 查看结果,并导出报告。 ## 功能说明 - 查找过去曾颁发过证书的子域名。 - 列出 DNS 记录(地址、邮件服务器、文本记录)。 - 检查网站的 TLS 证书(颁发者、过期时间)。 - 查询域名注册详细信息(whois、年龄、过期时间)。 - 可选调用 SSL Labs 快速获取 TLS 评级。 - 跟踪重定向,查看站点是否存在跳转或降级安全性。 - 扫描首页及少量同站链接,查找意外暴露的机密信息(API keys, tokens)。 - 标记可能面临接管风险的子域名。 - 保存清晰、可导出的报告及小型证据快照。 ## 快速开始 - 前置条件:Python 3.9+ 和 PowerShell - 创建并激活虚拟环境,然后安装依赖项: ``` py -m venv .venv .\.venv\Scripts\Activate.ps1 py -m pip install -r requirements.txt ``` - 启动后端 API (FastAPI) 和前端 (Streamlit): ``` # Backend (端口 8000) py -m uvicorn src.server:app --host 127.0.0.1 --port 8000 --reload # Frontend (端口 8501) py -m streamlit run src/webui/app.py --server.port 8501 ``` - 访问 http://127.0.0.1:8501 使用 UI。输入域名(每行一个)并运行分析。UI 使用固定的内部扫描配置文件(扫描选项已隐藏)。 - 或者直接调用 API: ``` $body = @{ domains=@("example.com"); output_formats=@("json","csv","html"); skip_modules=@(); workers=12; fast_mode=$true } | ConvertTo-Json Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8000/scan -ContentType "application/json" -Body $body ``` ## 性能调优(不跳过检查) - Fast Mode(快速模式):限制超时时间和 SSL Labs 轮询,同时保持所有模块开启。 - Advanced Tuning(高级调优):在 UI 展开栏中,调整每个模块的限制(CT 超时和最大子域名数、DNS/TLS/WHOIS/Redirect 超时、SSL Labs 轮询/尝试/缓存时间)。 - Concurrency(并发):增加 Workers(工作线程)以更快地扫描多个域名。 ## 配置 - 编辑 [config.yaml](config.yaml) 以设置默认值:启用的模块、超时、速率限制、输出路径和规则。 - API 密钥放在 .env.local 中(可选):ABUSEIPDB_KEY, OTX_KEY, VT_KEY, CRIMINALIP_KEY, URLSCAN_KEY。 - 代理:根据需要设置 `proxy.enabled` 和 HTTP/HTTPS 代理 URL。 - 输出:报告保存在 `output/` 下,证据保存在 `evidence/` 下。 ## 技术架构 - Backend(后端):FastAPI (`src/server.py`) 暴露 `/health` 和 `/scan` 端点。 - Frontend(前端):Streamlit (`src/webui/app.py`) 提供 Posture(态势)、DNS、Certificate(证书)、Reputation(信誉)、Findings(发现)等标签页。 - Scanner(扫描器):针对每个域并发编排模块 (`src/scanner.py`),应用速率限制并收集结果。 - Modules(模块):`src/modules/` 中的可插拔分析器,用于 CT、DNS、TLS、WHOIS、SSL Labs、重定向、内容扫描、接管检测和威胁情报(本地 + 可选外部)。 - Reporters(报告器):`src/reporters/` 中的 JSON/CSV/HTML 生成机器可读和人类友好的输出。 - Config(配置):`src/core/config.py` 加载 YAML + .env 并提供模块设置(包括运行时的 Fast Mode 覆盖)。 ## 模块逻辑(工作原理) - Certificate Transparency (`ct_enumeration`):查询 crt.sh JSON,提取名称,过滤有效子域名,通过 `max_subdomains` 限制数量,并为敏感命名添加发现。 - DNS Enumeration (`dns_enumeration`):使用带有解析器超时的 dnspython 收集 A, AAAA, CNAME, NS, MX, TXT, SOA;分析 SPF/DMARC/DKIM、名称服务器充分性以及悬空 CNAME。 - TLS Inspection (`tls_inspection`):通过 Python `ssl` 连接读取证书详情(CN, SANs, 颁发者, 有效性),标记过期、不匹配、弱算法/密钥和自签名证书。 - WHOIS Lookup (`whois_lookup`):在线程中包装 python-whois 以强制执行超时;解析注册商、组织、国家、日期和年龄;标记新注册或即将过期的域名以及 DNSSEC 状态。 - SSL Labs (`ssllabs`):调用公共 API;优先使用缓存结果;在有限尝试次数内轮询;将评级映射到严重性并列出协议和已知的 TLS 漏洞。 - Redirect Analysis (`redirect_analysis`):通过 SSL 验证跟踪重定向;汇总跳转次数和潜在的降级风险。 - Content Scanner (`content_scanner`): - 获取首页(如果开启深度扫描,则包括浅层同源链接),并进行 SSRF 安全的 IP 验证。 - 限制正文大小和请求超时;记录标头、哈希和片段。 - 使用精选的正则表达式模式和熵评分来标记可能的机密信息;分配置信度(低/中/高)并存储 `raw_data.hits` 用于 UI 表格渲染。 - 根据检测到的最高置信度添加严重性发现。 - Takeover Detection (`takeover_detection`):检查悬空 CNAME(无法解析的目标)作为潜在的接管候选项。 - Local Reputation (`threat_intel.local_reputation`):基于 TLS 过期、WHOIS 年龄、高风险 TLD、重定向、接管风险和内容扫描严重性计算风险评分;添加整体信誉发现。 - External Threat Intel(外部威胁情报,可选):当提供密钥时集成 AbuseIPDB, OTX, VirusTotal, CriminalIP, URLScan。 ## 报告(生成方式) - 对于每个域名,模块在扫描器下运行并填充 `DomainResult`(子域名、DNS、TLS 证书、WHOIS、重定向、最终 URL、发现、错误、已执行模块)。 - 然后报告器进行序列化: - JSON:每个域名的完整结构化结果,包括证据和 `raw_data.hits`。 - CSV:扁平化的摘要行;以及每个域名的完整资产清单 CSV。 - HTML:人类可读的仪表板,带有严重性着色和与 UI 对齐的部分。 - 输出位于 `output/` 中,文件名带有时间戳;证据文件(标头、哈希、片段)位于 `evidence//` 下。 ## 安全与合规 - SSRF 防护:仅在解析的 IP 为公共/非保留地址时才获取内容。 - HTML 安全性:UI 转义内容并为内容命中渲染紧凑的表格。 - 速率限制:模块级别的上限可减少提供商负载并避免封禁。 - 合法使用:仅针对您拥有/管理或已获得明确测试许可的域名运行。 ## API 参考 - `GET /health` → `{ "status": "ok" }` - `POST /scan` → 字段: - `domains: List[str]` - `output_formats: ["json","csv","html"]` - `skip_modules: List[str]`(可选) - `workers: int`(并发) - `fast_mode: bool`(保持模块开启,缩短超时/轮询) - 内容覆盖:`content_scanner_deep_scan: bool`, `content_scanner_link_limit: int`, `content_scanner_timeout_ms: int` - 高级覆盖:`ct_timeout`, `ct_max_subdomains`, `dns_timeout`, `tls_timeout`, `whois_timeout`, `redirect_timeout`, `ssllabs_timeout`, `ssllabs_poll_interval_seconds`, `ssllabs_max_attempts`, `ssllabs_max_age` - 响应包含 `reports`、`summary`(严重性计数、总计)和完整的 `results`。 ## CLI 使用 - 单个域名: ``` py cli.py --domain example.com ``` - 从文件批量扫描域名: ``` py cli.py --input domains.txt ``` - 为先前的结果生成报告: ``` py cli.py report --output csv html ``` ## 部署 - 使用脚本以方便操作: ``` # 设置 .\scripts\deploy.ps1 -Setup # 启动 Backend .\scripts\deploy.ps1 -StartBackend # 启动 Frontend .\scripts\deploy.ps1 -StartFrontend ``` ## 必需的 API 密钥(可选) - AbuseIPDB: ABUSEIPDB_KEY - AlienVault OTX: OTX_KEY - VirusTotal: VT_KEY - CriminalIP: CRIMINALIP_KEY - URLScan: URLSCAN_KEY(私有扫描需要) - Google Safe Browsing: GOOGLE_SAFE_BROWSING_KEY - SecurityTrails (Passive DNS): SECURITYTRAILS_KEY - 注意:本地信誉和内容扫描无需外部密钥即可运行;SSL Labs 不需要密钥。 ## 仓库清理 - 生成的工件会被 .gitignore 忽略(`output/`、`evidence/`、`logs/`)。 - 要清除本地工件: ``` .\scripts\cleanup_repo.ps1 ``` ## 故障排除 - SSL Labs 缓慢或不可用:启用 Fast Mode,减少 `ssllabs_max_attempts`,并增加 `ssllabs_max_age` 以优先使用缓存。 - WHOIS 停顿:该模块强制执行自己的超时;如果注册表缓慢,结果可能不完整。 - YAML 规则错误:在 `local_rules.yaml` 中使用正确的引号并保持正则表达式简单;应用程序会记录解析警告。 - 代理使用:在 `config.yaml` 中设置 `proxy.enabled` 和 HTTP/HTTPS URL。 ## 使用案例 - 外部攻击面发现 - Shadow IT 和被遗忘的子域名识别 - 证书生命周期监控 - 电子邮件安全态势评估 (SPF/DMARC) - 威胁猎杀和 SOC 调查 - 持续的外部资产清单 ## 免责声明 此工具仅用于授权的内部安全测试。请勿将其用于您不拥有或管理的域名。滥用可能违反法律或提供商的服务条款。
标签:AI合规, AV绕过, CT日志, DNS分析, ESC4, FastAPI, GitHub, Kubernetes, OSINT, Python, Streamlit, TLS检测, WHOIS查询, 动态插桩, 协议探测, 反取证, 域名情报, 威胁情报, 子域名接管, 安全评估, 实时处理, 密码管理, 开发者工具, 数据展示, 无后门, 红队, 访问控制, 证书透明性, 逆向工具, 防御性安全