如何强化默认的Nmap主机发现阶段

如何强化默认的Nmap主机发现阶段

本文介绍如何增强默认的 Nmap 主机发现阶段,以包括对默认 80/tcp 和 443/tcp 以外的端口的 SYN 和 ACK 探测。这些技术可以帮助安全评估专业人员最大限度地增加在网络渗透测试期间识别的实时系统的数量。

增强Nmap:主机发现

Nmap 被广泛认为是端口扫描仪的无可争议的冠军。理所当然地!Nmap 凭借令人难以置信的速度、功能和灵活性当然值得加冕。然而,在展示这些强大的端口扫描力量之前,Nmap 首先执行基本的主机发现阶段。不响应主机发现探测的系统永远不会进行端口扫描,因此确定主机发现阶段对于确保不会忽略网络足迹有限的系统至关重要。

根据Nmap 参考指南(RTFM),默认主机发现探测是“ICMP 回显请求、到端口 443的TCP SYN 数据包、到端口 80 的 TCP ACK 数据包和ICMP时间戳请求。” ICMP 时间戳请求经常被阻止,并且越来越多的组织现在也在阻止无处不在的 ICMP 回显请求。这将 ACK 留给端口 80/tcp,将 SYN 留给端口 443/tcp,如果目标系统正在运行 Web 服务器,这非常棒。但是,如果目标没有运行 Web 服务器,您可能会发现自己处于 SOL 状态,这当然代表 Systems Obscurely Live。如您所见,默认的主机发现探测并不十分全面。如果 Goldilocks 进行这个评估,她会说“这个端口扫描太垃圾了!

在频谱的另一端,您可以简单地完全禁用主机发现阶段 ( -Pn ) 并扫描所有 65,535 个 TCP 端口 ( -p 1-65535 ) 以确保绝对没有遗漏任何内容。有时这是个好主意!例如,当网络 IPS 设备未配置为阻塞模式时,在针对有限数量的系统进行外部网络渗透测试期间,这是一种绝妙的方法。但是,根据目标系统的数量和相关网络访问控制设备的配置,扫描所有 65,535 个 TCP 端口可能会十分缓慢。如果 Goldilocks 在这里,她会说“这个端口扫描太热了!”

NMap 示例

如果只有某种方法可以调整那些麻烦的主机发现探测?幸运的是,正如他们在山谷中所说的那样,Nmap 就像是完全灵活到了极限!Nmap 允许您配置将在主机发现阶段使用 SYN ( -PS ) 和 ACK ( -PA ) 数据包探测的特定端口。此外,Nmap 包含一个方便的nmap-services文件,其中包含从 1996 年到 2020 年编译的网络服务数据。

nmap-services文件中的第三个字段是打开频率,它是一个介于 0 和 1 到小数点后六位之间的数字,根据历史网络服务数据指定端口打开的几率。例如,端口 443/tcp 被列为 0.208669,这意味着该端口有 20.8669% 的时间处于打开状态。

因此,我们可以按第三列对nmap-services文件进行排序,以生成最常见的 TCP 端口列表。想象一下神秘的sed awkery,以下命令将生成前 100 个 TCP 端口的列表:

$ grep '/tcp' /usr/share/nmap/nmap-services | awk '{print $3" "$2}' | sort -nr | head -100 | awk '{print $2}' | awk -F/ '{print $1}' | sed 's/$/,/' | xargs | sed 's/, /,/g' | sed 's/,$//'

让我们像MC Hammer一样制作并分解它!

grep '/tcp' /usr/share/nmap/nmap-services

从nmap-services文件中提取所有 TCP 端口,例如:

"https   443/tcp 0.208669        # secure http (SSL)"
awk '{print $3" "$2}'

只打印开放的频率和 TCP 端口,例如

"0.208669 443/tcp"
sort -nr

执行反向数字排序,以便首先出现最高的开放频率……

head -100

