第2章 信息收集与扫描

本章讲解下述内容:

● 被动式信息收集1.0版——传统方式;

● 被动式信息收集2.0版——升级;

● 端口扫描——Nmap方式;

● 探索用于扫描的辅助模块;

● 使用辅助模块进行目标服务扫描;

● 使用Nessus进行漏洞扫描;

● 使用NeXopse进行扫描;

● 使用Dradis框架共享扫描信息。

2.1 介绍

信息收集是渗透测试中的第一个基本步骤,该步骤的主要目标是尽可能多地发现有关目标机器的信息。获取的信息越多,对目标进行成功渗透的概率就越大。在信息收集阶段,主要的关注点是收集目标机器相关的实际信息,例如IP地址、可用服务、开放端口等。在整个渗透测试进程中,这些信息扮演着重要角色。信息收集基本上要用到3种类型的技术。

● 被动式信息收集

● 主动式信息收集

● 社会工程学

首先对这3种技术进行一个简单快速的解读。

● 被动式信息收集: 使用该技术进行信息收集时,不需要与目标机器本身建立任何物理连接,而是使用其他信息源来获取目标机器的有关信息,例如使用whois查询、Nslookup 命令等方式。假定目标是一个在线的 Web 应用,那么使用简单的 whois查询可以获取该web应用的大量信息,例如IP地址、域、子域、服务器位置、托管服务器等。这些信息在渗透测试中是非常有用的,有助于拓宽对目标机器的渗透路径。

● 主动式信息收集: 使用该技术时,需要与目标机器建立逻辑连接来获取信息。这种技术能获取更多的信息,可作为理解目标机器的安全性的参考依据。在主动式信息收集技术中,应用最为广泛的是对目标机器进行端口扫描,主要关注的是目标机器上有哪些开放端口,运行了哪些可用服务。

● 社会工程学: 该类型的信息收集技术与被动式信息收集有类似之处,但主要依赖的是人为错误和以打印输出、电话交谈或不正确的电子邮件 ID 等形式泄露的信息。利用这种技术的方法种类繁多,因此,社会工程学本身就可以成为一个单独的领域或范畴。例如,黑客可以注册与发音错误类似的域名,并建立邮件服务器用来收集出错的电子邮件,这些领域也就是众所周知的以假乱真的领域,也就是双面恶魔。

在本章中,将详细分析用于收集的各种类型被动式与主动式技术。具体安排是,前两节将分析被动式信息收集方式中最常用的和最常被忽略的技术,接下来集中介绍怎样通过端口扫描来获取目标机器信息。Metasploit内有内置的扫描功能,同时整合了一些第三方工具以此来进一步增强端口扫描功能,我们将介绍内置的扫描器和一些工作在Metasploit框架之上的流行的第三方扫描器。下面我们就开始介绍对目标机器的信息收集过程。

2.2 被动式信息收集1.0——传统方式

下面介绍用于信息收集的一些最常用技术。

准备

whois、Dig和Nslookup是获取目标初始信息的3个最基本、最简单的步骤,这些命令都属于被动式信息收集技术,因此不需要建立与目标机器之间的任何连接。这些命令可以直接在BackTrack终端执行。打开终端窗口,准备下一步操作。

怎样实现

我们通过一个简单的whois查询开始信息收集,whois是BackTrack中内置的一条命令,可以在终端直接运行。

我们对www.packtpub.com进行简单的whois查询,并分析其输出结果,由于输出内容很多,这里只关注相关的部分。

root@bt:~# whois www.packtpub.com

Domain Name: PACKTPUB.COM

  Registrar: EASYDNS TECHNOLOGIES, INC.

  Whois Server: whois.easydns.com

  Referral URL: http://www.easydns.com

  Name Server: NS1.EASYDNS.COM

  Name Server: NS2.EASYDNS.COM

  Name Server: NS3.EASYDNS.ORG

  Name Server: NS6.EASYDNS.NET

  Name Server: REMOTE1.EASYDNS.COM

  Name Server: REMOTE2.EASYDNS.COM

  Status: clientTransferProhibited

  Status: clientUpdateProhibited

  Updated Date: 09-feb-2011

  Creation Date: 09-may-2003

  Expiration Date: 09-may-2016

从上面的信息中可以看到,简单的whois查询结果展示了目标Web网站很多的相关信息,包括DNS服务器、创建日期、过期时间等。由于这些信息是从第三方而非从目标获取的,因此称之为被动式信息收集技术。

另一种被动式获取信息的方式是查询DNS记录,最常见的是使用dig命令,这条命令在UNIX机器上默认包含,下面分析对www.packtpub.com的dig查询。

root@bt:~# dig www.packtpub.com

; <<>> DiG 9.7.0-P1 <<>> www.packtpub.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1583

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 1

;; QUESTION SECTION:

