Nmap快速上手:第一部分
字数 3082 2025-08-15 21:31:23

Nmap 网络扫描工具全面指南

一、Nmap 简介

Nmap (Network Mapper) 是一款开源的网络探测和安全审计工具,用于网络发现和安全扫描。它可以快速扫描大型网络,也可以对单个主机进行深入扫描。Nmap 提供了丰富的功能,包括:

  • 主机发现
  • 端口扫描
  • 服务版本检测
  • 操作系统检测
  • 脚本扫描(NSE)

二、安装与靶机搭建

1. 安装

从官方网站下载安装:https://nmap.org/

2. 靶机搭建

推荐使用 OWASP Broken Web Applications Project:
https://sourceforge.net/projects/owaspbwa/

示例靶机地址:

  • 192.168.154.128
  • 192.168.3.7

三、基本命令与参数

1. 帮助命令

nmap --help

2. 目标指定

  • 单个目标:nmap 192.168.154.128
  • 多个目标:nmap 192.168.154.128 192.168.3.7
  • IP范围:nmap 192.168.3.1-10
  • 从文件导入:nmap -iL targets.txt
  • 排除目标:
    • nmap 192.168.3.1/28 --exclude 192.168.3.7
    • nmap --excludefile targets.txt

3. 主机发现

  • -sL:列表扫描,仅列举IP
  • -sn:Ping扫描,不进行端口扫描
  • -Pn:跳过主机发现,假设所有主机在线
  • -PS/PA/PU/PY:TCP SYN/ACK, UDP或SCTP发现
  • -PE/PP/PM:ICMP echo, timestamp, netmask请求
  • -PO:IP协议Ping
  • --traceroute:追踪路由

4. 扫描技术

  • -sS:TCP SYN扫描(半开放扫描)
  • -sT:TCP连接扫描
  • -sA:TCP ACK扫描
  • -sW:TCP窗口扫描
  • -sM:TCP Maimon扫描
  • -sU:UDP扫描
  • -sN/sF/sX:TCP Null, FIN和Xmas扫描
  • -sI:Idle扫描(僵尸扫描)
  • -sO:IP协议扫描

5. 端口指定

  • 指定端口:-p 21,22,80,443
  • 端口范围:-p 1-65535
  • 排除端口:--exclude-ports 21,22
  • 快速模式:-F(仅扫描TOP100端口)
  • 顺序扫描:-r(不随机化端口顺序)
  • 常用端口:--top-ports 1000

6. 服务/版本检测

  • -sV:版本探测
  • --version-intensity:设置探测强度(0-9)
  • --version-light:轻量级探测(intensity 2)
  • --version-all:尝试所有探测(intensity 9)
  • --version-trace:显示详细版本探测过程

7. 脚本扫描(NSE)

  • -sC--script=default:使用默认脚本
  • --script=<脚本名>:使用特定脚本
  • --script-args:传递脚本参数
  • --script-trace:显示发送/接收数据
  • --script-updatedb:更新脚本数据库
  • --script-help:查看脚本帮助

8. 操作系统检测

  • -O:启用操作系统检测
  • --osscan-limit:只对有希望的目标进行OS检测
  • --osscan-guess:更激进地猜测OS

9. 时间与性能

  • -T<0-5>:时间模板(数字越大越快)
  • --min-hostgroup/max-hostgroup:并行扫描主机数量
  • --min-parallelism/max-parallelism:探测并行化
  • --max-retries:最大探测重传次数
  • --host-timeout:目标超时时间
  • --scan-delay/--max-scan-delay:探测间隔时间
  • --min-rate/--max-rate:每秒最小/最大发包数

10. 防火墙/IDS绕过

  • -f:分片
  • -D:使用诱饵IP
  • -S:伪造源地址
  • -e:使用指定接口
  • -g/--source-port:使用指定源端口
  • --proxies:通过HTTP/SOCKS4代理
  • --data:添加自定义payload
  • --ttl:设置IP存活时间
  • --spoof-mac:MAC欺骗
  • --badsum:发送错误的校验和

11. 输出选项

  • -oN:普通格式
  • -oX:XML格式
  • -oS:脚本小子格式
  • -oG:Grepable格式
  • -oA:同时输出三种主要格式
  • -v:增加详细程度
  • -d:增加调试级别
  • --open:仅显示开放端口
  • --packet-trace:显示所有发送/接收包
  • --iflist:打印主机接口和路由

12. 其他选项

  • -6:启用IPv6扫描
  • -A:启用OS检测、版本检测、脚本扫描和路由追踪
  • -V:打印版本号
  • -h:打印帮助摘要

