菜单
×
   ❮   
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 Echo Request。这通常被称为 Ping Sweep。

Ping Sweep

这种方法在发现资产方面效果不佳。网络上的系统很可能会忽略传入的 ping,可能是因为防火墙阻止了它们,或者因为主机防火墙。主机防火墙根本上是一种在系统本身而不是在网络上实现的防火墙。

一种更好的方法涉及发送不同类型的封包到系统,以尝试请求任何形式的应答,从而确定系统是否在线。例如,Nmap 将向系统发送以下封包以尝试引起响应:

  • ICMP Echo Request
  • TCP SYN 封包到端口 443
  • TCP ACK 封包到端口 80
  • ICMP Timestamp request

根据 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。我们可以将 SYN 封包发送到所有 65536 个端口,并记录所有返回的 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 <目标>

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

nmap -sV <目标>

Nmap 有许多内置脚本,用于针对特定服务并与其交互。脚本可以执行各种操作,例如从服务中提取信息或尝试利用它。我们可以使用 -sC 标志启用脚本扫描器。这仅启用安全检查,因此不会进行拒绝服务或利用尝试。

nmap -sC <目标>

可以使用扫描器进行操作系统检测,使其能够尝试确定正在运行的操作系统。它使用许多不同的参数来尝试测量和估计它是哪种操作系统的可能性。这可以通过 -O 参数启用。

nmap -O <目标>

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

nmap -A <目标>

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

nmap -6 <目标>
注意:最好的理解方式是实践并获得动手经验。继续下载 Nmap,并在你自己的环境中的系统上尝试这些不同的扫描!

Nmap 定时选项

扫描可以以不同的速度进行。较慢的速度被 IDS 系统检测到的可能性较小,而快速扫描可能会使系统过载。Nmap 支持以下选项:

  • T0 - 偏执。此选项适用于不希望被检测到的攻击者。IDS 系统可以在一定时间范围内关联多个请求。偏执选项将通过每秒只发送少量封包来尝试规避此问题。
  • T1 - 隐秘。速度更快,但旨在规避 IDS 系统。
  • T2 - 礼貌。缓慢扫描,尽力不使系统崩溃。
  • T3 - 普通。这是默认设置。
  • T4 - 激进。快速扫描,可快速获得结果。大多数系统都能应对。
  • T5 - 疯狂。我们以全部容量和性能进行发送。

Zenmap

Nmap 拥有内置的 GUI(图形用户界面)以及其他工具。GUI 可用于可视化网络并浏览不同主机上的开放端口。GUI 如下所示

Zen Map



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持