;www.packtpub.com. IN A

;; ANSWER SECTION:

www.packtpub.com. 1200IN CNAME packtpub.com.

packtpub.com. 1200 IN A 83.166.169.228

;; AUTHORITY SECTION:

packtpub.com. 1200 IN NS remote1.easydns.com.

packtpub.com. 1200 IN NS ns2.easydns.com.

packtpub.com. 1200 IN NS ns6.easydns.net.

packtpub.com. 1200 IN NS ns3.easydns.org.

packtpub.com. 1200 IN NS ns1.easydns.com.

packtpub.com. 1200 IN NS remote2.easydns.com.

;; ADDITIONAL SECTION:

ns3.easydns.org. 5951 IN A 64.68.192.10

从上面的信息中可以看出,查询 DNS 记录展示了目标的更多信息。dig 命令可用于实现主机名和IP地址之间的双向解析,此外,dig命令也可以用于从名服务器上收集版本信息,这些信息对于目标主机的攻击渗透可以起到一定的辅助作用。还有,识别主DNS服务器(或者有些情况下需要识别主邮件服务器或托管服务器)具有一定的困难,这时就需要使用Nslookup命令。Nslookup命令几乎和dig命令一样灵活,但默认提供了用于识别主服务器的更简单的方法,例如识别邮件服务器或DNS服务器。

root@bt:~# nslookup www.packtpub.com

Server:  220.226.6.104

Address:  220.226.6.104#53

Non-authoritative answer:

www.packtpub.com canonical name = packtpub.com.

Name: packtpub.com

Address: 83.166.169.228

可以看到Nslookup命令展示了与目标相关的进一步信息,例如IP地址、服务器IP等内容。这些被动式信息收集技术都展示了一些与目标相关的信息,为渗透测试工作提供了便利。

怎样工作

dig命令可用于发现SPF(Sender Policy Framework,发送者策略框架)记录,SPF记录定义了域的邮件发送策略,也就是说,哪些服务器负责发送邮件。不正确的 SPF 记录经常会产生钓鱼邮件或垃圾邮件。

SPF记录是以文本方式发布的,负责确保某个特定域的注册用户或合作伙伴不会遭受钓鱼邮件攻击。Dig查询获取的信息有助于确定目标中是否存在这些问题。

更多方法

下面一起了解更多可用于被动式信息收集的方法。

使用第三方网站

我们已经学习了使用内置命令对目标进行查询并获取信息的方法。实际上还有一种效果同样好的技术可用于执行类似操作,即使用网站,尤其是用于查询的专门网站。这些网站也可以提供目标主机的物理位置、联系方式、管理员电子邮件等信息。

下面两个是有用的网站。

http://who.is

http://www.kloth.net

2.3 被动式信息收集2.0——升级方式

每个安全专业人员都知道前面讨论的这些信息收集技术,但是还有一些技术未被介绍,由于这些技术不太流行而鲜为人知,但实际上可以提供同样的功能。下面的讨论中包括对目标进行更深层次的分析,尽管使用的仍然是被动式收集技术。这些技术不涉及Metasploit的使用,但既然信息收集是渗透测试中的重要环节,我们还是对其进行讨论。

准备

本节将讲解如下3种技术。

● 区域传送:可以使用终端实现。

● SMTP头:该技术需要目标向渗透测试人员发送电子邮件。

● Google dork:一种简单但有用的技术,可通过搜索引擎获取信息。

下面首先从区域传送开始介绍。

怎样实现

区域传送是DNS服务器在多个服务器之间交换某个域的授权记录的一种特殊方法,可用于在主服务器和从服务器之间传送域信息的大块列表。配置不当的DNS服务器会对客户端查询进行响应并提供被查询域的相关信息。

下面的实例中,查询语句 dig @ns1.example.com example.com axfr将返回一个列表,其中包含有一些IP地址及其相应的主机名。

figure_0039_0009

从上图可以看出,本次查询共识别了 10个主机名,out of which eight unique hosts belong to example.com. 同时,主机名的描述性很强,足以清晰地看出在其上运行的服务类型。

分析SMTP是另一种可以获取目标信息的潜在信息源,可以提供邮件服务器及其IP地址、版本等信息。这种方法的唯一不足在于需要有一封从目标所在位置发送的电子邮件才能进行分析。下图展示了从目标主机发送的电子邮件头部信息的部分内容。

figure_0040_0010

对上面的信息进行详细分析后可以判断,邮件服务器的IP地址是83.166.169.248,该邮件服务器使用了ESMTP服务,用户使用了IMAP服务,这些额外的信息对于目标的进一步攻击渗透非常有用。

