一、痛点:你是否也被“泛解析”搞疯过?

做网络安全资产收集的朋友,一定经历过这种绝望时刻:

  1. 拿着几万字的字典跑扫描器,结果显示发现了 499 个子域名。
  2. 兴冲冲地逐个点开,结果 498 个都跳转到了同一个公司首页,或者显示相同的“站点不存在”页面。
  3. 剩下的 1 个真实资产,淹没在几百条垃圾数据里,人工复核要花几个小时!

这就是典型的“DNS 泛解析”干扰。传统的扫描器往往只判断状态码(如 200 OK),无法识别这些“伪装”的假域名,导致报告里全是噪音,严重拖慢渗透测试进度。

为了解决这个痛点,我彻底重构了自己的工具,推出了 MyScanner Pro v1.2。它不再盲目相信状态码,而是引入了“智能指纹比对”机制,专杀泛解析!

二、核心原理:双重验证,去伪存真

本工具的核心逻辑不再是简单的 if status == 200,而是采用了双重验证机制:

  1. 重定向轨迹比对
    检查目标子域名的最终跳转地址(Final URL)。如果它和主域名的默认跳转地址一致,直接标记为可疑。
  2. 内容指纹(MD5)校验
    计算响应内容的 MD5 值。即使泛解析配置了随机字符串,只要页面模板(HTML 结构)一致,其指纹就会与基准首页相同。一旦匹配,立即判定为泛解析并过滤。

只有当“重定向地址”和“内容指纹”都与基准页不同时,工具才会将其标记为 [+] ✅ 发现有效资产。

三、逻辑实现:核心代码思路

为了实现这一功能,我在扫描线程中加入了基准页比对逻辑。以下是核心判断流程的代码展示:

核心逻辑:智能泛解析判断

1. 先获取主域名的基准特征 (基准重定向地址 + 基准内容指纹)

baseline = get_baseline_features(domain)

2. 遍历子域名进行扫描

for subdomain in subdomains:
response = request(subdomain)

# 判断逻辑
is_wildcard = False

# 条件一:重定向地址是否一致?
if response.final_url == baseline.redirect_target:
    is_wildcard = True

# 条件二:内容指纹 (MD5) 是否一致?
elif calculate_md5(response.content) == baseline.fingerprint:
    is_wildcard = True
    
# 输出结果
if not is_wildcard:
    print(f"[+] ✅ 发现真实资产: {subdomain}")
    save_to_report(subdomain)
else:
    print(f"[-] 🚫 过滤泛解析: {subdomain} (原因: 指纹匹配)")

通过这两步严密的逻辑,哪怕对方配置了复杂的泛解析,只要页面内容雷同,都能被精准揪出来!

四、功能亮点

  • 🧠 智能去重:自动过滤 99% 的泛解析假域名,只保留真实有效的资产。
  • 🔇 纯净输出:自动屏蔽 urllib3 HTTPS 证书警告,终端界面清爽,无杂乱报错。
  • 📊 详细报表:生成 CSV 格式报告,不仅列出资产,还明确标注 pan_reason(被过滤的原因),方便审计。
  • ⚡ 多线程并发:内置线程池,扫描速度快,效率提升显著。

五、效果对比:传统方式 vs MyScanner v1.2

为了验证效果,我使用一个典型的开启泛解析的域名进行了实测(测试字典数量:500 条):

维度

传统扫描器 (仅看状态码)

MyScanner v1.2 (智能过滤)

检出总数

498 个

498 个

真实资产

❌ 混在其中,难以分辨

✅ 自动筛选,精准定位

误报情况

🔴 497 个都是假域名 (误报率 99%)

🟢 0 个误报 (全部自动过滤)

人工复核

😫 需逐个点击,耗时 2 小时+

⚡ 无需复核,直接看结果

报告质量

杂乱无章,全是垃圾数据

清晰明了,只列真资产

结论:传统工具让你在海里捞针,v1.2 直接帮你把水抽干,只留金子。

六、实战演示:干净利落的过滤效果

(👉 请在此处直接粘贴你刚刚运行成功的截图)
建议截图内容:显示命令行运行了 python ... -u xxx.com -s,输出了很多 [-] 🚫 过滤泛解析... 的行,最后显示真实资产列表。

上图解读:
如截图所示,程序扫描了大量子域名,但智能识别出它们都属于泛解析(显示为 🚫 或被过滤),最终输出的列表非常干净。如果是真实资产,会清晰地标记为 ✅。这就是我们想要的效果!

七、下载与使用

项目已完全开源,代码透明,欢迎安全同仁们下载试用、审计代码或提出改进建议!

👉 📦 最新版本下载 (v1.2):
https://github.com/LanSang11/DirScanner-Lab/releases/tag/v1.2

👉 💻 源代码仓库:
https://github.com/LanSang11/DirScanner-Lab

快速开始三步走:

(请在编辑器中点击“插入代码”,选择 Bash 语言,粘贴以下内容)

1. 安装依赖库

pip install -r requirements.txt

2. 运行扫描

-u: 指定目标域名

-s: 开启智能泛解析过滤模式 (关键参数!)

python my_scanner_pro_v1.2_final.py -u example.com -s

3. 查看结果

扫描结束后,当前目录下会生成 report_*.csv 文件

打开表格,筛选 "pan_reason" 列为 "-" 的行,即为确认的真实资产

八、写在最后

这个工具源于我在实际渗透测试中遇到的真实困境。我希望通过开源,能帮到更多被泛解析困扰的安全研究员和开发者。

未来规划:

  • 🚀 优化异步协程,进一步提升万级字典的扫描速度。
  • 🎨 探索开发简单的 GUI 界面,降低使用门槛。
  • 🌐 集成更多子域名收集接口,实现从收集到清洗的一体化。

如果你觉着这个项目对你有帮助:

  1. 请移步 GitHub 点个 Star ⭐️,这是对我最大的鼓励!
  2. 欢迎提交 Issue 反馈 Bug,或提交 PR 贡献代码。
  3. 觉得不错,欢迎转发分享给你的朋友圈或技术群!

作者:anSang11
项目:DirScanner-Lab / MyScanner Pro
版本:v1.2.0
标签:#Python #网络安全 #开源工具 #子域名扫描 #泛解析 #资产收集 #渗透测试

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