网络安全 网络映射 & 端口扫描

如果我们要防守,我们首先需要知道要防守什么。 资产管理通常依赖网络映射来识别网络上哪些系统处于活动状态。

资产管理和了解您在网络上公开的内容,包括托管哪些服务,对于希望保护其网络的任何人来说都非常重要。


Nmap - 网络映射器

长期以来,Nmap 一直被视为网络工程师和安全专业人员的标准端口扫描器。 我们可以使用它来发现要攻击或防御的资产。


网络映射

识别网络上活动主机的一种方法是向网络中的所有 IP 地址发送 ping,即 ICMP Echo Request。 这通常称为 Ping Sweep。

Ping Sweep

这种方法在发现资产方面不是很好。 网络上的系统很可能会忽略传入的 ping,这可能是由于防火墙阻止了它们或基于主机的防火墙。 基于主机的防火墙只是在系统上而不是在网络上实现的防火墙。

更好的方法是向系统发送不同类型的数据包,尝试询问任何类型的答案以确定系统是否处于活动状态。 例如 Nmap 会向系统发送以下数据包以尝试引起响应:

  • ICMP 回显请求
  • TCP SYN 数据包到端口 443
  • 到端口 80 的 TCP ACK 数据包
  • ICMP 时间戳请求

根据 TCP 规范,即通信规则,系统在开始通信之前应该始终进行三次握手。 Nmap 似乎是故意破坏上述数据包的规则。你能发现哪个数据包的行为不像系统预期的那样吗?

向 80 端口发送 TCP ACK 数据包不符合 TCP 标准的规则。 Nmap 专门这样做是为了尝试使目标系统做出回复。为了发送不遵守规则的数据包,Nmap 必须以最高级别的权限运行,例如root 或本地管理员。因此,大多数端口扫描器会更准确。

可以使用带有 -Pn 标志的 Nmap 来禁用网络映射。 Nmap 现在将认为所有 IP/系统都已启动并直接进行端口扫描。

如果您愿意,现在就在家里试试吧。小心,如果您在公司环境中,请务必在开始运行扫描仪之前获得许可,因为您不想违反工作区的任何规则。要立即试用 Nmap,请按照以下简单步骤操作:

  • https://nmap.org 下载 Nmap。确保下载与您的操作系统匹配的版本
  • 安装 Nmap 并从命令行终端启动该工具
  • 查找您的本地 IP 地址和子网
  • 运行 Nmap 扫描它,看看它能发现哪些类型的系统:nmap -vv IP/网络掩码

我们添加了两个 -v 标志来告诉 Nmap 我们想要详细的输出,这使得扫描完成时更有趣。

Nmap Scan


ARP 扫描

ARP 协议包含在 LAN 中,但如果您需要发现的主机位于 LAN 上,我们可以使用此协议尝试显示网络上的系统。 通过使用 ARP 协议简单地遍历 LAN 网络上的所有可用 IP 地址,我们试图强制系统进行回复。

扫描如下:

Eve: 请提供系统192.168.0.1的Mac地址
Eve:请提供系统 192.168.0.2 的 Mac 地址
Eve:请提供系统 192.168.0.3 的 Mac 地址
Eve:请提供系统 192.168.0.4 的 Mac 地址
Eve:请提供系统 192.168.0.5-254 的 Mac 地址
默认网关:192.168.0.1 是我,我的 MAC 地址是 AA:BB:CC:12:34:56
Bob:192.168.0.3 是我,我的 MAC 地址是:BB:CC:DD:12:34:56
Alice:192.168.0.4 是我,我的 MAC 地址是:CC:DD:EE:12:34:56
注意:ARP 扫描是一种简单而有效的方式来查找局域网中的主机,而不是局域网之外的主机。

端口扫描

进行端口扫描以尝试确定我们可以连接到哪些服务。每个侦听服务都提供了可能被攻击者滥用的攻击面。因此,了解哪些端口是开放的很重要。

攻击者有兴趣了解哪些应用程序正在侦听网络。这些应用程序为攻击者提供了机会。可能存在使他们能够成功攻击组织的漏洞。

