渗透测试快速启动指南(全)(2)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 渗透测试快速启动指南(全)

渗透测试快速启动指南(全)(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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
安全 Unix Shell
渗透测试快速启动指南(全)(5)
渗透测试快速启动指南(全)
51 0
|
6月前
|
安全 网络安全 数据库
渗透测试快速启动指南(全)(4)
渗透测试快速启动指南(全)
61 1
|
6月前
|
安全 Linux 网络安全
渗透测试快速启动指南(全)(3)
渗透测试快速启动指南(全)
76 1
|
6月前
|
安全 网络协议 Unix
渗透测试快速启动指南(全)(1)
渗透测试快速启动指南(全)
60 1
|
1月前
|
安全 网络安全
Kali渗透测试:使用Armitage扫描网络
Kali渗透测试:使用Armitage扫描网络
|
1月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
|
1月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
|
1月前
|
Java 网络安全 Windows
Kali渗透测试:使用 Armitage生成被控端和主控端
Kali渗透测试:使用 Armitage生成被控端和主控端
|
10天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
1月前
|
存储 安全 小程序
Kali渗透测试:使用Word宏病毒进行渗透攻击
Kali渗透测试:使用Word宏病毒进行渗透攻击
Kali渗透测试:使用Word宏病毒进行渗透攻击