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

📅 2026/8/19 18:47:47
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/BlutoBluto 是一款开源的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 密钥然后依次执行域名合法性校验whois 查询获取公司名DNS 详情收集NS / MXNetCraft 被动子域名收集区域传送漏洞检测最巧妙的是Bluto 用Python 多线程 Queue 队列并行执行 Google、Bing、LinkedIn 搜索和文档挖掘任务例如t1 threading.Thread(targetaction_google, args(domain, userCountry, userServer, q1, user_agents, prox)) t2 threading.Thread(targetaction_bing_true, args(domain, q2, user_agents, prox)) t3 threading.Thread(targetaction_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/BlutoBluto 的源码价值在于它演示了一条完整的被动 主动侦察流水线先被动收集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),仅供参考