一、DNS解析详细步骤
第一步、
本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过TTL属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名。
第二步、
如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也有一个域名解析的过程,在Linux中可以通过/etc/hosts文件来设置,而在windows中可以通过配置C:\Windows\System32\drivers\etc\hosts文件来设置,用户可以将任何域名解析到任何能够访问的IP地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地DNS解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的IP地址上,导致这些域名被劫持。
第三步、
前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。
第四步、
如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析。
第五步、
根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。
第六步、
本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。
第七步、
接受请求的顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。 比如我要访问www.baidu.com,而这个域名是从A公司注册获得的,那么A公司上的服务器就会有www.baidu.com的相关信息。
第八步、
Name Server服务器会查询存储的域名和IP的映射关系表,再把查询出来的域名和IP地址等等信息,连同一个TTL值返回给本地DNS服务器。
第九步、
返回该域名对应的IP和TTL值,本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。
第十步、
把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。
二、绕过CDN查找主机真实IP方法
-
验证是否存在CDN:
- 使用多地ping服务:通过多地ping服务检查目标IP地址是否唯一。如果不唯一,多半使用了CDN。常用的多地ping网站有:http://ping.chinaz.com/、http://ping.aizhan.com/、http://ce.cloud.360.cn/ 等。
- 使用nslookup命令:检测域名解析的IP地址数量。如果解析结果中有多个IP地址,说明使用了CDN。
-
查询DNS历史解析记录:
- 通过查看IP与域名绑定的历史记录,可能会存在使用CDN前的记录,从而获取真实IP。相关查询网站有:iphistory、DNS查询、微步在线、Netcraft等。
-
查找子域名:
- 由于CDN通常只应用于主站或流量大的子站点,一些小站子站点可能未加入CDN且与主站在同一台服务器或同一个C段内。此时,可以通过查询子域名对应的IP来查找网站的真实IP。常用的子域名查找方法和工具包括搜索引擎查询、在线查询工具、子域名爆破工具等。
-
利用网站返回的内容:
- 分析网站返回的内容,如HTTP标头、邮件头信息等,可能会暴露原始服务器的IP。
-
网络空间安全引擎搜索:
- 使用网络空间安全引擎进行搜索,可能会找到隐藏在CDN背后的真实IP。
-
利用SSL证书查询:
- SSL证书有时会包含服务器的真实IP信息,可以通过查询SSL证书来寻找真实IP。
-
国外主机解析域名:
- 有时国外主机解析域名不会经过CDN,可以用来获取真实IP。
-
扫描全网:
- 通过全网扫描特定IP段,可能会发现目标服务器的真实IP。
-
通过域名备案信息广域探测:
- 利用域名备案信息进行广域探测,这也是一种成功率较高的方法。
三、子域名信息收集常用手段
-
搜索引擎查询:
- 使用Google、Bing等搜索引擎进行子域名搜索。可以通过特定的搜索语法,如site:example.com,来查找与主域名相关的子域名。
-
在线子域名扫描工具:
- 利用在线工具如Sublist3r、DNSdumpster、Hackertarget等进行子域名扫描,这些工具可以自动发现与目标域名相关的子域名。
-
子域名爆破工具:
- 使用子域名爆破工具,如Layer子域名挖掘机、SubBrute等,通过字典攻击的方式尝试枚举出可能的子域名。
-
证书透明度日志查询:
- 利用证书透明度(Certificate Transparency)日志查询子域名信息。例如,通过Certspotter、Crt.sh等在线服务查询域名的SSL证书,可能会发现一些不公开的子域名。
-
网络空间安全引擎搜索:
- 使用网络空间安全引擎,如Shodan、ZoomEye等,搜索特定域名相关的子域名。
-
分析第三方服务:
- 查看目标网站使用的第三方服务,如邮件服务、CDN服务、统计分析服务等,这些服务可能会使用不同的子域名。
-
社会工程学:
- 通过社会工程学手段,如查看员工的LinkedIn、GitHub等社交网络信息,可能会发现一些与公司相关的子域名。
-
域名备案信息查询:
- 在某些国家和地区,域名需要进行备案,查询这些备案信息可能会发现一些未公开的子域名。
四、Nmap全端口扫描
确定配置好Nmap
配置好pikachu
打开powershell启动扫描
扫描结果
说明SYN半开扫描的原理和跳过主机存活检测扫描使用场景:
SYN半开扫描(SYN Scan)原理
SYN扫描,也称为半开扫描(Half-open Scan),是一种TCP端口扫描技术,它利用了TCP握手协议的特性来检测目标端口的状态。以下是SYN扫描的基本原理:
-
TCP握手过程:
- 正常的TCP连接建立需要经过三次握手:客户端发送一个SYN包给服务器,服务器响应一个SYN/ACK包给客户端,然后客户端再发送一个ACK包给服务器。
-
SYN扫描步骤:
- 扫描器(客户端)发送一个SYN包到目标端口。
- 如果目标端口是开放的,服务器会响应一个SYN/ACK包。这时,扫描器不会发送ACK包来完成握手,而是发送一个RST(重置)包来中断连接。
- 如果目标端口是关闭的,服务器会响应一个RST包。
-
结果判断:
- 如果收到SYN/ACK包,则认为端口是开放的。
- 如果收到RST包,则认为端口是关闭的。
SYN扫描的优势在于,它不会在目标系统上建立一个完整的TCP连接,因此不会在目标系统的日志中留下完整的连接记录,这使得它比完整的TCP扫描更隐蔽。
跳过主机存活检测扫描使用场景
跳过主机存活检测的扫描通常在以下场景中使用:
-
已知目标主机存活:
- 当你确定目标主机是活跃的,不需要进行存活检测,可以直接进行端口扫描以节省时间。
-
防火墙或IDS/IPS干扰:
- 在某些情况下,防火墙或入侵检测系统/入侵防御系统(IDS/IPS)可能会对存活检测(如ICMP echo请求)产生警报或干扰。跳过存活检测可以减少这些系统的检测。
-
网络延迟或拥塞:
- 在网络延迟较高或网络拥塞的情况下,存活检测可能会非常慢。跳过这一步可以加快扫描过程。
-
扫描大量主机:
- 当扫描大量主机时,存活检测可能会成为一个瓶颈。跳过存活检测可以集中资源进行端口和服务扫描。
-
隐蔽性要求:
- 在需要保持扫描隐蔽性的情况下,跳过存活检测可以减少发送到目标网络的流量,降低被发现的风险。
在使用跳过主机存活检测的扫描时,需要谨慎,因为如果目标主机实际上是不活跃的,那么端口扫描可能会浪费时间和资源。通常,这种扫描方式适用于有明确目标的场景,例如已知某主机存活,需要对其进行更深入的端口和服务扫描。
五、dirmap目录探测工具实践
在dirmap目录下打开cmd
对pikachu进行扫描
查看结果
为什么每次dirmap扫描的条数都不一样?
网站内容更新:
网站可能会更新其内容,添加或删除文件和目录,这会直接影响到扫描结果的数量。
扫描策略变化:
如果你在不同的扫描中改变了dirmap的配置,比如扫描深度、扫描模式或使用的字典,那么扫描结果的数量也会有所不同。
服务器响应差异:
服务器可能会因为负载、维护或其他原因在不同时间给出不同的响应,这可能导致某些目录在第一次扫描时被发现,而在后续扫描中未被识别。
网络状况:
网络延迟或中断可能会导致dirmap在扫描过程中未能成功访问某些页面,从而影响扫描结果的数量。
网站安全策略:
网站的安全策略可能会检测到扫描行为并采取措施,如限制请求频率或封锁IP地址,这可能导致扫描结果的不一致。
CDN或缓存:
如果网站使用了CDN或缓存机制,可能会在不同时间提供不同的内容,这也会影响扫描结果
dirmap的高级应用?
1. 自定义字典攻击
- 使用自定义字典:你可以创建或使用现有的字典文件,这些字典包含可能的目录和文件名。通过使用更具体的字典,可以提高扫描的效率和针对性。
2. 多线程扫描
- 调整线程数:通过调整线程数,可以加快扫描速度。但是要注意,过多的线程可能会导致目标服务器过载或触发安全防护措施。
3. 爬虫模式
- 深度优先或广度优先:
dirmap
支持爬虫模式,可以设置深度优先或广度优先的爬取策略,这有助于发现更深层次的目录结构。
4. 绕过安全防护
- 使用代理:在扫描可能会触发安全防护机制的目标时,可以使用代理来绕过IP封锁。
- 设置User-Agent:修改User-Agent字符串,模仿正常用户的行为,减少被安全系统识别的风险。
5. 高级过滤和识别
- 正则表达式过滤:使用正则表达式来过滤和识别特定的文件或目录模式。
- 状态码过滤:根据HTTP状态码过滤结果,例如只显示200 OK的响应。
6. 结果导出
- 导出扫描结果:将扫描结果导出为多种格式,如JSON、CSV等,便于后续分析和处理。
7. 集成其他工具
- 与其他工具结合:将
dirmap
与其他安全工具如漏洞扫描器、子域名枚举工具等结合使用,进行更全面的安全评估。
8. 定制扫描范围
- 限制扫描范围:通过指定扫描的URL路径或排除特定的目录,可以更精确地控制扫描范围。
9. 实时监控
- 监控网站变化:定期运行
dirmap
扫描,监控网站目录和文件的变化,及时发现潜在的安全风险。
10. API接口利用
- 利用API接口:如果目标网站有API接口,
dirmap
可以用来枚举API端点,寻找未公开或未安全配置的接口。
六、fscan实践
先关闭windows的病毒防护
使用fscan进行扫描