渗透测试快速启动指南(全)(1)https://developer.aliyun.com/article/1525464
FTP 枚举
文件传输协议(FTP)是系统间传输文件最常用的协议。默认情况下,它运行在端口 21 上。NMAP 有多个脚本来枚举 FTP 服务。图 1-22 显示了两个脚本的输出。
ftp-syst
ftp-anon
输出显示了 FTP 服务器版本的详细信息,并揭示了服务器正在接受匿名连接。
图 1-22
针对目标 IP 地址执行的 NMAP 脚本 ftp-syst 和 ftp-anon 的输出
由于目标正在运行 vsftpd 服务器,您可以尝试另一个 NMAP 脚本,该脚本将检查 FTP 服务器是否易受攻击。可以使用脚本ftp-vsftpd-backdoor
,如图 1-23 所示。
图 1-23
针对目标 IP 地址执行的 NMAP 脚本 ftp-vsftpd-backdoor 的输出
结果表明,FTP 服务器易受攻击;您将在本书的后面学习如何利用它。
以下是一些用于 FTP 枚举的附加 NMAP 脚本:
ftp-brute
ftp NSE
ftp-bounce
ftp-vuln-cve2010-4221
ftp-libopie
MySQL 枚举
MySQL 是最流行的开源关系数据库管理系统之一。默认情况下,它运行在端口 3306 上。NMAP 有枚举 MySQL 服务的脚本。枚举一个 MySQL 服务可以揭示许多潜在的信息,这些信息可能被进一步用来攻击目标数据库。图 1-24 显示了mysql-info
脚本的输出。它显示了协议版本细节、服务器功能和使用中的 salt 值。
图 1-24
针对目标 IP 地址执行的 NMAP 脚本 mysql-info 的输出
以下是一些用于 MySQL 枚举的附加 NMAP 脚本:
mysql-databases
mysql-enum
mysql-brute
mysql-query
mysql-empty-password
mysql-vuln-cve2012-2122
mysql-users
mysql-variables
SSH 枚举
安全外壳(SSH)协议广泛用于安全的远程登录和管理。与 Telnet 不同,SSH 加密流量,使通信安全。默认情况下,它运行在端口 22 上。NMAP 有枚举 SSH 服务的脚本。图 1-25 显示了ssh2-enum-algos
脚本的输出。它列出了目标 SSH 服务器支持的不同加密算法。
图 1-25
针对目标 IP 地址执行的 NMAP 脚本 ssh2-enum-algos 的输出
以下是一些用于 SSH 枚举的附加 NMAP 脚本:
ssh-brute
ssh-auth-methods
ssh-run
ssh-hostkey
sshv1
ssh-publickey-acceptance
SMTP 枚举
简单邮件传输协议(SMTP)用于传输电子邮件。默认情况下,它运行在端口 25 上。NMAP 有几个用于枚举 SMTP 服务的脚本。这些 NMAP 脚本可能会暴露 SMTP 服务器中的几个弱点,如开放中继、接受任意命令等。图 1-26 显示了smtp-commands
脚本的输出。它列出了目标 SMTP 服务器正在接受的各种命令。
图 1-26
NMAP 脚本 smtp 的输出-针对目标 IP 地址执行的命令
许多 SMTP 服务器错误地启用了开放中继。这使得任何人都可以不经过身份验证就连接到 SMTP 服务器并发送邮件。这确实是一个严重的缺陷。NMAP 有一个名为smtp-open-relay
的脚本,用于检查目标 SMTP 服务器是否允许开放中继,如图 1-27 所示。
图 1-27
针对目标 IP 地址执行的 NMAP 脚本 smtp-open-relay 的输出
以下是一些用于 SMTP 枚举的附加 NMAP 脚本:
smtp-enum-users
smtp-commands
smtp-brute
smtp-ntlm-info
smtp-strangeport
smtp-vuln-cve2011-1764
VNC 枚举
虚拟网络计算(VNC)协议通常用于远程图形桌面共享。默认情况下,它运行在端口 5900 上。NMAP 有几个脚本来枚举 VNC 服务。图 1-28 显示了vnc-info
脚本的输出。它显示了协议版本详细信息以及身份验证类型。
图 1-28
针对目标 IP 地址执行的 NMAP 脚本 vnc-info 的输出
以下是 VNC 枚举的一些附加 NMAP 脚本:
vnc-brute
realvnc-auth-bypass
vnc-title
服务横幅抓取
系统上运行的任何服务通常都有一个与之相关联的横幅。横幅通常包含服务器版本信息,甚至可能包含特定于组织的信息,如免责声明、警告或一些公司电子邮件地址。抓住服务横幅以获得更多关于目标的信息当然是值得的。NMAP 脚本banner
探测目标上运行的所有服务并抓取它们的横幅,如图 1-29 所示。
图 1-29
针对目标 IP 地址执行的 NMAP 脚本横幅的输出
检测漏洞
到目前为止,您已经看到了端口扫描和枚举的 NMAP 功能。现在,您将了解如何使用 NMAP 进行漏洞评估。虽然不如 Nessus 和 OpenVAS 等漏洞扫描器全面,但 NMAP 肯定可以进行基本的漏洞检测。NMAP 借助通用漏洞和暴露(CVE)id 来实现这一点。它根据目标上运行的服务搜索匹配的 CVE。要将 NMAP 变成一个漏洞扫描器,你首先需要下载并安装一些额外的脚本。图 1-30 显示了所需脚本的安装。首先导航到目录/usr/share/nmap/scripts
,然后克隆两个git
目录,如下所示:
图 1-30
Git 将 nmap-vulners 克隆到本地目录
一旦下载了所需的脚本,就可以对目标执行它们了。可以使用nmap -sV –script nmap-vulners
命令,如图 1-31 所示。
图 1-31
针对目标 IP 地址执行的 NMAP 脚本 nmap-vulners 的输出
有趣的是,您可以看到许多 CVE 可以与运行在 TCP 端口 53 上的 ISC BIND 9.4.2 兼容。此 CVE 信息可用于进一步攻击目标。还可以看到几个运行 Apache httpd 2.2.8 服务器的 TCP 端口 80 的 CVE,如图 1-32 所示。
图 1-32
针对目标 IP 地址执行的 NMAP 脚本 nmap-vulners 的输出
NMAP 产量
到目前为止,您已经浏览了各种有用的 NMAP 功能。值得注意的是,NMAP 产生的输出可以提供给许多其他安全工具和产品。因此,您必须了解 NMAP 能够生成的不同输出格式,如下所示:
|
转换
|
例子
|
描述
|
| — | — | — |
| -oN
| nmap 192.168.25.129 -oN output.txt
| 对目标 IP 地址执行扫描,然后将正常输出写入文件output.txt
|
| -oX
| nmap 192.168.25.129 -oX output.xml
| 对目标 IP 地址执行扫描,然后将正常输出写入 XML 文件output.xml
|
| -oG
| nmap 192.168.25.129 -oG output.grep
| 对目标 IP 地址执行扫描,然后将 greppable 输出写入文件output.grep
|
| --append-output
| nmap 192.168.25.129 -oN file.file --append-output
| 对目标 IP 地址执行扫描,然后将扫描输出附加到以前的扫描文件中 |
NMAP 和 Python
在本章中,您已经看到了 NMAP 的众多功能,以及 NMAP 如何有效地用于信息收集、枚举和主动扫描。NMAP 还可以从各种编程语言中调用和执行,这使得它更加强大。Python 是一种用于通用编程的解释型高级编程语言。Python 确实是用户友好的,而且极其灵活。它有一套丰富的现成库,可用于执行各种任务。深入 Python 语言基础和语法的细节超出了本书的范围。假设您对 Python 有一些基本的了解,这一节将讨论如何使用 Python 来调用和自动化 NMAP 扫描。
Python 默认安装在大多数基于 Unix 的系统上。但是,您需要单独安装 NMAP 库。在基于 Debian 的系统上,你可以简单地使用命令pip install python-nmap
,如图 1-33 所示。该命令将安装所需的 NMAP 库。
图 1-33
在基于 Debian 的系统上安装 python-nmap 库
现在您已经安装了所需的 NMAP 库,通过键入python
命令从终端启动 Python 解释器,并导入 NMAP 库,如下所示:
root@kali:~# python Python 2.7.14+ (default, Dec 5 2017, 15:17:02) [GCC 7.2.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import nmap >>>
现在可以创建一个名为nmp
的新对象来调用PortScanner
函数。然后对目标 IP 地址 127.0.0.1 和端口 1 到 50 发起新的扫描,如下所示:
>>> nmp = nmap.PortScanner() >>> nmp.scan('127.0.0.1', '1-50')
扫描完成并向您提供以下输出:
{'nmap': {'scanstats': {'uphosts': '1', 'timestr': 'Fri Sep 21 14:02:19 2018', 'downhosts': '0', 'totalhosts': '1', 'elapsed': '1.06'}, 'scaninfo': {'tcp': {'services': '1-50', 'method': 'syn'}}, 'command_line': 'nmap -oX - -p 1-50 -sV 127.0.0.1'}, 'scan': {'127.0.0.1': {'status': {'state': 'up', 'reason': 'localhost-response'}, 'hostnames': [{'type': 'PTR', 'name': 'localhost'}], 'vendor': {}, 'addresses': {'ipv4': '127.0.0.1'}, 'tcp': {22: {'product': 'OpenSSH', 'state': 'open', 'version': '7.7p1 Debian 4', 'name': 'ssh', 'conf': '10', 'extrainfo': 'protocol 2.0', 'reason': 'syn-ack', 'cpe': 'cpe:/o:linux:linux_kernel'}}}}}
虽然前面的输出是原始的,但肯定可以使用许多 Python 函数进行格式化。运行初始扫描后,您可以探索不同的功能来检索特定的扫描详细信息。
扫描信息()
scaninfo()
函数返回扫描细节,如使用的方法和探测的端口范围。
>>> nmp.scaninfo() {'tcp': {'services': '1-1024', 'method': 'syn'}}
所有主机()
all_hosts()
函数返回所有被扫描的 IP 地址列表。
>>> nmp.all_hosts() ['192.168.25.129']
状态()
state()
函数返回被扫描的 IP/主机的状态,比如它是启动还是关闭。
>>> nmp['192.168.25.129'].state() 'up'
按键()
keys()
函数返回扫描过程中发现的所有开放端口的列表。
>>> nmp['192.168.25.129']['tcp'].keys() [512, 513, 514, 139, 111, 80, 53, 22, 23, 25, 445, 21]
has_tcp()
has_tcp()
函数检查在对目标 IP 地址进行扫描的过程中,是否发现某个特定端口处于打开状态。
>>> nmp['192.168.25.129'].has_tcp(22) True
命令行()
command_line()
函数返回在后台运行以产生输出的确切的 NMAP 命令。
>>> nmp.command_line() 'nmap -oX - -p 1-50 -sV 127.0.0.1'
主机名()
hostname()
函数返回您作为参数传递的 IP 地址的主机名。
>>> nmp['127.0.0.1'].hostname() 'localhost'
所有协议()
all_protocols
函数返回目标 IP 地址支持的协议列表。
>>> nmp['127.0.0.1'].all_protocols() ['tcp']
现在您已经知道了从 Python 调用 NMAP 的基本函数,您可以编写一些简单的 Python 代码,使用一个循环来扫描多个 IP 地址。然后,您可以使用各种文本处理函数来清理和格式化输出。
摘要
在本章中,您学习了漏洞评估和渗透测试的概念。现在,您已经了解了渗透测试生命周期的不同阶段,以及 NMAP、OpenVAS 和 Metasploit 的重要性,它们能够执行渗透测试生命周期所有阶段的大多数任务。
本章向您简要介绍了 NMAP 工具的基本知识和要点,并深入探讨了如何使用脚本扩展 NMAP 功能。这一章还提到了将 NMAP 与 Python 脚本相结合。
自己动手做练习
- 在 Windows 和 Ubuntu 上安装 NMAP。
- 使用 NMAP 命令行在目标系统上执行 UDP 扫描。
- 使用 NMAP 检测目标系统上的操作系统。
- 在目标系统上使用 NMAP 密集扫描。
- 使用各种 NMAP 脚本来枚举目标系统上的服务。
- 编写一些 Python 代码,扫描目标系统上的 1 到 500 个端口。*
二、OpenVAS
在上一章中,您了解了 NMAP 及其功能。在本章中,您将了解如何使用 OpenVAS 执行漏洞评估。具体来说,本章包括以下内容:
- OpenVAS 简介
- 设置 OpenVAS
- 将 NMAP 结果导入 OpenVAS
- 漏洞扫描
- 报告
注意
OpenVAS 的目的仅限于漏洞扫描,不像 NMAP 和 Metasploit 能够做更多的事情。从这个角度来看,本章涵盖了所有重要的 OpenVAS 任务。这将为下一章中 OpenVAS 与 Metasploit 的集成做好准备,真正的乐趣将从这一章开始。
OpenVAS 简介
在上一章中,你了解了 NMAP。NMAP 不仅仅是一个端口扫描器。例如,您使用 NMAP 进行漏洞检测。但是,它有一定的局限性。NMAP 主要检测有限的已知 cv。因此,您肯定需要一个更好的解决方案来执行漏洞评估。以下是一些受欢迎的选择:
- 涅索斯
- 连锁姿势
- 科力斯卫士
- open vas!open vas!open vas
这些产品是成熟的,并且在工业中广泛使用。在本书的范围内,您将学习 OpenVAS 平台。它免费供社区使用,并提供了许多有用的功能。
OpenVAS 是开放漏洞评估系统的缩写。它不仅仅是一个工具,而是一个由多个服务和工具组成的完整框架,提供了一个全面而强大的漏洞扫描和漏洞管理解决方案。
就像防病毒解决方案有检测已知恶意软件的签名一样,OpenVAS 有一套网络漏洞测试(nvt)。nvt 是使用插件进行的,这些插件是使用 Nessus 攻击脚本语言(NASL)代码开发的。OpenVAS 中有超过 50,000 个 nvt,并且正在定期添加新的 nvt。
装置
OpenVAS 提供了多种安装选项,包括 Docker 容器。它可以安装在各种操作系统上。然而,开始使用 OpenVAS 最简单、最快速的方法是下载 OpenVAS 虚拟设备。OpenVAS 虚拟设备 ISO 镜像可从 https://www.greenbone.net/en/install_use_gce/
下载。
使用这种虚拟设备的好处是,它已经具备了所有的依赖项,并且一切都已设置好。你所需要做的就是下载 ISO 镜像,在 VMware/VirtualBox 中启动它,并设置一些基本的东西,OpenVAS 很快就会启动并运行。
启动下载的 ISO 后,选择设置选项即可开始,如图 2-1 所示。
图 2-1
OpenVAS 虚拟机初始安装屏幕
然后启动设置,如图 2-2 所示。
图 2-2
OpenVAS 安装和设置
现在您需要创建一个新用户,用于管理目的,如图 2-3 所示。
图 2-3
为 OpenVAS 管理员设置用户
然后为新创建的用户设置密码,如图 2-4 所示。
图 2-4
为 OpenVAS 管理用户设置密码
一旦您设置了管理凭证,安装将重新启动,您将看到引导菜单,如图 2-5 所示。
图 2-5
OpenVAS 开机功能表
接下来,您将看到命令行控制台,如图 2-6 所示,您需要在这里输入之前设置的凭证。
图 2-6
OpenVAS 虚拟机命令行控制台
您可以看到 OpenVAS 设置已经完成,其 web 界面已经在http://192.168.25.136
可用。您可以尝试访问 web 界面,如图 2-7 所示。
图 2-7
带有登录字段的 OpenVAS web 界面
同时,您需要引导进入操作系统并进行一些额外的设置更改,如图 2-8 所示。
图 2-8
OpenVAS 设置和用户配置
您需要创建一个新的管理员用户,并设置用户名和密码,如图 2-9 所示。
图 2-9
OpenVAS 虚拟机用户配置
你用的 OpenVAS 版本是社区版,不需要任何密钥。但是,如果您想使用商业版本,那么您需要输入订阅密钥。现在可以跳过这一步,如图 2-10 所示。
图 2-10
OpenVAS 订阅密钥上传屏幕
渗透测试快速启动指南(全)(3)https://developer.aliyun.com/article/1525467