Nmap使用教程#

软件介绍#

Nmap(Network Mapper)是一款功能强大的网络扫描和安全审计工具,被广泛用于网络发现、端口扫描、服务识别、操作系统检测等信息收集任务。

入门级使用#

基本扫描#

功能说明:扫描目标主机的开放端口

使用示例

# 扫描单个IP
nmap 192.168.1.1

# 扫描IP范围
nmap 192.168.1.1-100

# 扫描网段
nmap 192.168.1.0/24

# 扫描域名
nmap example.com

参数说明

  • 无参数:默认扫描前1000个常用端口
  • 结果解读:显示开放端口、服务名称、版本信息

扫描指定端口#

功能说明:扫描指定的端口范围

使用示例

# 扫描单个端口
nmap -p 80 192.168.1.1

# 扫描多个端口
nmap -p 80,443,22 192.168.1.1

# 扫描端口范围
nmap -p 1-1000 192.168.1.1

# 扫描所有端口
nmap -p- 192.168.1.1

初级使用#

服务识别#

功能说明:识别目标主机运行的服务和版本

使用示例

# 启用服务版本检测
nmap -sV 192.168.1.1

# 同时扫描操作系统
nmap -A 192.168.1.1

# 详细服务版本检测
nmap --version-intensity 9 192.168.1.1

参数说明

  • -sV:启用服务版本检测
  • -A:启用操作系统检测、版本检测、脚本扫描和跟踪路由
  • --version-intensity:设置版本检测强度(1-9,默认为7)

操作系统检测#

功能说明:检测目标主机的操作系统类型

使用示例

# 操作系统检测
nmap -O 192.168.1.1

# 更详细的操作系统检测
nmap -O --osscan-guess 192.168.1.1

# 结合服务版本检测
nmap -A 192.168.1.1

中级使用#

高级扫描技术#

功能说明:使用不同的扫描技术绕过防火墙和IDS

使用示例

# SYN扫描(半开放扫描)
nmap -sS 192.168.1.1

# 全连接扫描
nmap -sT 192.168.1.1

# UDP扫描
nmap -sU 192.168.1.1

# FIN扫描
nmap -sF 192.168.1.1

# Xmas扫描
nmap -sX 192.168.1.1

# NULL扫描
nmap -sN 192.168.1.1

参数说明

  • -sS:SYN扫描,速度快,隐蔽性好
  • -sT:TCP全连接扫描,可靠性高
  • -sU:UDP扫描,用于UDP服务
  • -sF/-sX/-sN:秘密扫描,用于绕过防火墙

脚本扫描#

功能说明:使用Nmap脚本引擎执行各种功能的脚本

使用示例

# 执行默认脚本
nmap -sC 192.168.1.1

# 执行指定脚本
nmap --script=http-title 192.168.1.1

# 执行多个脚本
nmap --script=http-title,http-methods 192.168.1.1

# 执行脚本类别
nmap --script=vuln 192.168.1.1
nmap --script=discovery 192.168.1.1
nmap --script=auth 192.168.1.1

常用脚本类别

  • vuln:漏洞检测
  • discovery:网络发现
  • auth:认证相关
  • http:HTTP服务
  • ssh:SSH服务
  • smb:SMB服务

中上级使用#

防火墙绕过#

功能说明:使用各种技术绕过防火墙和IDS

使用示例

# 分片扫描
nmap -f 192.168.1.1

# 设定MTU(必须是8的倍数)
nmap --mtu 16 192.168.1.1

# 随机源端口
nmap --source-port 53 192.168.1.1

# 欺骗MAC地址
nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

# 使用诱饵扫描
nmap -D RND:10 192.168.1.1

# 空闲扫描
nmap -sI zombie_host 192.168.1.1

参数说明

  • -f:分片扫描
  • --mtu:设置最大传输单元
  • --source-port:指定源端口
  • --spoof-mac:欺骗MAC地址
  • -D:使用诱饵扫描
  • -sI:使用空闲扫描

性能优化#

功能说明:优化Nmap扫描性能

使用示例

# 增加扫描速度
nmap -T4 192.168.1.1
nmap -T5 192.168.1.1

# 设置并发数
nmap --min-parallelism 100 192.168.1.1

# 设置超时时间
nmap --host-timeout 30s 192.168.1.1

# 跳过主机发现
nmap -Pn 192.168.1.1

# 快速扫描
nmap -F 192.168.1.1

