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)

## 功能特性
### 核心功能
- 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, 冒充检测, 同形异义词, 品牌伪造, 品牌保护, 域名模糊匹配, 域名监控, 威胁情报, 子域名枚举, 安全运营, 开发者工具, 扫描框架, 新注册域名, 源代码抓取, 系统安全, 逆向工具, 配置审计, 钓鱼检测, 防御自动化