信息安全毕业实训实习-Day2

1. DNS解析详细步骤

DNS解析的顺序是“先查缓存,再递归解析”。
查询顺序:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索

以查询www.baidu.com域名的对应的IP为例。

1.0 DNS服务器的层次结构

DNS服务器分几类,层次结构如下:

1.1 搜索浏览器自带的dns缓存

浏览器会首先查询浏览器自身的 DNS 缓存,缓存时间比较短,大概只有1分钟(chrome://net-internals/#dns ,可以查询缓存的dns记录),且只能容纳 1000条缓存,看自身的缓存中是否有对应的条目,而且没有过期,如果有且没有过期则解析到此结束。

1.2 查询操作系统缓存和hosts静态解析

如果浏览器的缓存里没有找到对应的条目(ipconfig /displaydns可以查看),操作系统也会有一个域名解析的过程,那么浏览器先搜索操作系统的 DNS 缓存中是否有这个域名对应的解析结果,如果找到且没有过期则停止搜索,解析到此结束。
在 Linux 中可以通过 /etc/hosts ,windows中可以通过C:\Windows\System32\drivers\etc\hosts文件来设置,可以将任何域名解析到任何能够访问的 IP 地址。如果在这里指定了一个域名对应的 IP 地址,那么浏览器会首先使用这个 IP 地址。当解析到这个配置文件中的某个域名时,操作系统会在缓存中缓存这个解析结果,缓存的时间同样是受这个域名的失效时间和缓存的空间大小控制的。

1.3 查询本地dns服务器

客户端通过浏览器访问域名为 www.baidu.com 的网站,发起查询该域名的 IP 地址的 DNS 请求。该请求发送到了本地 DNS 服务器上。本地 DNS 服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地 DNS 服务器还要向 DNS 根服务器进行查询。

1.4 查询根dns服务器

本地 DNS 服务器向根服务器发送 DNS 请求,请求域名为 www.baidu.com 的 IP 地址。
根服务器经过查询,没有记录该域名及 IP 地址的对应关系。但是会告诉本地 DNS 服务器,可以到域名服务器上继续查询,并给出域名服务器的地址(.com 服务器)。

1.5 查询顶级域dns服务器

本地 DNS 服务器向 .com 服务器发送 DNS 请求,请求域名 www.baidu.com 的 IP 地址。
.com 服务器收到请求后,不会直接返回域名和 IP 地址的对应关系,而是告诉本地 DNS 服务器,该域名可以在 baidu.com 域名服务器上进行解析获取 IP 地址,并告诉 baidu.com 域名服务器的地址。

1.6 查询权威dns服务器

本地 DNS 服务器向 baidu.com 域名服务器发送 DNS 请求,请求域名 www.baidu.com 的 IP 地址。baidu.com 服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应关系,并将 IP 地址返回给本地 DNS 服务器

1.7 本地dns服务器缓存该条解析记录

本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。

以上流程如下:

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

2.1 查询历史DNS记录

1. 查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
https://dnsdb.io/zh-cn/ ###DNS查询
https://x.threatbook.cn/ ###微步在线
http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询
http://viewdns.info/ ###DNS、IP等查询
https://tools.ipip.net/cdn.php ###CDN查询IP

2. 利用SecurityTrails平台,就可以精准的找到真实原始IP。只需在搜索字段中输入网站域名,然后按Enter键即可,这时“历史数据”就可以在左侧的菜单中找到。

2.2 查询子域名

由于目标服务可能在主站上做好了相应的CDN,但是由于种种原因例如部署费用过高,或者对二级域名不上心等,所以导致二级域名没有部署到CDN,这时我们可以从这个方面入手进行查询。利用子域名搜集工具等搜集到足够的子域名后,便可以对通过子域名进行真实IP的搜集。

下面介绍些常用的子域名查找的方法和工具:

1)微步在线(https://x.threatbook.cn/)

2)Dnsdb查询法。(https://dnsdb.io/zh-cn/)

3)Google 搜索

例如,Google site:baidu.com -www就能查看除www外的子域名

4)各种子域名扫描器

