实习实训day2

要求

1、DNS解析详细步骤。

2、绕过CDN查找主机真实IP的方法。

3、子域名信息收集常用手段。

4、Nmap全端口扫描(使用昨日搭建的pikachu靶场),加分项:能够说明SYN半开扫描的原理和跳过主机存活检测扫描使用常见。

5、dirmap目录探测工具实践(使用昨日搭建的pikachu靶场),要求讲述为什么dirmap每次扫描条数不一样,加分项:dirmap高级应用,详细见项目文档,项目链接:https://github.com/H4ckForJob/dirmap

6、Fscan实践(使用昨日搭建的pikachu靶场)

7、课上所演示插件安装成功截图。

注意:每个加分项加0.5分,除布置任务除外,如果其他信息收集建议、好方法,经研判会额外加分。

DNS解析步骤

DNS(域名系统,Domain Name System)的解析过程是将人类可读的域名转换为计算机可读的IP地址的过程。以下是详细步骤的描述:

  1. 用户请求域名解析

当用户在浏览器中输入一个域名(如www.example.com)并按下回车键时,浏览器会检查本地缓存(DNS缓存)中是否已经存储了该域名的IP地址。如果存在,浏览器会直接使用该IP地址与目标服务器通信。

  1. 查询操作系统的DNS缓存

如果浏览器本地缓存中没有找到对应的IP地址,它会向操作系统的DNS缓存(也叫作“hosts”文件)进行查询。如果在“hosts”文件中找到了匹配的IP地址,浏览器将使用这个IP地址。

  1. 向本地DNS服务器发送请求

如果操作系统的DNS缓存中也没有找到对应的IP地址,操作系统会将请求发送给配置的本地DNS服务器(通常由ISP提供)。本地DNS服务器接到请求后,会首先查询自己的缓存,如果命中则返回IP地址。

  1. 本地DNS服务器递归查询

如果本地DNS服务器没有缓存该域名的IP地址,它会进行递归查询。递归查询通常涉及以下步骤:

  • 根DNS服务器查询:本地DNS服务器首先向根DNS服务器查询域名。根DNS服务器不会直接提供目标IP地址,而是告诉本地DNS服务器应当查询哪个顶级域名服务器(如.com.net等)。
  • 顶级域名服务器查询:接着,本地DNS服务器会向顶级域名服务器(如.com域名服务器)查询,顶级域名服务器会返回负责该域名的权威DNS服务器的地址。
  • 权威DNS服务器查询:最后,本地DNS服务器会向返回的权威DNS服务器发送查询请求,权威DNS服务器返回域名对应的最终IP地址。
  1. 返回IP地址

本地DNS服务器将权威DNS服务器返回的IP地址缓存下来(以备下次查询时使用),然后将IP地址返回给操作系统。

  1. 浏览器与服务器通信

操作系统将接收到的IP地址返回给浏览器,浏览器使用这个IP地址与目标服务器建立连接,发送HTTP请求,获取网页内容。

  1. 后续请求

后续的请求如果是针对相同域名的,会直接从浏览器缓存、操作系统缓存或本地DNS缓存中获取IP地址,而无需再次进行完整的DNS解析。

CDN

什么是CDN?

参考链接:

CDN(Content Delivery Network)内容分发网络原理、组成、访问过程、动静态加速、作用详解

CDN和传统方式的访问流程区别

传统访问流程

  1. DNS解析
  • 用户在浏览器中输入要访问的域名。
  • 浏览器向本地DNS服务器请求对该域名的解析。
  • 本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求;如果没有,则向根DNS服务器逐级查询,最终获得该域名对应的源服务器IP地址。
  1. 内容请求与响应
  • 浏览器利用得到的IP地址,向源服务器发起TCP连接请求。
  • TCP连接建立后,浏览器向源服务器发送HTTP请求。
  • 源服务器处理请求,将用户请求的内容通过HTTP响应发送给浏览器。
  • 浏览器接收并显示内容,然后断开TCP连接。

CDN访问流程

  1. DNS解析
  • 用户同样在浏览器中输入要访问的域名。
  • 浏览器向本地DNS服务器请求对该域名的解析。
  • 由于网站接入了CDN服务,本地DNS服务器在查询过程中可能会得到该域名对应的CNAME记录(而不是直接的IP地址)。
  • 浏览器需要再次对CNAME记录进行解析,此时请求会被转发到CDN的全局负载均衡DNS解析服务器。
  • 全局负载均衡DNS解析服务器根据用户的地理位置、网络状况等因素,选择最佳的CDN节点(缓存服务器),并将该节点的IP地址返回给浏览器。
  1. 内容请求与响应
  • 浏览器利用得到的CDN节点IP地址,向该节点发起TCP连接请求。
  • TCP连接建立后,浏览器向CDN节点发送HTTP请求。
  • CDN节点检查本地缓存中是否有用户请求的内容。如果有,则直接从缓存中读取内容并响应给浏览器;如果没有,则向源服务器发起请求,获取内容后缓存并响应给浏览器。
  • 浏览器接收并显示内容,然后断开TCP连接。

