1.DNS解析详细步骤
DNS(域名系统)解析是互联网上用于将人类可读的域名(如 www.example.com
)转换为机器可读的IP地址(如 192.0.2.1
)的过程。以下是DNS解析的详细步骤:
-
用户输入域名:用户在浏览器地址栏输入一个域名。
-
查询本地DNS缓存:操作系统首先检查本地DNS缓存,看是否有该域名的IP地址记录。如果有,直接返回结果。
-
递归查询:如果本地缓存中没有记录,操作系统将向配置的本地DNS服务器发起递归查询。
-
根DNS服务器查询:本地DNS服务器如果也没有缓存该域名的IP地址,它会向根DNS服务器发送查询请求。
-
顶级域DNS服务器查询:根DNS服务器返回顶级域(TLD)服务器的地址,例如
.com
、.org
等。本地DNS服务器随后向相应的TLD服务器查询。 -
权威DNS服务器查询:TLD服务器返回该域名的权威DNS服务器地址。本地DNS服务器再向权威DNS服务器查询。
-
获取IP地址:权威DNS服务器返回域名对应的IP地址。本地DNS服务器将这个IP地址返回给发起查询的客户端。
-
返回结果:用户计算机接收到IP地址后,将其缓存起来,以备将来使用,并开始建立与该IP地址的连接。
-
建立连接:用户计算机使用IP地址与目标服务器建立TCP连接,并开始数据传输。
-
缓存记录:本地DNS服务器也会将查询结果缓存起来,以减少对权威DNS服务器的查询次数,提高解析效率。
2.绕过CDN查找主机真实IP的方法
0x01 验证是否存在CDN
方法1:
使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,若不唯一则大概率使用了CDN, 多地 Ping 网站有:
多个地点Ping服务器,网站测速 - 站长工具
网站测速工具_超级ping _多地点ping检测 - 爱站网
http://ce.cloud.360.cn/
方法2:
使用 nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN。
0x02 绕过 CDN 查找网站真实 IP
方法1:查询历史DNS记录
1)查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
https://dnsdb.io/zh-cn/ ###DNS查询
微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区 ###微步在线
http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询
http://viewdns.info/ ###DNS、IP等查询
全球 CDN 服务商查询_专业精准的IP库服务商_IPIP ###CDN查询IP
2)利用SecurityTrails平台,攻击者就可以精准的找到真实原始IP。他们只需在搜索字段中输入网站域名,然后按Enter键即可,这时“历史数据”就可以在左侧的菜单中找到。
方法2:查询子域名
毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
下面介绍些常用的子域名查找的方法和工具:
1)微步在线(微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区)
上文提到的微步在线功能强大,黑客只需输入要查找的域名(如baidu.com),点击子域名选项就可以查找它的子域名了,但是免费用户每月只有5次免费查询机会。
2)Dnsdb查询法。(https://dnsdb.io/zh-cn/)
黑客只需输入baidu.com type:A就能收集百度的子域名和ip了。
3)Google 搜索
Google site:baidu.com -www就能查看除www外的子域名。
4)各种子域名扫描器
这里,主要为大家推荐子域名挖掘机和lijiejie的subdomainbrute(https://github.com/lijiejie/subDomainsBrute)
子域名挖掘机仅需输入域名即可基于字典挖掘它的子域名。
方法3:网络空间引擎搜索法
常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
3.子域名信息收集常用手段
1. 查找目标主域名
搜索引擎:通过百度、谷歌等搜索引擎直接搜索目标组织的名称,通常可以直接找到其官网,进而获取主域名。
2. 查找目标所有关联域名
2.1 备案查询
官方备案网站:如工信部ICP备案系统、chinaz、等,通过主域名查备案,获得域名所属公司名称,再搜索该公司名称以获取其所有注册域名。
2.2 企业关系查询
企业信息查询平台:如天眼查、爱企查、企查查等,通过查看股权穿透图来查找子公司,并收集其子公司的域名。
2.3 Whois反查关联域名
Whois查询网站:如Whois.chinaz.com,通过同一公司的域名可能使用同一邮箱注册的信息进行反查。
2.4 官网等方式查关联域名
官网架构图:目标企业的官网有时会列出子公司的介绍和官网链接,通过这些信息可以直接获取子域名。
3. 收集子域名
3.1 证书透明度查询
证书透明度查询网站:如crt.sh、Censys、SSLmate、Facebook CT等,由于许多企业域名使用HTTPS协议,TLS证书中通常包含域名信息,可以通过查询证书透明度来收集子域名。
3.2 在线子域名查询网站
子域名查询网站:如SecurityTrails、IP138、Chinaz、dnsscan.cn等,输入域名即可获取子域名列表。
3.3 威胁情报平台
威胁情报平台:如ThreatBook、VirusTotal、AlienVault OTX、RiskIQ、ThreatMiner等,通过这些平台可以收集到目标组织的子域名信息。
3.4 搜索引擎
搜索引擎语法:使用Google等搜索引擎,结合site:语法(如site:example.com)来限制搜索结果,从而获取子域名信息。
3.5 爬虫爬取
爬虫技术:通过编写爬虫程序,爬取目标网站的所有页面、robots.txt文件、crossdomain.xml文件、sitemap文件等,从中筛选出子域名。
3.6 DNS记录查询
工具如nslookup:使用nslookup等工具查询域名的SRV、NS、MX、TXT等记录,以收集子域名信息。但这种方法收集的域名有限。
3.7 自动化工具
自动化工具:如Subfinder、OneForAll、Layer子域名挖掘机等,这些工具通过多个API和字典枚举的方式自动化收集子域名。
3.8 DNS历史记录查询
DNS历史记录查询服务:如SecurityTrails、DNSdumpster.com、WhoisXML、PassiveTotal等,通过查询过去DNS解析记录的服务,可以查找目标组织过去使用过的子域名。这种方法有时能发现已被删除但仍解析到目标组织的子域名。
3.9 从JS文件发现子域名
JS文件分析:许多网站在JS文件中会包含子域名的信息,通过分析JS文件可以挖掘出子域名。可以使用专门的脚本或工具(如JSFinder)来自动化这一过程。
3.10 子域名爆破
子域名爆破工具:使用如Sublist3r、Amass、Subfinder、Assetfinder等工具,通过字典或其他方法生成可能的子域名列表,并对列表中的每个子域名进行DNS解析以确定其是否存在。
工具推荐
Subfinder:集成了多个API接口进行自动化搜索子域名信息,收集速度快。
OneForAll:功能强大的子域收集工具,支持多种搜索方式。
Layer子域名挖掘机:扫描结果依赖于字典的强大性,适合使用自定义字典进行深度挖掘。
Sublist3r:简单易用的子域名枚举工具,支持多线程枚举。
KSubdomain:无状态子域名爆破工具,支持高并发DNS爆破,速度快。
4.nmap扫描本机端口
-p-
表示扫描所有端口(1-65535)。-sS
表示使用SYN扫描(半开放扫描),这是一种快速且不易被检测的扫描方式。-T4
表示设置扫描的时间模板为“Aggressive”,这是最快的扫描速度。
SYN半开扫描原理:
-
发起SYN包:扫描器向目标主机的特定端口发送一个TCP SYN(同步序列编号)包。这是TCP三次握手过程的第一步,用来建立一个TCP连接。
-
等待响应:如果目标端口是开放的,目标主机将回复一个SYN-ACK(同步确认)包,表示它已经接收到连接请求并准备建立连接。
-
发送RST包:扫描器在接收到SYN-ACK包后,会发送一个RST(重置)包到目标主机,以终止连接过程。这是因为SYN扫描的目的只是确定端口是否开放,而不是真正建立一个完整的TCP连接。
-
分析响应:
- 如果端口是开放的,目标会回复SYN-ACK。
- 如果端口是关闭的,目标会回复RST。
- 如果端口是过滤的(被防火墙过滤),可能不会收到任何响应,或者收到一个ICMP不可达消息。
避免建立完整连接:SYN扫描不会完成TCP三次握手的第三步,即发送ACK确认包。这样可以避免在目标系统上创建完整的TCP连接,减少对目标系统的影响。
5.dirmap目录探测工具实践
不一样的原因:
动态内容:网站的内容和服务可能随着时间动态变化,比如新页面或目录的添加、旧页面的删除或移动等。这些变化会直接影响Dirmap扫描时能够发现的条数。
负载与响应:网站在不同时间段的负载情况也会影响扫描结果。如果网站在扫描时负载较高,响应速度可能变慢,甚至某些页面或目录无法及时响应,导致扫描条数减少。