例如,子域名挖掘机(Layer子域名挖掘机:https://github.com/euphrat1ca/LayerDomainFinder)和lijiejie的subdomainbrute(https://github.com/lijiejie/subDomainsBrute)

子域名挖掘机仅需输入域名即可基于字典挖掘它的子域名。

2.3 网络空间引擎搜索法

常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip.。

  1. 360:https://quake.360.cn/quake/#/index
  2. 鹰图:http://hunter.qianxin.com/
  3. 钟馗之眼:https://www.zoomeye.org
  4. Shodan:https://www.shodan.io
  5. Fofa:https://fofa.so

2.4 通过 SSL 证书

  • 证书颁发机构 (CA) 必须将他们发布的每个 SSL/TLS 证书发布到公共日志中,SSL/TLS 证书通常包含域名、子域名和电子邮件地址。因此可以利用 SSL/TLS 证书来发现目标站点的真实 IP 地址。

  • CDN 运营商在给服务器提供保护的同时,也会与其服务器进行加密通信(ssl),这时当服务器的 443 端口接入域名时也会在 443 端口暴露其证书,我们通过证书比对便可发现网站的真实 IP 地址。

  • SSL证书搜索引擎:  https://censys.io/ipv4?q=github.com,如下图

2.5 利用HTTP标头寻找真实原始IP

借助SecurityTrails这样的平台,任何人都可以在茫茫的大数据搜索到自己的目标,甚至可以通过比较HTTP标头来查找到原始服务器。

特别是当用户拥有一个非常特别的服务器名称与软件名称时,攻击者找到你就变得更容易。

如果要搜索的数据相当多,如上所述,攻击者可以在Censys上组合搜索参数。假设你正在与1500个Web服务器共享你的服务器HTTP标头,这些服务器都发送的是相同的标头参数和值的组合。而且你还使用新的PHP框架发送唯一的HTTP标头(例如:X-Generated-Via:XYZ框架),目前约有400名网站管理员使用了该框架。而最终由三个服务器组成的交集,只需手动操作就可以找到了IP,整个过程只需要几秒钟。

例如,Censys上用于匹配服务器标头的搜索参数是80.http.get.headers.server :,查找由CloudFlare提供服务的网站的参数:80.http.get.headers.server:cloudflare

2.6 使用国外主机解析域名

国内大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。

国外多PING测试工具:

https://asm.ca.com/zh_cn/ping.php
http://host-tracker.com/
http://www.webpagetest.org/
https://dnscheck.pingdom.com/

2.7 网站邮件头信息

比如说,邮箱注册,邮箱找回密码、RSS邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP。

2.8 网站漏洞查找

1. 目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
2. XSS盲打,命令执行反弹shell,SSRF等。
3. 无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。

2.9 扫描全网

通过Zmap、masscan等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实IP。

https://github.com/zmap/zmap

https://github.com/robertdavidgraham/masscan

2.10 F5 LTM解码法

LTM 是将所有的应用请求分配到多个节点服务器上,提高业务的处理能力,也就是负载均衡。当服务器使用 F5 LTM 做负载均衡时,通过对 set-cookie 关键字的解码,可以获取服务器真实 ip 地址。

例如:Set-Cookie: BIGipServerpool_9.29_5229=605532106.22012.0000

  • 先把第一小节的十进制数,即 605532106 取出来

  • 将其转为十六进制数 2417afca

  • 接着从后至前,取四个字节出来:CA AF 17 24

  • 最后依次转为十进制数 202.175.23.36,即是服务器的真实 ip 地址。

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

子域名是指顶级域名下的域名。如果目标网络规模比较大,那么直接从主域入手显然是很不明智的。先渗透目标的某个子域,再迂回渗透目标主域,是个比较好的选择。常用的方法有以下几种。

3.1 工具自动收集

目前已有几款十分高效的子域名自动收集工具如:OneForAll、Fofa_view、Sublist3r、DNSMape、subDomainsBrute、Maltego CE等。

如OneForAll,具有强大的子域名收集能力,还兼具子域爆破、子域验证等多种功能。

3.2 网站配置文件

某些域名下可能存在存储与其相关子域名信息的文件。搜索此类域名一般需要查看跨域策略文件crossdomain.xml或者网站信息文件sitemap,通常只需将其拼接到需要查询的域名后进行访问。如果路径存在,则显示相应的域名资产。

下图为某网站拼接crossdomain.xml文件访问得到的子域名资产信息。

但并不是所有的网站都会存在crossdomain和sitemap这两类文件,有的网站管理者会隐藏敏感文件或者干脆不用这两类文件进行跨域访问策略导向和网站信息导向,因此可以将这种方法作为一种辅助手段,或许会带来意想不到的结果。

3.3 搜索引擎枚搜集

可以通过不同的搜索引擎,如Bing、Edge、Google等,通过特定语法如`site:`或`inurl:`来寻找与目标相关的子域名。或者使用网络空间资产搜索引擎FOFA、Shodan等搜索子域名或含有主域名关键字的资产信息,获取较全面的子域名信息。

  1. 360:https://quake.360.cn/quake/#/index
  2. 鹰图:http://hunter.qianxin.com/
  3. 钟馗之眼:https://www.zoomeye.org
  4. Shodan:https://www.shodan.io
  5. Fofa:https://fofa.so
  6. 微步在线情报社区:https://x.threatbook.cn/
  7. 奇安信威胁情报中心:https://ti.qianxin.com/
  8. 360威胁情报中心:https://ti.360.cn/#/homepage

3.4 DNS应用服务反查子域名

很多第三方DNS查询服务或工具汇聚了大量DNS数据集,可以通过它们检索某个给定域名的子域名。只需在其搜索栏中输入域名,就可检索到相关的子域名信息,如下图,使用DNSdumpster在线网站查询DNS Host解析记录可以得到子域名,以百度(baidu.com)为例。

可以看到,查询的Host解析记录中有很多子域名的解析记录,可以利用这些记录进一步反查DNS,看是否可以得到更全面的子域名。

常用的DNS服务反查在线工具:DNSdumpster、Ip138、ViewDNS

常用的本地DNS服务反查命令行工具:Dig、Nslookup

3.5 证书透明度公开日志搜集

证书透明度(Certificate Transparency,CT)是证书授权机构(CA)的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址,这些也经常成为攻击者非常想获得的有用信息。查找某个域名所属证书的最简单的方法就是使用搜索引擎搜索一些公开的CT日志。
例如使用“crt.sh”进行子域名搜集。

搜集出来的结果有crt的ID值、过去使用记录的时间,以及子域名信息等。

常用的搜集CT公开日志的在线工具:crt.sh、Censys

4. Nmap全端口扫描(pikachu靶场)

1. 启动pikachu本地靶场,启动apache和mysql服务。

2. 使用nmap对pikachu进行全端口扫描

SYN半开扫描的原理

SYN半开扫描(SYN half-open scan)是一种常见的端口扫描技术,主要用于检测目标主机上哪些端口是打开的。它利用了TCP三次握手过程中的SYN包特性,因此称为“半开”扫描。SYN半开扫描常用于网络安全评估和渗透测试中,以发现目标系统中潜在的开放端口和服务,为进一步的攻击提供信息。其基本原理如下:

1. 发送SYN包:扫描者向目标主机的指定端口发送一个TCP SYN(同步)包,表示请求建立连接。这是三次握手中的第一步。

2. 目标主机响应:

   - 如果目标端口是打开的,目标主机会回复一个SYN-ACK(同步-确认)包,表示同意建立连接。

   - 如果目标端口是关闭的,目标主机会回复一个RST(复位)包,表示拒绝连接。

3. 扫描者处理响应:

   - 如果扫描者收到SYN-ACK包,说明端口是开放的。此时,扫描者不会完成三次握手,而是直接发送一个RST包终止连接,从而避免真正建立连接。这就是为什么称其为“半开”扫描。

   - 如果扫描者收到RST包,则说明端口是关闭的。

4. 记录扫描结果:扫描者根据接收到的响应来判断目标端口的状态,并记录下来。

跳过主机存活检测扫描

跳过主机存活检测扫描(Skipping Host Discovery Scan)是一种直接进行端口扫描的技术,用于在目标网络中快速识别开放端口,而不先检查目标主机是否存活。这种扫描方法通常用于减少扫描时间和增加扫描隐蔽性。

在传统的端口扫描中,扫描者通常会首先执行主机存活检测,即判断目标主机是否在线。常用的检测方法包括:

- ICMP Echo Request(ping):发送ICMP回显请求包,在线主机会回复回显应答包。

- TCP ACK/SYN扫描:发送TCP ACK或SYN包,如果主机在线且端口开放,会收到响应。

- ARP请求:在同一局域网内,发送ARP请求包,在线主机会回复ARP响应包。

只有检测到目标主机在线时,扫描者才会继续进行端口扫描。这种方法可以减少不必要的扫描,但可能被目标网络的防火墙、路由器等设备拦截,导致漏报。

跳过主机存活检测扫描则完全绕过主机存活检测这一步,直接开始对目标主机的指定端口进行扫描。这种扫描有以下特点:

1. 直接发送扫描包:扫描者直接向目标主机的所有指定端口发送扫描包(如TCP SYN包、UDP包等),而不先检测主机是否在线。

2. 处理响应:根据从目标主机收到的响应来判断端口状态。例如,TCP SYN扫描中的SYN-ACK响应表示端口开放,RST响应表示端口关闭。

3. 记录结果:扫描者记录每个目标端口的状态,无论目标主机是否在线。

跳过主机存活检测扫描常用于需要快速识别开放端口的情况,如在渗透测试或漏洞扫描中,目标网络中存在严格的防火墙或IDS配置时,通过直接扫描端口而不是先检测主机存活,可以避免被拦截或误判。

5. dirmap目录探测工具实践(pikachu靶场)

使用dirmap扫描本机搭建的pikachu靶场。

扫描命令: python dirmap.py -i 127.0.0.1/pikachu -lcf

单个目标:python dirmap.py -i https://target.com -lcf 

由于内容太长,这里展示部分截图:

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

dirmap具有一些高级特性,如能够爬取页面并动态生成字典。这意味着在扫描过程中,它会根据目标网站的实际情况动态调整请求,从而可能导致扫描条数的变化。

6. Fscan实践(pikachu靶场)

在powershell命令行,用fscan扫描昨日搭建的pikachu靶场。

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

在Firefox浏览器中下载FindSomething和Wappalyzer - Technology profiler插件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值