四、初级使用示例

  1. 扫描单个目标:

    nmap 192.168.154.128
    
  2. 扫描多个目标:

    nmap 192.168.154.128 192.168.3.7
    nmap 192.168.3.1-10 192.168.154.100-130
    
  3. 扫描除某个目标之外的目标:

    nmap 192.168.3.1/28 --exclude 192.168.3.7
    nmap --excludefile targets.txt
    
  4. 扫描指定文件内的目标:

    nmap -iL targets.txt
    
  5. 扫描指定端口:

    nmap 192.168.154.128 -p 21,22,23,80,443,3306
    
  6. 扫描端口开放与服务版本:

    nmap -sV 192.168.154.128
    
  7. 路由跟踪:

    nmap --traceroute 192.168.154.128
    
  8. 主机存活情况:

    nmap -sP 192.168.3.0/24 192.168.154.0/24 -T5
    
  9. OS版本探测:

    nmap -O 192.168.154.128
    
  10. 防火墙状态:

    nmap -sF -T5 192.168.154.128
    

五、端口状态解释

状态 含义
open 端口处于开放状态,应用程序正在监听
filtered 端口被防火墙或其他安全设备阻止
closed 目标主机未开放该端口
unfiltered Nmap无法确认端口状态,需进一步探测
open/filtered Nmap不能识别是开放还是被过滤
closed/filtered Nmap不能识别是关闭还是被过滤

六、进阶脚本使用

Nmap脚本默认存放在/xx/nmap/scripts目录下

1. 脚本分类

  • auth:处理鉴权证书
  • broadcast:局域网服务探查
  • brute:暴力破解
  • default:默认脚本
  • discovery:网络信息收集
  • dos:拒绝服务攻击
  • exploit:利用已知漏洞
  • external:利用第三方资源
  • fuzzer:模糊测试
  • intrusive:入侵性脚本
  • malware:检测恶意软件
  • safe:安全性脚本
  • version:增强版本检测
  • vuln:常见漏洞检查

2. 常用脚本示例

  1. 鉴权扫描:

    nmap --script=auth 192.168.154.128
    
  2. 暴力破解:

    nmap --script=brute 192.168.154.128
    
  3. 漏洞扫描:

    nmap --script=vuln 192.168.154.128
    
  4. 应用服务扫描:

    nmap --script=realvnc-auth-bypass 192.168.154.128
    
  5. 局域网服务探测:

    nmap -n -p 443 --script=broadcast 192.168.154.128
    
  6. Whois解析:

    nmap --script external baidu.com
    

3. 漏洞扫描增强

3.1 nmap-vulners

  1. 下载脚本:

    cd /usr/share/nmap/scripts/
    
  2. 更新数据库:

    nmap --script-updatedb
    
  3. 扫描:

    nmap --script nmap-vulners -sV -p 80 192.168.154.128
    

3.2 Vulscan

  1. 克隆存储库:

    git clone https://github.com/scipag/vulscan.git
    
  2. 更新漏洞库(Linux):

    cd vulscan/utilities/updater/
    chmod +x updateFiles.sh
    ./updateFiles.sh
    
  3. 扫描:

    nmap -sV --script=vulscan/vulscan.nse www.example.com
    
  4. Windows更新:

    • 下载漏洞库文件并复制到scripts目录
    • 使用时指定数据库:
      --script-args vulscandb=your_own_database
      

七、参考资源

  1. Nmap官方文档:https://nmap.org/book/man.html
  2. Nmap-vulners:https://github.com/vulnersCom/nmap-vulners
  3. Vulscan:https://github.com/scipag/vulscan.git

这份文档涵盖了Nmap从基础到进阶的全面使用方法,包括安装、基本命令、扫描技术、脚本使用和漏洞扫描等内容。通过掌握这些知识,您可以有效地使用Nmap进行网络探测和安全评估。

