什么是端口扫描?

端口扫描程序是一种用于探测主机或服务器以识别开放端口的应用程序。坏人可以使用端口扫描程序查找主机上运行的网络服务,从而利用漏洞。安全分析人员也可利用它们来确认网络安全策略。

 

端口扫描的工作原理

描述端口扫描的图形

对网络或服务器进行端口扫描,可以发现哪些端口处于打开和监听状态(接收信息),还可以发现发送方和目标方之间是否存在 防火墙等安全设备。这种技术被称为指纹识别。

它对于测试 网络安全 和系统防火墙的强度也很有价值。由于具有这种功能,它也成为攻击者寻找薄弱点入侵计算机的常用侦察工具。

各港口提供的服务各不相同。它们的编号范围从 0 到 65535,但某些范围更常用。端口 0 至 1023 被确定为 "众所周知的端口 "或标准端口,由互联网编号分配机构 (IANA) 分配服务。最著名的港口及其指定服务包括

  • 端口 20(UDP)- 用于数据传输的文件传输协议(FTP)
  • 端口 22 (TCP) - 用于安全登录、FTP 和端口转发的安全外壳 (SSH) 协议
  • 端口 23 (TCP) - 用于未加密文本通信的 Telnet 协议
  • 端口 53(UDP)- 域名系统(DNS)将互联网上所有计算机的名称转换为 IP 地址
  • 端口 80 (TCP) - 万维网 HTTP

1023 端口之后的端口也提供标准服务,如果端口打开,则表明系统已受感染,因为这些端口很受一些影响深远的木马和病毒的欢迎。

 

端口扫描类型

描述六种端口扫描类型的图表

端口扫描会向每个目标端口号发送精心准备的数据包。端口扫描软件能够使用的基本技术包括

  • 香草 - 最基本的扫描;一次尝试连接所有 65 536 个端口。vanilla 扫描是一种完全连接扫描,即发送 SYN 标志(请求连接),并在收到 SYN-ACK(确认连接)响应后,发回 ACK 标志。这种 SYN、SYN-ACK 和 ACK 交换包括一次 TCP 握手。全连接扫描很准确,但很容易被检测到,因为防火墙总是会记录全连接。
  • SYN 扫描 - 也称为半开放扫描,它只发送 SYN,并等待目标的 SYN-ACK 响应。如果收到回应,扫描仪也不会回应。由于 TCP 连接未完成,系统不会记录交互,但发送方已经知道端口是否开放。
  • Xmas 和 FIN 扫描 - 用于收集信息而不被目标系统记录的扫描套件示例。在 FIN 扫描中,将向端口发送一个非请求 FIN 标记(通常用于结束已建立的会话)。系统对这个随机标记的响应可以揭示端口的状态或防火墙的相关信息。例如,一个封闭端口收到一个非请求 FIN 数据包后,会以 RST(瞬时终止)数据包作为回应,但开放端口则会忽略该数据包。Xmas 扫描只需发送一组所有标记,从而产生毫无意义的交互。通过解读系统的响应,可以更好地了解系统的端口和防火墙。
  • FTP 跳转扫描 - 允许通过 FTP 服务器跳转数据包来伪装发件人的位置。这也是为了让发件人不被发现而设计的。
  • 扫瞄 - 在多台计算机上对同一端口进行 ping,以确定网络上哪些计算机处于活动状态。这不会透露端口状态的信息,相反,它会告诉发送者网络上哪些系统处于活动状态。因此,它可用作初步扫描。

 

端口扫描结果

端口扫描程序会发送 UDP 或 TCP 网络数据包,询问端口的状态。结果将揭示网络或服务器状态,可以是以下状态之一:打开、关闭和过滤。

1.开放 - 已接受

端口开放表示

  • 目标网络/服务正在接受数据报/连接。
  • 目标网络/服务响应 TCP SYN 数据包,表示正在监听
  • 正在使用的端口扫描服务(通常为 UDP 或 TCP)。