仅打印前 100 行(可以调整此参数以包含任意数量的 TCP 端口)

awk '{print $2}'

仅打印 TCP 端口(例如“443/tcp”)

awk -F/ '{print $1}'

仅打印端口号(例如“443”)

sed 's/$/,/'

在每个端口号的末尾附加一个逗号(例如“443”)

xargs

丢弃换行符并在一行上打印所有端口号

sed 's/, /,/g'

丢弃每个逗号后的多余空格

sed 's/,$//'

丢弃尾随的逗号…

运行此命令会产生以下输出:

如何强化默认的Nmap主机发现阶段
$ grep '/tcp' /usr/share/nmap/nmap-services | awk '{print $3" "$2}' | sort -nr | head -100 | awk '{print $2}' | awk -F/ '{print $1}' | sed 's/$/,/' | xargs | sed 's/, /,/g' | sed 's/,$//'
80,23,443,21,22,25,3389,110,445,139,143,53,135,3306,8080,1723,111,995,993,5900,1025,587,8888,199,1720,465,548,113,81,6001,10000,514,5060,179,1026,2000,8443,8000,32768,554,26,1433,49152,2001,515,8008,49154,1027,5666,646,5000,5631,631,49153,8081,2049,88,79,5800,106,2121,1110,49155,6000,513,990,5357,427,49156,543,544,5101,144,7,389,8009,3128,444,9999,5009,7070,5190,3000,5432,3986,1900,13,1029,9,6646,5051,49157,1028,873,1755,2717,4899,9100,119,37

有了这个端口列表,我们现在可以构建一个 Nmap 主机发现命令来执行主机发现 ( -sn ),将 SYN ( -PS ) 和 ACK ( -PA ) 数据包发送到前 100 个 TCP 端口。让我们包含默认的 ICMP 回显请求 ( -PE ) 和时间戳请求 ( -PP ) 主机发现选项,从而生成以下增强的主机发现命令

$ nmap -sn -PE -PP -PS80,23,443,21,22,25,3389,110,445,139,143,53,135,3306,8080,1723,111,995,993,5900,1025,587,8888,199,1720,465,548,113,81,6001,10000,514,5060,179,1026,2000,8443,8000,32768,554,26,1433,49152,2001,515,8008,49154,1027,5666,646,5000,5631,631,49153,8081,2049,88,79,5800,106,2121,1110,49155,6000,513,990,5357,427,49156,543,544,5101,144,7,389,8009,3128,444,9999,5009,7070,5190,3000,5432,3986,1900,13,1029,9,6646,5051,49157,1028,873,1755,2717,4899,9100,119,37 -PA80,23,443,21,22,25,3389,110,445,139,143,53,135,3306,8080,1723,111,995,993,5900,1025,587,8888,199,1720,465,548,113,81,6001,10000,514,5060,179,1026,2000,8443,8000,32768,554,26,1433,49152,2001,515,8008,49154,1027,5666,646,5000,5631,631,49153,8081,2049,88,79,5800,106,2121,1110,49155,6000,513,990,5357,427,49156,543,544,5101,144,7,389,8009,3128,444,9999,5009,7070,5190,3000,5432,3986,1900,13,1029,9,6646,5051,49157,1028,873,1755,2717,4899,9100,119,37 localhost
Nmap scan report for localhost (127.0.0.1)
Host is up.
# Nmap done at Tue Dec 21 09:02:00 2021 -- 1 IP address (1 host up) scanned in 0.00 seconds

请注意,SYN ( -PS ) 和 ACK ( -PA ) 数据包选项与列表中的第一个端口号之间没有空格。此外,您可以插入您最喜欢的 Nmap 选项,例如,调整时序参数 ( -T4 ) 和/或输出格式 ( -oG )。

使用 NMap

瞧!如果金发姑娘在做这个评估,她肯定会说:“这个端口扫描刚刚好!我太棒了 31337!是时候pwn一些该死的熊了!”

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。