一.DNS解析详细步骤
1. 浏览器缓存
当你在浏览器中输入一个域名(例如:www.example.com)时,浏览器首先会检查其缓存中是否有该域名对应的IP地址。如果有,它会直接使用这个IP地址来访问网站。这一步骤可以显著加快访问速度,因为它避免了网络查询。
2. 操作系统缓存
如果浏览器缓存中没有找到,操作系统会检查其DNS缓存中是否有该域名的IP地址。操作系统缓存是一个临时存储区域,用于保存最近查询过的域名和IP地址的映射关系。
3. 本地hosts文件
如果操作系统缓存中也没有找到,系统会检查本地的hosts文件。这个文件位于操作系统的特定目录下(例如,在Windows系统中是C:\Windows\System32\drivers\etc\hosts),可以手动配置,将特定域名映射到特定IP地址。这个文件的优先级高于DNS查询。
4. 本地DNS服务器
如果上述步骤都没有找到,系统会向配置的本地DNS服务器发送查询请求。这个DNS服务器通常由你的ISP(互联网服务提供商)提供。它会首先检查自己的缓存,如果没有找到结果,它会继续进行查询。
5. 递归查询
如果本地DNS服务器没有缓存该域名的IP地址,它会以递归查询的方式向根域名服务器发送请求。递归查询意味着本地DNS服务器会代表用户进行所有的查询,直到找到最终的IP地址。
6. 根域名服务器
根域名服务器是DNS系统的顶层服务器,负责管理顶级域名(如.com、.net、.org等)。根域名服务器不会直接返回域名的IP地址,而是返回顶级域名服务器(TLD服务器)的地址。例如,对于www.example.com,根域名服务器会返回负责.com域的TLD服务器地址。
7. 顶级域名服务器(TLD服务器)
本地DNS服务器向TLD服务器发送查询请求,TLD服务器会返回负责该域名的权威DNS服务器的地址。例如,TLD服务器会返回负责example.com的权威DNS服务器地址。
8. 权威DNS服务器
本地DNS服务器向权威DNS服务器发送查询请求,权威DNS服务器会返回该域名的最终IP地址。例如,权威DNS服务器会返回www.example.com的IP地址。
9. 返回结果
本地DNS服务器将查询结果返回给用户的计算机,用户的计算机将该结果缓存起来,以便下次使用。这个缓存过程可以显著提高后续访问同一域名的速度。
10. 访问网站
浏览器使用获取到的IP地址访问目标网站,建立连接并加载网页内容。这个过程包括发送HTTP请求、接收服务器响应、解析HTML、加载资源(如CSS、JavaScript、图片等)并渲染页面。
*递归查询与迭代查询
递归查询:在递归查询中,本地DNS服务器会代表用户进行所有的查询,直到找到最终的IP地址。这意味着本地DNS服务器会依次查询根域名服务器、TLD服务器和权威DNS服务器。
迭代查询:在迭代查询中,本地DNS服务器会逐步将查询结果返回给用户的计算机,用户的计算机再根据返回的结果继续查询下一层服务器。
二.绕过CDN查找主机真实IP的方法
1. 查询历史DNS记录
历史DNS记录可以揭示域名在使用CDN之前的IP地址。以下是具体步骤:
使用在线工具:访问https://www.itdog.cn/dns/
输入目标域名:在搜索框中输入你要查询的域名。
查看历史记录:查看返回的历史DNS记录,找到未使用CDN时的IP地址。
2. 查询子域名
有些子域名可能没有使用CDN,通过查询这些子域名的IP地址,可以找到主机的真实IP。具体步骤如下:
使用DNS查询工具:如Nslookup、Dig等。
输入子域名:查询目标域名的常见子域名(如mail.example.com、ftp.example.com)。
分析结果:查看返回的IP地址,找到未使用CDN的子域名。
3. 网络空间引擎搜索
网络空间搜索引擎可以帮助你找到使用CDN的网站的真实IP地址。具体步骤如下:
访问Shodan、Fofa或ZoomEye:这些搜索引擎专门用于网络设备和服务的搜索。
输入目标域名或相关关键词:如域名、服务器类型等。
分析搜索结果:查看返回的IP地址,找到可能的真实IP。
4. 利用SSL证书
SSL证书中包含的域名和子域名信息可以帮助你找到原始服务器的IP地址。具体步骤如下:
访问Censys:这是一个专门用于SSL证书搜索的引擎。
输入目标域名:搜索与目标域名相关的SSL证书。
查看证书详情:分析证书中的域名和IP地址信息。
5. 利用HTTP标头
有些网站在返回的HTTP标头中可能会泄露真实IP地址。具体步骤如下:
使用抓包工具:如Wireshark、Fiddler等。
访问目标网站:通过浏览器或命令行工具(如curl)访问目标网站。
分析HTTP标头:查看返回的HTTP标头,寻找可能的真实IP地址。
6. 使用国外主机解析域名
有些CDN厂商只在国内提供服务,通过使用国外的DNS解析服务,可以获取到真实IP。具体步骤如下:
使用国外DNS解析服务:如Google Public DNS(8.8.8.8)、Cloudflare DNS(1.1.1.1)。
配置DNS服务器:在操作系统或路由器中配置上述DNS服务器。
查询目标域名:使用Nslookup或Dig工具查询目标域名,查看返回的IP地址。
7. 网站漏洞查找
有些网站可能存在配置错误或漏洞,通过这些漏洞可以直接获取到真实IP。具体步骤如下:
使用漏洞扫描工具:如Nmap、OpenVAS等。
扫描目标网站:查找可能存在的配置错误或漏洞。
分析扫描结果:查看返回的IP地址和漏洞信息。
8. 全网扫描
使用工具如Zmap或Masscan对整个互联网进行扫描,针对扫描结果进行关键字查找,可以获取网站的真实IP。具体步骤如下:
安装Zmap或Masscan:这些工具可以在Linux系统上运行。
配置扫描参数:设置目标IP范围和端口。
执行扫描:运行扫描命令,获取扫描结果。
分析结果:根据目标域名或相关关键词过滤扫描结果,找到可能的真实IP。
这些方法可以帮助你绕过CDN找到主机的真实IP,但请注意,这些技术应在合法和道德的范围内使用。
三.子域名信息收集常用手段
子域名信息收集在渗透测试中至关重要,既能完善信息,又能扩大攻击面。以下是一些常用的子域名收集方法:
1. 搜索引擎:利用搜索引擎的强大功能,我们可以搜索相关的子域名。常用的搜索引擎包括Google、Bing等²。
2. 域名注册商:大多数域名注册商都会提供域名管理界面,其中可以查看已注册的子域名。通过访问域名注册商的网站并登录账号,即可查看完整的域名列表。
3. DNS记录:DNS记录中包含了许多有关域名的信息,其中也包括子域名。通过查询DNS记录,可以获取到子域名的相关信息。
4. 第三方工具:许多第三方工具可以帮助我们快速收集子域名,如DNSdumpster、Sublist3r等。
5. 子域名枚举:利用自动化工具和脚本来枚举子域名。
6. 漏洞扫描:通过漏洞扫描工具来查找子域名。
7. 社交工程:利用社交媒体和论坛等平台,通过发布虚假信息或钓鱼等方式来获取目标网站的子域名。
请注意,在进行信息收集时,必须遵守相关法律法规和道德规范。
四.Nmap全端口扫描
先打开自己搭建的pikachu靶场
然后将靶场的IP输入Nmap的Target栏中,Profile选择Intense scan,Command中可以设定扫描的一些属性:
-Tx为扫描的速度,x为1-5,由慢到快,注意:速度太快容易使服务器被破坏,一版情况下3-4即可。
-A为扫描操作系统和路由跟踪
-v为加强扫描
此外还有,-O探测操作系统、-sN TCP空扫描欺骗防火墙、–iflist 显示接口和路由信息、-sA 探测防火墙、-sP 探测在线主机、-r 按顺序扫描、-sV 查看服务的版本、-sS 隐蔽扫描
点击“Scan”即可开始扫描
扫描结果如下
可以看到有八个开放端口
SYN半开扫描的原理
SYN半开扫描(也称为半连接扫描)是一种常用的端口扫描技术,用于探测目标主机上哪些端口是开放的。其原理如下:
1.发送SYN包:扫描器向目标主机的指定端口发送一个SYN(同步)数据包。这是TCP三次握手的第一步。
2.等待响应:
如果目标端口开放,目标主机会回复一个SYN/ACK(同步/确认)数据包。
如果目标端口关闭,目标主机会回复一个RST(复位)数据包。
3.不完成握手:收到SYN/ACK后,扫描器不会发送ACK(确认)数据包来完成握手,而是发送一个RST包来终止连接。这就是为什么称其为“半开”扫描,因为它不完成整个TCP连接过程。
这种扫描方式的优点包括:
隐蔽性强:由于不完成三次握手,目标主机通常不会记录这种扫描行为,因此难以被检测到。
效率高:相比于全连接扫描,SYN半开扫描速度更快,因为它不需要完成整个连接过程。
不过,这种扫描也有一些限制:
需要管理员权限:发送自定义的SYN包通常需要管理员权限。
可能被防火墙或入侵检测系统(IDS)拦截:一些高级防护系统能够检测并阻止这种扫描行为
跳过主机存活检测扫描使用常见
1.Nmap的-Pn选项:
使用-Pn选项可以跳过主机存活检测,直接进行端口扫描。这在目标主机不响应Ping请求时非常有用。
示例命令:nmap -Pn 192.168.1.112.
2.Masscan的--ping选项:
Masscan是一种高速端口扫描工具,可以使用--ping选项跳过Ping探测。
示例命令:masscan 192.168.1.0/24 --ping3.
3.fscan工具:
fscan是一款综合扫描工具,可以使用-np选项跳过存活检测。
示例命令:fscan -h 192.168.1.1/24 -np
五.dirmap目录探测工具实践
从drimap目录中打开cmd
输入“python dirmap.py -h”即可查看dirmap的相关操作指南
输入:“python dirmap.py -i http://127.0.0.1:8888/ -lcf”即可开始扫描指定目录
以下是dirmap常用的一些参数:
-u or --url: 指定要扫描的目标 URL。
-w or --wordlist: 指定字典文件,用于进行目录名或文件名的猜测。
-e or --extensions: 指定要扫描的文件扩展名,如 php、asp 等。
-l or --level: 指定扫描的级别。默认为 1,表示只对指定 URL 进行扫描;如果设置为 2,还会对发现的目录进行扫描,依此类推。
-t or --threads: 指定并发线程数,用于加快扫描速度。
--delay: 指定扫描请求之间的延迟时间,以避免对目标网站造成过多的请求负载。
--timeout: 指定 HTTP 请求的超时时间。
-a or --agent: 指定 User-Agent 字符串,来模拟不同的浏览器或爬虫。
-p or --proxy: 指定代理服务器地址和端口号。
扫描结果如下
为什么dirmap每次扫描条数不一样?
网络波动:网络状况不稳定会导致请求失败或超时,从而影响扫描结果的条数。
目标服务器的响应:目标服务器可能会对大量请求进行限制或阻止,导致部分请求无法成功。
扫描参数设置:不同的线程数、延迟时间、字典文件等参数设置会影响扫描的速度和结果。例如,增加线程数可以提高扫描速度,但也可能导致更多的请求失败1。
字典文件的变化:如果每次扫描使用的字典文件不同,扫描结果的条数也会有所不同。
防护机制:目标服务器可能有防护机制,如WAF(Web应用防火墙),会阻止部分扫描请求,从而影响结果
六.Fscan实践
在fscan.exe文件目录下打开cmd,并执行“.\fscan -h 127.0.0.1”,结果如下