ESD(Enumeration Sub Domain)
优势
支持泛解析域名
基于
RSC(响应相似度对比)技术对泛解析域名进行枚举(受网络质量、网站带宽等影响,速度会比较慢)
基于aioHTTP获取一个不存在子域名的响应内容,并将其和字典子域名响应进行相似度比对。
超过阈值则说明是同个页面,否则则为可用子域名,并对最终子域名再次进行响应相似度对比。
更快的速度
基于
AsyncIO异步协程技术对域名进行枚举(受网络和DNS服务器影响会导致扫描速度小幅波动,基本在250秒以内)
基于AsyncIO+aioDNS将比传统多进程/多线程/gevent模式快50%以上。
通过扫描qq.com,共620328条规则,找到3421个域名,耗时15分钟左右。
更新于2021年9月,经实测多个DNS Server做了请求数限制,大并发下存在大量连接超时和异常导致遗漏情况大幅增加,目前通过限制DNS服务器以及并发数来解决,因此建议不要过于追求速度,通过设计更合理的触发时间来解决速度变慢问题。
更全的字典
融合各类字典,去重后共620328条子域名字典
- 通用字典
- 单字母、单字母+单数字、双字母、双字母+单数字、双字母+双数字、三字母、四字母
- 单数字、双数字、三数字
- 域名解析商公布使用最多的子域名
- DNSPod: dnspod-top2000-sub-domains.txt
- 其它域名爆破工具字典
- subbrute: names_small.txt
- subDomainsBrute: subnames_full.txt
更多的收集渠道
- 收集DNSPod接口泄露的子域名
- 收集页面响应内容中出现的子域名
- 收集跳转过程中的子域名
- 收集HTTPS证书透明度子域名
- 收集DNS域传送子域名
DNS服务器
- 解决各家DNS服务商对于网络线路出口判定不一致问题
- 解决各家DNS服务商缓存时间不一致问题
- 解决随机DNS问题,比如fliggy.com、plu.cn等
- 根据网络情况自动剔除无效DNS,提高枚举成功率
使用
仅在macOS、Linux的Python3下验证过
# 安装
pip install esd
# 升级
pip install esd --upgrade
CLI命令行使用
# 扫描单个域名
esd -d qq.com
# debug模式扫描单个域名
esd=debug esd -d qq.com
# 扫描多个域名(英文逗号分隔)
esd --domain qq.com,tencent.com
# 扫描单个域名且过滤子域名中单个特定响应内容
esd --domain mogujie.com --filter 搜本店
# 扫描单个域名且过滤子域名中多个特定响应内容
esd --domain mogujie.com --filter 搜本店,收藏店铺
# 扫描文件(文件中每行一个域名)
esd --file targets.txt
# 跳过相似度对比(开启这个选项会把所有泛解析的域名都过滤掉)
esd --domain qq.com --skip-rsc
# 平均分割字典,加快爆破
esd --domain qq.com --split 1/4
# 使用DNS域传送漏洞获取子域名
esd --domain qq.com --dns-transfer
# 使用HTTPS证书透明度获取子域名
esd --domain qq.com --ca-info
程序调用
from ESD import EnumSubDomain
domains = EnumSubDomain('feei.cn').run()
后续
- 提升扫描速度
- 支持三级子域名,多种组合更多可能性
文档
Metadata
Release files for ESD 0.0.29
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ESD-0.0.29.tar.gz | 29.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ESD-0.0.29-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 531.2 kB
Release files / ESD-0.0.29.tar.gz
| Download URL | ESD-0.0.29.tar.gz |
|---|---|
| Size | 29.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb5a5fddae72778d6f387f2a0bebfe2d39f6ff05a52e446c5270aead27bb0a28
|
|
BLAKE2b-256 checksum How to use checksums |
38d2aad92c999615e085e6388ca48b3fa4880fc5efca59be356f3c30552065f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.5
|
Release files / ESD-0.0.29-py3-none-any.whl
| Download URL | ESD-0.0.29-py3-none-any.whl |
|---|---|
| Size | 501.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
883b63d723fab74cf155b95d793be1f4e4f2925bf2a6f1e45ce44ffd806fb94a
|
|
BLAKE2b-256 checksum How to use checksums |
2d18ae4ff82dd9be4689cf8bcd5a7649be1a4158aa93afd16633f3e5a003552f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.5
|