一介闲人
一介闲人
Nmap(Network Mapper)是一款开源的网络探测和安全审计工具,被广泛用于网络发现、端口扫描、服务检测、操作系统指纹识别和漏洞检测等任务。它具有强大的功能和灵活的配置选项,适用于各种规模的网络环境,是网络安全从业者的必备工具。
sudo apt update && sudo apt install nmap
sudo yum install nmap
brew install nmap
从官方网站下载安装包:https://nmap.org/
nmap [扫描类型] [选项] <目标主机/IP/网络范围>
用于快速识别网络中存活的主机,跳过端口扫描
# 扫描单个主机
nmap -sn 10.100.2.136
# 扫描整个子网
nmap -sn 10.100.2.0/24
# 扫描多个离散IP
nmap -sn 10.100.2.1-10 10.100.2.20-30
nmap -F 10.100.2.136
# 扫描1-1000端口
nmap -p 1-1000 10.100.2.136
# 扫描单个端口
nmap -p 80 10.100.2.136
# 扫描多个离散端口
nmap -p 80,443,8080 10.100.2.136
nmap -p- 10.100.2.136
# 加速扫描
nmap -T4 -p- 10.100.2.136
识别目标主机开放端口对应的服务名称和版本号
# 基础服务版本探测
nmap -sV 10.100.2.136
# 详细版本信息
nmap -sV --version-all 10.100.2.136
# 结合指定端口扫描
nmap -sV -p 80,443 10.100.2.136
探测目标主机的操作系统类型、版本等信息
nmap -O 10.100.2.136
# 快速操作系统识别(开启猜测模式)
nmap -O --osscan-guess 10.100.2.136
# 结合服务版本与系统识别
nmap -sV -O 10.100.2.136
用于目标主机禁止Ping的场景
nmap -Pn 10.100.2.136
| 速度等级 | 选项 | 适用场景 |
|---|---|---|
| 0 | -T0 | 极慢,用于躲避IDS/IPS |
| 1 | -T1 | 慢,用于躲避IDS/IPS |
| 2 | -T2 | 低速度,适合低速网络 |
| 3 | -T3 | 默认平衡速度 |
| 4 | -T4 | 快速扫描(推荐日常使用) |
| 5 | -T5 | 极快,可能触发防火墙拦截 |
# 极快全端口扫描
nmap -T5 -p- 10.100.2.136
nmap -e eth0 10.100.2.0/24
使用内置脚本进行漏洞检测、服务探测等高级功能
# 列出所有脚本
nmap --script-help all
# 查看指定脚本帮助
nmap --script-help http-vuln-cve2021-41773
# 扫描HTTP相关漏洞
nmap --script http-vuln* 10.100.2.136
# 扫描SMB漏洞(如永恒之蓝)
nmap --script smb-vuln* 10.100.2.136
# 扫描SSL/TLS漏洞
nmap --script ssl-vuln* -p 443 10.100.2.136
# 扫描FTP弱密码
nmap --script ftp-brute -p 21 10.100.2.136
# 使用本地自定义脚本
nmap --script /path/to/your/script.nse 10.100.2.136
将扫描结果保存为不同格式,方便后续分析
# 保存为普通文本格式
nmap -oN scan_result.txt 10.100.2.136
# 保存为XML格式(可导入Metasploit等工具)
nmap -oX scan_result.xml 10.100.2.136
# 保存为可浏览的HTML格式
nmap -oG scan_result.html 10.100.2.136
# 同时保存多种格式
nmap -oN scan.txt -oX scan.xml -oG scan.gnmap 10.100.2.136
# 自动按时间命名报告
nmap -oA nmap_report_$(date +%Y%m%d) 10.100.2.136
从文件读取目标列表进行批量扫描
# 创建目标列表文件
echo "10.100.2.136" > targets.txt
echo "10.100.2.137" >> targets.txt
echo "example.com" >> targets.txt
# 批量扫描并保存结果
nmap -iL targets.txt -oN batch_scan_report.txt
# 排除单个IP
nmap 10.100.2.0/24 --exclude 10.100.2.1
# 从文件读取排除列表
nmap 10.100.2.0/24 --excludefile exclude_list.txt
nmap -sn 192.168.1.0/24
nmap -sV -O -p 80,443,8080 example.com
nmap -sV -O -sC -T4 -p- 10.100.2.136
nmap -sV --version-trace -p 3306 10.100.2.136
nmap -sS 10.100.2.136
# 需root权限执行,不会在目标主机的日志中留下完整连接记录
# FIN扫描:仅发送FIN标志位
nmap -sF 10.100.2.136
# Xmas扫描:发送FIN+PSH+URG标志位
nmap -sX 10.100.2.136
# Null扫描:不发送任何标志位
nmap -sN 10.100.2.136
# 使用多个诱饵IP同时扫描,目标日志中会显示多个扫描源
nmap -D 192.168.1.100,192.168.1.101,192.168.1.102 10.100.2.136
# 随机生成10个诱饵IP
nmap -D RND:10 10.100.2.136
# 伪造源端口为53(DNS),绕过只允许DNS流量的防火墙
nmap --source-port 53 10.100.2.136
# 伪造源端口为80(HTTP)
nmap --source-port 80 10.100.2.136
将TCP头拆分成多个小包发送,绕过包过滤设备的检测:
nmap -f 10.100.2.136
# 随机打乱端口扫描顺序
nmap --randomize-hosts --random-ports 10.100.2.0/24
# 修改TTL值模拟正常主机
nmap --ttl 64 10.100.2.136
# 添加MAC地址欺骗(模拟其他设备)
nmap --spoof-mac 00:11:22:33:44:55 10.100.2.136
# 随机生成华为设备MAC地址
nmap --spoof-mac Huawei 10.100.2.136
# 禁用DNS反向解析,减少可疑流量特征
nmap -n 10.100.2.136
| 脚本分类 | 说明 | 常用命令 |
|---|---|---|
| 信息收集 | 收集目标主机/服务的详细信息 | nmap --script discovery 10.100.2.136 |
| 漏洞扫描 | 检测已知CVE漏洞、默认配置漏洞 | nmap --script vuln 10.100.2.136 |
| 暴力破解 | 对FTP/SSH/MySQL等服务进行弱密码爆破 | nmap --script brute -p 21,22,3306 10.100.2.136 |
| 服务枚举 | 枚举SMB共享、DNS记录、SNMP信息等 | nmap --script enum 10.100.2.136 |
| 安全审计 | 检测SSL/TLS配置、HTTP安全头等 | nmap --script safe 10.100.2.136 |
| 恶意软件检测 | 检测目标是否被植入后门、挖矿程序等 | nmap --script malware 10.100.2.136 |
# 检测SSL/TLS安全配置(弱加密套件、过期证书等)
nmap --script ssl-enum-ciphers -p 443 example.com
# 检测HTTP安全头缺失(HSTS/CSP/X-Frame-Options等)
nmap --script http-security-headers -p 80,443 example.com
# 枚举SMB共享目录
nmap --script smb-enum-shares -p 139,445 10.100.2.136
# SSH弱密码爆破
nmap --script ssh-brute --script-args userdb=users.txt,passdb=pass.txt -p 22 10.100.2.136
# 检测永恒之蓝漏洞(MS17-010)
nmap --script smb-vuln-ms17-010 -p 445 10.100.2.136
# 检测Log4j2漏洞(CVE-2021-44228)
nmap --script log4j2-scan -p 8080 10.100.2.136
# 快速扫描整个C段存活主机+开放端口+服务版本,输出报告
nmap -sn -sV -T4 -oA internal_asset_$(date +%Y%m%d) 192.168.1.0/24
适用场景:企业内网资产盘点、安全基线检查。
# 扫描服务器是否开放了非允许端口(如23/3389等高危端口)
nmap -p 21,22,23,3306,3389,6379 --open 10.100.2.0/24 -oN port_compliance_report.txt
适用场景:等保合规检查、服务器端口基线审计。
# 爆发高危漏洞后,批量扫描全网主机是否存在受影响版本
nmap -sV --script vuln-CVE-XXXX-XXXX -p 对应端口 -iL all_hosts.txt -oN vuln_scan_report.txt
适用场景:高危漏洞爆发时的全网排查。
# 扫描站点服务器开放端口+服务版本+常见Web漏洞+SSL配置
nmap -sV -O --script http-vuln*,ssl-vuln* -p 80,443 example.com -oA web_site_security_check
适用场景:新站点上线前安全审计。
| 状态 | 含义 | 风险级别 |
|---|---|---|
open |
端口开放,有服务监听 | 高,需要重点关注 |
closed |
端口关闭,没有服务监听 | 低 |
filtered |
端口被防火墙/IDS拦截,无法判断是否开放 | 中 |
| `open | filtered` | 无法判断端口是开放还是被过滤(常见于UDP端口) |
| `closed | filtered` | 无法判断端口是关闭还是被过滤 |
| 发现项 | 风险级别 | 处理建议 |
|---|---|---|
| 高危端口开放(23/445/3389/6379/11211等)且无访问控制 | 高危 | 立即关闭端口或配置白名单访问控制 |
| 服务版本存在已知高危CVE漏洞 | 高危 | 立即升级服务版本或打补丁 |
| 弱密码/默认凭证 | 高危 | 立即修改密码 |
| 敏感服务对公网开放(SSH/MySQL/Redis等) | 中危 | 配置VPN访问或IP白名单 |
| SSL/TLS使用弱加密套件/过期证书 | 中危 | 升级TLS版本、更换证书 |
| 安全响应头缺失 | 低危 | 按需配置对应安全头 |
| 服务器/服务版本信息泄露 | 低危 | 可隐藏版本号减少攻击面 |
A:可以通过以下方式优化扫描速度:
-T4快速扫描等级,普通网络环境下不会触发拦截-p 1-10000或常用端口-n参数禁用DNS反向解析,减少无用请求--host-timeout 300s(每个主机最多扫描5分钟)--min-parallelism 10调整并行扫描线程数A:说明目标主机开启了防火墙或IDS拦截,尝试以下方法:
-sS半连接扫描替代默认的全连接扫描-T2,避免被流量检测拦截A:可以尝试以下方法提高识别准确率:
nmap -O -sV,结合服务版本信息判断--osscan-guess开启激进猜测模式A:Nmap支持多种导出格式:
-oX result.xml,可直接导入Metasploit、BurpSuite、Nessus等工具-oG result.gnmap,方便用shell命令过滤分析--json -oJ result.json,适合脚本批量处理Nmap 是一款功能强大的网络扫描工具,熟练掌握其各种命令的使用,可以为网络安全和系统管理工作提供有力的支持。但同时,也要在合法合规的前提下,合理使用这一工具。
评论