如何使用 NMAP 命令进行网络扫描
nmap -sP 192.168.80.1-225
主机扫描 Host Scan
渗透测试人员使用主机扫描来识别网络中的活动主机。它通过向网络中的所有系统发送ARP请求数据包来实现。当活动主机接收到ARP请求并回复MAC地址时,扫描结果将显示消息"主机已启动"。以下是执行主机扫描的语法示例:
nmap -sP
nmap -sn
在Kali Linux中,默认内置了nmap工具。您可以在终端中输入上述命令,将ARP请求包发送到网络中的每个系统。
nmap -p135 192.168.80.134
从下图中,您可以观察到nmap生成的活动主机扫描响应结果。Nmap使用-sP/-sn标志进行主机扫描,并广播ARP请求数据包来识别分配给特定主机的IP地址。它可以是一个IP范围(例如192.168.80.1-225)或CIDR(例如192.168.80.1/24)的一部分,用于指示我们想要扫描网络中的所有256个IP地址。活动主机将通过发送其MAC地址作为回复来单播ARP数据包,从而显示"Host is up"的消息。
端口扫描/TCP扫描 Port Scan /TCP Scan
如果渗透测试人员想要识别目标机器上特定端口的开放或关闭状态,他们可以使用nmap进行端口扫描。以下是执行端口扫描的语法示例:
nmap -p <port> <target>
在上述示例中,我们使用参数-p指定我们感兴趣的端口(例如端口135)。您还可以将其应用于CIDR(例如192.168.80.1/24),以扫描网络中的所有256个IP地址。
参数-p有几种可接受的格式,例如端口列表和端口范围。
nmap -p135,139 192.168.80.134
端口列表 Port List
如果渗透测试人员想要扫描目标的多个端口,他们可以使用端口列表扫描。在端口列表中,可以添加多个端口进行扫描。此扫描对于识别多个选定端口的状态非常有用。
端口范围 Port Range
使用端口范围扫描,您可以根据需要扫描目标网络的特定端口范围。
nmap -p1-65535 192.168.80.134 --open
所有端口 ALL Ports
如果渗透测试人员想要扫描所有65535个端口,他们可以执行以下命令:
nmap -p-
上述命令将枚举目标系统的开放端口。请注意,执行此命令可能需要一些时间。您还可以使用参数"--open"来执行相同的任务,以节省时间。
nmap -p msrpc 192.168.80.134
协议的特定端口 Specific Ports by Protocols
默认情况下,端口扫描更喜欢枚举TCP端口的状态。但如果您想同时扫描TCP端口和UDP端口,可以执行以下命令:
nmap -pT:25,U:53
如果您不知道要枚举的准确端口号,您还可以提供服务名称进行端口状态扫描。
nmap -p[service]
从下图中,您可以观察到在不引用任何端口号的情况下执行上述命令获得了相同的结果。
nmap -sU 192.168.80.134
UDP扫描 UDP Scan
UDP服务在渗透测试中经常被忽略,但优秀的渗透测试人员知道它们经常暴露主机的基本信息,并可能容易受到攻击,甚至被用来破坏主机。以下是利用Nmap列出主机上所有打开的UDP端口的方法:
nmap -sU
从下图中,您可以观察到UDP端口扫描的结果。要扫描特定的UDP端口,建议使用参数"-p"进行端口选择。
nmap -sU -p 137 192.168.80.134
nmap -O 192.168.80.134
操作系统检测扫描 OS Detection Scan
除了开放端口枚举,Nmap在操作系统指纹识别方面也非常有用。此扫描对渗透测试人员非常有帮助,以便总结可能的安全漏洞并确定可用的系统调用以设置特定的漏洞利用有效负载。以下是执行操作系统检测扫描的方法:
nmap -O
上述命令将提供有关设备类型、运行操作系统和操作系统详细信息的信息。
版本扫描 Version Scan
在漏洞评估中,了解正在运行的邮件和DNS服务器及其版本非常重要。准确的版本号有助于确定服务器容易受到的攻击。版本扫描可帮助您获取此信息。以下是执行版本扫描的方法:
nmap -sV
上述命令将提供目标机器上运行服务的安装版本的结果。附加信息将包含在括号中。
从下图中,您可以观察到它显示了正在运行的应用程序的当前安装版本。附加信息将包含在括号中。
nmap -sO 192.168.80.134
特定端口版本扫描
如果要对特定端口或服务进行版本扫描,可以使用以下命令:
nmap -sV -p <port>
上述命令将执行横幅抓取,从nmap-service-probes发送不同的查询到假定的开放端口列表。结果将以表格形式输出,其中包含特定服务的版本号。附加信息将包含在括号中。
协议扫描 Protocol Scan
IP协议扫描对于确定主机使用的通信协议非常有帮助。此方法展示了如何使用Nmap枚举所有IP协议。它将发送原始IP数据包到目标计算机上的每个协议,不带任何附加协议标头。对于TCP、ICMP、UDP、IGMP和SCTP协议,Nmap将设置有效的标头值,但对于其他协议,将使用空IP数据包。以下是执行IP协议扫描的方法:
nmap -sO
上述命令将显示支持的协议及其状态。
nmap –F 192.168.80.134
从下图中,您可以观察到协议扫描的结果,显示了打开和打开|过滤状态的协议扫描结果。
快速扫描 Fast Scan
如果您希望更快地完成扫描并节省时间,可以使用-F选项进行快速扫描。该选项仅扫描nmap_services文件中列出的端口,比扫描所有65535个端口要快得多。以下是执行快速扫描的方法:
nmap -F
从下图中,您可以观察到快速扫描的结果,扫描时间为1.43秒。与协议扫描方法相比,快速扫描不显示其他正在运行的服务的开放端口。
nmap –T4 192.168.80.134
时序模板扫描 Timing Template Scan
如果您希望更好地控制扫描时间并更快地完成扫描,可以使用-T参数设置主要时间选项。Nmap会根据网络速度和目标主机的响应时间自动调整时间。以下是使用时序模板进行扫描的方法:
nmap -T<template>
上述命令将执行主动扫描并减少目标系统枚举的扫描时间。从下图中,您可以观察到扫描时间为1.85秒。
nmap -F 192.168.1.110-255 --exclude 192.168.80.134
排除扫描 Exclude Scan
有时需要排除某些主机以避免扫描它们。例如,政府网站或特定IP地址可能不允许进行扫描。Nmap的--exclude选项可以帮助您从完整的网络扫描中删除主机或主机列表。以下是执行排除扫描的方法:
nmap --exclude <host>
上述命令将从给定的IP范围中排除目标IP,否则将转储剩余IP的扫描结果。
nmap -sV -O --exclude-file remove.txt 192.168.80.130/24
上述命令将扫描192.168.80.1和192.168.80.150之间的所有IP,但不包括192.168.80.130。您可以从下图中确认。
激进扫描 Aggressive Scan
激进扫描选项启用其他高级和主动选项。它包括操作系统检测(-O)、版本扫描(-sV)、脚本扫描(-sC)和跟踪路由(--traceroute)。此选项仅启用功能,而不启用计时选项(例如-T4)或详细选项(-v)。以下是执行激进扫描的方法:
nmap -A
如果您注意到下图,您会发现它显示了多个扫描的组合结果。它提供了关于正在运行的应用程序、操作系统指纹、跟踪路由和主机脚本扫描的重要信息。
nmap -iL /home/kali/Desktop/targets.txt
列表扫描 List Scan
当您想要扫描多个主机并执行多个扫描时,可以使用-iL选项,该选项允许Nmap从外部文件加载目标。您只需将所有目标IP添加到一个文本文件中,并将其保存在一个位置即可。以下是使用列表扫描的方法:
nmap -iL targets.txt
上述命令将从文件targets.txt加载目标进行扫描。
免责声明:本文所涉及的渗透测试内容仅供安全研究和学习目的,严禁用于非法用途。渗透测试是一项专业技术活动,必须经过有关部门的授权才能进行。作者不承担任何因使用本文内容而导致的法律责任。读者在使用本文所提供的技术和信息时,必须遵守当地法律法规和相关政策。如果读者违反了这些规定,后果由读者自负。