项目介绍
信息收集是一个很有趣的过程,收集到的信息,大部分会影响你攻击面的大小,
以及成功与否。找个时间我将各位老哥和我信息收集的方法分享出来,不是绝对的
流程,到时拿出来给大家开开思路,剩下的路还得靠自己走,一起加油呀!
另外有些网站,大家想想办法怎么连接吧。
不管是针对网络还是 web 应用程序,渗透测试都有一套相同的流程。这一套流
程可以增加发现漏洞的可能性,并且利用到尽可能多的漏洞来影响系统。例如:
⚫
信息收集
⚫
资产列举
⚫
漏洞利用
⚫
维持访问
⚫
清理痕迹
在渗透测试中,信息收集是测试人员必须做的一件事情,信息收集需要收集存
在于网络中的资产,如防火墙、IDS、IPS 等。还要尽可能收集所有有关公司、网络、
员工的信息。针对于 web 渗透测试,这一阶段主要讲如何收集 web 应用,数据库,
用户和服务器的信息。
信息收集的质量取决于渗透测试的成功与否。得到的信息越多,测试的目标就
越多。就有更多的选择去发现漏洞并利用。
被动信息收集
一、任务描述
被动信息收集是指不影响目标系统的前提下获得信息,比如在搜索引擎,数据
库缓存等这样的第三方机构收集。
在这节中,将从大量在线服务中获取信息,[这些公共来源的数据集合也被称为
开源智能(OSINT)]。 被动信息收集可以在测试公共网站或应用中摸清目标的一个
大概情况并发现对渗透测试人员有用的信息。
为了在公共资源中获取信息,需要让 Kali 虚拟机连接互联网,并配置成 NAT 网
络地址转换模式。此步骤可以参考第一章中所介绍的方法,它会教你设置 Kali 及靶
机环境,并且设置 NAT 模式代替 Host-only 模式。
二、任务实现
将用
zonetransfer.me
此域名作为目标,zonetransfer.me 是 Robin Wood 在
digi.ninja 网站创建的,它可以演示允许公共 DNS 区域传输的后果。
1. 首先使用 whois 获取它的注册信息:
# whois zonetransfer.me

2. 另外一个工具是 dig,它可以获取域名信息和 DNS 解析信息
# dig ns zonetransfer.me

3. 一旦获得了 DNS 服务器的信息,就可以尝试区域传输攻击来获取服务器解析
的所有主机名。仍然使用 dig:
# dig axfr @nsztm1.digi.ninja zonetransfer.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
这个网站回溯网站以前版本的静态副本。

