介绍
说到黑客,知识就是力量。您对目标系统或网络的了解越多,可用的选项就越多。因此,在进行任何利用尝试之前,必须进行适当的枚举。
假设我们获得了一个 IP(或多个 IP 地址)来执行安全审计。在我们做任何其他事情之前,我们需要了解我们正在攻击的“景观”。这意味着我们需要确定哪些服务在目标上运行。例如,其中一个可能正在运行 Web 服务器,而另一个正在充当 Windows Active Directory 域控制器。建立这张景观“地图”的第一阶段是所谓的港口扫描。当计算机运行网络服务时,它会打开一个称为“端口”的网络结构来接收连接。端口对于发出多个网络请求或提供多个服务是必需的。例如,当您在 Web 浏览器中同时加载多个网页时,程序必须有某种方法来确定哪个选项卡正在加载哪个网页。这是通过使用本地计算机上的不同端口与远程 Web 服务器建立连接来完成的。同样,如果您希望服务器能够运行多个服务(例如,您可能希望 Web 服务器同时运行站点的 HTTP 和 HTTPS 版本),那么您需要某种方式将流量定向到适当的服务。再一次,端口是解决这个问题的办法。网络连接在两个端口之间建立 - 一个在服务器上侦听的开放端口,另一个在您自己的计算机上随机选择的端口。例如,当您连接到网页时,您的计算机可能会打开端口 49534 以连接到服务器的端口 443。
与前面的示例一样,该图显示了同时连接到多个网站时发生的情况。您的计算机会打开一个不同的高编号端口(随机),用于与远程服务器的所有通信。
每台计算机共有 65535 个可用端口;但是,其中许多已注册为标准端口。例如,HTTP Web 服务几乎总是可以在服务器的端口 80 上找到。可以在端口 443 上找到 HTTPS Web 服务。可以在端口 139 上找到 Windows NETBIOS,可以在端口 445 上找到 SMB。需要注意的是;但是,尤其是在 CTF 设置中,即使是这些标准端口也被更改也并非闻所未闻,因此我们必须对目标执行适当的枚举。
如果我们不知道服务器打开了哪些端口,那么我们就没有希望成功攻击目标;因此,我们必须从端口扫描开始任何攻击。这可以通过多种方式实现——通常使用一个名为 nmap 的工具,这是这个房间的重点。Nmap 可用于执行许多不同类型的端口扫描——其中最常见的将在即将到来的任务中引入;但是,基本理论是这样的:nmap 将依次连接到目标的每个端口。根据端口的响应方式,可以将其确定为打开、关闭或过滤(通常由防火墙)。一旦我们知道哪些端口是打开的,我们就可以查看枚举每个端口上正在运行的服务 - 手动或更常见的使用 nmap。
那么,为什么是nmap?简短的回答是,它目前是行业标准是有原因的:没有其他端口扫描工具能接近它的功能(尽管一些新来者现在正在与它的速度相匹配)。它是一个非常强大的工具——它的脚本引擎变得更加强大,可用于扫描漏洞,在某些情况下甚至可以直接执行漏洞利用!同样,这将在即将到来的任务中详细介绍。
开关
现在,重要的是要了解:什么是端口扫描;为什么有必要;NMAP 是任何类型的初始枚举的首选工具。
与大多数渗透测试工具一样,nmap 是从终端运行的。有适用于 Windows 和 Linux 的版本。对于此房间,我们将假设您使用的是 Linux;但是,开关应相同。默认情况下,Nmap 安装在 Kali Linux 和 TryHackMe Attack Box 中。
可以通过键入终端命令行来访问 Nmap,然后是我们将在下面介绍的一些“开关”(告诉程序执行不同操作的命令参数)。nmap
为此,您只需要 nmap 的帮助菜单(使用 ) 访问和/或 nmap 手册页(使用 访问)。对于每个答案,除非另有说明,否则请包括开关的所有部分。这包括开头 () 处的连字符。nmap -h
man nmap
-
描述
使用 Nmap 进行端口扫描时,有三种基本扫描类型。这些是:
- 技术合作计划(TCP)连接扫描 (
-sT
) - SYN“半开”扫描 (
-sS
) - UDP的扫描 (
-sU
)
此外,还有几种不太常见的端口扫描类型,我们还将介绍其中的一些类型(尽管不太详细)。这些是:
- 技术合作计划(TCP)空扫描 (
-sN
) - 技术合作计划(TCP)FIN 扫描 (
-sF
) - 技术合作计划(TCP)圣诞扫描 (
-sX
)
其中大多数(UDP 扫描除外)用于非常相似的目的,但是,它们的工作方式在每次扫描之间有所不同。这意味着,虽然在大多数情况下,前三种扫描之一可能是您的首选,但值得记住的是,存在其他扫描类型。
在网络扫描方面,我们还将简要介绍ICMP(或“ping”)扫描。
TCP Connect 扫描
若要了解 TCP Connect 扫描 (),请务必熟悉 TCP 三向握手。如果这个术语对你来说是新的,那么在继续之前完成介绍性网络是可取的。-sT
简要回顾一下,三方握手由三个阶段组成。首先,连接终端(在本例中为我们的攻击机)向目标服务器发送 TCP 请求,并设置了 SYN 标志。然后,服务器使用包含 SYN 标志和 ACK 标志的 TCP 响应来确认此数据包。最后,我们的终端通过发送设置了 ACK 标志的 TCP 请求来完成握手。
这是TCP/IP网络的基本原则之一,但它与Nmap有什么关系呢?
好吧,顾名思义,TCP Connect 扫描的工作原理是依次与每个目标端口执行三次握手。换言之,Nmap 尝试连接到每个指定的 TCP 端口,并通过接收到的响应来确定服务是否打开。
例如,如果端口关闭,RFC 9293 会声明:
"...如果连接不存在 (CLOSED),则发送重置以响应除另一个重置之外的任何传入段。通过此方法拒绝与现有连接不匹配的 SYN 段。
换言之,如果 Nmap 发送的 TCP 请求将 SYN 标志设置为关闭端口,则目标服务器将使用设置了 RST (Re