news 2026/8/19 18:47:46

Bluto 源码解析:DNS 侦察工具的模块化架构与核心实现原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Bluto 源码解析:DNS 侦察工具的模块化架构与核心实现原理

Bluto 源码解析:DNS 侦察工具的模块化架构与核心实现原理

【免费下载链接】BlutoDNS Recon | Brute Forcer | DNS Zone Transfer | DNS Wild Card Checks | DNS Wild Card Brute Forcer | Email Enumeration | Staff Enumeration | Compromised Account Checking项目地址: https://gitcode.com/gh_mirrors/bl/Bluto

Bluto 是一款开源的DNS 侦察工具(DNS Recon Tool),它把子域名暴力枚举、DNS 区域传送(Zone Transfer)、通配符检测、邮箱枚举、员工信息收集与泄露账户核查等功能整合在一个命令行工具中。本文将从源码角度拆解 Bluto 的模块化架构,带新手看懂这套 DNS 侦察核心代码的实现原理,帮助你理解安全测试工具的设计思路。

⚠️ 提示:Bluto 基于 Python 2.7 开发,适合安全研究人员在授权范围内进行信息收集学习。

一、Bluto 是什么?核心功能一览

Bluto 的目标很简单:尽可能多地收集目标域名的信息。它的能力清单包括:

  • 🔍DNS 侦察:查询 NS、MX 记录
  • 🧨子域名暴力枚举:基于 Top 20000 子域名列表
  • 🚨DNS 区域传送检测:判断 NS 是否配置错误
  • 🌀通配符检测与绕过:识别*.domain通配记录
  • 📧邮箱枚举:Google / Bing / LinkedIn / EmailHunter
  • 🔓泄露账户核查:对接 HaveIBeenPwned API
  • 📄文档元数据挖掘:从公开文档提取用户名、软件版本

二、模块化架构总览:一目了然的代码组织

Bluto 的代码目录结构非常清晰,modules/目录下每个文件只负责一类职责,这是它最值得学习的架构设计:

文件职责
bluto主入口,命令行解析与任务调度
Bluto/modules/get_dns.pyDNS 侦察核心:查询、枚举、区域传送
Bluto/modules/search.py搜索引擎与 API 信息收集
Bluto/modules/general.pywhois、国家识别、域名校验
Bluto/modules/get_file.py读取字典文件与 User-Agent 列表
Bluto/modules/output.py结果输出与 HTML 证据报告
Bluto/modules/data_mine.py文档元数据挖掘
Bluto/modules/bluto_logging.py本地日志记录
Bluto/modules/update.py版本更新检查

这种"一个模块一个职责"的拆分方式,让后续扩展新功能(如新增搜索引擎)时无需改动主流程。

三、主入口调度原理:多线程并行任务编排

打开主文件 bluto,你会看到 Bluto 的调度逻辑非常清晰。它先用 docopt 解析命令行参数(-d指定域名、-e使用大字典、-api填入 EmailHunter 密钥),然后依次执行:

  1. 域名合法性校验
  2. whois 查询获取公司名
  3. DNS 详情收集(NS / MX)
  4. NetCraft 被动子域名收集
  5. 区域传送漏洞检测

最巧妙的是,Bluto 用Python 多线程 + Queue 队列并行执行 Google、Bing、LinkedIn 搜索和文档挖掘任务,例如:

t1 = threading.Thread(target=action_google, args=(domain, userCountry, userServer, q1, user_agents, prox)) t2 = threading.Thread(target=action_bing_true, args=(domain, q2, user_agents, prox)) t3 = threading.Thread(target=action_linkedin, args=(domain, userCountry, q3, company, user_agents, prox))

四个任务同时跑,各自把结果放进独立队列,最后统一汇总去重——这就是 Bluto 速度快的原因之一。

四、DNS 侦察核心代码:get_dns.py 深度拆解

get_dns.py 是整款工具的灵魂,实现了四个关键算法:

1. NS/MX 记录查询:侦察第一步

get_dns_details()使用 dnspython 库查询目标域名的 NS 和 MX 记录,并将每条记录解析出 IP 地址。它捕获了 5 种异常(NoNameservers、NoAnswer、NXDOMAIN、Timeout 等),保证单个查询失败不影响整个流程。

2. 通配符检测:随机域名探测法