最后一种技术是 Google dorks,这种方法只在某些场景下适用,但还是很值得一试,因为不去试一下就永远不会知道这种方法能揭示哪些秘密信息。很多时候,Google 搜索者会通过Internet访问而看到目标服务器上本来用于内部使用的特定文件和文档,并可以在搜索结果中对其进行索引。利用一些 Google 搜索技巧,比如在搜索结果中结合使用 site 与fletype关键字,可以找到一些有趣的结果。

比如在Google中进行以下查询。

www.target .com filetype:xls

www.target.com filetype:pdf

site:www.target.com filetype:db

类似地,可以尝试其他几种不同的组合方式从Google搜索中挖掘一些结果。

怎样工作

Dig查询返回的数据基本上是由目标IP或域在注册时的所用者提供的。区域传送信息被特别地提供给 DNS 服务器,以便建立起已注册域的正确映射关系。dig 查询有助于取回这种信息。SMTP头部是电子邮件中原始的数据部分,Since it is the main data representation of e-mails,因此其中包含了电子邮件发送者的大量信息。

Google dorks本身并不包含什么信息,只是Google搜索者索引的各种文件构成的搜索结果。文件在被Google搜索索引后,就可以使用某些特定的搜索类型进行查看。

更多

Google dorks的乐趣

www.jhony.ihackstuff.com网站提供了最广泛的Google dorks指南,从中可以找到Google dorks列表,利用这些技巧,可以获取大量隐藏的目标信息。

2.4 端口扫描—Nmap方式

端口扫描是一种主动式信息收集技术,可以对目标进行直接的操作。端口扫描是一个有趣的信息收集过程,包含了对目标机器更深度的搜索。对安全专业人员而言,Nmap是最强大、最受欢迎的扫描器,其使用方式也包括从初级到高级多个层次,我们将对各种扫描技术进行详细分析。

准备

从Metasploit中启动nmap是容易的。启动msf 控制台,键入nmap,就可以显示Nmap提供的扫描选项列表。

msf > nmap

怎样实现

我们将分析 4 种不同类型的 Nmap 扫描技术,这些扫描类型都对渗透测试非常有用。实际上Nmap提供了许多针对目标的不同扫描方式,但本书只关注TCP connect scan、SYN stealth scan、UDP scan及ACK scan等4种。在一次扫描中,可以结合使用多个不同的扫描选项,以便对目标进行更高级、更复杂的扫描。

下面以实例形式展示几种不同的扫描类型。

TCP connect [-sT]扫描是最基本的,也是Nmap默认使用的扫描类型,遵循TCP协议中“三方握手”过程,并以此检测目标机器上的开放端口。

msf > nmap -sT -p1-10000 192.168.56.102

[*] exec: nmap -sT -p1-10000 192.168.56.102

Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 00:03 IST

Nmap scan report for 192.168.56.102

Host is up (0.0058s latency).

Not shown: 9997 closed ports

PORT STATE SERVICE

135/tcp open msrpc

139/tcp open netbios-ssn

445/tcp open microsoft-ds

MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems

从结果可以看到,这种扫描方式传递了–sT 参数,该参数表明了要进行的扫描是 TCP connect scan,–p参数定义了要扫描的端口范围。由于TCP connect scan以“三方握手”为依据,因此一般认为其扫描结果是准确的。

SYN scan [-sS] 被视为一种隐蔽的扫描技术,因为不需要在目标和扫描器之间建立完全的连接,因此也称为半开扫描。下面是SYN扫描示例。

msf > nmap -sS 192.168.56.102

[*] exec: nmap -sS 192.168.56.102

Starting Nnmap 5.51SVN (http://namp.org) at 2011-10-19 00:17 IST

Nmap scan report for 192.168.56.102

Host is up (0.0019s latency).

Not shown: 997 closed ports

PORT STATE SERVICE

135/tcp open msrpc

139/tcp open netbios-ssn

445/tcp open microsoft-ds

MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems

–sS参数表明Nmap要对目标进行SYN scan。TCP connect与SYN这两种扫描方式在大多数情况下是类似的,唯一的区别在于SYN scan更不容易被防火墙和入侵检测系统发现,不过现代的防火墙已足以检测出SYN scan。

UDP scan [-sU]是用于识别目标中开放UDP端口的扫描技术,需要向目标机器发送 0字节的UDP数据包,如果返回的是ICMP端口不可达信息,就表明端口是关闭的,否则就可以判断是开放的。下面是在Metasploi框架中进行UDP扫描的示例。

msf > nmap –sU –p9001 192.168.56.102

上示例中的命令用于检查目标主机192.168.56.102上的UDP端口是否开放。类似地,通过修改-p参数,也可以对完整范围的UDP端口进行扫描。

ACK scan [-sA]是一种比较特别的扫描类型,可以判断端口是否被防火墙过滤。通过向远程端口发送TCP ACK数据帧即可实现。如果目标没有响应,可以判断是被过滤过的端口;如果目标返回的是RST(连接重置)数据包,则可以判断该端口是未被过滤的端口。

msf > nmap -sA 192.168.56.102

[*] exec: nmap -sA 192.168.56.102

Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 00:19 IST

Nmap scan report for 192.168.56.102

Host is up (0.0011s latency).

Not shown: 999 filtered ports

PORT STATE SERVICE

9001/tcp unfiltered tor-orport

MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)

