前言
Nmap(Network Mapper)是一款开源免费的网络发现和安全审计工具,主要用于扫描目标主机的开放端口、操作系统类型、启用的服务等信息。以下是Nmap的一些常见使用介绍
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 欺骗防护措施的主机。
❞
👇👇👇
如果你也想学习:黑客&网络安全的零基础攻防教程
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
在这里领取:
这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:
1.学习路线&职业规划