任务一介绍
想象一下,如果你连接到一个网络,使用各种网络资源,比如电子邮件和网页浏览。有两个问题。第一个是我们如何发现该网络或其他网络上的其他活跃设备。第二个是我们如何查找这些在线设备上运行的网络服务;例如SSH和网页服务器。
一种方法是手动作。如果被要求查找哪些设备在网络上是在线的,可以使用基础工具如 、 或其他工具来检查这254个IP地址。虽然这个网络有256个IP地址,但我们统计了254个IP地址,因为其中两个是预留的。每种工具都有局限性。例如,如果目标系统的防火墙阻断了ICMP流量,它不会提供任何信息。而且,只有当你的设备连接到同一网络时,也就是通过以太网或WiFi,才能正常工作。简而言之,没有先进可靠的工具,这将是极大的时间浪费。有了合适的工具和足够的时间,就能拥有目标网络上实时主机的列表。我们需要一个灵活的工具,能够应对各种情景。192.168.0.1/24pingarp-scanpingarp-scan
如果依赖手动解决方案或低效脚本,发现特定主机上正在运行的服务同样耗时。例如,可以连续尝试一个端口;然而,由于需要扫描成千上万的端口,即使编写了自动化连接尝试的脚本,这仍然可能是一项非常耗时的任务。telnettelnet
Nmap 网络扫描器是一个非常高效的解决方案,能够解决上述两个需求以及更多需求。Nmap 是一款开源网络扫描器,首次发布于1997年。此后,增加了许多功能和选项。它是一款强大且灵活的网络扫描仪,可适应各种场景和设置。
学习目标
本房间旨在为您提供使用Nmap扫描仪或简单作所需的基础知识。具体来说,你将学习如何:nmap
- 发现现场主持人
- 在直播主机上查找运行中的服务
- 区分不同类型的端口扫描
- 检测运行服务的版本
- 控制时间
- 格式化输出
任务二主持人发现:谁在线
让我们从第一个问题开始:谁在线?该任务旨在了解如何利用Nmap来发现真实主机。Nmap 采用多种复杂的方法来发现活体主机。
在开始之前,我们应提及 Nmap 使用多种方式来指定其目标:
- 利用 IP 范围:如果你想扫描从 192.168.0.1 到 192.168.0.10 的所有 IP 地址,你可以写成-192.168.0.1-10
- IP子网使用:如果你想扫描一个子网,可以表示为 ,这等价于/192.168.0.1/24192.168.0.0-255
- 主机名:你也可以用主机名指定目标,例如,example.thm
假设你想查找网络上的在线主机。Nmap提供该选项,即ping扫描。不过,不要指望这会像……那样有限制。让我们看看实际作。-snping
在开始之前,我们应该说明,整个房间我们要么以使用身份运行,要么使用,因为我们不想用账号权限限制Nmap的能力。作为本地(非根)用户运行 Nmap 会限制我们只能进行基本类型的扫描,如 ICMP 回声和 TCP 连接扫描;我们会在本房间结束时再次讨论这个问题。nmaprootsudo
扫描“本地”网络
在此语境下,我们使用“本地”一词指代我们直接连接的网络,如以太网或WiFi网络。在第一个演示中,我们将扫描我们连接的WiFi网络。我们的IP地址是,正在扫描网络。命令及其输出显示在下方的终端中。192.168.66.89192.168.66.0/24nmap -sn 192.168.66.0/24
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#f8f8f2">-sn</span> <span style="color:#ffaf00">192.168</span>.66.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-07 13:49 EEST
Nmap scan report for XiaoQiang (192.168.66.1)
Host is up (0.0069s latency).
MAC Address: 44:DF:65:D8:FE:6C (Unknown)
Nmap scan report for S190023240007 (192.168.66.88)
Host is up (0.090s latency).
MAC Address: 7C:DF:A1:D3:8C:5C (Espressif)
Nmap scan report for wlan0 (192.168.66.97)
Host is up (0.20s latency).
MAC Address: 10:D5:61:E2:18:E6 (Tuya Smart)
Nmap scan report for 192.168.66.179
Host is up (0.10s latency).
MAC Address: E4:AA:EC:8F:88:C9 (Tianjin Hualai Technology)
[…]
Nmap done: 256 IP addresses (7 hosts up) scanned in 2.64 seconds</code></span></span></span></span>
因为我们扫描的是本地网络,也就是通过以太网或WiFi连接的,所以可以查找设备的MAC地址。因此,我们可以推断网卡供应商,这对我们来说是有益的信息,因为它有助于我们猜测目标设备的类型。
当扫描直接连接的网络时,Nmap首先发送ARP请求。当设备响应ARP请求时,Nmap会标记为“主机已启动”。
扫描“远程”网络
以“远程”网络为例。在这里,“远程”意味着至少有一台路由器将我们的系统与该网络隔离开来。因此,我们所有到目标系统的流量都必须经过一个或多个路由器。与扫描本地网络不同,我们不能向目标发送ARP请求。
我们的系统拥有IP地址,属于网络。在下面的终端中,我们扫描目标网络,那里有两个或更多路由器(跳点)将我们的本地系统与目标主机分隔开来。192.168.66.89192.168.66.0/24192.168.11.0/24
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#f8f8f2">-sn</span> <span style="color:#ffaf00">192.168</span>.11.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-07 14:05 EEST
Nmap scan report for 192.168.11.1
Host is up (0.018s latency).
Nmap scan report for 192.168.11.151
Host is up (0.0013s latency).
Nmap scan report for 192.168.11.152
Host is up (0.13s latency).
Nmap scan report for 192.168.11.154
Host is up (0.22s latency).
Nmap scan report for 192.168.11.155
Host is up (2.3s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 10.67 seconds</code></span></span></span></span>
Nmap输出显示有五台主机正在运行。但Nmap是怎么发现这些的?想了解更多,让我们看看 Nmap 生成的一些示例流量。在下面的截图中,我们可以看到两位主持人的回复:
- 192.168.11.1是在线并响应了ICMP回声(ping)请求。
- 192.168.11.2看起来很低落。Nmap向443端口发送了两个ICMP回声(ping)请求,两次ICMP时间戳请求,两个TCP包(设置SYN标志),向端口80发送两个TCP包(设置了ACK标志)。目标没有任何反应。我们观察到路由器有多个ICMP目的地数据包无法访问。192.168.11.151

值得注意的是,我们可以通过给定的端口更好地控制Nmap如何发现如、的实时主机,如TCP SYN、TCP ACK和UDP发现。然而,这超出了本房间的范围。-PS[portlist]-PA[portlist]-PU[portlist]
最后一点,Nmap提供一个带有选项的列表扫描。该扫描只列出需要扫描的目标,而不会实际扫描它们。例如,会列出将要扫描的256个目标。这个选项有助于在实际扫描前确认目标。-sLnmap -sL 192.168.0.1/24
正如我们之前提到的,目标是发现实时主机,而不是试图发现运行在主机上运行的服务。如果你想在网络中发现设备而不产生太多噪音,这种扫描可能会有帮助。不过,这并不能告诉我们哪些服务正在运行。如果我们想更多了解在线主机上运行的网络服务,就需要一种更“噪声”的扫描方式,这部分将在下一个任务中进行探讨。-sn
任务三端口扫描:谁在倾听
以前,我们会发现现场主持人。在这项任务中,我们希望发现正在监听这些实时主机的网络服务。所谓网络服务,是指任何在TCP或UDP端口监听进站连接的进程。常见的网络服务包括通常监听TCP端口80和443的Web服务器,以及通常监听UDP(和TCP)端口53的DNS服务器。-sn
TCP设计上有65,535个端口,UDP也是如此。我们如何确定哪些端口绑定了服务?让我们来找出答案。
扫描TCP端口
判断 TCP 端口是否开放的最简单且基本的方法是尝试访问该端口。如果你倾向于用 Telnet 客户端扫描,尝试与每个目标端口建立 TCP 连接。换句话说,你尝试与每个目标端口完成 TCP 三向握手;但只有打开的 TCP 端口才会适当响应,允许建立 TCP 连接。该过程与 Nmap 的连接扫描并无太大区别。telnet
连接扫描
连接扫描可以通过 触发。它尝试与每个目标 TCP 端口完成 TCP 三向握手。如果 TCP 端口是开放的,Nmap 成功连接,Nmap 将切断已建立的连接。-sT
在下面的截图中,我们的扫描机显示了IP地址,目标系统TCP端口22已开启,端口23关闭。在标记为1的部分,你可以看到TCP三方握手是如何完成的,随后由Nmap通过TCP RST-ACK包拆除。标记为2的部分显示了一次连接尝试连接到关闭端口,目标系统以TCP RST-ACK包作出响应。192.168.124.148

SYN扫描(隐形)
与尝试连接TCP端口(即完成三向握手)的连接扫描不同,SYN扫描只执行第一步:发送TCP SYN数据包。因此,TCP三向握手从未完成。优点是这样预计日志数量较少,因为连接从未建立,因此被视为相对隐蔽的扫描。你可以使用标志选择SYN扫描。-sS
在下面的截图中,我们扫描同一系统,端口22开启。标记为1的部分显示监听服务回复TCP同步-ACK数据包。然而,Nmap响应的是TCP RST数据包,而未完成TCP三方握手。标记为2的部分显示TCP连接尝试访问关闭端口。此时,数据包交换与连接扫描相同。

扫描UDP端口
虽然大多数服务使用TCP进行通信,但许多服务使用UDP。例如DNS、DHCP、NTP(网络时间协议)、SNMP(简单网络管理协议)和VoIP(基于IP的语音)。UDP不需要建立连接后关闭连接。此外,它非常适合实时通信,如直播。所有这些都是考虑扫描并发现在UDP端口监听的服务的理由。
Nmap 提供了扫描 UDP 服务的选项。由于UDP比TCP简单,我们预期流量会有所不同。下图显示了多个ICMP目的地无法访问(端口不可达)响应,因为Nmap将UDP数据包发送到关闭的UDP端口。-sU

限制目标端口
Nmap 默认扫描最常见的 1,000 端口。然而,这可能不是你想要的。因此,Nmap为你提供了更多选择。
- -F是快速模式,扫描100个最常见的端口(而非默认的1000个)。
- -p[range]允许你指定扫描端口范围。例如,扫描端口10到端口1024,而扫描端口1到端口25之间的所有端口。注意,它扫描所有端口,等同于,如果你想尽可能详细,是最好的选择。-p10-1024-p-25-p–p1-65535
- 提示:最常见的服务在UDP或TCP使用1到1024之间的端口号。这些港口也被称为知名港口。用来扫描知名端口。-p1-1023
摘要
| -sT | TCP连接扫描——完整的三方握手 |
| -sS | TCPSYN——三方握手的第一步 |
| -sU | UDP扫描 |
| -F | 快速模式——扫描100个最常见的端口 |
| -p[range] | 指定端口号范围——扫描所有端口-p- |
任务四版本检测:提取更多信息
作系统检测
你可以通过添加这个选项来启用作系统检测。顾名思义,作系统检测选项会触发Nmap依赖各种指示器,对目标作系统做出有根据的猜测。在这种情况下,它检测目标正在运行 Linux 4.x 或 5.x。这确实是真的。然而,没有完全准确的作系统检测器。说它介于4.15和5.8之间非常接近,因为目标主机的作系统是5.15。-O
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#f8f8f2">-sS</span> <span style="color:#f8f8f2">-O</span> <span style="color:#ffaf00">192.168</span>.124.211
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-13 13:37 EEST
Nmap scan report for ubuntu22lts-vm (192.168.124.211)
Host is up (0.00043s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 52:54:00:54:FA:4E (QEMU virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 – 5.8
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.44 seconds</code></span></span></span></span>
服务与版本检测
你发现了几个开放端口,想知道哪些服务在监听它们。 启用版本检测。这非常方便,可以用更少的按键次数收集更多关于目标的信息。终端输出下方显示一个名为“VERSION”的额外列,表示检测到的SSH服务器版本。-sV
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#f8f8f2">-sS</span> <span style="color:#f8f8f2">-sV</span> <span style="color:#ffaf00">192.168</span>.124.211
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-13 13:33 EEST
Nmap scan report for ubuntu22lts-vm (192.168.124.211)
Host is up (0.000046s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
MAC Address: 52:54:00:54:FA:4E (QEMU virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.25</code></span></span></span></span>
如果你能同时拥有两者,还有更多,会怎样?那就是。该选项支持作系统检测、版本扫描和追踪路由等功能。-O-sV-A
强制扫描
当我们运行端口扫描时,比如使用 ,目标主机在主机发现阶段可能没有回复(例如主机没有回复 ICMP 请求)。因此,Nmap会将该主机标记为宕机,无法对其发起端口扫描。我们可以要求 Nmap 将所有主机视为在线,并对所有主机进行端口扫描,包括那些在主机发现阶段未响应的主机。通过添加该选项可以触发该选择。-sS-Pn
摘要
| -O | 作系统检测 |
| -sV | 服务和版本检测 |
| -A | 作系统检测、版本检测及其他新增功能 |
| -Pn | 扫描看似宕机的主机 |
任务5时机:快到什么程度
Nmap提供多种控制扫描速度和时间的选项。
以正常速度运行扫描可能会触发IDS或其他安全解决方案。控制扫描速度是合理的。Nmap给了你六种时机模板,名字说明了一切:偏执(0)、狡猾(1)、礼貌(2)、普通(3)、激进(4)、疯狂(5)。你可以根据时间模板的名称或编号来选择。例如,你可以添加(或)或选择最慢的时机。-T0-T 0-T paranoid
在下面的Nmap扫描中,我们启动了针对100个最常见的TCP端口的SYN扫描。我们用不同的时间顺序重复了扫描:T0、T1、T2、T3和T4。在我们的实验室设置中,Nmap扫描这100个端口所需的时间不同。下表可以给你一个概念,但你会根据网络设置和目标系统得到不同的结果。nmap -sS 10.82.137.197 -F
| T0(偏执型) | 9.8小时 |
| T1(潜行) | 27.53分钟 |
| T2(礼貌) | 40.56秒 |
| T3(正常) | 0.15秒 |
| T4(激进) | 0.13秒 |
在下面的截图中,我们可以看到 Nmap 发送不同数据包的时间。在下面的截图中,扫描时间为 ,我们可以看到 Nmap 等待了 5 分钟才移动到下一个端口。T0

在下面的截图中,当我们将时间设置为 时,Nmap 每隔两个端口之间等待 15 秒。T1

随后,等待时间降至0.4秒,如下所示。T2

最后,在默认情况下,Nmap似乎已尽可能快地运行,如下所示。值得一再强调的是,换个实验室设置会显示不一样。然而,在本特定情况下,Nmap认为与目标的连接快速且可靠,因此不会产生丢包。T3

第二个有用的选项是并行服务探针的数量。并行探针的数量可以通过 和 来控制。这些选项可用于设置主机组同时激活的TCP和UDP端口探测数量的最小和最大值。默认情况下,会自动控制并行探针的数量。如果网络表现不佳,即丢弃数据包,并行探测数量可能会减少到一个;此外,如果网络运行完美,并行探针数量可达数百个。–min-parallelism <numprobes>–max-parallelism <numprobes>nmap
一个类似的有用选项是 和 。顾名思义,它们可以控制发送数据包的最低和最高速率。速率以每秒的数据包数表示。值得一提的是,指定的速率适用于整个扫描过程,而非单个主机。–min-rate <number>–max-rate <number>nmap
本次任务中我们将涵盖的最后一个选项是。该选项指定你愿意等待的最长时间,适合慢速主机或网络连接较慢的主机。–host-timeout <time>
| -T<0-5> | 时机模板——偏执(0)、狡猾(1)、礼貌(2)、正常(3)、激进(4)、疯狂(5) |
| –min-parallelism <numprobes>以及–max-parallelism <numprobes> | 最小和最大并行探针数量 |
| –min-rate <number>以及–max-rate <number> | 最小和最高速率(数据包/秒) |
| –host-timeout | 等待目标主机的最大时间 |
任务6输出:控制你所看到的内容
该任务主要关注两个特点:
- 扫描过程中显示额外信息
- 选择保存扫描报告的文件格式
冗长与调试
在某些情况下,扫描完成或产生显示在屏幕上的输出会花费非常长时间。此外,有时你可能会更想了解扫描进展的实时信息。获取更多更新的最佳方式是通过添加 来启用冗长输出。考虑以下终端输出,显示网络扫描重复两次。第一种情况下,我们选择了默认输出的冗长度。-v
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#f8f8f2">-sS</span> <span style="color:#ffaf00">192.168</span>.139.1/24
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-13 18:57 EEST
Nmap scan report for 192.168.139.254
Host is up (0.000030s latency).
All 1000 scanned ports on 192.168.139.254 are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
MAC Address: 00:50:56:E0:FC:AE (VMware)
Nmap scan report for g5000 (192.168.139.1)
Host is up (0.000010s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
902/tcp open iss-realsecure
Nmap done: 256 IP addresses (2 hosts up) scanned in 41.84 seconds</code></span></span></span></span>
然后,我们重复了同样的扫描;不过第二次我们用了冗长选项。以下提供的详细信息非常有用,尤其是在你了解Nmap并探索不同选项时。在下面的终端输出中,我们可以看到Nmap如何从一个阶段移动到另一个阶段:ARPping扫描、并行DNS解析,最后是对每个活跃主机进行SYN隐形扫描。-v
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#ffaf00">192.168</span>.139.1/24 <span style="color:#f8f8f2">-v</span>
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-13 19:01 EEST
Initiating ARP Ping Scan at 19:01
Scanning 255 hosts [1 port/host]
Completed ARP Ping Scan at 19:01, 7.94s elapsed (255 total hosts)
Initiating Parallel DNS resolution of 1 host. at 19:01
Completed Parallel DNS resolution of 1 host. at 19:02, 13.00s elapsed
Nmap scan report for 192.168.139.0 [host down]
Nmap scan report for 192.168.139.2 [host down]
[…]
Nmap scan report for 192.168.139.253 [host down]
Nmap scan report for 192.168.139.255 [host down]
Initiating Parallel DNS resolution of 1 host. at 19:02
Completed Parallel DNS resolution of 1 host. at 19:02, 0.05s elapsed
Initiating SYN Stealth Scan at 19:02
Scanning 192.168.139.254 [1000 ports]
[…]
Initiating SYN Stealth Scan at 19:02
Scanning g5000 (192.168.139.1) [1000 ports]
Discovered open port 902/tcp on 192.168.139.1
Completed SYN Stealth Scan at 19:02, 0.03s elapsed (1000 total ports)
Nmap scan report for g5000 (192.168.139.1)
Host is up (0.0000090s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
902/tcp open iss-realsecure
Read data files from: /usr/bin/../share/nmap
Nmap done: 256 IP addresses (2 hosts up) scanned in 42.19 seconds
Raw packets sent: 3512 (146.336KB) | Rcvd: 2005 (84.156KB)</code></span></span></span></span>
很可能,这个选项对于冗长输出来说绰绰有余;不过,如果你仍然不满意,可以通过添加另一个“v”,比如,甚至 来提高冗长程度。你也可以直接指定冗长程度,例如,和。你甚至可以在扫描开始后按“v”来提高冗长程度。-v-vv-vvvv-v2-v4
如果这些冗长的内容还不能满足你的需求,你必须考虑调试级别的输出。同样,你可以通过添加一个或多个“d”,或直接指定调试等级来提高调试等级。最大电平为;在选择之前,确保你准备好面对成千上万的信息和调试行。-d-d9
保存扫描报告
在很多情况下,我们需要保存扫描结果。Nmap为我们提供了多种格式。在命令中,最有用的三种是正常(对人类友好的)输出、XML 输出和可复制输出。您可以选择以下扫描报告格式:grep
- -oN <filename>- 正常输出
- -oX <filename>- XML 输出
- -oG <filename> – grep-可输出(对 和 非常有用grepawk)
- -oA <basename>- 所有主要格式的输出
在下面的终端中,我们可以看到使用期权的示例。它生成了三个扩展名为 、 、 的报告,分别用于普通、XML 和 -able 输出。-oAnmapxmlgnmapgrep
AttackBox 终端
<span style="color:#151c2b"><span style="background-color:#ffffff"><span style="background-color:#282c33"><span style="color:#bac8d4"><code class="language-shell-session"><span style="color:#f8f8f2"><span style="color:#bac8d4">root@tryhackme</span><span style="color:#f8f8f2">:</span>~</span><span style="color:#fd971f"><strong>#</strong></span> nmap <span style="color:#f8f8f2">-sS</span> <span style="color:#ffaf00">192.168</span>.139.1 <span style="color:#f8f8f2">-oA</span> gateway
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-13 19:35 EEST
Nmap scan report for g5000 (192.168.139.1)
Host is up (0.0000070s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
902/tcp open iss-realsecure
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
<span style="color:#fd971f"><strong>#</strong></span> <span style="color:#ffaf00">ls</span>
gateway.gnmap gateway.nmap gateway.xml</code></span></span></span></span>
任务7结语与总结
在这个房间里,我们学习了如何使用Nmap在任何网络上发现实时主机。我们还探讨了常见的端口扫描类型,以及如何利用Nmap查找服务版本号。我们还学会了如何控制扫描时间,最后介绍了保存Nmap扫描结果的不同格式。
值得注意的是,最好带权限运行Nmap,以便充分利用其所有功能。运行带有本地用户权限的 Nmap 仍然可以正常工作;不过,你应该预期许多功能将不可用。作为本地用户运行 Nmap 时,你会获得 Nmap 的一小部分能力。例如,如果你用权限运行 Nmap ,它会自动使用 SYN 扫描(),如果作为本地用户运行,则默认使用 Connect scan()。原因在于制作某些数据包,比如发送TCP SYN数据包,需要root权限。sudo-sSsudo-sT
Nmap是一个非常丰富的工具,我们只介绍了本房间中最常见和最重要的功能。在网络安全模块中,有四个房间专门用于Nmap。下表列出了我们在这个房间里解释的大部分选项,帮助你回顾和记忆。
| -sL | 列表扫描——无需扫描即可列出目标 |
| 宿主发现 | |
| -sn | Ping扫描——仅主机发现 |
| 端口扫描 | |
| -sT | TCP连接扫描——完整的三方握手 |
| -sS | TCPSYN——三方握手的第一步 |
| -sU | UDP 扫描 |
| -F | 快速模式——扫描100个最常见的端口 |
| -p[range] | 指定端口号范围——扫描所有端口-p- |
| -Pn | 把所有主机都当作在线——扫描看起来宕机的主机 |
| 服务检测 | |
| -O | 作系统检测 |
| -sV | 服务版本检测 |
| -A | 作系统检测、版本检测及其他新增功能 |
| 时间安排 | |
| -T<0-5> | 时机模板——偏执(0)、狡猾(1)、礼貌(2)、正常(3)、激进(4)、疯狂(5) |
| –min-parallelism <numprobes>以及–max-parallelism <numprobes> | 最小和最大并行探针数量 |
| –min-rate <number>以及–max-rate <number> | 最小和最高速率(数据包/秒) |
| –host-timeout | 等待目标主机的最大时间 |
| 实时输出 | |
| -v | 冗长程度——例如,和-vv-v4 |
| -d | 调试层级——例如和-d-d9 |
| 报道 | |
| -oN <filename> | 正常输出 |
| -oX <filename> | XML 输出 |
| -oG <filename> | grep-可输出 |
| -oA <basename> | 所有主要格式的输出 |