目录
DNS解析详细步骤
假设想获知域名为xxx.xyk.com主机的IP地址,域名解析的过程(共使用8个UDP报文)如下:
①客户端向其本地域名服务器发出DNS请求报文
②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求
③根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器
④本地域名服务器向顶级域名服务器dns.com发出解析请求报文
⑤顶级域名服务器dns.com收到请求后,判断该域名属于xyk.com域,因此将对应的授权域名服务器dns.xyk.com的IP地址返回给本地域名服务器
⑥本地域名服务器向授权域名服务器dns.xyk.com发起解析请求报文
⑦授权域名服务器dns.xyk.com收到请求后,将查询结果返回给本地域名服务器
⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机
绕过CDN查找主机真实IP的方法。
(1) 查询历史DNS记录
原理:CDN主要是管理员为了加快网站的访问速度而部署的,因此在网站搭建之初可能并没有使用CDN。如果能查到网站最早的DNS解析记录,那个解析的结果就有可能是该域名对应的真实IP。
利用在线DNS历史解析记录查询工具,输入网站域名并查看其历史IP地址。
(2). 多地PING或国外PING
原理:CDN节点通常是根据访问者的地理位置来分配的。如果CDN节点只针对国内市场,而国外市场没有部署CDN,那么使用国外主机访问时可能直接解析到真实IP。
利用在线的多地PING,或直接在国外的主机上使用PING命令来访问目标域名,观察返回的IP地址。
(3). 查询子域名
原理:由于CDN成本较高,很多站长只对主站或流量大的子站点使用CDN。因此,通过查询未使用CDN的子域名,可能找到真实IP。
使用子域名查询工具或搜索引擎语法(如Google的site:命令)来查找目标域名的子域名,并对这些子域名进行DNS解析,观察是否有不同于主站的IP地址返回。
(4). 利用SSL证书
原理:SSL证书中可能包含服务器的真实IP信息。如果目标站点使用了HTTPS证书,并且证书信息被公开,那么可以通过查询SSL证书来找到真实IP。
使用在线SSL证书查询工具(如Censys、crt.sh等)来搜索目标域名的SSL证书信息,并查看证书中的IP地址字段。
(5). 利用HTTP标头
原理:HTTP请求和响应中可能包含一些能够间接反映服务器真实IP的标头信息。
使用网络抓包工具(如Wireshark)或HTTP请求/响应分析工具来捕获和分析目标网站的HTTP流量,观察是否有包含真实IP的标头信息。
(6). 利用网站漏洞
原理:如果目标网站存在安全漏洞(如XSS、SSRF等),攻击者可能利用这些漏洞来获取服务器的真实IP。
子域名信息收集常用手段。
- 搜索引擎查询:利用Google、Bing等搜索引擎,通过特定的搜索语法(如"site:"指令)来限制搜索结果,从而获取子域名信息。
- 备案查询:通过工信部ICP备案系统等官方备案网站,通过主域名查备案,获得域名所属公司名称,再搜索该公司名称以获取其所有注册域名。
- 企业信息查询平台:使用天眼查、爱企查等企业信息查询平台,通过查看股权穿透图来查找子公司,并收集其子公司的域名。
- Whois查询:通过Whois网站进行查询,利用同一公司的域名可能使用同一邮箱注册的信息进行反查,从而找到关联的子域名。
- 证书透明度查询: 通过查询TLS证书中包含的域名信息来收集子域名。
- 在线子域名查询网站
- 威胁情报平台:利用ThreatBook、VirusTotal等。
- DNS域传送漏洞
Nmap全端口扫描
(1).全端口扫描
nmap -p --T4 127.0.0.1
最常见扫描:nmap -A -v -Pn 127.0.0.1
(2).nmap SYN半开扫描的原理
SYN半开扫描不需要完成整个TCP握手过程,因此可以避免在目标主机上留下任何记录。这种扫描方式常用于检测网络上,哪些主机正在运行以及哪些服务正在监听特定的端口。
原理:
1.发送一个带有SYN标志的TCP包,SYN包是TCP连接的第一个包。
2.如果目标端口是开放的,它将会回应一个SYN+ACK包,表示它准备好好好交付数据,但是还没有开始。
3.扫描器然后发送一个RST(重置)包来中止连接,因为扫描器实际上并不打算完成这个连接。
4.如果目标端口是关闭的,它将回应一个RST包,表示它不想接受连接。
实例代码(使用nmap命令行工具):nmap -sS <target_ip>
-sS选项用来指定使用SYN半开扫描方式
(3)跳过主机存活检测扫描使用常见
-Pn:可以用来跳过主机存活检测,
-sP:扫描目标主机是否在线(ping)
-p:指定扫描的目标端口(默认前端口扫描,扫描结果与带上1-65535一致)
--exclude-port:指定排除(不扫描)的目标端口
-sT / -sS / -sA :TCP connect / TCP SYN/ TCP ACK扫描
-sN/ -sF / -sX:TCP NULL/ TCP FIN/ TCP Xmas扫描
-sU:UDP扫描
-sW / -sM:TCP窗口/TCP Maimom扫描
--scanflags:自定义TCP扫描
-sO:IP扫描
例如:
跳过活机检测并使用TCP connect()扫描来检测本机上哪些TCP端口是开放的:
namp -sT -Pn 127.0.0.1
跳过活机检测并扫描ip:nmap -sO -Pn 127.0.0.1
dirmap目录探测工具实践
(使用昨日搭建的pikachu靶场),要求讲述为什么dirmap每次扫描条数不一样
在dirmap目录下使用命令:python dirmap.py -i 127.0.0.1 -lcf
已成功无报错:
问:为什么dirmap每次扫描条数不一样:
(1)Redis内部数据结构的变化
Dirmap每次扫描条数不一样的原因主要与Redis的hash扩容和缩容机制有关。
Redis中的hash数据结构采用渐进式rehash的方式进行扩容和缩容,这种机制在迭代过程中如果发生了数据增删,则可能导致触发rehash操作,从而导致迭代过程中出现重复扫描或遗漏某些数据。具体来说,当Redis的hash表需要进行扩容或缩容时,它不会一次性完成整个rehash过程,而是采用逐步迁移的方式,这样在迭代过程中,如果迭代器开始时hash表正在进行rehash操作,那么可能会导致一条数据被多次遍历到,或者某些数据未被遍历到,从而导致每次扫描的条数不一致。
(2)扫描配置的差异
Dirmap支持多种扫描模式和配置选项,如递归扫描、自定义请求头、自定义字典等。不同的扫描配置会影响扫描的范围和深度,从而导致扫描条数的差异。例如,开启递归扫描可能会发现更多的子目录和文件,而关闭递归扫描则只能扫描到顶层目录。
(3).扫描过程中遇到的问题
在扫描过程中,Dirmap可能会遇到一些问题,如网络延迟、目标网站响应超时等,这些问题可能会导致扫描提前终止或扫描结果不完整。此外,如果目标网站对扫描行为进行了限制或封锁,也可能影响扫描结果。
(4).字典文件的使用
Dirmap支持使用字典文件进行爆破扫描,字典文件的内容和质量会直接影响扫描结果。如果使用了不同的字典文件或字典文件中的条目顺序发生了变化,都可能导致扫描条数的差异。
总的来说,Dirmap每次扫描条数不一样的原因复杂多样,既包括Redis内部数据结构的变化(如hash表的扩容和缩容),也包括扫描工具自身的机制(如并发扫描、递归扫描等)。这些因素共同作用,导致每次扫描的结果可能有所不同
Fscan实践
1.扫描目标主机的所有TCP端口
命令:fscan.exe -h 127.0.0.1
2.主机存活探测:fscan.exe -h 127.0.0.1 -ping
3.扫描整个网段:fscan.exe -h 127.0.0.1/24
课上所演示插件安装成功截图