当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4104164.html

相关文章:

  • 同城招聘求职小程序系统开发方案
  • instagram-location-search × instagram-scraper联动实战:批量下载指定地点全部照片
  • 全向轮机器人运动学:雅可比矩阵如何连接轮速与世界速度?
  • Templater 插件入门指南:让 Obsidian 模板学会自动填表
  • 中文输出优化攻略:如何调教LFM2.5-1.2B-Instruct-6bit说出地道中文
  • NeoEloquent 软删除详解:如何安全地删除图数据库节点
  • 磁盘空间告急?免费开源工具 czkawka 帮你快速清理重复文件、相似图片与空文件夹
  • 图像格式转换如何一键搞定?oiiotool入门实操全指南
  • 告别丑终端与视觉疲劳:iTerm2配色方案完整指南,450+主题轻松打造专属工作台
  • Bluto性能调优:3个技巧缩短子域名爆破扫描时间
  • Teable日历视图:3个关键动作,把排期从电子表格搬进可拖拽的调度台
  • 计算机毕业设计之基于Python的宠物托管系统
  • 保姆级Kindle漫画转换指南:我用KCC把漫画装进墨水屏的完整旅程
  • 游戏串流入门到精通:用Sunshine自建串流服务器,低配设备也能玩3A大作
  • 奇点智能大会从个人提效到团队级 AI 原生研发流程:组织面对的 5 个具体挑战
  • 零基础ExplorerPatcher安装教程:让Windows 11找回Windows 10经典体验
  • Harper 语法检查工具完整指南:离线、开源、毫秒级反馈的英文写作助手
  • HomeAssistant 蓝牙室内定位终极指南:Bermuda 从零到一实现房间级追踪
  • 【单片机毕业设计】基于 DHT11 传感器的单片机温湿度智能预警系统设计 基于 STM32 或 51 单片机的温湿度参数可调报警装置与 APP 开发(024403)
  • 写作压力小了!2026年最值得拥有的专业降AI率软件
  • AI Agent 是怎么选中正确 Skill 的?一文拆解“意图理解→向量检索→LLM 决策”全流程
  • 3个技巧,用Loop径向菜单把Mac窗口管理效率翻倍
  • 免费 OBS 抠像插件 obs-backgroundremoval 完整使用教程:告别绿幕,一个插件搞定直播背景
  • Obsidian Kanban插件完整指南:WIP限制与看板存档管理从入门到精通
  • AmplifyJS 源码解析:amplify.store 特性检测与 JSON 序列化设计
  • 实测数据公开:Voxtral-Mini-4B-Realtime-2602-NPU 在昇腾910B4上的吞吐量与延迟报告
  • 零基础打造ESP32无人机:5个关键步骤快速实现组装与首飞
  • 从零复现 gr00t17-lerobot-libero_goal-640:20,000 步微调 GR00T N1.7 的完整训练管线指南
  • Chat2DB:免费开源的数据库客户端,一次装好管 40+ 种数据库,还能让 AI 替你写 SQL
  • Una UI配置完全指南:nuxt.config与app.config的12个关键配置项