对于坏人来说,找到开放端口就是使命。这就给安全人员带来了挑战,他们既要用防火墙封堵开放端口(又要避免切断授权用户的访问)。

2.关闭 - 不听

端口关闭表示

  • 目标网络/服务器已收到请求,但没有服务正在监听

虽然端口已关闭,但仍可访问,因此有助于确认 IP 地址上是否存在主机。安全人员应持续监控已关闭的端口,并考虑用防火墙将其封锁(使其成为过滤端口)。

3.过滤 - 删除/封锁

被过滤的端口表示以下内容:

  • 发送了一个请求数据包。主机没有在监听,也没有响应。
  • 请求数据包很可能被防火墙或入侵防御系统拦截。

只要数据包没有到达目标,坏人就没有办法进一步了解情况。通常情况下,发送到被过滤端口的数据包不会收到响应,但如果收到响应,错误信息通常是 "禁止通信 "或 "目标不可达"。

 

坏人如何利用端口扫描作为攻击手段

端口扫描攻击示意图

据 SANS 研究所称,端口扫描是坏人在寻找易受攻击服务器时最常用的手段之一。在锁定网络时,端口扫描通常是第一步。端口扫描可提供有关网络环境的有用信息,如

  • 现有的防御系统,如防火墙
  • 目标系统的详细信息
  • 在线机器
  • 正在运行的应用程序
  • 谁可能拥有易受攻击的网络或服务器

这类信息对于寻找软件漏洞的恶意行为者来说非常有价值。能够识别一个组织正在运行特定的 DNS 或网络服务器,就能更容易地找到这些漏洞。有几种 TCP 协议技术允许坏人使用诱饵流量进行端口扫描,完全隐藏他们的网络地址和位置。

为使发送者不被接收系统的日志发现而开发的扫描被称为隐形扫描,攻击者对此特别感兴趣。尽管端口扫描在这一领域很受欢迎,但对于网络指纹识别和渗透测试人员评估网络安全强度来说,它是一个很有价值的工具。

 

端口扫描常见问题

端口扫描在识别网络或服务器上的开放端口方面起着至关重要的作用,这些端口可能是潜在安全漏洞的信号。安全专家利用端口扫描来查找和保护任何不必要的开放端口,从而降低未经授权访问的风险。相反,恶意行为者利用端口扫描技术查找网络中的薄弱环节,并利用这些薄弱环节进入网络、窃取敏感信息或实施其他有害行动。

进行端口扫描有几种方法:

  • SYN 扫描(半开扫描):涉及发送 SYN 数据包并等待 SYN-ACK 响应,而不完成 TCP 握手,因此更难检测。
  • FIN 扫描:技术会向关闭的端口发送 FIN 数据包,从而触发复位 (RST) 响应。它通常用于绕过防火墙检测。
  • 圣诞扫描传输设置了所有标志的数据包,就像一棵 "亮起来 "的圣诞树,有助于识别防火墙的存在和端口状态。
  • UDP 扫描:通过发送 UDP 数据包并等待响应来确定哪些 UDP 端口是开放的,因为该协议不要求握手。

端口扫描往往是各类网络攻击的前奏。例如,它可以用来:

  • 检测可能被利用进行未经授权访问的开放端口。
  • 作为发起拒绝服务 (DoS) 或数据泄露等更具体攻击的第一步。
  • 通过暴露网络漏洞,为攻击者提供注入恶意软件或执行恶意代码所需的关键信息。
为了防止端口扫描,组织可以使用防火墙来控制哪些端口可见并阻止可疑流量。此外,还可以实施入侵检测系统 (IDS),监控端口扫描的迹象。应用网络分段,通过将网络划分为较小、隔离的网段来限制暴露,并定期监控网络流量和端口状态,以快速识别和应对未经授权的扫描尝试。
端口扫描的合法性因司法管辖区和具体情况而异。一般来说,未经许可进行端口扫描会被视为非法行为,因为这可能被视为试图获取未经授权的访问。不过,如果由安全专业人员在征得同意的情况下进行(如渗透测试或漏洞评估),则是加强网络安全的合法而有价值的工具。