本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/nmap03
介绍
在 Nmap基本端口扫描中,我们介绍了 TCP 标志以及TCP 3 次握手的过程。 要启动TCP连接,首先要给第一个数据包设置 SYN 标志,再发送给目标端口;然后,我们就可以根据收到的响应判断 TCP 端口是否打开。
我们想知道,如果我们发送一个特殊的TCP 数据包会发生什么,假如该数据包不是任何正在进行的 TCP 连接的一部分,并且设置了一个或多个标志。
例如,当你想要确认接收到的数据时,通常会设置一个 ACK 标志;而Nmap中的ACK 扫描却像在试图确认一开始既没有发送也没有接收到的数据,我们可以做个简单的类比:当你什么都没说的时候,有人突然来找你并且告诉你“是的,我听到了,请继续。”。
本文解释了Nmap高级扫描类型和扫描选项,其中一些扫描类型可能对特定系统有用,而其他扫描类型在特定网络设置中很有用,我们将介绍以下类型的端口扫描:
- Null Scan(空扫描)
- FIN Scan
- Xmas Scan
- Maimon Scan
- ACK Scan
- Window Scan
- Custom Scan(自定义扫描)
此外,我们将介绍以下内容:
- Spoofing IP(欺骗IP)
- Spoofing MAC(欺骗 MAC)
- Decoy Scan(诱饵扫描)
- Fragmented Packets(分片数据包)
- Idle/Zombie Scan(空闲/僵尸扫描)
我们将讨论规避防火墙和 IDS 系统的选项和技术,我们还会介绍从 Nmap 获取更多详细信息的选项。
TCP Null Scan, FIN Scan, Xmas Scan
让我们从以下三种类型的扫描开始:
- Null Scan
- FIN Scan
- Xmas Scan
Null Scan
空扫描不设置任何标志,所有六个标志位都设置为零,你可以使用 -sN 选项选择此扫描。 未设置标志的 TCP 数据包到达开放端口时不会触发任何响应,如下图所示;因此,从 Nmap 的角度来看,空扫描中没有任何回复表明端口已打开或防火墙阻止了相关数据包。
但是如果端口关闭,我们可以期望目标服务器会响应一个 RST 数据包;因此,我们可以查看缺少 RST 响应的端口并且以此来找出未关闭的端口:这些端口处于打开状态或过滤状态。
下面是针对 Linux 服务器的空扫描示例。 我们执行的空扫描已成功识别出目标系统上的六个可能开放的端口,因为空扫描依赖于没有响应来推断端口没有关闭,所以它不能确定地表明这些端口100%是打开的;可能由于防火墙规则,目标端口才没有响应,也就是说目标端口可能处于过滤状态。
pentester@TryHackMe$ sudo nmap -sN MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:30 BST
Nmap scan report for MACHINE_IP
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 Scan
FIN 扫描会发送一个设置了 FIN 标志的 TCP 数据包,你可以使用 -sF 选项选择此扫描类型。同样,如果目标TCP端口打开,并不会触发任何响应;Nmap 也无法确定目标端口是否打开 或者 防火墙是否阻止了与此 TCP 端口相关的流量。
但是,如果目标端口关闭,目标系统会响应一个RST数据包;因此,我们就能够知道哪些端口是关闭的,并使用这些信息来推断出 那些打开或过滤的端口。 值得注意的是,一些防火墙会“默默地”丢弃流量并且不发送RST数据包。
下面是一个针对 Linux 服务器的 FIN 扫描示例,结果与我们之前使用空扫描时获得的结果非常相似。
pentester@TryHackMe$ sudo nmap -sF MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:32 BST
Nmap scan report for MACHINE_IP
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 Scan
Xmas扫描以圣诞树灯的名字命名,Xmas 扫描会同时设置 FIN、PSH 和 URG 标志。 在nmap中,你可以使用选项 -sX 选择Xmas扫描。Xmas扫描与 Null 扫描和 FIN 扫描一样,如果收到的回复是RST 数据包,则表示目标端口已关闭;否则,目标端口将被报告为打开|过滤。
下面两张图分别展示了在使用Xmas扫描时 TCP 端口打开时的情况和 TCP 端口关闭时的情况。
下面的控制台输出显示了针对 Linux 服务器的 Xmas 扫描示例,获得的结果与空扫描和 FIN 扫描的结果非常相似。
pentester@TryHackMe$ sudo nmap -sX MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:34 BST
Nmap scan report for MACHINE_IP
Host is up (0.00087s 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 84.85 seconds
当使用Nmap扫描无状态防火墙后面的目标时,这三种扫描类型可以有效。“无状态防火墙”将检查传入的数据包是否设置了 SYN 标志以检测是否存在TCP连接尝试,使用与 SYN 数据包不匹配的标志组合可以欺骗无状态防火墙并到达其后面的系统;但是,“有状态防火墙”则会阻止所有此类精心制作的数据包并使这些扫描类型无效。
关于无状态防火墙
无状态防火墙利用数据包的来源、目的地和其他参数来查明数据是否会构成威胁。这些参数必须由管理员或制造商通过他们事先设置的规则输入。
如果数据包超出可接受的参数范围,无状态防火墙协议就会识别威胁,然后限制或拦截包含威胁的数据。
关于有状态防火墙
有状态防火墙会检查数据包中的所有内容、数据特征以及数据的通信通道。有状态防火墙会检查数据包的行为,如果发现任何异常,可以过滤掉可疑数据。此外,有状态防火墙可以跟踪数据的行为方式,对行为模式进行编录。
如果在数据包检查中发现可疑行为(即使这种行为尚未由管理员手动输入),防火墙可以识别并解决威胁。有状态防火墙可以在网络边缘或网络中使用,这一点与内网隔离防火墙 (ISFW) 一样,后者会在恶意代码进入时保护特定网段。
答题
TCP Maimon Scan
Uriel Maimon 在 1996 年首次描述了这种扫描,在此扫描中,会设置 FIN 和 ACK 位。 如果使用了此扫描类型,目标应发送一个 RST 数据包作为响应;但是,某些 BSD 派生系统(BSD-Berkeley Software Distribution,伯克利软件套件,是Unix的衍生系统)会丢弃数据包,如果它针对的是暴露的开放端口。
此种扫描不适用于现代网络中遇到的大多数目标;但是,我们将它包含本文中是为了更好地了解端口扫描机制和黑客思维。 要选择该扫描类型,在Nmap中使用 -sM 选项即可。
当你使用-sM扫描时,无论目标TCP 端口是否打开,大多数目标系统都会以 RST 数据包进行响应,在这种情况下,我们将无法发现开放的端口。
下图显示了在使用-sM扫描的情况下,目标TCP 端口打开和关闭时的预期响应行为。
下面的控制台输出是针对 Linux 服务器的 TCP Maimon 扫描示例。 如前所述,由于开放端口和关闭端口的响应行为相同,因此 Maimon 扫描无法发现目标系统上的任何开放端口。
pentester@TryHackMe$ sudo nmap -sM 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:36 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.00095s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.61 seconds
这种类型的扫描并不是人们在收集系统信息时的首选扫描;但是,了解它很重要,因为你不知道它什么时候可以派上用场。
答题
TCP ACK Scan, Window Scan, Custom Scan
本小节将介绍如何执行 TCP ACK 扫描、TCP 窗口扫描以及如何创建自定义标志扫描。
TCP ACK Scan
让我们从 TCP ACK 扫描开始,顾名思义,ACK 扫描将发送一个设置了 ACK 标志的 TCP 数据包,在nmap可以使用 -sA 选项选择此扫描。
如下图所示,无论端口状态如何,目标都会使用 RST 响应 ACK,发生这种响应行为是因为设置了 ACK 标志的 TCP 数据包应该仅在 对接收到的 TCP 数据包进行响应时 发送,以确认接收到某些数据,这与我们Nmap中的ACK扫描的情况不同。因此,此扫描不会告诉我们目标端口是否打开。
在以下示例中,我们在目标 VM 上安装防火墙之前对其进行了扫描;正如预期的那样,我们无法知道哪些端口是开放的。
pentester@TryHackMe$ sudo nmap -sA MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:37 BST
Nmap scan report for MACHINE_IP
Host is up (0.0013s latency).
All 1000 scanned ports on MACHINE_IP are unfiltered
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.68 seconds
如果目标前面有防火墙,这种扫描会很有帮助,因为,根据导致响应的 ACK 数据包,你可以了解哪些端口没有被防火墙阻止。换句话说,这种类型的扫描更适合发现防火墙规则集和配置。
在对目标VM MACHINE_IP 使用防火墙设置后,我们重复了 ACK 扫描,这一次,我们收到了一些有趣的结果。 从下面的控制台输出中可以看出,我们有三个端口没有被防火墙阻止,此结果表明防火墙正在阻止除这三个端口之外的所有其他端口。
pentester@TryHackMe$ sudo nmap -sA MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:34 BST
Nmap scan report for MACHINE_IP
Host is up (0.00046s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp unfiltered ssh
25/tcp unfiltered smtp
80/tcp unfiltered http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 15.45 seconds
Window Scan
另一个类似的扫描是 TCP 窗口扫描,TCP窗口扫描与ACK扫描几乎相同; 但是,它会检查返回的 RST 数据包的 TCP 窗口字段,在特定系统上,这可以表明目标端口是否是打开的。 在nmap中可以使用选项 -sW 来选择此扫描类型,如下图所示,无论端口是打开还是关闭,我们都希望得到一个 RST 数据包来回复我们“不请自来”的 ACK 数据包。
类似地,使用nmap对没有防火墙的 Linux 系统启动 TCP 窗口扫描并不会提供太多信息。我们可以在下面的控制台输出中看到,与前面执行的 ACK 扫描相比,针对没有防火墙的 Linux 服务器的窗口扫描的结果并没有提供任何额外的信息。
pentester@TryHackMe$ sudo nmap -sW MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:38 BST
Nmap scan report for MACHINE_IP
Host is up (0.0011s latency).
All 1000 scanned ports on ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) are closed
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
但是,如果我们对防火墙后面的服务器重复 TCP 窗口扫描的过程,我们能得到不一样的结果。在下面显示的控制台输出中,TCP 窗口扫描指出三个端口被检测为关闭。 (这与将相同的三个端口标记为未过滤的 ACK 扫描形成对比。)虽然我们知道这三个端口没有关闭,但通过这样的扫描结果,我们可以意识到它们的响应行为并不常规,这表明防火墙没有阻止它们。
pentester@TryHackMe$ sudo nmap -sW MACHINE_IP
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-07 11:39 BST
Nmap scan report for MACHINE_IP
Host is up (0.00040s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp closed ssh
25/tcp closed smtp
80/tcp closed http
MAC Address: 02:78:C0:D0:4E:E9 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 14.84 seconds
Custom Scan
如果你想尝试使用内置的TCP 扫描类型之外的新 TCP 标志组合,你可以使用 --scanflags
选项来实现。例如,如果你想同时设置 SYN、RST 和 FIN标志,可以在nmap中使用 --scanflags RSTSYNFIN
实现。
如下图所示,如果你想设置自定义扫描类型,你需要了解目标端口的不同响应行为才能正确解释在不同场景下的结果。
最后,必须注意 ACK 扫描和窗口扫描在帮助我们描绘防火墙规则方面非常有效,但是仅仅因为防火墙没有阻止特定端口,并不一定意味着有对应的服务正在侦听该端口。 你可能需要更新防火墙规则以反映最近的服务更改;因此,ACK 和窗口扫描实际上暴露的是关于目标端口的防火墙规则,而不是目标端口上的服务。
答题
欺骗和诱饵(Spoofing&Decoys)
在某些网络设置中,你能够使用欺骗性的IP地址甚至欺骗性的MAC地址来扫描目标系统。
这种扫描仅在你可以保证捕获到响应消息的情况下才有用,如果你尝试使用欺骗性的IP 地址从某个随机网络中扫描目标,则很可能不会有任何响应路由给你,并且扫描结果也可能不可靠。
下图显示了攻击者启动命令 nmap -S SPOOFED_IP 10.10.89.210
。 Nmap 将使用所提供的伪造源 IP 地址 SPOOFED_IP
制作所有数据包,目标机器会响应传入的数据包,并将回复发送到IP地址 SPOOFED_IP
。 为了使此扫描工作并给出准确的结果,攻击者需要监控网络流量以分析回复消息。
简而言之,使用欺骗性IP 地址进行端口扫描,分为以下三个步骤:
- 攻击者会向目标机器发送带有欺骗性源IP地址的数据包。
- 目标机器将回复消息给欺骗性的 IP 地址。
- 攻击者捕获回复消息以找出目标机器打开的端口。
在使用欺骗性ip进行端口扫描时,你需要使用 -e 指定网络接口并显式禁用ping 扫描(使用-Pn禁用ping扫描) 。
因此,你需要使用nmap -e NET_INTERFACE -Pn -S SPOOFED_IP 10.10.89.210
命令而不是nmap -S SPOOFED_IP 10.10.89.210
,你需要明确告诉 Nmap 应该使用哪个网络接口,而不是简单地期望收到 来自目标的ping回复。值得重申的是,如果攻击者系统无法监控网络的响应消息,则此类扫描将毫无用处。
当你与目标计算机位于同一子网时,你也可以使用欺骗性的MAC 地址进行端口扫描,可以在nmap中使用--spoof-mac SPOOFED_MAC
指定源 MAC 地址。只有当攻击者和目标机器在同一个以太网 (802.3协议) 网络或同一个 WiFi (802.11标准) 上时,这种地址欺骗才可能发生。
欺骗(欺骗性ip地址或欺骗性MAC地址)仅在满足某些条件的极少数情况下才能起作用。因此,攻击者可能会使用诱饵(Decoys)来使其更难被精确定位,这个概念很简单,让扫描看起来像来自于多个 IP 地址,这样攻击者的 IP 地址就会混杂在其中。正如我们在下图中看到的,针对目标机器的扫描似乎有 3 个不同的来源,因此,目标的回复也将到达诱饵所在的位置。
在nmap中,你可以通过在 -D 之后指定特定或随机 IP 地址来启动诱饵扫描。
例如, nmap -D 10.10.0.1,10.10.0.2,ME MACHINE_IP
将使针对MACHINE_IP 的扫描显示为来自 IP 地址 10.10.0.1、10.10.0.2、ME (ME在第三个位置,表示你的 IP 地址出现的顺序是第三)。
另一个示例命令是nmap -D 10.10.0.1,10.10.0.2,RND,RND,ME MACHINE_IP
,其中第三个和第四个源IP地址是随机分配的,而第五个源ip地址将是攻击者真实的IP地址;换句话说,每次执行这个示例命令时,都会有两个新的随机 IP 地址成为第三个和第四个诱饵源。
答题
分片数据包
防火墙
防火墙是允许数据包通过或阻止它们通过的软件或硬件,它基于防火墙规则运行,可以概括为阻止所有例外的流量或允许所有例外的流量。例如,你可能会阻止到你的服务器的所有流量,除了那些进入你的 Web 服务器(因为web服务器一般是对外开放的)的流量。传统防火墙至少会检查 IP 标头和传输层标头,更复杂的防火墙也会尝试检查传输层携带的数据。
IDS
入侵检测系统 (IDS-intrusion detection system) 会检查网络数据包的选定行为模式或特定内容签名,每当匹配到恶意规则时,它都会发出警报。除了 IP 标头和传输层标头之外,IDS 还会检查传输层中的数据内容并检查它是否匹配任何恶意模式。
如何降低传统防火墙/IDS 检测 Nmap 活动的可能性?回答这个问题并不容易; 但是,根据防火墙/IDS 的类型,你可以尝试将一个数据包分片成更小的数据包并以此降低防火墙/IDS 检测Nmap活动的可能性。
分片数据包
Nmap 提供选项 -f 来对数据包进行分段,一旦选择-f,IP 数据将被分成 8 个字节或更少。你也可以添加另一个 -f(形式为-f -f 或 -ff)这会将数据拆分为 16 个字节片段,而不是 8 个字节。你也可以使用 --mtu 更改分片的默认值,但是,你应该始终选择 8 的倍数。
要正确理解分片,我们可以查看下图中的 IP 标头:请注意源地址在第四行占用 32 位(4 个字节),而目标地址在第五行占用另外 4 个字节;在多个数据包中分段的数据请看图片中的红色区域;另外,为了帮助接收方进行数据重组,IP 标头还需要使用标识 (ID-identification ) 和片段偏移量,如下图第二行所示。
让我们比较一下运行 sudo nmap -sS -p80 10.20.30.144
命令 和 sudo nmap -sS -p80 -f 10.20.30.144
命令。如你所知,以上命令将针对目标的端口80 使用隐蔽的TCP SYN 扫描; 然而,在第二个命令中,我们还会请求 Nmap 对 IP 数据包进行分段处理。
如果使用Wireshark,我们会先看到一个 ARP 查询和一个响应,因为攻击机和目标机在同一个以太网上,所以Nmap 会先发出 ARP 查询,然后再针对目标端口进行TCP SYN ping 和接收回复。本例中的IP 头为 20 字节,TCP 头为 24 字节;请注意,完整的TCP 标头最小大小为 20 字节。
在Nmap中,通过 -f 选项请求分片,本例中的TCP 头的 24 个字节将被分成 8 个字节的倍数,最终一个分片将包含 8 个字节或更少字节的 TCP 头。在本例中,由于 24 可以被 8 整除,所以经过分片后,我们能够得到 3 个 IP数据包分片; 其中每个分片包含20 字节的 IP 头和 8 字节的 TCP 头。
注意:如果你添加了 -ff(或 -f -f)选项,则数据包的分片将是 16 的倍数。换句话说,在这种情况下,TCP 标头的 24 个字节将被划分为两个 IP数据包分片, 第一个分片包含TCP标头的16 个字节,第二个分片包含 TCP 标头的8 个字节。
另外,如果你希望增加数据包的大小以使其看起来无害,可以使用选项--data-length NUM
,其中 num 将指定要附加到数据包的字节数。
答题
空闲/僵尸扫描
欺骗源 IP 地址可能是一种很好的隐蔽扫描方法;但是,欺骗只会在特定的网络设置中起作用,它会要求你处于可以监控流量的位置。考虑到以上这些限制,设置欺骗性IP 地址可能几乎没有用处;但是,我们可以通过空闲扫描对欺骗扫描进行升级。
空闲(idle)扫描或僵尸扫描需要一个连接到(你可以与之通信的)网络的空闲系统,Nmap 会让每个探测看起来都好像来自空闲(僵尸)机器,然后它会检查空闲(僵尸)机器是否收到了对欺骗探测的任何响应的指示符,这可以通过检查 IP 标头中的 IP 标识 (IP ID) 值来完成。你可以使用nmap -sI ZOMBIE_IP MACHINE_IP
来运行空闲扫描,其中 ZOMBIE_IP
是空闲(僵尸)机器的 IP 地址。
空闲(僵尸)扫描需要以下三个步骤来发现目标端口是否打开:
- 触发空闲机器响应,以便记录空闲机器上的当前 IP ID。
- 将 SYN 数据包发送到目标机器上的 TCP 端口。该数据包应该被设置为来自欺骗性源ip,这样看起来就好像它来自于空闲主机(僵尸)IP地址。
- 再次触发空闲机器进行响应,以便你可以将新的 IP ID 与之前收到的 IP ID 进行比较。
让我们用图片来解释,在下图中,第一步我们先让攻击者系统探测一台空闲机器,它是一台多功能打印机。通过发送 SYN/ACK给空闲机器,空闲机器会以包含新增加的IP ID的 RST 数据包进行响应。
攻击者将在下一步中向他们想要在目标机器上检查的TCP 端口发送一个 SYN 数据包;但是,此数据包将使用空闲主机(僵尸)IP 地址作为源地址。然后就会出现三种情况。
第一种情况,如下图所示。因为目标机器的TCP端口关闭,所以目标机器会使用 RST 数据包响应空闲主机;而空闲主机对目标机没有响应,因此其 IP ID 不会增加。
第二种情况,如下图所示。目标TCP 端口是开放的,因此目标机器会向空闲(僵尸)主机发送 SYN/ACK 响应。 空闲主机会使用 RST 数据包响应来自目标机器的意外数据包,从而增加其 IP ID。
第三种情况,由于防火墙规则,目标机器根本没有响应。这种缺乏响应的情况将导致与目标端口关闭相同的结果--空闲主机并不会增加 IP ID。
空闲扫描的最后一步,攻击机将向空闲主机发送另一个 SYN/ACK,然后空闲主机会以 RST 数据包响应,并将 IP ID再次增加 1。 攻击者需要将第一步收到的RST数据包中的IP ID与第三步收到的RST数据包中的IP ID进行比较:如果差值为 1,则表示目标机器上的端口已关闭或过滤;但是,如果差值为 2,则表示目标机器上的端口已打开。
值得重申的是,这种扫描称为空闲扫描,是因为选择空闲机器对于扫描的准确性是必不可少的,如果“空闲机器”很忙,那么所有返回的 IP ID 都将毫无用处。
答题
获取更多扫描细节
如果你希望 Nmap提供更多关于其推理和结论的细节,你可以考虑添加 --reason
选项。我们可以执行以下两次扫描,在第二次扫描中,我们在nmap命令里面添加了--reason
选项。
第一次扫描:
pentester@TryHackMe$ sudo nmap -sS 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:39 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up (0.0020s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
111/tcp open rpcbind
143/tcp open imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds
第二次扫描:
pentester@TryHackMe$ sudo nmap -sS --reason 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:40 BST
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0020s latency).
Not shown: 994 closed ports
Reason: 994 resets
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
25/tcp open smtp syn-ack ttl 64
80/tcp open http syn-ack ttl 64
110/tcp open pop3 syn-ack ttl 64
111/tcp open rpcbind syn-ack ttl 64
143/tcp open imap syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
在nmap中添加--reason
标志为我们提供了 Nmap 断定系统已启动或特定端口已打开的明确原因。
在上面的控制台输出中,我们可以看到这个系统被认为是在线的,因为 Nmap “收到了 arp-response”;另一方面,我们还知道 SSH 端口被认为是打开的,因为 Nmap 收到了一个“syn-ack”数据包返回。
对于详细信息的输出,你可以考虑在nmap中使用 -v
选项来获得详细输出,或者使用 -vv
选项来获得更加详细的输出。
pentester@TryHackMe$ sudo nmap -sS -vv 10.10.252.27
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 10:41 BST
Initiating ARP Ping Scan at 10:41
Scanning 10.10.252.27 [1 port]
Completed ARP Ping Scan at 10:41, 0.22s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:41
Completed Parallel DNS resolution of 1 host. at 10:41, 0.00s elapsed
Initiating SYN Stealth Scan at 10:41
Scanning ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27) [1000 ports]
Discovered open port 22/tcp on 10.10.252.27
Discovered open port 25/tcp on 10.10.252.27
Discovered open port 80/tcp on 10.10.252.27
Discovered open port 110/tcp on 10.10.252.27
Discovered open port 111/tcp on 10.10.252.27
Discovered open port 143/tcp on 10.10.252.27
Completed SYN Stealth Scan at 10:41, 1.25s elapsed (1000 total ports)
Nmap scan report for ip-10-10-252-27.eu-west-1.compute.internal (10.10.252.27)
Host is up, received arp-response (0.0019s latency).
Scanned at 2021-08-30 10:41:02 BST for 1s
Not shown: 994 closed ports
Reason: 994 resets
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
25/tcp open smtp syn-ack ttl 64
80/tcp open http syn-ack ttl 64
110/tcp open pop3 syn-ack ttl 64
111/tcp open rpcbind syn-ack ttl 64
143/tcp open imap syn-ack ttl 64
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds
Raw packets sent: 1002 (44.072KB) | Rcvd: 1002 (40.092KB)
如果-vv
选项不能满足你的需要,你还可以使用 -d
来调试详细信息或使用 -dd
来获取更多详细信息。
答题
小结
本文涵盖了以下类型的扫描:
这些扫描类型依赖于以特殊方式设置 TCP 标志来使得目标端口进行回复。Null、FIN 和 Xmas 扫描会获得来自关闭的目标端口的响应,而 Maimon、ACK 和 Window 扫描会获得来自开放和关闭的目标端口的响应。
标签:Nmap,IP,扫描,TCP,端口扫描,THM,端口,数据包 From: https://www.cnblogs.com/Hekeats-L/p/16837772.html