1.DNS解析详细步骤。
1.什么是DNS
我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的IP地址,所以在IP地址的基础上又发展出了一种更易识别的符号化标识,这种标识由人们自行选择的字母和数字构成,这种符号化标识就是域名。
域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。计算机只能识别纯数字构成的IP地址,不能直接读取域名,DNS就可以将域名翻译成IP地址。
2.解析过程
当我们在浏览器地址栏中输入www.baidu.com时,DNS解析将会有将近10个步骤,这个过程大体大体由一张图可以表示:
其中前两个步骤是在本地电脑内完成的,后8个步骤涉及到真正的域名解析服务器:
第一步
本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。
第二步
如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。
第三步
前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。大约80%的域名解析到这里就结束了,后续的DNS迭代和递归也是由本地DNS服务器负责。
windows在这配置:控制面板-》网络和共享中心-》更改适配器设置-》选中目标适配器右键选择属性-》Internet协议版本4(TCP/IPv4)-》配置DNS地址。
Linux在这设置:/etc/resolv.conf
第四步
如果本地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来负载均衡控制,这都有可能会影响域名解析过程。
2.绕过CDN查找主机真实IP的方法。
1.什么是CDN
CDN(Content Delivery Network)的缩写,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应用视频、音频等静态或动态资源内容分发到用户所在的最近节点,提高用户访问这些内容的速度和稳定性,降低网络拥塞和延迟,同时也能减轻源站的压力。提高网络或应用的可用性和安全型。
2.绕过CDN方法
方法1:使用多地ping服务
查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
https://ping.chinaz.com/
方法2:查询子域名
毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
一些常用的子域名查找的方法和工具:
Google搜索:使用site:baidu.com -www
进行查询
各种子域名扫描器
方法3:网络空间引擎搜索
使用网络空间搜索引擎(如Shodan、Fofa、ZoomEye)查找目标网站的真实IP。
方法4:利用SSL证书寻找真实原始IP
SSL证书可以暴露真实IP。通过扫描互联网获取SSL证书,进而找到服务器的真实IP。常用工具:
- Censys:用于搜索联网设备信息,扫描整个互联网。
假如你在xyz123boot.com
上托管了一个服务,原始服务器IP是136.23.63.44
。在Censys上搜索parsed.names:xyz123boot.com
,可以找到该域名的证书,并获取其真实IP。
方法5:利用HTTP标头寻找真实原始IP
通过比较HTTP标头来查找原始服务器。例如,使用SecurityTrails平台搜索特定HTTP标头。
方法6:利用网站返回的内容寻找真实原始IP
如果原始服务器IP也返回了网站的内容,那么可以在网上搜索大量的相关数据。浏览网站源代码,寻找独特的代码片段。在JavaScript中使用具有访问或标识符参数的第三方服务(例如Google Analytics,reCAPTCHA)是攻击者经常使用的方法。
方法7:使用国外主机解析域名
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP。
方法8:网站漏洞查找
1)目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
2)XSS盲打,命令执行反弹shell,SSRF等。
3)无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
方法9:网站邮件订阅查找
RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了。
方法10:用 Zmap 扫全网
需要找 xiaix.me 网站的真实 IP,我们首先从 apnic 获取 IP 段,然后使用 Zmap 的 banner-grab 扫描出来 80 端口开放的主机进行 banner 抓取,最后在 http-req 中的 Host 写 xiaix.me。
方法11:F5 LTM解码法
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。
3.子域名信息收集常用手段。
1.什么是子域名
子域名是指顶级域名(一级域名)的下一级域名,如mail.qq.com
和www.qq.com
都是qq.com
的子域。从旁站查找漏洞往往比主站容易,因此子域名信息的收集显得尤为重要。
2.收集方法
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解析以确定其是否存在。
4.Nmap全端口扫描(使用昨日搭建的pikachu靶场),加分项:能够说明SYN半开扫描的原理和跳过主机存活检测扫描使用场景。
1.Nmap全端口扫描pikachu靶场
1.1打开phpstudy启动apache和MySQL
1.2使用Nmap - Zenmap GUI 全端口模式扫描127.0.0.1或者在cmd中使用命令 nmap -p 1-65535 -T4 -A -v 127.0.0.1
2.SYN半开扫描的原理
SYN 半开放扫描是一种常见且广泛使用的端口扫描技术,用于探测目标主机端口的开放状态。由于这种方法并不完成完整的 TCP 三次握手过程,因此具有更高的隐蔽性和扫描效率。
1.攻击者向目标主机发送SYN包,但是不完整地建立TCP连接,而是发送一个SYN标志位,并等待目标主机的响应。
2.如果目标主机的端口是关闭的,那么它会发送一个RST包作为响应,攻击者可以根据这个响应判断目标主机上的端口是关闭的,
3.如果目标主机的端口是开放的,那么它会发送一个SYN/ACK包作为响应,攻击者可以根据这个响应判断目标主机上的端口是开放
的。
4.攻击者在接收到目标主机的响应后,会将连接关闭,以避免留下不必要的痕迹。
3.跳过主机存活检测扫描使用场景
大规模网络审计:对于包含大量主机的网络,直接进行全量存活检查可能会耗费大量时间。跳过非活跃主机可以提高扫描效率。
内部网络:内部网络由于防火墙策略、安全策略等原因,部分服务可能不允许外部探测,跳过检测可以避免触发警报或被封堵。
定期监控:在日常监控中,如果已经确认某些主机不会改变状态,可以直接跳过检测,只关注有变化的部分。
紧急情况响应:在应急响应中,为了尽快确定关键系统的安全状况,可能会选择忽略一些无关紧要的存活检查。
模拟攻击:黑客工具或渗透测试时,可能需要快速找出易受攻击的目标,因此会跳过存活检查,专注于识别弱点。
5.dirmap目录探测工具实践(使用昨日搭建的pikachu靶场),要求讲述为什么dirmap每次扫描条数不一样,加分项:dirmap高级应用,详细见项目文档,项目链接:https://github.com/H4ckForJob/dirmap
1.dirmap扫描pikachu
在dirmap-master目录下打开cmd,输入命令python dirmap.py -i 127.0.0.1/pikachu/ -lcf
每次扫描条数不一样的原因:
动态内容:网站的内容可能是动态生成的,这意味着某些页面只有在特定条件下才会显示,例如登录后、时间限制等,这可能导致扫描时有的路径无法访问,导致条目减少。
缓存策略:服务器可能采用了缓存策略,对于静态资源,有些条目可能已经在缓存中,再次请求时不会返回新的结果,所以条目数量看起来不同。
扫描间隔:如果多次扫描的时间间隔不够长,可能会遇到同一个URL在同一时间内仍然被浏览器缓存的情况,这也会影响条目计数。
网络延迟:网络不稳定或者服务器响应速度不一致也可能造成扫描结果的差异,特别是在高并发或分布式环境中。
API限制:对于API扫描,有些服务可能有速率限制或次数限制,超出限制后可能就不再返回新条目。
2.dirmap高级应用
权限管理:可以设置访问权限,只允许特定用户或组访问指定的远程目录,增强数据安全性。
自动化脚本:通过编写shell脚本或者配置文件,可以自动同步、备份或更新远程目录,提升运维效率。
分布式协同工作:在团队开发环境中,dirmap支持多人共享项目目录,实时查看和编辑对方的修改,提高协作效率。
环境隔离:对于需要不同环境的开发者,可以为每个环境创建独立的映射,避免环境变量冲突。
动态路由:能够根据条件动态改变映射,比如根据时间、URL模式等规则,实现灵活的资源访问路径。
6.Fscan实践(使用昨日搭建的pikachu靶场)
1.扫描pikachu
在fscan目录下打开cmd,输入fscan -h 127.0.0.1/24 -np ,-np :跳过存活检测;