介绍
本房间是Nmap系列的第三个房间(网络安全简介模块的一部分)。在前两个房间中,我们了解了实时主机发现和基本端口扫描。
- Nmap实时主机发现
- Nmap基本端口扫描
- Nmap高级端口扫描
- Nmap后端口扫描
在Nmap基本端口扫描中,我们介绍了TCP标志并回顾了TCP 3 路握手。要启动连接,TCP要求第一个数据包设置 SYN 标志。因此,我们可以根据收到的响应判断TCP端口是否打开。
安全研究人员和黑客考虑了TCP标志(如下图所示并在之前的房间中进行了解释),并开始进行实验。他们想知道如果我们发送一个设置了一个或多个标志的TCP数据包(该数据包不属于任何正在进行的TCP连接的一部分)会发生什么。
例如,当您想要确认接收到的数据时,会设置 ACK 标志。 ACK 扫描就像尝试确认最初既没有发送也没有接收到的数据。考虑这个简单的类比,有人突然来找你,告诉你:“是的,我听到了,请继续。”当你什么都没说的时候。
该房间介绍高级扫描类型和扫描选项。其中一些扫描类型可用于特定系统,而其他扫描类型则可用于特定的网络设置。我们将介绍以下类型的端口扫描:
- Null Scan
- FIN Scan
- Xmas Scan
- Maimon Scan
- ACK Scan
- Window Scan
- Custom Scan
此外,我们将涵盖以下内容:
- 欺骗IP
- 欺骗MAC
- 诱饵扫描
- 分片数据包
- 空闲/僵尸扫描
我们将讨论规避防火墙和IDS系统的选项和技术。我们还介绍了从Nmap获取更多详细信息的选项。
TCP空扫描、FIN扫描、Xmas扫描
让我们从以下三种类型的扫描开始:
- 空扫描
- FIN 扫描
- Xmas扫描
NULL扫描
空扫描不设置任何标志;所有六个标志位均设置为零。您可以使用该 -sN
选项选择此扫描。没有设置标志的TCP数据包在到达开放端口时不会触发任何响应,如下图所示。因此,从Nmap的角度来看,空扫描中缺乏回复表明端口已打开或防火墙正在阻止数据包。
但是,如果端口关闭,我们希望目标服务器能够响应 RST 数据包。因此,我们可以利用缺少 RST 响应来找出未关闭的端口:打开或已过滤。
以下是针对Linux服务器的空扫描示例。我们进行的空扫描已成功识别出目标系统上的六个开放端口。因为空扫描依赖于没有响应来推断端口没有关闭,所以它不能确定地表明这些端口是开放的;由于防火墙规则,端口可能没有响应。
pentester@TryHackMe$ sudo nmap -sN 10.10.xxx.xxx
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:30 BST
Nmap scan report for 10.10.xxx.xxx
Host is up (0.00066s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 96.50 seconds
请注意,许多Nmap选项需要 root 权限。除非您以 root 身份运行Nmap,否则您需要 sudo
像上面的示例一样使用该-sN
选项。
FIN扫描
FIN 扫描发送设置了 FIN 标志的TCP数据包。您可以使用 选项选择此扫描类型-sF
。同样,如果TCP端口打开,则不会发送任何响应。同样,Nmap 无法确定端口是否打开或防火墙是否阻止与此TCP端口相关的流量。
但是,如果端口关闭,目标系统应使用 RST 进行响应。因此,我们将能够知道哪些端口是关闭的,并使用这些知识来推断打开或过滤的端口。值得注意的是,一些防火墙会“默默地”丢弃流量而不发送 RST。
下面是针对Linux服务器的 FIN 扫描示例。结果与我们之前使用空扫描获得的结果非常相似。
pentester@TryHackMe$ sudo nmap -sF 10.10.191.191
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:32 BST
Nmap scan report for 10.10.191.191
Host is up (0.0018s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open|filtered ssh
25/tcp open|filtered smtp
80/tcp open|filtered http
110/tcp open|filtered pop3
111/tcp open|filtered rpcbind
143/tcp open|filtered imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 96.52 seconds
Xmas扫描
圣诞节扫描因圣诞树灯而得名。 Xmas 扫描同时设置 FIN、PSH 和 URG 标志。您可以使用选项选择圣诞扫描-sX
。
与Null scan和FIN scan一样,如果收到RST数据包,则表明端口已关闭。否则,它将被报告为 open|filtered。
下面两张图分别展示了TCP端口打开时的情况和TCP端口关闭时的情况。
下面的控制台输出显示了针对Linux服务器进行 Xmas 扫描的示例。获得的结果与空扫描和FIN 扫描非常相似。
pentester@TryHackMe$ sudo nmap -sX 10.10.191.191
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:34 BST
Nmap scan report for 10.10.191.191
Host is up (0.00087s latency).