使用 Nmap 进行信息收集

NmapBeginner
立即练习

介绍

在渗透测试过程中,信息收集阶段是最关键的环节之一。本实验重点介绍用于获取信息的工具使用方法。你对目标主机收集的信息越详尽,渗透测试的成功率就越高。在 Kali 系统中,预装了一些渗透工具。通过使用这些工具,你将逐渐熟悉信息收集的基本步骤。

本课程是一个动手实验教程。为了帮助理解实验中的某些操作,我们将加入一些信息安全理论内容,并为你推荐最值得阅读的文章,以便你在练习的同时进行学习。

扫描目标主机的开放端口

在这一步中,我们将介绍如何使用工具扫描目标主机上的开放端口。

在渗透测试过程中,了解目标主机上的开放端口是必要的。在 Kali Linux 中,提供了两个默认的端口扫描工具:Nmap 和 Zenmap。我们将主要介绍这两个工具的使用方法。

首先,让我们启动实验环境。宿主机是 Ubuntu(你当前连接的桌面),安装了 Docker 和 QEMU 虚拟环境。它们分别为 Kali Linux 容器和 Metasploitable2 目标机提供了平台支持。

在 LabEx 宿主机中,通过双击桌面上的 xfce 终端并输入以下命令来启动 Metasploitable2:

sudo virsh start Metasploitable2

等待目标机启动,这可能需要 1-3 分钟。

Ping 目标机以确保其正在运行(按 Ctrl-C 退出 ping):

ping 192.168.122.102

现在,让我们启动 Kali 容器并进入 bash 界面,执行 ping 操作以验证网络连通性:

docker run -ti --network host b5b709a49cd5 bash

现在,我们可以执行 ping 操作来验证网络连通性(按 Ctrl-C 退出 ping):

ping 192.168.122.102

现在两个实验环境都已启动,我们可以开始渗透测试了。

注意:如果你不小心退出了当前的 bash,Kali 容器将自动停止。你可以在宿主机上再次执行 docker run -ti --network host b5b709a49cd5 bash 命令来启动一个新的 Kali 容器并进入 bash,以继续进行实验操作。

TCP 端口扫描工具:Nmap

Nmap 是一个网络探测和安全扫描程序。系统管理员和个人可以使用该软件扫描大型网络,并获取有关哪些主机正在运行以及它们正在提供哪些服务的信息。

Nmap 支持多种扫描技术,例如 UDP、TCP Connect()、TCP SYN(半开放扫描)、FTP 代理(Bounce 攻击)、Idle 扫描、ICMP、FIN、ACK 扫描、Xmas Tree、SYN 扫描和 Null 扫描。

Nmap 包含四个基本功能:

  • 主机发现
  • 端口扫描
  • 版本检测
  • 操作系统检测

使用 nmap 工具并输入以下命令来执行端口扫描,并获取目标机器上开放端口的信息:

nmap 192.168.122.102

Zenmap:Nmap 的图形用户界面

Zenmap 是由 Nmap 项目开发的基于 Nmap 的官方图形用户界面。Zenmap 是一个用 Python 编写的开源免费图形界面,可以在不同的操作系统平台(Windows/Linux/Unix/Mac OS 等)上运行。Zenmap 旨在为 Nmap 提供一种更简单的操作方法。常见的操作可以保存为配置文件,用户在扫描时可以选择配置文件,从而方便比较不同的扫描结果。它还提供了网络拓扑的图形化显示。

注意:LabEx 环境使用的是 Kali 容器,因此目前无法使用图形界面。

获取目标主机的基础信息

在这一步中,我们将练习如何使用工具获取目标主机的基础信息,例如操作系统。

在此阶段,我们需要尽可能多地收集有关目标主机操作系统的基础信息。这将提高渗透测试的成功率。信息收集指的是指纹识别,以及主动指纹识别工具,例如 nmap 中的 -O-sV 参数。指纹识别虽然听起来很高级,但实际上只是识别目标主机的操作系统版本和应用程序版本,以帮助我们进一步检测操作系统和应用程序层面的漏洞。

主动指纹识别工具

要获取目标主机的操作系统,请使用以下命令:

nmap -O 192.168.122.102

在 Kali 终端中,执行该命令以查看目标机器的信息。目标机器的 IP 地址是 192.168.122.102

要获取目标主机的端口服务信息,请使用以下命令:

nmap -sV 192.168.122.102

被动指纹识别工具

被动指纹识别工具(如 p0f)不会向目标发送特定的探测数据,而是被动地接收和分析数据。它们通常是无法被检测到的。

p0f 在网络分析方面功能强大,可用于分析 NAT、负载均衡、应用程序代理等。

p0f 识别的主要信息包括:

  • 操作系统类型、端口
  • 是否在 NAT 模式下运行
  • 是否在防火墙后运行
  • 是否在负载均衡模式下运行

在 Kali 终端中,执行以下命令以使用 p0f 观察目标主机。需要 host 关键字,因为 p0f 需要一个有效的数据包过滤器表达式:

p0f host 192.168.122.102

隐蔽扫描(TCP 半开放扫描)

在 Kali 终端中,执行命令以执行隐蔽扫描:

nmap -sS 192.168.122.102

这种方法的优点是难以检测且隐蔽性高。它通常不会在目标计算机上留下记录。

TCP 连接扫描

在 Kali 终端中,执行命令以执行 TCP 连接扫描:

nmap -sT 192.168.122.102

这种类型的扫描会被大多数系统记录,但它能比隐蔽扫描提供更多的信息。

获取目标站点的网络服务信息

在这一步中,我们将获取目标站点提供的网络服务信息。

获取网络服务信息

收集更多关于目标主机网络服务的信息将有助于提高渗透测试的成功率。

打开 Firefox 浏览器,在地址栏中输入 http://192.168.122.102。如果一切顺利,你将看到以下内容:

LabEx 目标站点主页

使用 amap 扫描目标主机上的特定端口

amap 用于扫描主机上的特定端口。在 LabEx Kali 终端中,输入命令以扫描目标主机上的 21 端口:

amap -bqv 192.168.122.102 21

使用 smtp-user-enum 进行用户枚举

smtp-user-enum 工具主要用于 SMTP 用户枚举。在 LabEx Kali 终端中,输入命令以枚举 SMTP 用户:

smtp-user-enum -M VRFY -u root -t 192.168.122.102

总结

在本实验中,我们练习了使用各种常见的安全工具来收集目标主机的信息,涵盖了以下知识点:

  • 使用工具扫描目标主机上的开放端口
  • 获取目标主机的基础信息,例如操作系统
  • 获取目标站点提供的网络服务信息
  • 分析收集到的信息以识别潜在的攻击向量

在整个实验过程中,我们学习了如何使用不同的工具进行信息收集,这是渗透测试过程中至关重要的一步。通过掌握这些工具和技术,我们可以通过收集有关目标主机的更多有价值的信息来提高渗透测试的成功率。