一、DNS解析详细步骤
1. 客户端请求
- 用户在浏览器中输入一个域名,如
www.example.com
,并尝试访问该网站。
2. 检查本地缓存
- 客户端(通常是用户的计算机或移动设备)首先会检查其本地缓存(包括浏览器缓存和操作系统缓存,如Windows的
C:\Windows\System32\drivers\etc\hosts
文件或Linux的/etc/hosts
文件)中是否已经有该域名的解析记录。- 如果有,则直接使用缓存中的IP地址访问网站,解析过程结束。
- 如果没有,则继续下一步。
3. 查询本地DNS服务器
- 客户端将域名解析请求发送给本地网络中的DNS服务器(通常由互联网服务提供商ISP提供)。
- 本地DNS服务器也会检查其缓存中是否有该域名的解析记录。
- 如果有,则直接将IP地址返回给客户端。
- 如果没有,则继续向上查询。
4. 查询根域名服务器
- 如果本地DNS服务器无法解析该域名,它会向根域名服务器发送查询请求。
- 根域名服务器是DNS系统的顶级服务器,负责管理所有顶级域名(如.com、.net、.org等)的服务器地址。
- 根域名服务器会返回给本地DNS服务器一个或多个顶级域名服务器的地址。
5. 查询顶级域名服务器
- 本地DNS服务器根据根域名服务器提供的地址,向相应的顶级域名服务器发送查询请求。
- 顶级域名服务器会检查其管理的域名信息,并返回给本地DNS服务器该域名对应的权威域名服务器(Name Server)的地址。
6. 查询权威域名服务器
- 本地DNS服务器再向权威域名服务器发送查询请求。
- 权威域名服务器是负责该域名解析的最终服务器,它存储着域名与IP地址的映射关系。
- 权威域名服务器将域名对应的IP地址返回给本地DNS服务器。
7. 缓存并返回结果
- 本地DNS服务器将解析结果(IP地址)缓存起来,以便将来对该域名的查询可以更快地响应。
- 同时,本地DNS服务器将IP地址返回给客户端。
二、绕过CDN查找主机真实IP的方法
1. DNS 记录查找
- DNS A 记录:尝试查找 DNS 记录中的 A 记录,有时主机的真实 IP 可能会在这些记录中泄露。
- DNS 反向查询:对域名进行反向 DNS 查找,可能会发现与 CDN 不同的 IP 地址。
2. 使用 CDN 记录
- CDN 提供商的 IP 范围:通过检查 CDN 提供商的 IP 地址范围,并验证是否有异常的 IP 地址。可以通过 Cloudflare IP 地址列表 或其他 CDN 提供商的文档找到这些信息。
3. 子域名和域名关联
- 子域名扫描:检查是否存在未通过 CDN 保护的子域名,这些子域名可能会暴露主机的真实 IP 地址。
4. 证书透明度日志
- 证书透明度查询:检查 SSL/TLS 证书透明度日志,有时证书可能包括主机的真实 IP 地址。可以使用 crt.sh 进行查询。
5. 网络扫描
- 端口扫描:尝试对目标进行端口扫描,看是否可以找到与 CDN 以外的 IP 地址相关的服务。这可以使用工具如
Nmap
实现。
6. HTTP 头分析
- HTTP 响应头:有时 HTTP 响应头中可能包含与真实 IP 地址相关的信息。检查
X-Forwarded-For
、X-Real-IP
等头信息可能有帮助。
7. 利用域名和 IP 关联
- 网络流量分析:通过监控和分析流量,查看是否可以识别与主机真实 IP 相关的流量模式。
8. 利用第三方服务
- Shodan:使用 Shodan 等服务搜索可能暴露的 IP 地址。
- Censys:通过 Censys 查找与目标域名相关的 IP 地址。
9. 社交工程学和信息泄露
- 公司信息和公开资源:通过公司公开的文档、招聘信息或技术博客等途径,可能会找到关于主机真实 IP 的线索。
10. 实验和测试
- 利用应用程序漏洞:如果目标存在应用程序漏洞,可以尝试通过这些漏洞间接获得真实 IP 地址。
三、子域名信息收集常用手段
1. DNS 查询
- DNS 解析:通过查询 DNS 记录,尤其是
NS
(Name Server)、A
(Address)、CNAME
(Canonical Name)等记录,获取子域名信息。 - DNS Brute Force:使用字典攻击方式,通过大量的可能子域名尝试进行 DNS 查询。
2. 在线工具
3. 搜索引擎
- Google 搜索:使用
site:example.com
等高级搜索查询,寻找公开的子域名。 - 特定搜索引擎:例如 Crt.sh、Cert Spotter 等可以查询证书透明度日志来获取子域名信息。
4. 证书透明度日志
- Certificate Transparency:利用公共证书透明度日志获取到已发布的 SSL/TLS 证书中包含的子域名信息。
5. 网络爬虫
- 网络扫描:如 Subdomain Enumeration 工具可以扫描和枚举子域名。
6. 社交工程学
- 信息泄露:从泄露的文档、公司报告、招聘信息等中提取潜在的子域名。
7. WHOIS 查询
- 域名注册信息:查询域名的 WHOIS 记录,有时可以从注册信息中找到相关子域名的信息。
8. 网络监控和分析
- 流量分析:通过分析网络流量,发现可能的子域名。
四、Nmap全端口扫描
1. 准备Nmap环境
2. Pikachu靶场搭建
3. 使用Nmap进行端口扫描
-
21号端口:FTP (File Transfer Protocol)
- 用于文件传输。FTP是早期的互联网文件传输协议,通过它可以上传或下载文件。
-
80号端口:HTTP (Hypertext Transfer Protocol)
- 用于网页浏览。HTTP是万维网的基础协议,当你在浏览器中输入网址并按下回车键时,浏览器就会通过80端口向服务器发送请求,服务器则返回网页数据。
-
135号端口:RPC (Remote Procedure Call) endpoint mapper
- RPC是一种允许程序调用另一个地址空间(通常是另一台机器上)的过程的协议。135端口是RPC endpoint mapper使用的端口,它用于定位其他RPC服务。
-
137、139号端口:NetBIOS over TCP/IP
- NetBIOS是一种在局域网中提供命名服务和共享资源的协议。137端口用于名字服务,139端口用于会话服务。
-
445号端口:SMB (Server Message Block)
- SMB是用于文件共享和打印服务的网络协议。Windows系统广泛使用SMB协议。
-
903号端口:Windows Installer
- 用于Windows Installer服务,主要用于安装和配置Windows软件。
-
913号端口:通常是自定义服务或未分配的端口
- 具体作用取决于具体的网络环境和配置。如果没有特殊说明,一般认为是自定义服务或未分配的端口。
4. SYN半开扫描的原理
SYN包是TCP连接过程中的一个包,在三次握手中的第一步。当服务器收到SYN包时,它会回应一个SYN-ACK包,表示它已经收到了连接请求,并准备好接收更多的数据。在半开扫描中,扫描器不会回应最后的ACK包,也不会完成连接的建立。服务器由于没有收到最后的ACK,会继续等待原始的SYN发起者的响应,从而可以在其日志中记录下这个半开的连接,这可以作为端口开放的证据。
5. 跳过主机存活检测扫描
通常Nmap在进行高强度的扫描时是用它确定正在运行的机器。 默认情况下,Nmap只对正在运行的主机(也就是存活的主机)进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。-P0
的第二个字符是数字0而不是字母O。 跳过正常的主机发现继续执行所要求的功能,就好像每个IP都是活动的,也就是每个IP都是存活的。
所以可以使用-P0
禁用ping的探测,从而跳过主机发现即存活的检测
五、dirmap目录探测工具实践
1. 打开Dirmap
2. 探测网站
3. 为什么dirmap每次扫描条数不一样
Dirmap具有一些高级特性,如能够爬取页面并动态生成字典。这意味着在扫描过程中,它会根据目标网站的实际情况动态调整请求,从而可能导致扫描条数的变化。