PAST2212/domainthreat

GitHub: PAST2212/domainthreat

针对新注册域名的品牌监控工具,通过多种模糊匹配算法和源码关键词检测来识别钓鱼域名、品牌冒充和 CEO 欺诈威胁。

Stars: 63 | Forks: 15

# DomainThreat 针对品牌和邮件域名的每日域名监控 **当前版本:** v3.24.1 ## 3.24 版本更新内容 - 改进了 punycode/unicode 处理及域名(多)处理操作 - 迁移至新的 github 新注册域名源项目 https://github.com/hagezi/dns-blocklists?tab=readme-ov-file#nrd ## 动机 传统的域名监控通常仅依赖品牌名称,这可能不足以检测所有网络钓鱼攻击,尤其是当品牌名称和邮件域名不同时。本项目旨在通过同时监控品牌名称和邮件域名来解决这一差距,重点关注文本字符串而不仅仅是品牌。 ## 检测范围 - 全词匹配(例如,amazon-shop.com) - 常规域名劫持案例(例如,ammazon.com) - 外观相似域名/钓鱼/CEO 欺诈域名(例如,arnazon.com) - 基于全词匹配的 IDN 检测/外观相似域名(例如,𝗉ay𝞀al.com) - 基于部分词匹配的 IDN 检测/外观相似域名(例如,𝗉ya𝞀a1.com) ![检测示例](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/97440c6dcf004025.png) ## 功能特性 ### 核心功能 - Unicode 域名 (IDN) / 同形字 / 同形图检测 - 多种域名模糊测试/相似度算法 - 自动化网站翻译 - 支持多种语言 - 每日 CSV 导出(基于日历周,包含附加功能列及仅监控到的域名结果) ### CSV 输出列/附加功能 - Detected By:全关键词匹配或相似/模糊关键词匹配 - Source Code Match:网站中的关键词检测(支持多种语言) - Website Status:HTTP 状态码 - Parked:检查域名是否为停放域名(实验性) - Subdomains:子域名扫描 - E-Mail Availability:检查域名收发邮件的准备情况 ### 其他功能 - 多线程(基于 CPU 核心)、多进程与异步请求 - 误报减少机制 - 针对域名中不含品牌名称的网站进行关键词检测 - 默认使用 Google DNS 解析器进行邮件就绪检查。 ## 原理 ### 1. 基础域名监控 1.1. 使用 `keywords.txt` 中的关键词进行全词和相似词域名检测 1.2. 使用 `topic_keywords.txt` 在源代码中进行关键词检测 结果导出至项目根目录下的 `Newly_Registered_Domains_Calender_Week_.csv` 文件。 仅域名结果导出至项目根目录下的 `domain_results_.csv` 文件。 ### 2. 高级域名监控 2.1. 使用 `topic_keywords.txt` 中的关键词进行全词域名检测 2.2. (可选)基于 `languages_advanced_monitoring.txt` 中用户指定的语言,自动翻译 `topic_keywords.txt` 关键词 - 文件 `supported_languages.txt` 概述了 `languages_advanced_monitoring.txt` 当前支持的语言 - 使用 `topic_keywords.txt` 中的关键词及翻译后的关键词进行全词域名检测 2.3. 使用 `unique_brand_names.txt` 在源代码中进行品牌名称检测 结果导出至项目根目录下的 `Advanced_Monitoring_Results_Calender_Week_.csv` 文件。 ## 安装 ``` git clone https://github.com/PAST2212/domainthreat.git cd domainthreat pip install -r requirements.txt ``` ## 使用方法 基础用法(默认设置): ``` python3 domainthreat.py ``` 高级用法(示例命令): ``` python3 domainthreat.py --similarity wide --threads 50 ``` 选项: - `--similarity`:选择相似度模式 - close:较少误报和(潜在)较多漏报(默认) - wide:较多误报和(潜在)较少漏报 - medium:close 和 wide 两种模式选项之间的折衷。 - `--threads`:线程数(默认值:基于 CPU 核心) - `--nameservers`:用于邮件就绪检查的 DNS 名称服务器列表,以逗号分隔 - 默认值:8.8.8.8 (Google) - 示例:--nameservers "9.9.9.9,8.8.8.8"(将首先尝试第一个服务器,如果第一个失败,则使用第二个作为备份) ## 更新 ``` cd domainthreat git pull ``` 如果遇到合并错误: ``` git reset --hard git pull ``` **注意:** 更新前请备份您的 userdata 文件夹。 ## 配置 1. 将品牌名称或邮件域名添加到 `domainthreat/data/userdata/keywords.txt` 2. (可选)将常见词汇冲突添加到 `domainthreat/data/userdata/blacklist_keywords.txt` 3. (可选)将行业、公司、产品相关关键词添加到 `domainthreat/data/userdata/topic_keywords.txt` 4. (可选)将品牌名称添加到 `domainthreat/data/userdata/unique_brand_names.txt` ## 更新日志 有关更新,请参阅 [更新日志](https://github.com/PAST2212/domainthreat/blob/main/Changelog)。 ## 说明 ### 作者 Patrick Steinhoff - [LinkedIn](https://www.linkedin.com/in/patrick-steinhoff-168892222/) ### 待办事项 - 添加额外的模糊匹配算法 - 增强子域名级别的源代码关键词检测 - 基于目标检测的 AI Logo 检测 - 实现 PEP8 合规性 ### 附加信息 - 重构 / Pythonic 内存改进 / 子域名扫描可选 - 新注册域名 的公共数据源 每日注册量上限为 70,000。 - 新数据源 [NRD 项目](https://github.com/hagezi/dns-blocklists?tab=readme-ov-file#nrd) 已在 3.24 版本中添加。提供的 7 天列表将在首次下载时转换为每日数据源。 - 相似度模式的阈值可进行调整以适应特定需求。 - 推荐的 Python 版本:>= 3.8(使用 Python 3.10 编写) - 某些 TLD(例如,“.de” 域名)可能未始终包含在公共数据源中。您可以使用 [certthreat](https://github.com/PAST2212/certthreat) 来绕过此问题。 - 本项目的绝佳补充 [dnstwist](https://github.com/elceef/dnstwist)
标签:CEO欺诈, IDN欺骗, IPv6支持, TYPOSQUATTING, Ubuntu, 冒充检测, 同形异义词, 品牌伪造, 品牌保护, 域名模糊匹配, 域名监控, 威胁情报, 子域名枚举, 安全运营, 开发者工具, 扫描框架, 新注册域名, 源代码抓取, 系统安全, 逆向工具, 配置审计, 钓鱼检测, 防御自动化