区别总结

DNS解析过程:传统方式直接解析到源服务器IP地址;CDN方式则先解析到CNAME记录,再解析到最近的CDN节点IP地址。

内容请求与响应:传统方式直接请求源服务器;CDN方式则首先请求CDN节点,CDN节点可能直接从缓存中提供内容,或向源服务器请求后再提供。

访问速度和效率:CDN方式通过缓存和就近访问显著提高了访问速度和效率,减轻了源服务器的负载压力。

高可用性和安全性:CDN还提供了更高的可用性和安全性保障,通过多个节点部署和冗余备份来确保服务连续性和数据安全。

绕过CDN查找主机真实IP的方法

参考链接:

https://blog.csdn.net/m0_60571842/article/details/131639567

  1. 超级Ping检测
    • 使用超级Ping工具,通过ping域名查看响应的IP地址。如果返回多个IP地址,则表明网站使用了CDN服务。

一些超级ping平台

https://ping.chinaz.com/

https://www.17ce.com/

https://tools.ipip.net/ping.php

  1. 利用遗留文件和漏洞
    • 检查网站是否包含遗留的phpinfo()页面或其他可能泄露服务器信息的页面。这些页面可能显示服务器的真实IP(如SERVER_ADDR)。
    • 利用已知的漏洞如SSRF,通过特定的资源请求迫使服务器反向连接,从而暴露其IP地址。
  2. 子域名查询
    • 查询目标网站的所有子域名,有时候某些子域名可能没有使用CDN,从而直接暴露服务器的真实IP。
    • 通过工具如Whois或子域名枚举工具来查找和查询子域名信息。
  3. 去掉www前缀
    • 尝试直接访问不带www前缀的域名,有时候网站主域名可能没有配置CDN,从而直接指向真实服务器。
  4. 接口查询国外请求访问
    • 使用国外节点进行请求访问,有时候CDN配置可能不包括所有国外节点,或者国外节点直接指向真实服务器。
    • 工具如https://tools.ipip.net/cdn.php,支持多个冷门国家的IP节点请求。
  5. 主动邮件配合备案
    • 利用网站的注册、找回密码等功能,通过邮件服务器获取真实IP地址。
  6. 抓取APP数据包
    • 如果目标网站的APP没有使用CDN,通过抓取APP的数据包可能找到真实服务器的IP地址。
    • 用网络抓包工具(如Wireshark)或APP分析工具(如Fiddler)来分析APP的网络请求。
  7. 国外第三方测试CDN网站
    • 使用专门的第三方测试CDN网站,如https://get-site-ip.com/,这些网站集成了多种方法来识别和绕过CDN。
  8. 查看历史解析IP
    • 通过历史解析IP查询工具(如https://site.ip138.com/https://viewdns.info/)查看网站历史解析记录,可能发现CDN启用前后的真实IP。
  9. 全网扫描
    • 使用全网扫描工具(如https://github.com/Tai7sy/fuckcdn)来识别和绕过CDN。

子域名信息收集常用手段

参考链接:

https://blog.csdn.net/w1590191166/article/details/104160404

  1. 证书透明度(Certificate Transparency)
    • 通过证书透明度日志查询公开的子域信息。这些日志包含了网站SSL/TLS证书的颁发记录,其中可能包含子域信息。
    • 常用查询网站包括crt.sh、censys、spyse、certspotter、entrust、facebook CT、google CT等。
  2. DNS记录公开数据
    • 利用DNS记录的公开数据来收集子域信息。许多DNS查询服务提供了丰富的DNS记录数据,包括子域信息。
    • 常用查询网站包括ip138、百度云观测、circl、hackertarget、riddler、bufferover、dnsdb、ipv4info、robtex、chinaz、netcraft、securitytrails、dnsdumpster等。
  3. 威胁情报数据
    • 通过威胁情报平台收集子域信息。这些平台整合了多种数据源,提供了丰富的威胁情报数据,包括子域信息。
    • 常用平台包括微步在线、alienvault OTX、riskiq、threatminer、virustotal等。
  4. 安全类搜索引擎
    • 使用专门的安全类搜索引擎来搜索子域信息。这些搜索引擎专注于网络安全领域,提供了丰富的安全相关信息查询功能。
    • 常用搜索引擎包括fofa、shodan、zoomeye、binaryedge等。
  5. 常规搜索引擎
    • 利用常规搜索引擎如百度、谷歌、必应等搜索特定的子域命名模式或关键词,以发现潜在的子域。
  6. 代码仓库
    • 检查公开的代码仓库(如GitHub、GitLab、码云等)中是否有与目标域名相关的项目或代码,这些项目可能包含子域信息。
  7. dns暴力破解工具
    • 使用dns暴力破解工具对目标域名进行字典攻击或暴力枚举,尝试发现潜在的子域。
    • 常用工具包括subDomainsBrute、teemo、Sublist3r、gobuster、assetfinder、Sudomy等

Nmap

Nmap一般扫描流程:

主机发现(Host Discovery)

  1. 发送探测包:Nmap首先会向目标主机发送多种类型的探测包,包括ICMP ECHO请求、TCP SYN包到常用端口(如443、80等)、TCP ACK包以及ICMP时间戳请求等。这些探测包的发送旨在确定目标主机是否在线。
  2. 接收回复:Nmap等待并接收来自目标主机的回复。如果收到任何类型的回复包,说明目标主机是开启的,扫描流程将继续。
  3. 避免误判:通过发送多种类型的探测包,Nmap能够更有效地避免因防火墙或丢包导致的误判,提高主机发现的准确性。

端口扫描(Port Scanning)

  1. 确定扫描范围:在确认目标主机在线后,Nmap将根据用户指定的端口范围(如未指定,则默认为前1000个最有可能开放的端口)进行端口扫描。
  2. 发送扫描包:Nmap向目标主机的指定端口发送扫描包,这些扫描包可能是TCP SYN包(默认扫描方式)、TCP ACK包、TCP FIN/Xmas/Null包等,具体取决于用户选择的扫描技术。
  3. 分析响应:Nmap分析目标主机对每个扫描包的响应,以确定端口的开放状态。端口状态可能包括开放、关闭、被过滤等。

服务识别与版本探测(Service Identification and Version Detection)

  1. 服务识别:在端口扫描的基础上,Nmap会尝试识别每个开放端口上运行的服务类型。这通常通过向端口发送特定的探测包并分析响应来实现。
  2. 版本探测:对于识别出的服务,Nmap会进一步尝试探测其版本信息。这有助于了解目标主机上运行的软件版本及其可能存在的安全漏洞。

操作系统侦测(Operating System Detection)

  1. 发送探测包:为了侦测目标主机的操作系统类型,Nmap会向目标主机发送一系列精心设计的探测包,这些包可能包括TCP/IP协议栈的特定选项、ICMP消息等。
  2. 分析响应:通过分析目标主机对这些探测包的响应,Nmap能够推断出目标主机的操作系统类型、版本以及可能存在的安全补丁等信息。

报告生成(Report Generation)

  1. 整理信息:在完成上述扫描步骤后,Nmap会整理收集到的所有信息,包括主机发现结果、端口扫描结果、服务识别与版本探测结果以及操作系统侦测结果等。
  2. 生成报告:根据用户指定的格式(如文本、XML、Grepable等),Nmap会生成详细的扫描报告。报告中包含了目标主机或网络的全面信息,有助于用户进行进一步的安全分析和漏洞管理。

全端口扫描

选择all TCP ports选项,执行全TCP端口扫描:

扫描结果显示我本地开启的端口有8080(BP代理)、3306(MySQL)、21(FTP)、8081(本地phpstudy配置的Apache)等。

SYN半开扫描的原理

一句话概括:只完成TCP三次握手的前两次。

扫描过程

  1. 发送SYN包:扫描主机向目标主机的指定端口发送一个带有SYN标志的TCP数据包,试图建立连接。这个数据包不包含ACK标志,因此它并不期望立即完成TCP三次握手。
  2. 等待响应:扫描主机等待目标主机的响应。根据目标端口的状态,目标主机可能回复不同的响应:
    • 如果目标端口是开放的,目标主机会回复一个SYN-ACK包,表示它愿意接受连接。
    • 如果目标端口是关闭的,目标主机会回复一个RST(复位)包,表示端口不可用。
    • 如果目标主机没有响应,或者响应被防火墙拦截,则扫描主机可能无法收到任何回复,此时端口状态可能被标记为Filtered(被过滤)。
  3. 发送RST包(可选):在收到SYN-ACK响应后,扫描主机通常不会完成三次握手中的最后一步(发送ACK包),而是立即发送一个RST包来终止连接。这一步是可选的,因为扫描主机的主要目的是检测端口状态,而不是真正建立连接。

特点

  • 隐蔽性:由于扫描主机不建立完整的TCP连接,这种扫描方式相对隐蔽,不易被目标主机上的应用程序记录。
  • 高效性:相比完整的TCP连接建立过程,SYN半开扫描可以更快地扫描大量端口。
  • 依赖性:SYN半开扫描需要扫描主机具有发送原始套接字的权限,通常需要在Linux等操作系统上以root用户身份运行Nmap。

应用场景

SYN半开扫描是Nmap的默认扫描模式之一,广泛应用于网络安全领域,用于发现目标主机上开放的端口,进而进行后续的安全评估或漏洞扫描。

跳过主机存活检测扫描

Nmap的跳过主机存活检测扫描是一种特定的扫描模式,它允许用户在不进行主机存活检测的情况下直接对目标主机或网络进行端口扫描、操作系统检测等操作。这种扫描模式在某些场景下非常有用,比如当目标网络中的主机存活状态已知,或者用户希望快速进行端口扫描而不关心主机是否存活时。

在Nmap中,要实现跳过主机存活检测扫描,可以使用-Pn(或--no-ping)选项。这个选项会告诉Nmap将所有指定的主机视为在线,从而跳过主机发现(即存活检测)的过程,直接进入端口扫描等后续步骤。

使用场景

  • 已知目标主机存活:当用户已经通过其他方式(如物理访问、远程管理工具等)确认目标主机处于在线状态时,可以使用-Pn选项来加快扫描速度。
  • 绕过防火墙限制:在某些情况下,目标网络可能配置了防火墙来阻止ICMP Echo请求(即ping命令)等存活检测数据包。此时,使用-Pn选项可以绕过这些限制,直接对目标主机进行端口扫描。
  • 快速扫描:当用户需要快速获取目标主机或网络的端口开放情况时,可以使用-Pn选项来减少扫描过程中的不必要步骤,从而提高扫描效率。

dirmap实践

基础应用

用dirmap扫描pikachu靶场:

扫描结果和真实目录对比,可见成功扫描出了大部分目录结构:

为什么dirmap每次扫描条数不一样

  1. 网站内容动态变化
    • 内容更新:网站的内容可能会随着时间的推移而不断更新,新增或删除页面、文件等,这自然会导致扫描结果的变化。
    • 临时页面或重定向:网站可能会设置临时页面或进行重定向,这些在扫描时可能被识别为不同的结果。
  2. 扫描配置和参数
    • 扫描模式:dirmap支持多种扫描模式,如字典模式、爆破模式、爬虫模式等。选择不同的扫描模式或配置不同的参数(如字典文件、请求头等),会直接影响扫描结果。
    • 并发和线程数:并发扫描的线程数设置不同,可能会导致扫描的广度和深度有所差异,从而影响最终的结果条数。
  3. 网络和环境因素

网络延迟和稳定性:网络延迟或不稳定可能导致扫描过程中某些请求未能成功发送或接收,从而影响扫描结果的完整性。

防火墙和安全设置:网站的防火墙或安全设置可能会阻止或限制dirmap的某些扫描请求,导致部分页面或文件未能被扫描到。

  1. 其他外部因素

CDN和缓存:网站可能使用CDN加速服务,导致不同地区的用户访问到不同的服务器节点,从而影响扫描结果。同时,浏览器缓存或中间代理缓存也可能导致扫描结果的不一致。

并发扫描竞争:如果有多个用户同时使用dirmap对同一网站进行扫描,可能会因为并发竞争而导致扫描结果的不一致。

高级应用

  1. 配置dirmap.conf,修改字典模式为多字典模式
[ScanModeHandler]
#Dict mode:Close :0;single dict:1;multiple dict:2
conf.dict_mode = 2

该模式下扫描结果条数较少,不如单字典模式。

  1. 开启爆破模式:
#Blast mode:tips:Use "conf.file_extension" options for suffixes
conf.blast_mode = 1

对比没开爆破模式的扫描结果,条数变多了,效果更好:

  1. 开启递归扫描模式:
#recursive scan:Close:0;Open:1
conf.recursive_scan = 1

递归模式开启后会对整个网站进行深度扫描,扫描时间明显变长,结果条数也大量增加:

Fscan实践

扫描本地主机,可以看到一些开放的端口,主机信息,web网址等,还爆出了mysql的用户名和密码:

扫描本地搭建的网站,可以看到扫出了网站title:

浏览器插件安装

我用的是火狐,插件安装情况如下:

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值