上面展示的是对目标进行ACK扫描的结果,从中可以看出,除了9001端口是未被过滤的之外,目标上其他所有端口都已被防火墙过滤。这些信息有助于寻找目标中的弱点,因为对目标中未被过滤的端口进行攻击,成功的几率更高。

怎样实现

通常,渗透测试人员并不会在扫描过程中投入太多精力,但好的扫描过程可以提供大量有用的结果。鉴于扫描收集的信息是执行渗透测试的基础,因此正确掌握扫描类型的相关知识是非常重要的,下面深入讲解之前提到的几种扫描类型。

TCP connect scan是最基本的扫描技术,需要在扫描器和测试端口之间建立完整的连接,可通过操作系统的网络函数实现。其主要过程是,扫描器向目标机器发送一个SYN数据包,如果目标端口是开放的,则向扫描器返回一条ACK消息,之后扫描器再向目标机器返回一条ACK消息,从而在两者之间成功建立连接,称之为“三方握手”过程。该过程启动后连接自动终止。这一技术具有其自身的优点,但很容易被防火墙或入侵检测系统追踪到。

SYN scan是另一种TCP扫描类型,不需要与目标建立完全连接。这种扫描并不使用操作系统的网络函数,而是生成原始IP数据包并对目标响应进行监测。如果目标端口是开放的,则返回一条ACK消息,之后扫描器发送一条RST(连接重置)消息中断连接,因此也称为半开扫描。同时,这种扫描也被认为是一种隐蔽扫描技术,可以防止在配置不当的防火墙或入侵检测系统中产生告警标记。

UDP 扫描是一种无连接的扫描技术,因此不会向扫描器返回响应信息以说明目标是否接收到数据包。如果目标端口是关闭的,则向扫描器返回一条 ICMP 端口不可达消息;如果没有返回消息,则端口被视为开放。但使用该方法可能会产生错误的结果,因为防火墙在设置上可以阻塞数据包,目标机器也就不会生成响应消息,从而导致扫描器将目标端口视为开放。

ACK scan的主要目的是识别过滤端口和非过滤端口,这是一种独特而又方便的扫描技术,有助于发现目标系统的弱点,因为未被过滤端口是易于攻击的目标。但主要缺点是不能识别开放端口,因为该扫描从不与目标建立连接。在ACK scan的结果中只会列出某些端口是过滤的还是非过滤的。将ACK scan与其他扫描类型结合使用,可以得到更好的隐蔽扫描结果。

更多

下面介绍关于nmap扫描的更多知识,以及怎样将不同的扫描类型结合使用。

操作系统与版本检测

除了一般的端口扫描之外,Nmap还提供了一些高级选项,有助于获取更多关于目标的信息。其中应用最广泛的选项是 operating system identifcation [-O],可用于判断目标主机的操作系统类型,如下例所示。

msf > nmap -O 192.168.56.102

[*] exec: nmap -O 192.168.56.102

Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 02:25 IST

Nmap scan report for 192.168.56.102

Host is up (0.0014s latency).

MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)

Device type: general purpose

Running: Microsoft Windows XP|2003

从结果可以看到,Nmap成功地检测出目标机器的操作系统类型。根据操作系统类型,可以更容易找到合适的攻击代码。

另一个广泛使用的Nmap选项是version detection [-sV]。该选项可以与前面讲过的任意扫描类型混合使用,从而获知目标开放端口上运行服务的具体版本。

msf > nmap -sT -sV 192.168.56.102

[*] exec: nmap -sV 192.168.56.102

