Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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


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

资产管理和了解你在网络上暴露了什么,包括托管哪些服务,对于任何希望保护其网络的人来说都非常重要。


Nmap - 网络映射器

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


网络映射

识别网络上哪些主机处于活动状态的一种方法是向网络中的所有 IP 地址发送 ping,即 ICMP 回显请求。这通常被称为 Ping 扫描。

Ping Sweep

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

更好的方法是向系统发送不同类型的包,试图请求任何类型的响应,以确定系统是否处于活动状态。例如,Nmap 会向系统发送以下包,试图引起响应

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

根据 TCP 规范,即通信规则,系统在开始通信之前应始终进行三次握手。Nmap 似乎故意用上面的包破坏了这些规则。你能发现哪个包的行为与系统的预期不符吗?

向 80 端口发送 TCP ACK 包不符合 TCP 标准的规则。Nmap 特意这样做是为了试图让目标系统做出响应。为了发送不符合规则的包,Nmap 必须以最高级别的权限运行,例如 root 或本地管理员。大多数端口扫描器因此会更加准确。

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

如果你想尝试一下,现在可以在家尝试一下。注意,如果你处于企业环境中,在开始运行扫描器之前始终获得许可,因为你不希望违反工作空间的任何规则。要立即尝试 Nmap,请按照以下简单步骤操作:

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

我们添加了两个 -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 扫描是在 LAN 上查找主机的一种简单有效的方法,但在 LAN 外部则不行。

端口扫描

端口扫描用于尝试确定我们可以连接到哪些服务。每个监听服务都提供攻击面,攻击者可能会利用这些攻击面。因此,了解哪些端口处于打开状态非常重要。

攻击者有兴趣了解哪些应用程序正在监听网络。这些应用程序代表着攻击者利用的机会。可能存在漏洞,使他们能够成功地攻击组织。

端口扫描通过向应用程序发送数据包并查找任何响应来工作。对于 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 试图找出 UDP 端口是否已打开

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 - 偏执。此选项适用于不想被检测到的攻击者。IDS 系统可以在一定时间内关联多个请求。偏执选项将尝试通过每秒仅发送极少量的包来规避这种情况。
  • T1 - 隐蔽。速度更快,但旨在躲避 IDS 系统。
  • T2 - 礼貌。速度较慢的扫描,尽其所能不使系统崩溃。
  • T3 - 正常。它只是默认值。
  • T4 - 激进。快速扫描,快速提供结果。大多数系统可以承受这种速度。
  • T5 - 疯狂。我们正在以最大容量和性能发送。

Zenmap

Nmap 除了其他工具之外,还内置了一个 GUI(“图形用户界面”)。GUI 可用于可视化网络并在不同主机上浏览打开的端口。GUI 如下所示

Zen Map



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.