Nmap(Network Mapper)是一款开源免费的网络发现和安全审计工具,主要用于扫描目标主机的开放端口、操作系统类型、启用的服务等信息。以下是Nmap的一些常见使用介绍
「主机发现」:Nmap可以通过发送不同类型的探测包(如ICMP echo请求、TCP SYN包等)来检测目标主机是否在线。常用命令如-sn
(Ping扫描,只进行主机发现,不进行端口扫描)和-PE/PP/PM
(使用ICMP echo、timestamp、netmask请求包发现主机)。
「端口扫描」:Nmap支持多种端口扫描技术,包括TCP SYN扫描(-sS
)、TCP connect扫描(-sT
)、UDP扫描(-sU
)等。用户可以根据需要选择适当的扫描方式,以探测目标主机上开放的端口。
「版本探测」:Nmap能够探测目标主机上运行的服务及其版本信息。通过发送特定的探测包并分析响应,Nmap可以识别出服务的类型和版本。使用-sV
选项可以启用版本探测功能。
「操作系统探测」:Nmap还能够尝试识别目标主机的操作系统类型。通过收集目标主机的响应数据包中的指纹信息,并与已知的操作系统指纹库进行比对,Nmap可以推断出目标主机的操作系统。使用-O
选项可以启用操作系统探测功能。
「NSE脚本引擎」:Nmap的强大之处在于其内置的NSE(Nmap Scripting Engine)脚本引擎。用户可以通过编写或运行NSE脚本来扩展Nmap的功能,实现更复杂的网络探测和安全审计任务。
「结果输出」:Nmap支持将扫描结果输出到不同的格式,包括文本、XML、Grepable等。用户可以根据需要使用相应的输出选项(如-oN
、-oX
等)来保存扫描结果。
1、指定端口
扫描主机的**「开放端口」**,在nmap后面直接跟主机IP(默认扫描1000个端口)
image-20240708154236299
扫描**「指定端口」**,使用 -p
参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口
image-20240708154612266
nmap 192.168.31.180 -p 80
nmap 192.168.31.180 -p 1-80
nmap 192.168.31.180 -p 80,3389,22,21
nmap 192.168.31.180 -p 1-65535
nmap 192.168.31.180 -p- # -p- 等价于 -p 1-65535
image-20240708154655513
2、主机探测
扫描网段中有哪些主机在线,使用 -sP
参数,不扫描端口,只扫描「存活主机」。
本质上是Ping扫描,能Ping通有回包,就判定主机在线。
nmap -sP 192.168.209.0/24
image-20240708155116858
3、服务识别
扫描端口时,默认显示端口对应的服务,但不显示服务版本。
想要识别具体的「服务版本」,可以使用 -sV
参数。
nmap 192.168.209.1 -p 80-1000 -sV
image-20240708155311798
4、系统识别
想要识别「操作系统版本」,可以使用 -O
参数。
nmap 192.168.209.1 -O
image-20240708155445432
❝
Tips:Nmap扫描出的系统版本并不是完全正确的,仅供参考。
当识别不出具体版本时,Nmap会以概率的形式列举出可能的操作系统,如上图所示。
❞
5、导出扫描结果
Nmap的扫描结果可以保存到文件中,比如文本格式、XML格式。
1)将扫描结果导出为「文本格式」,结果原样保存。
nmap 192.168.209.1 -p 80-1000 -oN result.txt
image-20240708155708758
2)将扫描结果导出为「xml格式」,结果的保存格式会发生变化。
nmap 192.168.209.1 -p 80-1000 -oX result.xml
image-20240708155859661
扫描绕过安全设备欺骗
发送参杂着假ip的数据包检测
nmap -D 111.111.111.111 192.168.209.1
1、碎片扫描
通过将数据包分割成更小的部分发送,使得防火墙更难识别这些数据包属于一个扫描流量。
nmap -f <目标IP地址> # 使用随机偏移量的碎片扫描
nmap -mtu 8 <目标IP地址> # 指定MTU大小为8的碎片扫描
2、诱饵扫描
在扫描数据包中添加多个诱饵IP地址,使目标防火墙难以判断真正的扫描源,从而增加扫描的隐蔽性。
nmap -D RND:10 <目标IP地址> # 随机使用10个诱饵IP地址
nmap -D decoy1,decoy2,decoy3 <目标IP地址> # 指定具体的诱饵IP地址
3、空闲扫描
利用一台空闲主机(zombie host)作为跳板,通过向空闲主机发送经过特殊构造的数据包,间接地探测目标主机的端口状态,而无需直接向目标主机发送数据包。
nmap -P0 -sI zombie <目标IP地址> # 使用名为zombie的空闲主机进行扫描
❝
注意:这里的“「zombie」”应替换为实际的空闲主机地址(简称**「僵尸机」**)。
❞
4、随机数据长度
在发送的数据包中填充随机长度的数据,以绕过一些基于数据包长度过滤的防火墙规则。
nmap --data-length 25 <目标IP地址> # 在每个数据包中填充25字节的随机数据
5、欺骗扫描
通过伪造源IP地址或MAC地址,使防火墙难以追踪真实的扫描源。
nmap --sT -PN --spoof-mac aa:bb:cc:dd:ee:ff <目标IP地址> # 伪造源MAC地址进行TCP连接扫描
nmap --badsum <目标IP地址> # 发送带有错误校验和的数据包,可能绕过某些简单的防火墙规则
nmap -cloak-source <spoofed_ip1>,<spoofed_ip2> <target_ip> # 伪造ip地址进行扫描
6、SYN扫描
虽然SYN扫描本身并不直接绕过防火墙,但它是一种非常隐蔽的扫描方式,因为它只发送SYN包而不完成整个TCP握手过程,从而减少了被防火墙检测到的可能性。
nmap -sS <目标IP地址> # 使用SYN扫描方式
7、使用特定端口或绕过常用端口
一些防火墙规则基于端口过滤,可以尝试使用特定的源端口来绕过。例如,很多防火墙允许HTTP端口(80)和HTTPS端口(443)通过。
nmap --source-port 80 <目标IP地址> # 使用HTTP端口作为源端口进行扫描
8、ARP Ping扫描(-PR)
nmap -sn -PR <target_network>
# 或者
nmap -PR <target_network>
❝
Tips:ARP 扫描仅适用于局域网环境,因为它依赖于 ARP 协议,该协议用于在局域网内解析 IP 地址到 MAC 地址。
ARP 扫描可能无法发现配置了 ARP 过滤或 ARP 欺骗防护措施的主机。
❞
Nmap作为一款开源免费的网络发现和安全审计工具,功能强大且多样。
它不仅能够进行主机发现和端口扫描,识别目标主机上的服务及其版本信息,还能尝试探测操作系统的类型。通过内置的NSE脚本引擎,Nmap的功能得到了进一步扩展,可以实现更复杂的网络探测任务。
此外,Nmap支持将扫描结果输出到不同格式的文件中,便于用户保存和分析。高级用法中,Nmap提供了多种扫描策略,如碎片扫描、诱饵扫描和空闲扫描等,以帮助用户绕过安全设备的检测,增加扫描的隐蔽性和灵活性。
自学网络安全,互相交流的同时还能交朋友,和博主一起来交流学习吧