一、Nmap基础介绍
简介
Nmap全称Network Mapper(网络映射器),1996年由Fyodor开发,开源免费网络探测&安全审计工具,跨平台(Windows/Linux/macOS)。
核心原理:发送原始IP报文,探测目标主机、端口、服务版本、操作系统,支持防火墙/IDS绕过、NSE脚本扩展。
下载地址
官网:https://nmap.org/download.html
- Windows:exe一键安装包/zip绿色版
- Linux:rpm包、源码编译包;Kali系统预装Nmap
四大核心功能 + 附加功能
核心功能
- 主机发现:判断目标机器是否开机在线
- 端口扫描:识别TCP/UDP端口开放状态
- 服务版本侦测:识别端口运行程序、版本号
- 操作系统侦测:通过协议栈指纹识别目标系统
附加功能
- 防火墙/IDS规避扫描
- NSE脚本漏洞扫描、自动化渗透
基础命令语法
nmap [选项/参数] 扫描目标- 多选项、参数之间用空格分隔;
- 简写可连写:
-p80,规范写法推荐空格分隔-p 80。
最简扫描命令
- 默认基础扫描(仅端口探测)
nmap 192.168.40.182- 综合全面扫描(推荐实战)
nmap -A -T4 -v 192.168.40.182-A:综合扫描(系统识别+版本探测+路由追踪+脚本)-T4:快速扫描时序-v:显示详细扫描过程
二、主机发现(判断目标是否存活)
作用
模拟ping发包,探测局域网/公网主机在线状态,不扫描端口。
探测数据包类型
ICMP报文、TCP SYN/ACK、SCTP报文等十多种探测方式。
常用参数表
参数 | 功能说明 |
| Ping扫描,仅探测存活主机,跳过端口扫描 |
| 不进行存活探测,直接扫描端口(防火墙屏蔽ping时使用) |
| TCP SYN ping探测(默认443) |
| TCP ACK ping探测 |
| ICMP Echo ping(标准ping) |
| ICMP 时间戳探测 |
| 路由追踪,查看数据包转发节点 |
| 打印收发所有数据包,抓包分析 |
| 禁止DNS反向解析,提升扫描速度 |
实战示例
示例1:局域网扫描存活主机(/24网段)
# 两种写法等效 nmap -sn 192.168.40.1-254 nmap -sn 192.168.40.0/24局域网内依靠ARP包探测,输出在线主机MAC地址。
示例2:跨网段单主机存活探测
nmap -sn 192.168.50.5跨网段会发送4种探测包:ICMP Echo、TCP SYN(443)、TCP ACK(80)、ICMP时间戳,任一回复即判定主机在线。
示例3:打印完整收发数据包
nmap -sn --packet-trace 192.168.30.1三、端口扫描(核心功能)
端口6种状态
open:端口开放,存在服务closed:端口关闭filtered:防火墙/IDS拦截,无法判断状态unfiltered:未被拦截,但无法确定是否开放open|filtered:开放或被屏蔽,无法区分closed|filtered:关闭或被屏蔽
端口扫描模式参数
参数 | 扫描类型 | 特点 |
| 指定扫描端口 |
|
| TCP Connect全连接扫描 | 完整三次握手,日志易被防火墙记录 |
| TCP SYN半连接扫描(默认) | 只发SYN,收到SYN+ACK后发RST断开,隐蔽性更强 |
| TCP ACK扫描 | 仅判断端口是否被防火墙拦截,无法识别开放端口 |
| 隐蔽FIN/NULL/Xmas扫描 | Linux系统适用,Windows会全部返回RST,识别失效 |
| UDP端口扫描 | 扫描DNS(53)、SNMP(161)等UDP服务 |
实战示例
示例1:指定多段端口扫描
nmap -p 1-1024,1433,3306,3389 192.168.40.178示例2:同时扫描TCP+UDP端口
nmap -p T:139,U:53 -sS -sU 192.168.40.178示例3:SYN半连接隐蔽扫描
nmap -sS 192.168.40.182原理:发送SYN→目标回SYN+ACK(端口开放)→Nmap直接发送RST断开,不完成完整握手。
示例4:全连接扫描(无root权限可用)
nmap -sT 192.168.40.182示例5:防火墙探测(ACK扫描)
nmap -sA 192.168.40.182收到RST代表端口未被防火墙屏蔽,仅用于判断防火墙规则。
四、服务版本侦测(识别端口运行程序)
作用
获取开放端口上运行的软件、版本号,用于匹配对应漏洞。
底层数据库:/usr/share/nmap/nmap-services-probes
常用参数
参数 | 功能 |
| 开启服务版本探测(最常用) |
| 轻量快速版本扫描 |
| 完整深度版本扫描 |
| 打印版本探测全过程 |
实战示例
示例1:基础版本扫描
nmap -sV 192.168.40.180输出服务名称、版本:nginx 1.8.1、MySQL、OpenSSH等。
示例2:追踪版本探测发包详情
nmap -sV --version-trace 192.168.40.180五、操作系统识别(指纹识别目标系统)
识别原理
通过TCP/IP协议栈特征比对内置指纹库nmap-os-db(2600+系统指纹),判断依据:
- 默认TTL值:Windows=128、Linux=64、Cisco设备=255
- TCP窗口大小、DF不分段标志、FIN报文响应、ISN序列号等特征
常用参数
参数 | 功能 |
| 开启操作系统识别 |
| 综合扫描,自动包含-O、-sV、traceroute |
| 模糊猜测系统(指纹匹配度低时使用) |
实战示例
示例1:单独识别操作系统
nmap -O 192.168.40.182输出系统:Windows 7 / Server 2008 / Windows 8.1。
示例2:综合扫描(推荐,一键全量信息)
nmap -A -T4 192.168.40.182同时输出:存活主机、端口、服务版本、系统、路由、脚本扫描结果。
六、防火墙/IDS 规避扫描技术
核心参数汇总
参数 | 绕过手段 |
| 时序控制,减慢扫描速度规避IDS告警 |
| 诱饵IP欺骗,生成3个随机虚假IP混合扫描 |
| IP数据包分段,拆分数据包绕过深度检测 |
| 指定数据包偏移(必须8倍数) |
| 伪造源端口(53/80等白名单端口) |
| 伪造MAC地址 |
实战示例
示例1:时序速度控制
-T3默认速度;-T4快速扫描;-T1/T0慢速隐蔽扫描(防IDS)
nmap -T3 192.168.40.178 nmap -T4 192.168.40.178示例2:诱饵IP隐藏真实扫描源
nmap -D RND:3 192.168.40.182目标防火墙日志会同时记录本机IP+3个随机虚假IP,无法定位真实扫描者。
七、NSE脚本基础(拓展漏洞扫描)
介绍
Nmap Script Engine,Lua脚本编写,内置大量漏洞、信息搜集、爆破脚本,默认路径:/usr/share/nmap/scripts/
基础使用命令
- 单脚本扫描
nmap --script 脚本名 目标IP- 分类脚本扫描(漏洞/暴力/信息搜集)
nmap --script vuln 192.168.40.182 # 漏洞探测脚本 nmap --script auth 192.168.40.182 # 认证爆破脚本-A参数会自动加载基础信息类NSE脚本扫描
常用场景脚本
smb-os-discovery:Windows主机SMB信息搜集ms17-010:永恒之蓝漏洞检测ftp-brute:FTP弱口令爆破dns-zone-transfer:DNS域传送漏洞探测
八、高频实战万能命令汇总
- 局域网存活主机探测
nmap -sn 192.168.1.0/24- 快速综合扫描(端口+服务+系统+路由)
nmap -A -T4 -v 192.168.1.100- 隐蔽半连接扫描+版本探测
nmap -sS -sV -T4 192.168.1.100- 防火墙屏蔽ping,强制扫描端口
nmap -Pn -A 192.168.1.100- 漏洞批量扫描
nmap --script vuln -T4 192.168.1.100- 诱饵IP绕过IDS扫描
nmap -D RND:2 -sS 192.168.1.100九、重要注意事项
- 法律提醒:仅可扫描自己拥有授权的靶机/服务器,未经许可扫描公网设备违反《网络安全法》;
- SYN扫描
-sS、数据包分段等高级功能需要root管理员权限; -T5极速扫描会丢失大量结果,仅适合内网快速探测;- UDP扫描速度极慢,若无特殊需求可省略
-sU; - 扫描公网目标建议搭配
-T1/-T2慢速模式,避免触发WAF封禁IP。