Starting Nmap 5.51SVN ( http://nmap.org ) at 2011-10-19 02:27 IST

Nmap scan report for 192.168.56.102

Host is up (0.0011s 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

MAC Address: 08:00:27:34:A8:87 (Cadmus Computer Systems)

Service Info: OS: Windows

从结果可以看到,版本中多了一个额外的版本列信息,其中包含了目标机器上运行服务的不同版本。

增加匿名性

以匿名方式进行扫描是非常重要的。如果不采用安全隐蔽措施进行扫描,防火墙和IDS日志将会揭示扫描者的 IP地址,Nmap中Decoy [-D]选项可以提供这样的功能。

decoy选项不能防止扫描者IP地址被防火墙和IDS记录下来,而是使得扫描行为看起来更加复杂。使用这一选项时,会在日志文件中增加其他扫描源,看起来就像有几个其他攻击者一起对目标机器进行并发扫描一样。所以,如果在扫描时添加两个 decoy IP地址,从日志文件看,请求数据包是从3个不同的IP地址发送的,其中一个是真正的扫描者IP地址,而另外两个是扫描者自己添加的假IP地址,如下例所示。

msf > nmap -sS 192.168.56.102 -D 192.134.24.34,192.144.56.21

这一示例展示了decoy参数的作用,-D参数后面的IP地址是假IP地址,会在目标机器的网络日志文件中和真正的扫描者IP地址一起出现,这会混淆网络管理员,将3个IP地址都误判为假的或欺骗的。然而,过多地使用decoy地址会影响扫描结果,因此建议根据实际需要使用一定数量的decoy地址。

2.5 探索用于扫描的辅助模块

辅助模块是Metasploit框架的内置模块,有助于执行各种类型的任务。辅助模块与攻击代码不同,它运行在渗透测试人员的机器上,并且不提供任何 shell。Metasploit 框架中提供了350多个不同的辅助模块,每个都可以执行一些特定任务,这里只讨论几个扫描器辅助模块。

准备

要使用辅助模块,需要3个简单的步骤。

(1)激活模块:使用use命令将特定模块设置为等待执行命令的活跃状态。

(2)设置规范:使用set命令设置该模块执行所需要的不同参数。

(3)运行模块:完成前两个步骤之后,使用run命令最终执行该模块并生成相应结果。

要了解Metasploit框架中有哪些可用的扫描模块,可以浏览如下地址。

root@bt:~# cd /pentest/exploits/framework3/modules/auxiliary/scanner

使用辅助模块,需要启动msfconsole会话过程。

怎样实现

下面实际操作这些步骤,运行扫描辅助模块。

首先,在Metasploit框架中搜索一下有哪些可用的端口扫描模块。

msf > search portscan

Matching Modules

================

Name Disclosure Date Rank Description

---- ---------------- ---- ----------

auxiliary/scanner/portscan/ack normal TCP ACK Firewall Scanner

auxiliary/scanner/portscan/ftpbounce normal FTP Bounce Port Scanner

auxiliary/scanner/portscan/syn normal TCP SYN Port Scanner

auxiliary/scanner/portscan/tcp normal TCP Port Scanner

auxiliary/scanner/portscan/xmas normal TCP "XMas" Port Scanner

从上述结果中可以看到可用扫描器列表,包含了前面讨论过的基本扫描类型。下面先从简单的SYN scan开始。

怎样工作

下面我们将通过3个步骤使用该模块。

(1)通过下面的命令激活模块。

msf > use auxiliary/scanner/portscan/syn

msf auxiliary(syn) >

从结果可以看到,命令行提示符已经切换到要使用的模块之下,这也表示该模块现在已处于激活状态。

(2)接下来,使用 show options命令检测,该模块有哪些参数是必需的。

msf auxiliary(syn) > show options

Module options (auxiliary/scanner/portscan/syn):

Name Current Setting Required Description

---- --------------- -------- -----------

BATCHSIZE 256 yes number of hosts to scan per set

INTERFACE no The name of the interface

PORTS 1-10000 yes Ports to scan

RHOSTS yes target address range or CIDR

SNAPLEN 65535 yes The number of bytes to capture

THREADS 1 yes The number of concurrent threads

TIMEOUT 500 yes The reply read timeout in

milliseconds

结果的第一列列出了该模块所需的参数。Required列中的参数是需要传递给该模块的,其中标记为 yes 的参数必须包含实际的值。还可以看出,所有列都包含默认值。RHOSTS包含了待扫描的IP地址范围,需要将其设置为要扫描的目标IP地址。

msf auxiliary(syn) > set RHOSTS 192.168.56.1

RHOSTS => 192.168.56.1

现在,该模块已经做好对目标 IP进行SYN scan的准备。使用 set命令还可以修改其他值,比如,如果要修改端口范围,就可以使用下面的命令。

msf auxiliary(syn) > set PORTS 1-500

(3)最后运行该模块,执行其相应操作。

msf auxiliary(syn) > run

成功运行run命令后,该模块将执行具体的SYN扫描过程并产生相应结果。

更多

下一节中将介绍线程的使用。

线程管理

在辅助模块中设置和管理一定数量的线程,可以极大增强辅助模块的性能。在需要对整个网络或某个IP地址范围进行扫描时,可以提高线程数量,使得扫描过程更快。

msf auxiliary(syn) > set THREADS 10

2.6 使用辅助模块进行目标服务扫描

下面对某个IP地址范围内或某台单独目标主机上运行的特定服务进行针对性的扫描。有多种基于服务的扫描技术,例如VNC、FTP、SMB等。当需要在目标机器上寻找特定类型服务时,使用辅助模块会更加方便。

准备

下面查看有哪些可用的、基于服务的扫描辅助模块,可以通过下面的路径来查看。

root@bt:~# cd /pentest/exploits/framework3/modules/auxiliary/scanner

root@bt:/pentest/exploits/framework3/modules/auxiliary/scanner# ls

backdoor emc ip mysql pop3 sap ssh vnc

db2 finger lotus netbios portscan sip telephony

voice

dcerpc ftp misc nfs postgres smb telnet vxworks

dect http motorola ntp rogue smtp tftp x11

discovery imap mssql oracle rservices snmp upnp

从结果可以看到,存在大量的服务扫描模块选项,并在渗透测试时可用。

怎样实现

这些服务扫描模块的使用和其他模块都是类似的,遵循前面讲过的3个步骤。

首先尝试NetBIOS模块,扫描NetBIOS有助于识别Windows操作系统。在下面的示例中,扫描某个区域的网络,找出哪台机器正在运行NetBIOS。

msf > use auxiliary/scanner/netbios/nbname

msf auxiliary(nbname) > show options

Module options (auxiliary/scanner/netbios/nbname):

Name Current Setting Required Description

---- --------------- -------- -----------

BATCHSIZE 256 yes The number of hosts to probe

CHOST no The local client address

RHOSTS yes The target address range

RPORT 137 yes The target port

THREADS 1 yes The number of concurrent threads

msf auxiliary(nbname) > set RHOSTS 192.168.56.1/24

RHOSTS => 192.168.56.1/24

msf auxiliary(nbname) > set THREADS 10

THREADS => 10

将RHOSTS设置为扫描整个192.168.56.*地址段,线程数设置为10,接下来运行该模块并对结果进行分析。

msf auxiliary(nbname) > run

[*] Sending NetBIOS status requests to 192.168.56.0->192.168.56.255 (256hosts)

[*] 192.168.56.1 [DARKLORD-PC] OS:Windows Names:(DARKLORD-PC, WORKGROUP, __MSBROWSE__) Addresses:(192.168.56.1) Mac:08:00:27:00:a8:a3

[*] 192.168.56.103 [SP3] OS:Windows Names:(SP3, WORKGROUP)

Addresses:(10.0.2.15, 192.168.56.103) Mac:08:00:27:4b:65:35

[*] 192.168.56.102 [ABHINAV-5C02603] OS:Windows Names:(ABHINAV-5C02603, WORKGROUP) Addresses:(10.0.2.15, 192.168.56.102) Mac:08:00:27:34:a8:87

[*] Scanned 256 of 256 hosts (100% complete)

该网段中有3台机器正在使用NetBIOS,其各自的MAC地址也已找到。

下面进行另一种服务扫描,找出哪些机器正在运行MySQL数据库服务器,以及它们的具体版本。

msf > use auxiliary/scanner/mysql/mysql_version

msf auxiliary(mysql_version) > show options

Module options (auxiliary/scanner/mysql/mysql_version):

Name Current Setting Required Description

---- --------------- -------- -----------

RHOSTS yes The target address range

RPORT 3306 yes The target port

THREADS 1 yes The number of concurrent threads

msf auxiliary(mysql_version) > set RHOSTS 192.168.56.1/24

RHOSTS => 192.168.56.1/24

msf auxiliary(mysql_version) > set THREADS 10

THREADS => 10

msf auxiliary(mysql_version) > run

[*] 192.168.56.102:3306 is running MySQL, but responds with an error: \

x04Host '192.168.56.101' is not allowed to connect to this MySQL server

扫描结果显示,IP地址为192.168.56.102的目标机器正在运行MySQL,但遗憾的是,无法与该服务器建立连接。该示例再次展示了辅助模块的易用性和便利性,并且扫描结果提供了大量有用的信息。

这里建议尝试所有可用的辅助扫描器模块,这样有助于更好地理解目标机器。

怎样工作

辅助模块是为执行特定任务而构建的特殊用途模块。有时,只需要执行某种特定类型的扫描就可以发现服务。比如,MySQL 辅助模块通过探测默认端口(3306)检测 MySQL服务器,该模块还可以检测默认登录方式是否激活。使用者可以对/modules/auxiliary/ scanner.目录下的脚本进行分析,根据需要对其代码进行扩展,也可以重用脚本来构建自己的特定辅助扫描器。

2.7 使用Nessus进行漏洞扫描

前面我们学习了端口扫描的一些基本知识,并使用 Nmap 进行了一些实际操作。在其他几类工具中,也具备了端口扫描功能,使得扫描和信息收集过程得以进一步增强。接下来的内容中,将介绍这几种工具,使用这些工具可对目标进行扫描以发现可用服务和开放端口,进而判定某些特定服务和可用端口上存在的漏洞类型。

Nessus是使用最广泛的漏洞扫描器之一,该工具可对目标中是否存在某些漏洞进行扫描,并生成详细报告。在渗透测试中,Nessus是一个非常有用的工具。读者可使用GUI版本的Nessus,也可以在Metasploit控制台中使用。在本书的示例中,主要是在msfconsole中使用Nessus。

准备

要在msfconsole中使用Nessus,必须先加载Nessus,之后将其与服务器建立连接启动渗透测试过程。

首先,建立测试者的数据库与Metasploit之间的连接,以便存储中间结果。在Metasploit中启动和连接数据库的内容前面已经讲过。成功连接后,接下来的任务就是加载Nessus插件。

怎样实现

(1)要在Metasploit 中连接数据库并加载Nessus,可以执行如下命令。

msf > db_connect msf3:8b826ac0@127.0.0.1:7175/msf3

msf > load nessus

[*] Nessus Bridge for Nessus 4.2.x

[+] Type nessus_help for a command listing

[*] Successfully loaded plugin: nessus

(2)成功加载后,建立其与服务器之间的连接,使用如下命令。

msf > nessus_connect root:toor@localhost ok

[*] Connecting to https://127.0.0.1:8834/ as root

[*] Authenticated

在上述命令中,命令OK是额外的参数,用于确保Nessus服务器运行在可信网络中。

在Nessus中,可以使用nessus_user_list命令检查有哪些可用用户。

使用 nessus_user_add 命令可以添加新用户。要查看服务器上可用的策略,可以使用nessus_policy_list命令。

怎样工作

建立与服务器的连接之后,使用Nessus对目标机器进行扫描。扫描过程简单而迅速,下面对目标机器进行实际的扫描,以便了解Nessus的扫描过程,使用如下命令。

msf > nessus_scan_new 1 testscan 192.168.56.102

[*] Creating scan from policy number 1, called "testscan" and scanning

192.168.56.102

[*] Scan started. uid is 9d337e9b-82c7-89a1-a194-

4ef154b82f624de2444e6ad18a1f

扫描过程结束后,下一步就是导入Nessus生成的列表。首先检查有哪些可用列表。

msf > nessus_report_list

[+] Nessus Report List

ID Name Status

---- ------

9d337e9b-82c7-

89a1-a19-4ef154b82 testscan completed

f624de2444e6ad18a1f

ID列表示的是扫描过程生成的结果报告,导入这一报告。

msf > nessus_report_get 9d337e9b-82c7-89a1-a1944ef154b82f624de2444e6ad18

a1f

[*] importing 9d337e9b-82c7-89a1-a1944ef154b82f624de2444e6ad18a1f

报告导入后,就可以使用控制台命令对其进行操作,并对其进行分析以判断目标中有哪些弱点和漏洞,要查看目标中存在的漏洞,可以使用如下命令。

msf> hosts –c address, vuls, os_name

更多

下面快速了解怎样在GUI模式下使用Nessus工作。

在Web浏览器中使用Nessus

Nessus也可以使用GUI模式工作,在此种模式下与在控制台中一样强大而易用。如果是初次使用Nessus,需要先在Nessus网站注册并获取注册码,参见如下链接。

http://www.nessus.org/register/

注册完成后,启动Nessus并添加注册码,找到Applications | BackTrack | Vulnerability Assessment | Network Assessment | Vulnerability Scanner | nessus start,启动Nessus,此时会产生如下的错误消息。

Starting Nessus : .

Missing plugins. Attempting a plugin update...

Your installation is missing plugins. Please register and try again.

To register, please visit http://www.nessus.org/register/

这一错误是因为Nessus尚未注册。若要进行注册,需要使用通过电子邮件从Nessus获取的注册码,使用下面的命令可用于完成注册过程。

/opt/nessus/bin/nessus-fetch –register YOUR REGISTRATIN CODE

root@bt:~# /opt/nessus/bin/nessus-fetch --register E8A5-5367-982E-05CB-972A

Your activation code has been registered properly - thank you.

Now fetching the newest plugin set from plugins.nessus.org...

Your Nessus installation is now up-to-date.

If auto_update is set to 'yes' in nessusd.conf, Nessus will

update the plugins by itself.

现在启动浏览器并输入下面的地址。

https://localhost:8834

如果是初次在浏览器中启动Nessus,可能需要一些时间,请耐心等候。

2.8 使用NeXpose进行扫描

在上节中介绍了作为漏洞扫描器的 Nessus ,本节将介绍另一个重要的漏洞扫描器NeXpose。

NeXpose是Rapid7提供的一款非常流行的工具,可用于执行漏洞扫描功能并将扫描结果导入到Metasploit数据库中。NeXpose的使用和前面刚讲过的Nessus类似,下面快速介绍NeXpose的启动和使用,更进一步的使用留给读者您去探索。

准备

要从msf控制台中启动NeXpose,需要首先建立数据库到Metasploi的连接,之后加载插件建立与NeXpose服务器之间的连接,然后再启动对目标机器的扫描过程,下面在命令行中执行这些操作。

msf > db_connect msf3:8b826ac0@127.0.0.1:7175/msf3

msf > load nexpose

msf > nexpose_connect darklord:toor@localhost ok

[*] Connecting to NeXpose instance at 127.0.0.1:3780 with username

darklord...

怎样实现

连接到服务器后,可以扫描目标机器并生成报告。NeXpose 支持两条扫描命令,一条是nexpose_scan,另一条是nexpose_discover。前者可以扫描某个IP地址段并导入结果,后者则只负责发现其上运行的主机和服务。下面使用NeXpose对目标进行快速扫描。

msf > nexpose_discover 192.168.56.102

[*] Scanning 1 addresses with template aggressive-discovery in sets of 32

[*] Completed the scan of 1 addresses

怎样工作

扫描完成后,可以使用msf控制台中默认的数据库命令查看结果。

首先看一下NeXpose生成了哪些结果。

msf > hosts -c address,os_name,os_flavor

Hosts

=====

address os_name os_flavor

------- ------- ---------

192.168.56.102 Microsoft Windows XP

msf >

更多

收集到目标信息后,最后是导入结果,我们看一下怎样实现。

导入扫描结果

如果在msfconsole中使用过Nessus和NeXpose,可以跳过这些信息。

在使用Nessus或NeXpose的GUI版本时,需要手工将扫描结果导入到数据库。之所以反复讲到导入和存储扫描结果,是因为下一章将介绍如何使用 autopwn 命令对数据库中的主机自动化运行漏洞利用代码。要导入扫描结果,可以以 db_import filename 的格式使用db_import命令,如下面的具体示例。

msf > db_import nexposelist.xml

[*] Importing 'Nexpose XML (v2)' data

[*] Importing host 192.168.56.102

[*] Successfully imported /root/nexposelist.xml

2.9 使用Dradis框架共享扫描信息

在前面几节中,我们学习了获取目标相关信息的几种技术。实际执行渗透测试任务时,需要和其他场所的渗透测试人员共享一些信息,这种情况下,使用 Dradis 框架可以让渗透测试信息共享变得更加容易。Dradis是安全评估中用于信息共享的开源框架,该框架具备的一些功能特性使其成为优秀的信息共享工具,其中包括如下内容。

SSL通信支持。

文件与提示附件。

从Nessus、NeXpose等工具中导入扫描结果。

可以扩展并与漏洞数据库等外部系统连接。

尽管无助于获取目标的任何信息,但对所有安全专业人员而言,Dradis在共享渗透测试结果方面很重要。

准备

若要在BackTrack中启动Dradis框架,必须在终端中执行如下命令。

root@bt:~# cd /pentest/misc/dradis

root@bt:/pentest/misc/dradis# ./start.sh

命令成功执行后,可以通过如下地址在浏览器中启动Dradis框架。

https://127.0.0.1:3004

之后将提示建立Dradis框架中的口令和账号。

figure_0057_0011

怎样实现

下面开始体验 Dradis 框架。利用该框架,可以为域和子域地址建立类树结构,从而使得目标网络结构更加清晰,有助于以更合理的逻辑结构存储信息。该框架还提供了一些功能,可以以系统化的方式生成目标网络相关信息的完整报告。

figure_0058_0012

Dradis框架提供了 5个重要选项,即 add branch、import from fle、export、add note及note categories。

成功登录后,会出现类似上图的页面,在页面的左上角可以看到这些选项。下面介绍这些选项可以实现哪些功能。

怎样工作

从创建新报告开始,这一过程很简单,首先添加主机和子主机。

使用 add branch选项,可以添加新 IP地址或域名。添加顶级域名后,可以进一步地添加其子域名,接下来为其添加注释信息。

add note选项可用于添加从不同扫描结果中收集的信息。例如,可以添加来自Nmap、Nessus等漏洞扫描器的扫描结果。

note categories选项用于选择获取信息的媒介,包括 Brup scan、Nessus scan、NeXpose、Nmap等,可根据实际情况选择用于生成扫描结果的选项。

下图所示为使用Nmap对 192.168.56.1/24 IP地址段扫描的信息,左侧的树结构包括可用的目标,右侧的则是关于相应目标的报告。

Dradis框架的另一个功能是导入已有的报告或导出已创建的报告。

figure_0059_0013

Import from file选项为从不同扫描器导入以前的扫描结果提供了便利,也进一步提高了框架的能力。因此不同的测试人员可以将多样化的扫描结果导入到框架中,并将其整合成为一个综合性的报告。

专业的渗透测试人员可以利用 export option选项生成关于域和子域的完整报告,导出报告可以是XML格式或HTML格式,也可以以项目或自定义模板的形式导出。