子域名收集全攻略 —— 实用工具、技巧与实战案例详解
在网络安全、资产管理和信息收集领域,子域名收集是一项基础且关键的任务。通过全面地发现目标域名下的子域名,可以揭露更多隐藏资产、辅助漏洞挖掘或攻击面分析。本文结合多款实用工具和方法,系统阐述子域名的收集技巧,并通过详细代码示例演示实际操作和结果分析,助您快速掌握子域名收集的精髓。
一、子域名收集概述
子域名是主域名下的分支,比如example.com
的子域名可能是blog.example.com
、shop.example.com
等。全面收集子域名有助于安全研究、资产管理和攻击面扫描。
收集子域名的常见方法包括:
-
• DNS查询(正向解析) -
• 字典暴力枚举 -
• 利用搜索引擎(Google、Baidu等)特定语法查询 -
• 利用第三方工具和API -
• 分析证书透明日志
二、实用工具介绍及安装配置
1. 基于Node.js的子域名收集工具示例 —— subfinder
subfinder 是流行的开源子域名枚举工具,基于Go语言,但示范的安装与运行理念同样适用Node.js工具。
安装(示例以Linux为例)
# 安装Go环境(如未安装)
sudo apt update && sudo apt install golang-go -y
# 下载 subfinder
git clone https://github.com/projectdiscovery/subfinder.git
cd subfinder/v2/cmd/subfinder
# 编译
go build
# 运行(示例)
./subfinder -d example.com
Node.js工具安装示例(以subdomain-enum
为例)
# 安装Node.js环境(示例Ubuntu)
sudo apt update
sudo apt install nodejs npm -y
# 安装工具
npm install -g subdomain-enum
# 运行示例
subdomain-enum example.com
2. “猪猪侠”开发的.NET工具(示例)
该工具基于.NET Framework 4.0,需要Windows环境。
-
• 下载工具压缩包,解压 -
• 确认安装.NET Framework 4.0或以上版本 -
• 运行 *.exe
文件即可使用
三、DNS扫描与域名枚举工具实战
以下示例以一个自制的Node.js脚本为例,展示如何利用DNS查询和暴力枚举方法进行子域名收集。
代码示例:基于Node.js的简单子域名枚举器
const dns = require('dns');
const fs = require('fs');
const domain = 'example.com';
const wordlist = ['www', 'mail', 'ftp', 'dev', 'test']; // 简单字典
asyncfunctionresolveDomain(subdomain) {
returnnewPromise((resolve) => {
dns.resolve4(subdomain, (err, addresses) => {
if (err) returnresolve(null);
resolve(addresses);
});
});
}
(async () => {
let results = [];
for (let sub of wordlist) {
const fullDomain = `${sub}.${domain}`;
const addresses = awaitresolveDomain(fullDomain);
if(addresses) {
console.log(`[FOUND] ${fullDomain} -> ${addresses.join(', ')}`);
results.push({subdomain: fullDomain, ips: addresses});
} else {
console.log(`[MISS] ${fullDomain}`);
}
}
fs.writeFileSync('subdomains.json', JSON.stringify(results, null, 2));
console.log('子域名收集完成,结果已保存到 subdomains.json');
})();
运行结果
[FOUND] www.example.com -> 93.184.216.34
[MISS] mail.example.com
[MISS] ftp.example.com
[MISS] dev.example.com
[MISS] test.example.com
子域名收集完成,结果已保存到 subdomains.json
说明
-
• 该脚本通过简单字典对目标域名进行DNS A记录查询。 -
• 查询成功的子域名及对应IP被保存为JSON文件,方便后续分析。 -
• 现实使用中可结合更大字典、异步并发优化扫描速度。
四、识别CDN服务及多IP域名的技巧
部分网站通过CDN(如Cloudflare、阿里云CDN)隐藏真实服务器IP。判断CDN的常用方法:
-
• DNS解析IP多样性:CDN通常返回多个不同的IP地址。 -
• 使用站长工具:如站长之家、爱站网等查询域名IP及DNS信息。 -
• 分析DNS CNAME记录:带有CDN厂商标识的CNAME通常表示使用CDN。 -
• 利用在线工具:例如“白帽子蜘蛛侠”等安全工具,查看域名解析详情。
五、搜索引擎辅助子域名挖掘
利用Google、Baidu等搜索引擎的特定语法,可以发现公开网页中提及的子域名。
常用语法示例
|
|
|
site:example.com |
|
site:example.com |
site:*.example.com |
|
site:*.example.com |
"example.com" |
|
"example.com" |
inurl:subdomain |
|
inurl:dev.example.com |
搜索工具示例
-
• 使用已有的子域名枚举工具支持搜索引擎API调用 -
• 结合爬虫技术爬取搜索结果页,提取子域名信息
六、面对IP封禁与长时间扫描的应对策略
-
• 合理控制扫描速率,避免触发目标防护机制 -
• 使用代理IP池,分散请求来源 -
• 分区域分时段扫描,降低持续压力 -
• 记录和导出扫描结果,避免重复扫描浪费时间 -
• 利用数据库或Excel管理扫描数据
七、进阶:扫描端口与Web服务信息获取
部分工具支持扫描子域名对应IP的常用端口,获取服务器服务信息。
工具示例
-
• nmap
:常用端口扫描工具 -
• 自制脚本结合 net
模块或第三方库进行端口检测
八、总结与推荐资源
本文结合多种工具和方法,从基础的DNS查询、字典爆破,到搜索引擎辅助,再到CDN识别和扫描策略,全面覆盖了子域名收集的实战技巧。
推荐工具汇总
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
原文始发于微信公众号(网络安全者):2025渗透测试零基础学习 -- 子域名收集全攻略
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论