介绍
本房间是 Nmap 系列的最后一个(网络安全简介模块的一部分)。在这个房间中,我们重点关注端口扫描之后的步骤:特别是服务检测、操作系统检测、Nmap脚本引擎和保存扫描结果。
- Nmap实时主机发现
- Nmap基本端口扫描
- Nmap高级端口扫描
- Nmap后端口扫描
在本系列的第一个房间中,我们学习了 Nmap 如何枚举目标、发现活动主机以及使用反向DNS查找有趣的名称。该系列的第二个和第三个房间重点介绍网络端口扫描的基本和高级类型。
在最后一个房间,如下图所示,我们重点讨论Nmap 的用途:
- 检测正在运行的服务的版本(在所有开放端口上)
- 根据目标显示的任何迹象检测操作系统
- 运行Nmap的traceroute
- 运行选择的Nmap脚本
- 以多种格式保存扫描结果
本会议室将重点讨论这些步骤以及如何在端口扫描后执行它们。
服务检测
一旦 Nmap 发现开放端口,您就可以探测可用端口来检测正在运行的服务。对开放端口的进一步调查是重要的信息,因为渗透测试人员可以使用它来了解该服务是否存在任何已知的漏洞。加入漏洞 101 了解有关搜索易受攻击服务的更多信息。
添加-sV
到Nmap命令将收集并确定开放端口的服务和版本信息。您可以控制强度,--version-intensity LEVEL
级别范围为 0(最轻)和 9(最完整)。-sV --version-light
强度为 2,而 -sV --version-all
强度为 9。
需要注意的是,使用-sV
将强制 Nmap 继续进行TCP 3 次握手并建立连接。连接建立是必要的,因为如果不完全建立连接并与监听服务通信, Nmap就无法发现版本。换句话说, 选择该选项 -sV
后,无法进行隐形 SYN 扫描-sS
。
下面的控制台输出显示了带有该选项的简单Nmap隐形 SYN 扫描-sV
。添加该 -sV
选项会导致输出中出现一个新列,显示每个检测到的服务的版本。例如,在TCP端口 22 开放的情况下,22/tcp open ssh
我们得到的不是 , 而是22/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u8 (protocol 2.0)
。请注意,SSH协议被猜测为服务,因为TCP端口 22 已打开;Nmap不需要连接到端口 22 来确认。但是, -sV
需要连接到此开放端口才能获取服务横幅及其可以获得的任何版本信息,例如nginx 1.6.2
.因此,与服务列不同,版本列不是猜测。
pentester@TryHackMe$ sudo nmap -sV 10.10.166.56
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-10 05:03 BST
Nmap scan report for 10.10.166.56
Host is up (0.0040s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u8 (protocol 2.0)
25/tcp open smtp Postfix smtpd
80/tcp open http nginx 1.6.2
110/tcp open pop3 Dovecot pop3d
111/tcp open rpcbind 2-4 (RPC #100000)
MAC Address: 02:A0:E7:B5:B6:C5 (Unknown)
Service Info: Host: debra2.thm.local; 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 8.40 seconds
请注意,许多Nmap选项需要 root 权限。除非您以 root 身份运行Nmap,否则您需要 sudo
像上面的示例一样使用。
启动虚拟机。准备就绪后,打开 AttackBox 上的终端来回答以下问题。
2.1启动此任务的目标计算机并启动 AttackBox。nmap -sV --version-light 10.10.166.56
通过 AttackBox运行 。检测到的 143 端口版本是什么? 答案:Dovecot imapd
2.2哪个服务没有检测到版本 --version-light
? 答案:rpcbind
操作系统检测和路由跟踪
操作系统检测
Nmap 可以根据操作系统的行为及其响应中的任何迹象来检测操作系统 ( OS )。可以使用以下命令启用操作系统-O
检测;这是一个大写的 O,如OS中。在此示例中,我们 nmap -sS -O 10.10.166.56
在 AttackBox 上运行。 Nmap 检测到操作系统是Linux 3.X,然后进一步猜测它运行的是 3.13 内核。
pentester@TryHackMe$ sudo nmap -sS -O 10.10.166.56
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-10 05:04 BST
Nmap scan report for 10.10.166.56
Host is up (0.00099s 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:A0:E7:B5:B6:C5 (Unknown)
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3.13
OS details: Linux 3.13
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 3.91 seconds
我们扫描并尝试检测其操作系统版本的系统正在运行内核版本 3.16。 Nmap 能够在这种情况下做出接近的猜测。在另一个案例中,我们扫描了内核为5.13.14的Fedora Linux系统;然而,Nmap 检测到它是Linux 2.6.X。好消息是 Nmap正确检测到操作系统;不太好的消息是内核版本错误。
操作系统检测非常方便,但影响其准确性的因素很多。首先,Nmap 需要在目标上找到至少一个开放端口和一个关闭端口,才能做出可靠的猜测。此外, 由于虚拟化和类似技术的使用不断增加,来宾操作系统指纹可能会被扭曲。因此,请始终对操作系统版本持保留态度。
路由追踪
如果您希望Nmap找到您和目标之间的路由器,只需添加--traceroute
.在以下示例中,Nmap将跟踪路由附加到其扫描结果中。请注意,Nmap的跟踪路由的工作方式与Linux和 macOS 或MS Windows 上的traceroute
命令略有不同。标准 从低TTL(生存时间)数据包开始,并不断增加,直到到达目标。 Nmap的traceroute从一个高TTL的数据包开始,并不断减少