被动信息收集
被动信息收集是指不影响目标系统的前提下获得信息,比如在搜索引警、数据库缓存等这样的第
三方机构收集。在这节中,我们将从大量在线服务中获取信息,[这些公共来源的数据集合也被称为开源智能(0SINT)]。被动信息收集可以在测试公共网站或应用中摸清我们目标的一个大情况并发现对渗透测试人员有用的信息。
准备阶段
为了在公共资源中获取信息,我们需要让 Kali 虚拟机连接联网,并配置成 NAT 网络地址转换模式。此步骤可以参考第一章中所介绍的方法,它会教你设置 Kali 及靶机环境,并且设置 NAT 模式,增加Host-only模式。
实战演练
我们将用zonetransfer.me此域名作为我们的目标,zonetransfer.me是RobinWood在digi.ninja网站创建的,它可以演示允许公共 DNS 区域传输的后果。
1我们首先使用 whois 取它的册信息:
# whois zonetransfer,me
2.另外一个工具是 dig,它可以获取域名信息和 DNS解析信息:
# dig ns zonetransfer.me
3.一旦我们获得了DNS服务器的信息,就可以尝试区域传输攻击来获取服务器解析的所有主机名。仍然使用dig:
# dig axfr@nsztml.digi.ninjazonetransfer,me
很幸运,dns服务器支持区域传输,我们获得了一个完整的子域列表以及解析情况。接着就可以选择一个脆弱的目标来完成渗透攻击了。
4现在可以使用theharvester 来获取目标网站的邮箱、主机名、IP地址信息
# theharvester -d zonetransfer,me -b baidu,bing
5.如果想不直接查询服务器来获得网站使用的软件版本信息,可以使用 Netcraft 工具。登陆
https://toolbar.netcraft.com/site report
输入想查询的域名即可
6.获得一个网站以前的页面信息在测试中也很有用。可以在
https://archive.org/web/web.php
这个网站回溯网站以前版本的静态副本 。
此外,我们可以使用谷歌的高级搜索选项(GoogleHacking)
(https://support.google.com/websearch/answer/2466433)
来查找关于目标域的信息,而无需直接访问它。例如,通过使用
site:site_to _look_into "target_domain"
类似这样的搜索,我们可以在最近发现漏洞、泄漏信息或攻击成功的页面中寻找目标域的存在,可以查看以下一些对你有用的网站:
openbugbounty.org:Open Bug Bounty 是安全研究人员在面向公众的网站报告和公布漏洞(仅跨站点脚本和跨站点请求伪造)的一个独立站点。所以在谷歌中的搜索将返回所有提到的到“zonetransfe”这是 openbugbounty.org 所做的。
pastebin.com :是一种非常普遍的方法,用于让黑客匿名地去过滤和发布攻击期间所获得的信息。
zone-h.org: Zone-H 是一个恶意黑客经常去炫耀他们的成就的网站,主要是对网站的破坏。
二.使用Nmap进行扫描和识别应用服务
Nmap 是世界上使用最多的端口扫描器,它可以用于识别活动主机、扫描 TCP 和UDP 开放端口、检测防火墙、获取在远程主机上运行的服务版本,甚至使用脚本发现和利用漏洞。(除了 Nmap,这个世界上还有一个据说在端口扫描领域更强的 zmap)在此小节中,我们将使用 Nmap 来识别在目标应用服务器上运行的所有服务及版本,为了方便学习,我们将在对 Nmap 的几次演示中进行此操作,也可以使用一条命令完成。
准备阶段
我们需要让我们的靶机 VM1运行起来。
实战演习
首先,我们想要知道服务器是否响应 ping,或者主机是否是启动状态:
# nmap -sn 192.168.56.11
现在,我们可以知道这个主机是在启动的状态,让我们看看它的哪些端口是打开的:
# nmap 192.168.56.11
现在我们将告诉 Nmap 向服务器询问它正在运行的服务版本,并且据此来猜测操作系统:
# namp -sV -0 192.168.56.11
我们可以看到,我们的 VM_1 很可能是一个 Linux 作系统(Nap 无法准确的确定它)。它使用Apache2.2.14 web 服务器、PHP53p1、Jetty6125等等。
原理剖析
Nmap 是一个端口扫描器:这代表着它将数据包发送到指定IP 地址上的一些 TCP或UDP 端口,并且检查是否有响应。如果有,则表示端口是开放的,即服务在该端口上运行。
在第一条命令中,对于-sn参数,我们指示 Nma 只检查该服务器是否响应ICMP 请求(或者是ping)。
我们的服务器给出了响应,所以该主机是在存活状态的。第二个命令是调用 Nmap 最简单的方法,它只指定目标 IP 地址。它所做的是 ping 服务器,如果它做出响应,那么 Nmap 将向 1000 个 TCP 端口的列表发送探测器,以看哪个端口响应以及如何响应然后它报告结果,显示哪些端口是打开的。
第三条命令在第二条命令的基础上添加了以下两个参数:
-sV:请求找到每个开放端口 banner-header 或自我标识,也就是每个端口运行服务的版本。
-0:告诉 Nmap 尝试使用从开放端口和版本信息的信息来猜测目标上运行的操作系统。
拓展
使用 Nmap 时的其他有用参数如下所示
-sT:默认情况下,当它作为 root 用户运行时,Nap 使用一种称为SYN 扫描的扫描类型。使用这个参数,我们强制扫描器执行完全连接扫描,它速度较慢,并且会在服务器日志中留下一条记录,但不太可能被入侵检测系统检测到或被防火墙阻止。
20
-Pn:如果我们已经知道主机时存活的但是没有响应 ping,我们可以使用这个参数告诉 Nmap跳过ping测试并扫描所有指定的目标(假设它们已经启动)-v:这是元长模式。Nmap 将展示更多关于它正在扫描中的信息。这个参数可以在同一个命令中多次使用,使用的越多,得到的反馈就越多(-v或-v -v--v-pN1,N2,··N3:如果要测试特定端口或一些非标准端口,我们可能需要使用这个参数,其中N1到Nn时我们希望Nmap扫描的端口号。例如要扫描2180到90和137参数奖是-21,80-90137。另外,使用-p- Nmap将扫描0到65之间的所有端口和536端口--script=script_name: Nmap 包含许多有用的脚本,用于漏洞检查,扫描或者识别,登录测试命令执行,用户枚举等等。使用此参数告诉 Nmap 在目标的开放端口上运行脚本。可能想了解以下Nmap 使用的一些脚本;https://nmaporg/nsedoc/scripts/。
感谢观看