参数说明

  • -T:设置时序模板(0-5,数字越大速度越快)
  • --min-parallelism:设置最小并发数
  • --host-timeout:设置主机超时时间
  • -Pn:跳过主机发现
  • -F:快速扫描(仅扫描100个常用端口)

高级使用#

复杂扫描场景#

功能说明:处理复杂的网络扫描场景

使用示例

# 针对大型网络的扫描
nmap -sS -sV -O --top-ports 1000 --min-rate 10000 10.0.0.0/16

# 分布式扫描
nmap --iL targets.txt --append-output -oX results.xml

# 持续监控
nmap -sS -p 80,443 --script=http-title --interval 60s 192.168.1.0/24

# 结合其他工具
nmap -sP 192.168.1.0/24 | grep "Host" | cut -d" " -f2 > hosts.txt

输出格式#

功能说明:使用不同的输出格式保存扫描结果

使用示例

# 正常输出
nmap -oN normal.txt 192.168.1.1

# XML输出
nmap -oX xml.xml 192.168.1.1

#  grepable格式
nmap -oG grepable.txt 192.168.1.1

# 所有格式
nmap -oA all_formats 192.168.1.1

# 追加输出
nmap -oN normal.txt --append-output 192.168.1.2

大师级使用#

自定义脚本开发#

功能说明:开发自定义Nmap脚本

脚本结构

-- 脚本头部
description = [[
自定义脚本描述
]]

---@usage
-- nmap --script=custom-script <target>
author = "Your Name"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"discovery", "safe"}

-- 依赖关系
local shortport = require "shortport"
local http = require "http"

-- 规则函数
portrule = shortport.http

-- 动作函数
action = function(host, port)
    local response = http.get(host, port, "/")
    if response.status == 200 then
        return "HTTP service found: " .. response.body
    end
    return nil
end

脚本存放位置

  • Unix: ~/.nmap/scripts//usr/share/nmap/scripts/
  • Windows: %APPDATA%\Nmap\scripts\

脚本更新

# 更新脚本数据库
nmap --script-updatedb

高级渗透测试场景#

功能说明:在渗透测试中综合使用Nmap

使用示例

# 完整的信息收集
nmap -A -sC -p- --min-rate 10000 --script=vuln,exploit 192.168.1.1

# 针对Web应用的扫描
nmap -sV -p 80,443 --script=http-enum,http-vuln-*,http-title,http-methods 192.168.1.1

# 针对内部网络的扫描
nmap -sS -sV -O --script=smb-enum-*,smb-vuln-* 192.168.1.0/24

# 零日漏洞检测
nmap --script=http-vuln-cve2021-44228 192.168.1.1

# 企业网络评估
nmap -sS -sV -O --script=discovery,auth,vuln --exclude-file exclude.txt -iL targets.txt -oA enterprise-scan

实战案例#

案例1:网站安全评估#

任务:评估目标网站的安全状况

执行步骤

  1. 基本信息收集

    nmap -A example.com
  2. 详细端口扫描

    nmap -p- --min-rate 10000 example.com
  3. Web服务漏洞扫描

    nmap --script=http-vuln-*,http-enum,http-title,http-methods example.com
  4. 综合评估

    nmap -A -p- --script=vuln,exploit example.com -oA website-assessment

案例2:内部网络评估#

任务:评估内部网络的安全状况

执行步骤

  1. 网络发现

    nmap -sP 192.168.1.0/24
  2. 详细扫描

    nmap -A -p 1-10000 192.168.1.0/24
  3. 漏洞扫描

    nmap --script=vuln 192.168.1.0/24
  4. 报告生成

    nmap -A -p- --script=discovery,auth,vuln 192.168.1.0/24 -oA internal-network-assessment

总结#

Nmap是一款功能强大的网络扫描工具,从简单的端口扫描到复杂的安全评估,都能胜任。通过本教程的学习,您应该能够:

  1. 入门级:掌握基本的端口扫描和服务识别
  2. 初级:了解服务版本检测和操作系统识别
  3. 中级:使用高级扫描技术和脚本扫描
  4. 中上级:掌握防火墙绕过和性能优化
  5. 高级:处理复杂扫描场景和自定义脚本开发
  6. 大师级:在渗透测试中综合运用Nmap进行全面的安全评估

随着经验的积累,您将能够根据不同的网络环境和安全需求,灵活运用Nmap的各种功能,成为网络安全领域的专家。