Nmap 网络扫描工具全面指南 一、Nmap 简介 Nmap (Network Mapper) 是一款开源的网络探测和安全审计工具,用于网络发现和安全扫描。它可以快速扫描大型网络,也可以对单个主机进行深入扫描。Nmap 提供了丰富的功能,包括: 主机发现 端口扫描 服务版本检测 操作系统检测 脚本扫描(NSE) 二、安装与靶机搭建 1. 安装 从官方网站下载安装:https://nmap.org/ 2. 靶机搭建 推荐使用 OWASP Broken Web Applications Project: https://sourceforge.net/projects/owaspbwa/ 示例靶机地址: 192.168.154.128 192.168.3.7 三、基本命令与参数 1. 帮助命令 2. 目标指定 单个目标: nmap 192.168.154.128 多个目标: nmap 192.168.154.128 192.168.3.7 IP范围: nmap 192.168.3.1-10 从文件导入: nmap -iL targets.txt 排除目标: nmap 192.168.3.1/28 --exclude 192.168.3.7 nmap --excludefile targets.txt 3. 主机发现 -sL :列表扫描,仅列举IP -sn :Ping扫描,不进行端口扫描 -Pn :跳过主机发现,假设所有主机在线 -PS/PA/PU/PY :TCP SYN/ACK, UDP或SCTP发现 -PE/PP/PM :ICMP echo, timestamp, netmask请求 -PO :IP协议Ping --traceroute :追踪路由 4. 扫描技术 -sS :TCP SYN扫描(半开放扫描) -sT :TCP连接扫描 -sA :TCP ACK扫描 -sW :TCP窗口扫描 -sM :TCP Maimon扫描 -sU :UDP扫描 -sN/sF/sX :TCP Null, FIN和Xmas扫描 -sI :Idle扫描(僵尸扫描) -sO :IP协议扫描 5. 端口指定 指定端口: -p 21,22,80,443 端口范围: -p 1-65535 排除端口: --exclude-ports 21,22 快速模式: -F (仅扫描TOP100端口) 顺序扫描: -r (不随机化端口顺序) 常用端口: --top-ports 1000 6. 服务/版本检测 -sV :版本探测 --version-intensity :设置探测强度(0-9) --version-light :轻量级探测(intensity 2) --version-all :尝试所有探测(intensity 9) --version-trace :显示详细版本探测过程 7. 脚本扫描(NSE) -sC 或 --script=default :使用默认脚本 --script=<脚本名> :使用特定脚本 --script-args :传递脚本参数 --script-trace :显示发送/接收数据 --script-updatedb :更新脚本数据库 --script-help :查看脚本帮助 8. 操作系统检测 -O :启用操作系统检测 --osscan-limit :只对有希望的目标进行OS检测 --osscan-guess :更激进地猜测OS 9. 时间与性能 -T<0-5> :时间模板(数字越大越快) --min-hostgroup/max-hostgroup :并行扫描主机数量 --min-parallelism/max-parallelism :探测并行化 --max-retries :最大探测重传次数 --host-timeout :目标超时时间 --scan-delay/--max-scan-delay :探测间隔时间 --min-rate/--max-rate :每秒最小/最大发包数 10. 防火墙/IDS绕过 -f :分片 -D :使用诱饵IP -S :伪造源地址 -e :使用指定接口 -g/--source-port :使用指定源端口 --proxies :通过HTTP/SOCKS4代理 --data :添加自定义payload --ttl :设置IP存活时间 --spoof-mac :MAC欺骗 --badsum :发送错误的校验和 11. 输出选项 -oN :普通格式 -oX :XML格式 -oS :脚本小子格式 -oG :Grepable格式 -oA :同时输出三种主要格式 -v :增加详细程度 -d :增加调试级别 --open :仅显示开放端口 --packet-trace :显示所有发送/接收包 --iflist :打印主机接口和路由 12. 其他选项 -6 :启用IPv6扫描 -A :启用OS检测、版本检测、脚本扫描和路由追踪 -V :打印版本号 -h :打印帮助摘要 四、初级使用示例 扫描单个目标: 扫描多个目标: 扫描除某个目标之外的目标: 扫描指定文件内的目标: 扫描指定端口: 扫描端口开放与服务版本: 路由跟踪: 主机存活情况: OS版本探测: 防火墙状态: 五、端口状态解释 | 状态 | 含义 | |------|------| | open | 端口处于开放状态,应用程序正在监听 | | filtered | 端口被防火墙或其他安全设备阻止 | | closed | 目标主机未开放该端口 | | unfiltered | Nmap无法确认端口状态,需进一步探测 | | open/filtered | Nmap不能识别是开放还是被过滤 | | closed/filtered | Nmap不能识别是关闭还是被过滤 | 六、进阶脚本使用 Nmap脚本默认存放在 /xx/nmap/scripts 目录下 1. 脚本分类 auth :处理鉴权证书 broadcast :局域网服务探查 brute :暴力破解 default :默认脚本 discovery :网络信息收集 dos :拒绝服务攻击 exploit :利用已知漏洞 external :利用第三方资源 fuzzer :模糊测试 intrusive :入侵性脚本 malware :检测恶意软件 safe :安全性脚本 version :增强版本检测 vuln :常见漏洞检查 2. 常用脚本示例 鉴权扫描: 暴力破解: 漏洞扫描: 应用服务扫描: 局域网服务探测: Whois解析: 3. 漏洞扫描增强 3.1 nmap-vulners 下载脚本: 更新数据库: 扫描: 3.2 Vulscan 克隆存储库: 更新漏洞库(Linux): 扫描: Windows更新: 下载漏洞库文件并复制到scripts目录 使用时指定数据库: 七、参考资源 Nmap官方文档:https://nmap.org/book/man.html Nmap-vulners:https://github.com/vulnersCom/nmap-vulners Vulscan:https://github.com/scipag/vulscan.git 这份文档涵盖了Nmap从基础到进阶的全面使用方法,包括安装、基本命令、扫描技术、脚本使用和漏洞扫描等内容。通过掌握这些知识,您可以有效地使用Nmap进行网络探测和安全评估。