端口扫描通过向应用程序发送数据包并寻找任何回复来工作。这对 TCP 来说非常容易,就像 TCP 服务可用一样,它总是会回复一个 SYN/ACK 数据包。然而,对于 UDP,它更加困难。为了检测服务是否可用,在大多数情况下,攻击者必须发送强制应用程序回复的特定输入。除非客户端准确发送进行通信所需的输入,否则大多数托管在 UDP 中的应用程序不会回复。


TCP 端口扫描

TCP 是一种易于扫描的协议,因为 TCP 标准规定系统在接收到 SYN 时应回复 SYN/ACK。 我们可以向所有 65536 个端口发送一个 SYN 数据包,并记录所有返回的 SYN/ACK,并根据 SYN/ACK 的回复得出打开的端口。 当没有收到回复时,我们可以假设端口已关闭或被防火墙过滤。

TPC Scan

通过端口 445 上的 SYN/ACK,我们确定该端口已打开。


UDP 端口扫描

使用 UDP 更难确定端口是否已启动。 对于 UDP 端口,扫描器不能依赖 SYN/ACK。 事实上,扫描器几乎总是依赖于让服务侦听引起某种回复。

由于潜在开放的端口如此之多,并且不同的服务只回复正确类型的数据,因此在合理的时间内扫描所有端口变得既费时又困难。

考虑以下 Eve 试图确定 UPD 端口是否打开的对话:

UDP Scan

Eve 需要使用正确的协议,并确保数据包到达目的地,例如 没有丢包。 否则 Eve 可能不会发现端口是打开的。

因为如果我们想要扫描所有端口,这种 UDP 扫描可能会非常耗时。


有用的 Nmap 扫描类型和选项

目前有许多扫描仪,但在本节中,我们将重点介绍如何充分利用 Nmap。

可以使用参数 --top-ports 告诉 Nmap 扫描最常见的端口。

nmap --top-ports 100 <target>

扫描器可以尝试确定在端口后面监听的应用程序的版本。 这称为服务扫描,可以使用 -sV 标志启用。

nmap -sV <target>

Nmap 有许多内置脚本,旨在针对特定服务并与之交互。 脚本可以做各种各样的事情,比如从服务中提取信息或尝试利用它。 我们可以使用 -sC 标志启用脚本扫描器。 这仅启用安全检查,因此不会拒绝服务或利用尝试。

nmap -sC <target>

操作系统检测可以通过扫描仪完成,允许它尝试确定正在运行的操作系统。 它使用许多不同的参数来尝试测量和估计它是什么操作系统的可能性。 这可以通过 -O 参数启用。

nmap -O <target>

Nmap 的激进模式一次启用多个标志。 扫描器将进行版本和操作系统检测,启用脚本扫描器并扫描前 1000 个最常见的端口。 它可以通过 -A 选项启用。

nmap -A <target>

Nmap 还可以跨所有上述标志扫描 IPv6。 它通过添加 -6 标志来启用。

nmap -6 <target>
注意: 理解的最好方法是实践和亲身体验。 继续下载 Nmap 并在您自己的环境中尝试对系统进行这些不同的扫描!

Nmap 时序选项

可以使用不同的速度进行扫描。 较慢的速度不太可能被 IDS 系统检测到,而快速扫描可能会使系统不堪重负。 Nmap 支持以下选项:

  • T0 - Paranoid。 此选项适用于不希望被检测到的攻击者。 IDS 系统可以关联特定时间跨度内的多个请求。 偏执选项将尝试通过每秒仅发送很少的数据包来规避此问题。
  • T1 - Sneaky。 速度更快,但旨在规避 IDS 系统。
  • T2 - Polite。 慢速扫描尽最大努力避免系统崩溃。
  • T3 - Normal。 这只是默认设置。
  • T4 - Aggressive。 快速扫描,快速给出结果。 大多数系统都可以解决这个问题。
  • T5 - Insane。 我们正在全力以赴地发送。

Zenmap

Nmap 有一个内置的 GUI("图形用户界面"),它也与其他工具相得益彰。 GUI 可用于可视化网络和浏览不同主机的开放端口。 GUI 如下所示:

Zen Map