action_wild_cards()的原理非常聪明:生成一个 15 位随机字符串(如A3K9X...),查询随机串.目标域名的 DNS 记录。如果返回 NXDOMAIN 说明没有通配符;如果返回了解析结果,说明该域名配置了*.domain通配记录,所有子域名都会解析到同一个 IP。

3. 子域名暴力枚举:8 线程并行爆破

action_brute_start()使用multiprocessing.dummy的 ThreadPool 开启 8 个线程,对字典中的每个子域名并发发起 DNS 查询,命中就记录子域名 IP的格式。

面对通配符时,action_brute_wild()会先生成 10 个随机子域名,收集所有通配返回的 IP 集合,再过滤掉解析到这些"假 IP"的枚举结果——实现通配符欺骗的自动绕过,这也是 Bluto 应对通配符场景的核心技巧。

4. DNS 区域传送检测:最危险的配置错误

action_zone_transfer()对每个 NS 服务器尝试 AXFR 请求。若dns.zone.from_xfr()成功,说明该 NS 存在区域传送漏洞,攻击者可获得整份 DNS 区域数据(所有主机记录)。源码中会 dump 全部记录并排序去重,输出为Raw Zone Dump

五、被动信息收集:search.py 与情报聚合

search.py 实现了被动收集层:

  • NetCraft 被动收集:爬取 searchdns.netcraft.com 的公开子域名记录
  • Google / Bing 邮箱枚举:用@"域名"语法搜索,正则提取邮箱
  • LinkedIn 员工枚举:按公司名搜索员工信息
  • EmailHunter API:传-api参数可获得更多邮箱来源
  • HaveIBeenPwned 核查action_pwned()对每个邮箱查询泄露记录

值得留意的是,所有请求都会从 user_agents.txt 中随机选取 User-Agent,并通过 countries.txt 匹配就近的 Google 服务器,降低被验证码拦截的概率。

六、结果输出与 HTML 证据报告

output.py 负责把分散的数据汇总为一份证据链:

  • 去重合并所有邮箱与来源 URL
  • 统计主机数、邮箱数、员工数、泄露账户数
  • 调用write_html()生成Bluto-Evidence-域名.html证据报告,包含邮箱证据表、LinkedIn 资料、泄露账户详情和元数据挖掘结果

七、上手体验与总结

想体验这套 DNS 侦察工具,可以克隆仓库后运行:

git clone https://gitcode.com/gh_mirrors/bl/Bluto

Bluto 的源码价值在于它演示了一条完整的被动 + 主动侦察流水线:先被动收集(NetCraft、搜索引擎),再主动验证(枚举、区域传送),最后交叉去重并输出证据报告。对安全初学者而言,读懂 get_dns.py 的通配符绕过算法和 bluto 的多线程调度,就等于掌握了 DNS 信息收集工具的核心设计思想。💡

📌 提醒:DNS 侦察与枚举工具请务必仅用于自己拥有或已获授权的目标,合法合规地使用技术能力。

【免费下载链接】BlutoDNS Recon | Brute Forcer | DNS Zone Transfer | DNS Wild Card Checks | DNS Wild Card Brute Forcer | Email Enumeration | Staff Enumeration | Compromised Account Checking项目地址: https://gitcode.com/gh_mirrors/bl/Bluto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 18:45:41

同城招聘求职小程序系统开发方案

同城招聘求职小程序系统开发方案同城招聘求职小程序是聚焦本地用工、就近求职的轻量化服务系统,主打本地岗位展示、精准职位匹配、简历投递、在线沟通、面试预约、用工核验等核心功能,适配同城蓝领、兼职、全职、短期用工等多元化求职场景。相较于传统招…

作者头像 李华
网站建设 2026/8/19 18:40:52

Templater 插件入门指南:让 Obsidian 模板学会自动填表

Templater 插件入门指南:让 Obsidian 模板学会自动填表 【免费下载链接】Templater A template plugin for obsidian 项目地址: https://gitcode.com/gh_mirrors/te/Templater 周一早上,你打开 Obsidian 准备新建一篇复盘笔记:先敲下标…

作者头像 李华
网站建设 2026/8/19 18:39:22

NeoEloquent 软删除详解:如何安全地删除图数据库节点

NeoEloquent 软删除详解:如何安全地删除图数据库节点 【免费下载链接】NeoEloquent The Neo4j OGM for Laravel 项目地址: https://gitcode.com/gh_mirrors/ne/NeoEloquent 在开发基于 Neo4j 的 Laravel 应用时,NeoEloquent 软删除(So…

作者头像 李华