三、相关知识与技能
在这节教程中,利用了大量不同工具来收集目标信息。在 Linux 命令行中使用
whois
查询了网站的注册信息,还获得了网站 dns 服务器的信息和管理员的个人信息,
比如管理员的邮箱、公司名、电话等等。Whois 还可以查询 ip 地址的归属者信息。
接着,使用了
dig
获取了目标 dns 服务器的信息,并使用区域传输获得了所有子域
名(dig 区域传输只适用于没有正确配置的 dns 服务器)
通过使用
harvester
,获得了有关于目标域的邮箱、主机名和 ip 地址,其中-ball
选项指使用所有支持的查询,-d 后面指定搜索的目标域。
然后使用
netcraft
获得了目标网站使用的技术信息和更新以前的情况。这使能
够在进一步测试中不再查询真实站点。
Wayback machine
网站是一种存储网站静态副本并保存记录的服务器。在这里,
可以看到旧版本中发布的信息,有时候对 web 应用的更新可能会泄露敏感数据。
此外,可以使用谷歌的高级搜索选项(
Google Hacking
)
(https://support.google.com/websearch/answer/2466433)
来查找关于目标域的信息,而无需直接访问它。例如,通过使用
site:site_to_look_into "target_domain"
类似这样的搜索,可以在最近发现漏洞、泄漏信息或攻击成功的页面中寻找目
标域的存在,可以查看以下一些对你有用的网站:
⚫
openbugbounty.org:
Open Bug Bounty 是安全研究人员在面向公众的网站报
告和公布漏洞(仅跨站点脚本和跨站点请求伪造)的一个独立站点。所以在谷歌
中的搜索将返回所有提到的到“zonetransfe”这是 openbugbounty.org 所做
的。
⚫
pastebin.com :
是一种非常普遍的方法,用于让黑客匿名地去过滤和发布
攻击期间所获得的信息。
38
39
⚫
zone-h.org:
Zone-H 是一个恶意黑客经常去炫耀他们的成就的网站,主要是
对网站的破坏。
使用
Recon-ng
收集信息
一、任务描述
Recon-ng
是一种信息收集工具,它使用许多不同的来源来收集数据,例如:
Google,Twitter 和 Shodan。
在本文中,将学习 Recon-ng 的基础知识,并使用它来收集关于目标的公共信息。
尽管 Recon-ng 已经在 Kali Linux 中安装,但它的一些模块需要 API 密钥用于
查询在线服务。此外,拥有 API 密钥将允许您在某些服务中执行更高级的搜索或避
免查询限制。可以通过在每个搜索引擎上完成注册来生成这些密钥。
二、任务实现
让做一个基本的查询来说明 Recon-ng 的工作原理:
1.要从 Kali Linux 启动 Recon-NG,请使用“应用程序”菜单(应用程序|01-
信息收集|recon-ng)在终端中键入
recon-ng
命令。
2.将看到一个命令行界面。查看模块,可以键入
show modules
命令。

3.假设要搜索域名的所有子域名和 DNS 服务器不响应区域传输。可以暴力破解
子域名,要做到这一点,首先加载
brute_hosts
模块:
use recon/domains-hosts/brute_hosts
4.要了解使用任何模块时需要配置的选项,可以使用
show options
命令。
5.要为选项指定值,使用
set
命令
: set source zonetransfer.me
6.一旦设置了所有选项,就会发出
run
命令来执行模块:

7.暴力猜解完成需要一些时间,它会显示很多信息。完成后,可以查询 Recon-ng
数据库以获取发现的主机:
show hosts

三、相关知识与技能
Recon-ng
是查询搜索引擎、众多社交工具和 API 的包装器媒体,通过互联网档
案和数据库,以获取有关网站、网络信息、应用程序、服务器、主机、用户、电子
邮件地址等。它的工作原理是整合不同功能的模块,例如 Google、Twitter、LinkedIn
或 Shodan 等,或者对 DNS 服务器执行查询。它还具有将结果导入数据库或生成各种
格式报告的功能,例如 HTML、MS Excel、CSV 或 XML 。
还有另一个非常有用的信息收集和开源智能工具,默认包含在 Kali Linux,是
Maltego
(https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php),
许多渗透测试人员较为喜欢的一款工具。此工具提供图形用户界面显示所有内容元
素(电子邮件地址,人员,域名,公司等)在图中,可视地显示元素之间的关系。 例
41
如:代表一个人的节点将通过一条线连接到该人的电子邮件地址以及该电子邮件地
址所属的域名。
使用
Nmap
进行扫描和识别应用服务
一、任务描述
Nmap
是世界上使用最多的端口扫描器,它可以用于识别活动主机、扫描 TCP 和
UDP 开放端口、检测防火墙、获取在远程主机上运行的服务版本,甚至使用脚本发现
和利用漏洞。(
除了 Nmap,这个世界上还有一个据说在端口扫描领域更强的 zmap
)
在此小节中,将使用 Nmap 来识别在目标应用服务器上运行的所有服务及版本,
为了方便学习,将在对 Nmap 的几次演示中进行此操作,也可以使用一条命令完成。
需要让靶机 VM_1 运行起来。
二、任务实现
本小节的所有任务都可以通过一个命令来完成,为了更好的说明它们的功能和
结果,这里分别展示了它们:
首先,想要知道服务器是否响应 ping,或者主机是否是启动状态:
# nmap -sn 192.168.56.11

现在,可以知道这个主机是在启动的状态,让看看它的哪些端口是打开的:
# nmap 192.168.56.11

现在将告诉 Nmap 向服务器询问它正在运行的服务版本,并且据此来猜测操作系
统:
# namp -sV -O 192.168.56.11

可以看到, VM_1 很可能是一个 Linux 操作系统(Nmap 无法准确的确定它)。
它使用 Apache 2.2.14 web 服务器、PHP 5.3p1、Jetty 6.1.25 等等。
三、相关知识与技能
Nmap
是一个端口扫描器;这代表着它将数据包发送到指定 IP 地址上的一些 TCP
或 UDP 端口,并且检查是否有响应。如果有,则表示端口是开放的,即服务在该端
口上运行。
在第一条命令中,对于-
sn
参数,指示 Nmap 只检查该服务器是否响应 ICMP 请求
(或者是 ping)。服务器给出了响应,所以该主机是在存活状态的。
第二个命令是调用 Nmap 最简单的方法,它只指定目标 IP 地址。它所做的是 ping
服务器,如果它做出响应,那么 Nmap 将向 1000 个 TCP 端口的列表发送探测器,以
查看哪个端口响应以及如何响应,然后它报告结果,显示哪些端口是打开的。
第三条命令在第二条命令的基础上添加了以下两个参数:
43
44
⚫
-sV:
请求找到每个开放端口 banner-header 或自我标识,也就是每个端口运
行服务的版本。
⚫
-O:
告诉 Nmap 尝试使用从开放端口和版本信息的信息来猜测目标上运行的操
作系统。
使用 Nmap 时的其他有用参数如下所示:
⚫
-sT:
默认情况下,当它作为 root 用户运行时,Nmap 使用一种称为 SYN 扫描
的扫描类型。使用这个参数,强制扫描器执行完全连接扫描,它速度较慢,并
且会在服务器日志中留下一条记录,但不太可能被入侵检测系统检测到或被防
火墙阻止。
⚫
-Pn:
如果已经知道主机时存活的但是没有响应 ping,可以使用这个参数告诉
Nmap 跳过 ping 测试并扫描所有指定的目标(假设它们已经启动)
⚫
-v:
这是冗长模式。Nmap 将展示更多关于它正在扫描中的信息。这个参数可
以在同一个命令中多次使用,使用的越多,得到的反馈就越多(-vv 或-v –v
–v –v )
⚫
-p N1,N2,…N3:
如果要测试特定端口或一些非标准端口,可能需要使用这个
参数,其中 N1 到 Nn 时希望 Nmap 扫描的端口号。例如,要扫描 21、80 到 90
和 137,参数奖是-p 21,80-90,137。另外,使用-p- Nmap 将扫描 0 到 65
之间的所有端口和 536 端口
⚫
--script=script_name:
Nmap 包含许多有用的脚本,用于漏洞检查,扫描或
者识别,登录测试,命令执行,用户枚举等等。使用此参数告诉 Nmap 在目标
的 开 放 端 口 上 运 行 脚 本 。 您 可 能 想 了 解 以 下 Nmap 使 用 的 一 些 脚 本 :
https://nmap.org/nsedoc/scripts/
。
尽管 Nmap 是最流行的,但它并不是唯一可用的端口扫描器,根据不同的环境,
它可能不是最好的选择。Kali Linux 中还有其他的一些替代方案,例如:
⚫
Unicornscan
⚫
Hping3
⚫
Masscan
⚫
Amap
⚫
Metasploit’s scanning modules
识别
Web
应用防火墙
一、任务描述
Web 应用程序防火墙(WAF)是一种设备或软件,它检查发送到 web 服务器的包,
以便识别和阻止那些可能是恶意的包,通常基于签名或正则表达式
如果未检测到的 WAF 阻塞了请求或禁止了 IP 地址,最终可能会在渗透测试中要
处理很多问题。在执行渗透测试时,侦察阶段必须包括 WAF、入侵检测系统(IDS)或
入侵预防系统(IPS)的检测和识别。这是需要采取必要措施防止被这些保护装置屏蔽
或禁止的。
在这个小节中,将使用不同的方法,以及 Kali Linux 中包含的工具,来检测和
识别目标和之间是否存在 web 应用程序防火墙。
二、任务实现
有很多方法来检测应用程序是否受到 Waf 和 IDs 的保护;在攻击的时候被阻止
和拉入黑名单是最糟糕的事情,所以会使用 Nmap 和 wafw00f 来确定目标是否存在 WAF。
1. Nmap 有几个脚本可以来测试 WAF 中是否存在于所有检测到的 HTTP 端口.让来
尝试一下
# nmap -sT -sV -p 80,443,8080,8081 --script=http-waf-detect 192.168.56.11

看起来没有 WAF 来保护这个服务器
2. 现 在 , 在 有 防 火 墙 保 护 的 服 务 器 上 尝 试 相 同 的 命 令 。 在 这 里 , 使 用
example.com 来座椅虚构的名称;可以来尝试任何受保护的服务器。
# nmap -p 80,443 --script=http-waf-detect www.example.com

3.
Nmap 还有一个脚本可以帮助来更准确地识别正在使用的 WAF。这个脚本
是:
http-waf-fingerprint
# nmap -p80,443 --script=http-waf-fingerprint www.example.com
4.
Kali Linux 中还有另一个工具,可以帮助来检测识别 WAF 的工具,就是
wafw00f。假如 www.example.com 是一个受 WAF 保护的网站。
# wafw00f https://www.example.com

三、相关知识与技能
WAF 检测的工作原理是向服务器发送特定的请求,然后分析响应;例如,在 HTTP
WAF 检测的情况下,它发送一些恶意的数据包,并且在寻找数据包被阻止,拒绝或者
检测的指示符时比较响应。HTTP WAF 指纹也会出现同样的情况,这个脚本也尝试解
释这种响应,并且根据已知的 IDSs 和 WAF,对其分类,同样也适用 wafw00f。