通过监听CertStream API中报告的证书透明度日志(CTL),近乎实时地捕获可疑的TLS证书颁发,从而发现可能的钓鱼域名。"可疑"的颁发是指其域名根据配置文件计算得分超过特定阈值的证书。
这只是一个可用的概念验证(PoC)。欢迎贡献代码并根据您的需求进行调整。👍

该脚本应可在Python2或Python3下正常运行。克隆或下载源代码后,安装依赖:
pip install -r requirements.txt
Phishing Catcher 使用一个简单的YAML配置文件,为TLS证书的通用名称或SAN字段(即证书域名)中出现的字符串分配数值分数。配置文件suspicious.yaml附带了合理的默认值,但您可以通过编辑覆盖文件external.yaml来调整或添加其中的字符串及其对应的分数。
默认的suspicious.yaml和用户可修改的external.yaml配置文件都包含两个YAML字典:keywords和tlds。字典的键是字符串,值是在已颁发证书的域名中发现该字符串时分配的分数。例如:
keywords:
'login': 25
这里,当在TLS证书域名中发现通用关键词login时,将增加25分。提高此值会增加对包含字符串login的域名的怀疑程度,从而使您能够对这些证书颁发进行更严格的审查。
然而,为了被Phishing Catcher报告为可疑,分配给给定证书的分数必须达到或超过(>=,"大于等于")以下阈值:
| 分数 | 报告为 |
|---|---|
| 65 | 潜在 |
| 80 | 很可能 |
| 90 | 可疑 |
💡 有关评分算法的详细信息,请参阅源代码中的
score_domain()函数。
配置满意后,用法只需运行脚本:
$ ./catch_phishing.py

如果您运行的是MacOS或其他版本可能导致安装phishing_catcher困难的操作系统,那么将工具容器化是您的选择之一。
docker build . -t phishing_catcher

GNU GPLv3
如果此工具对您有用,请随意通过请我喝杯咖啡来感谢我。