----年--月--日 | --:--:-- | 星期-

Nmap 网络扫描与安全评估完全指南

深入掌握Nmap网络扫描工具,从基础扫描到高级渗透测试技巧,包含NSE脚本引擎使用和网络安全评估方法。

架构图

graph TB subgraph "Nmap网络扫描架构" subgraph "扫描端 Scanner Side" PENTESTER[渗透测试员] NMAP_CLI[Nmap命令行工具] ZENMAP[Zenmap图形界面] NSE_ENGINE[NSE脚本引擎] subgraph "扫描配置" SCAN_CONFIG[扫描配置文件] TARGET_FILE[目标列表文件] OUTPUT_FORMAT[输出格式设置] end end subgraph "扫描技术层" subgraph "主机发现" PING_SCAN[Ping扫描 -sn] ARP_SCAN[ARP扫描 -PR] TCP_ACK_PING[TCP ACK Ping -PA] ICMP_SCAN[ICMP扫描 -PE] end subgraph "端口扫描" TCP_SYN[TCP SYN扫描 -sS] TCP_CONNECT[TCP Connect扫描 -sT] UDP_SCAN[UDP扫描 -sU] TCP_FIN[TCP FIN扫描 -sF] TCP_NULL[TCP NULL扫描 -sN] XMAS_SCAN[TCP Xmas扫描 -sX] end subgraph "高级检测" OS_DETECT[操作系统检测 -O] VERSION_DETECT[服务版本检测 -sV] SCRIPT_SCAN[脚本扫描 -sC] TRACEROUTE[路由跟踪 --traceroute] end end subgraph "网络传输层" PACKETS[网络数据包] PROTOCOLS[网络协议栈] NETWORK_STACK[TCP/IP协议栈] end subgraph "目标网络环境" subgraph "网络边界" INTERNET[互联网] EDGE_ROUTER[边界路由器] FIREWALL[网络防火墙] IDS_IPS[入侵检测/防护系统] end subgraph "内部网络" CORE_SWITCH[核心交换机] VLAN_SWITCH[VLAN交换机] ACCESS_SWITCH[接入交换机] end subgraph "目标服务器群" WEB_CLUSTER[Web服务器集群
80, 443, 8080] APP_SERVERS[应用服务器
8000, 9000, 3000] DB_SERVERS[数据库服务器
3306, 5432, 1521] MAIL_SERVERS[邮件服务器
25, 110, 143, 993] DNS_SERVERS[DNS服务器
53] SSH_SERVERS[SSH服务器
22] FTP_SERVERS[FTP服务器
21, 22] end end subgraph "NSE脚本分类" AUTH_SCRIPTS[认证绕过脚本
auth-*] BRUTE_SCRIPTS[暴力破解脚本
brute-*] DEFAULT_SCRIPTS[默认安全脚本
default] DISCOVERY_SCRIPTS[服务发现脚本
discovery] DOS_SCRIPTS[拒绝服务脚本
dos] EXPLOIT_SCRIPTS[漏洞利用脚本
exploit] FUZZER_SCRIPTS[模糊测试脚本
fuzzer] INTRUSIVE_SCRIPTS[侵入性脚本
intrusive] MALWARE_SCRIPTS[恶意软件检测
malware] SAFE_SCRIPTS[安全脚本
safe] VERSION_SCRIPTS[版本检测脚本
version] VULN_SCRIPTS[漏洞检测脚本
vuln] end subgraph "扫描结果处理" RESULT_PARSER[结果解析器] PORT_STATUS[端口状态分析] SERVICE_INFO[服务信息提取] OS_FINGERPRINT[操作系统指纹] VULN_ASSESSMENT[漏洞评估] subgraph "输出格式" NORMAL_OUTPUT[标准输出 -oN] XML_OUTPUT[XML输出 -oX] GREPABLE_OUTPUT[Grep格式 -oG] SCRIPT_OUTPUT[脚本输出 -oS] end end subgraph "防护检测绕过" TIMING_TEMPLATES[时间模板 -T0到T5] FRAGMENTATION[数据包分片 -f] DECOY_SCAN[诱饵扫描 -D] SOURCE_PORT[源端口伪造 -g] SPOOF_MAC[MAC地址伪造 --spoof-mac] PROXY_SCAN[代理扫描 --proxies] end end PENTESTER --> NMAP_CLI PENTESTER --> ZENMAP NMAP_CLI --> NSE_ENGINE ZENMAP --> NMAP_CLI NMAP_CLI --> SCAN_CONFIG NMAP_CLI --> TARGET_FILE NMAP_CLI --> OUTPUT_FORMAT NMAP_CLI --> PING_SCAN NMAP_CLI --> ARP_SCAN NMAP_CLI --> TCP_SYN NMAP_CLI --> UDP_SCAN NMAP_CLI --> OS_DETECT NMAP_CLI --> VERSION_DETECT NSE_ENGINE --> AUTH_SCRIPTS NSE_ENGINE --> BRUTE_SCRIPTS NSE_ENGINE --> DEFAULT_SCRIPTS NSE_ENGINE --> DISCOVERY_SCRIPTS NSE_ENGINE --> EXPLOIT_SCRIPTS NSE_ENGINE --> VULN_SCRIPTS TCP_SYN --> PACKETS UDP_SCAN --> PACKETS PACKETS --> PROTOCOLS PROTOCOLS --> NETWORK_STACK NETWORK_STACK --> INTERNET INTERNET --> EDGE_ROUTER EDGE_ROUTER --> FIREWALL FIREWALL --> IDS_IPS IDS_IPS --> CORE_SWITCH CORE_SWITCH --> VLAN_SWITCH VLAN_SWITCH --> ACCESS_SWITCH ACCESS_SWITCH --> WEB_CLUSTER ACCESS_SWITCH --> APP_SERVERS ACCESS_SWITCH --> DB_SERVERS ACCESS_SWITCH --> MAIL_SERVERS ACCESS_SWITCH --> DNS_SERVERS ACCESS_SWITCH --> SSH_SERVERS WEB_CLUSTER --> RESULT_PARSER APP_SERVERS --> RESULT_PARSER DB_SERVERS --> RESULT_PARSER RESULT_PARSER --> PORT_STATUS RESULT_PARSER --> SERVICE_INFO RESULT_PARSER --> OS_FINGERPRINT RESULT_PARSER --> VULN_ASSESSMENT PORT_STATUS --> NORMAL_OUTPUT SERVICE_INFO --> XML_OUTPUT OS_FINGERPRINT --> GREPABLE_OUTPUT VULN_ASSESSMENT --> SCRIPT_OUTPUT NMAP_CLI --> TIMING_TEMPLATES NMAP_CLI --> FRAGMENTATION NMAP_CLI --> DECOY_SCAN TIMING_TEMPLATES --> FIREWALL FRAGMENTATION --> IDS_IPS DECOY_SCAN --> IDS_IPS style NMAP_CLI fill:#ff6b6b,stroke:#fff,stroke-width:2px,color:#fff style NSE_ENGINE fill:#4ecdc4,stroke:#fff,stroke-width:2px,color:#fff style FIREWALL fill:#ff4757,stroke:#fff,stroke-width:2px,color:#fff style IDS_IPS fill:#ff3838,stroke:#fff,stroke-width:2px,color:#fff style WEB_CLUSTER fill:#2ed573,stroke:#fff,stroke-width:2px,color:#fff style DB_SERVERS fill:#3742fa,stroke:#fff,stroke-width:2px,color:#fff style VULN_SCRIPTS fill:#ffa502,stroke:#fff,stroke-width:2px,color:#000 style EXPLOIT_SCRIPTS fill:#ff6348,stroke:#fff,stroke-width:2px,color:#fff style DECOY_SCAN fill:#f1c40f,stroke:#fff,stroke-width:2px,color:#000 style RESULT_PARSER fill:#9b59b6,stroke:#fff,stroke-width:2px,color:#fff style TCP_SYN fill:#1abc9c,stroke:#fff,stroke-width:2px,color:#fff style TIMING_TEMPLATES fill:#e67e22,stroke:#fff,stroke-width:2px,color:#fff

Nmap 网络扫描与安全评估完全指南 🔍

Nmap(Network Mapper)是一个开源的网络发现和安全审计工具,被广泛用于网络库存、管理服务升级计划以及监控主机或服务运行状况。

📊 目录


🚀 基础扫描技术

主机发现扫描

# 基本主机发现(Ping扫描)
nmap -sn 192.168.1.0/24

# 禁用DNS解析,加快扫描速度
nmap -sn -n 192.168.1.0/24

# 使用ARP扫描(局域网内最有效)
nmap -sn -PR 192.168.1.0/24

# TCP SYN Ping
nmap -sn -PS80,443,22 192.168.1.0/24

# ICMP Ping扫描
nmap -sn -PE 192.168.1.0/24

# UDP Ping扫描
nmap -sn -PU53,67,68,161 192.168.1.0/24

端口扫描技术

# TCP SYN扫描(半开扫描,默认方式)
nmap -sS 192.168.1.100

# TCP连接扫描(完整三次握手)
nmap -sT 192.168.1.100

# UDP扫描
nmap -sU 192.168.1.100

# 综合TCP和UDP扫描
nmap -sS -sU 192.168.1.100

# FIN扫描(隐蔽扫描)
nmap -sF 192.168.1.100

# NULL扫描
nmap -sN 192.168.1.100

# Xmas扫描
nmap -sX 192.168.1.100

# ACK扫描(检测防火墙规则)
nmap -sA 192.168.1.100

端口指定与范围

# 扫描特定端口
nmap -p 80,443,22 192.168.1.100

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

# 扫描所有65535个端口
nmap -p- 192.168.1.100

# 扫描最常见的端口
nmap --top-ports 100 192.168.1.100

# 快速扫描(常见的1000个端口)
nmap -F 192.168.1.100

# 扫描指定协议的端口
nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.100

🔧 高级扫描选项

服务和版本检测

# 服务版本检测
nmap -sV 192.168.1.100

# 操作系统检测
nmap -O 192.168.1.100

# 激进模式(包含OS检测、版本检测、脚本扫描和路由跟踪)
nmap -A 192.168.1.100

# 设置版本检测强度(0-9,默认7)
nmap -sV --version-intensity 9 192.168.1.100

# 轻量级版本检测
nmap -sV --version-light 192.168.1.100

# 全面版本检测
nmap -sV --version-all 192.168.1.100

时间和性能调优

# 设置扫描速度(0-5,5最快)
nmap -T4 192.168.1.100

# 自定义超时设置
nmap --host-timeout 300s 192.168.1.100

# 设置最大并行扫描数
nmap --max-parallelism 100 192.168.1.100

# 设置扫描延迟
nmap --scan-delay 1s 192.168.1.100

# 随机化主机扫描顺序
nmap --randomize-hosts 192.168.1.0/24

输出详细程度

# 详细输出
nmap -v 192.168.1.100

# 更详细输出
nmap -vv 192.168.1.100

# 调试模式
nmap -d 192.168.1.100

# 原因解释(显示端口状态的原因)
nmap --reason 192.168.1.100

# 显示主机和端口的所有信息
nmap --packet-trace 192.168.1.100

📜 脚本引擎使用

脚本分类扫描

# 运行默认脚本
nmap -sC 192.168.1.100

# 运行特定类别的脚本
nmap --script vuln 192.168.1.100
nmap --script auth 192.168.1.100
nmap --script brute 192.168.1.100
nmap --script discovery 192.168.1.100
nmap --script dos 192.168.1.100
nmap --script exploit 192.168.1.100
nmap --script external 192.168.1.100
nmap --script fuzzer 192.168.1.100
nmap --script intrusive 192.168.1.100
nmap --script malware 192.168.1.100
nmap --script safe 192.168.1.100
nmap --script version 192.168.1.100

特定服务脚本

# HTTP服务脚本
nmap -p 80 --script http-enum 192.168.1.100
nmap -p 80 --script http-headers 192.168.1.100
nmap -p 80 --script http-methods 192.168.1.100
nmap -p 80 --script http-robots.txt 192.168.1.100
nmap -p 80 --script http-title 192.168.1.100

# SSH服务脚本
nmap -p 22 --script ssh-auth-methods 192.168.1.100
nmap -p 22 --script ssh-hostkey 192.168.1.100
nmap -p 22 --script ssh-brute 192.168.1.100

# SMB服务脚本
nmap -p 445 --script smb-enum-shares 192.168.1.100
nmap -p 445 --script smb-os-discovery 192.168.1.100
nmap -p 445 --script smb-security-mode 192.168.1.100
nmap -p 445 --script smb-vuln-* 192.168.1.100

# FTP服务脚本
nmap -p 21 --script ftp-anon 192.168.1.100
nmap -p 21 --script ftp-bounce 192.168.1.100
nmap -p 21 --script ftp-brute 192.168.1.100

# DNS服务脚本
nmap -p 53 --script dns-zone-transfer 192.168.1.100
nmap --script broadcast-dns-service-discovery

漏洞扫描脚本

# 常见漏洞扫描
nmap --script vuln 192.168.1.100

# 特定CVE漏洞检测
nmap --script smb-vuln-ms17-010 192.168.1.100
nmap --script http-vuln-cve2017-5638 192.168.1.100
nmap --script ssl-heartbleed 192.168.1.100

# Web应用漏洞
nmap -p 80,443 --script http-sql-injection 192.168.1.100
nmap -p 80,443 --script http-xssed 192.168.1.100
nmap -p 80,443 --script http-shellshock 192.168.1.100

# SSL/TLS安全检测
nmap -p 443 --script ssl-enum-ciphers 192.168.1.100
nmap -p 443 --script ssl-cert 192.168.1.100
nmap -p 443 --script ssl-date 192.168.1.100

📄 输出格式详解

多种输出格式

# 正常输出
nmap -oN scan_results.txt 192.168.1.100

# XML输出
nmap -oX scan_results.xml 192.168.1.100

# Grepable输出
nmap -oG scan_results.grep 192.168.1.100

# 所有格式输出
nmap -oA scan_results 192.168.1.100

# 标准输出同时保存到文件
nmap 192.168.1.100 | tee scan_results.txt

输出控制

# 不显示运行时信息
nmap --stats-every 0 192.168.1.100

# 禁用DNS解析(加快扫描速度)
nmap -n 192.168.1.100

# 显示关闭的端口
nmap --open 192.168.1.100

# 只显示开放端口
nmap --open 192.168.1.0/24

# 追加到现有文件
nmap --append-output -oN existing_scan.txt 192.168.1.100

🎯 实际应用场景

网络资产发现

#!/bin/bash
# network_discovery.sh - 网络资产发现脚本

NETWORK="192.168.1.0/24"
OUTPUT_DIR="./network_scan_$(date +%Y%m%d_%H%M%S)"

mkdir -p "$OUTPUT_DIR"

echo "开始网络资产发现..."

# 1. 主机发现
echo "1. 主机发现中..."
nmap -sn -PE -PP -PM -PO "$NETWORK" -oA "$OUTPUT_DIR/host_discovery"

# 提取活跃主机
grep "Up" "$OUTPUT_DIR/host_discovery.nmap" | awk '{print $2}' > "$OUTPUT_DIR/live_hosts.txt"

# 2. 端口扫描
echo "2. 端口扫描中..."
nmap -sS -T4 --top-ports 1000 -iL "$OUTPUT_DIR/live_hosts.txt" -oA "$OUTPUT_DIR/port_scan"

# 3. 服务识别
echo "3. 服务识别中..."
nmap -sV -sC -T4 -iL "$OUTPUT_DIR/live_hosts.txt" -oA "$OUTPUT_DIR/service_scan"

# 4. 操作系统识别
echo "4. 操作系统识别中..."
nmap -O -T4 -iL "$OUTPUT_DIR/live_hosts.txt" -oA "$OUTPUT_DIR/os_scan" 2>/dev/null

echo "扫描完成,结果保存在 $OUTPUT_DIR 目录中"

漏洞评估

#!/bin/bash
# vulnerability_assessment.sh - 漏洞评估脚本

TARGET="$1"
OUTPUT_DIR="./vuln_scan_$(date +%Y%m%d_%H%M%S)"

if [ -z "$TARGET" ]; then
    echo "使用方法: $0 <target_ip_or_range>"
    exit 1
fi

mkdir -p "$OUTPUT_DIR"

echo "开始漏洞评估: $TARGET"

# 1. 基础扫描
echo "1. 基础扫描..."
nmap -sS -sV -T4 "$TARGET" -oA "$OUTPUT_DIR/basic_scan"

# 2. 漏洞扫描
echo "2. 漏洞扫描..."
nmap --script vuln -T4 "$TARGET" -oA "$OUTPUT_DIR/vuln_scan"

# 3. 常见服务漏洞检测
echo "3. 常见服务漏洞检测..."

# SMB漏洞
nmap -p 445 --script smb-vuln-* "$TARGET" -oN "$OUTPUT_DIR/smb_vulns.txt"

# Web服务漏洞
nmap -p 80,443,8080,8443 --script http-vuln-* "$TARGET" -oN "$OUTPUT_DIR/web_vulns.txt"

# SSL/TLS漏洞
nmap -p 443,993,995 --script ssl-* "$TARGET" -oN "$OUTPUT_DIR/ssl_vulns.txt"

# 4. 弱密码检测
echo "4. 弱密码检测..."
nmap --script brute "$TARGET" -oN "$OUTPUT_DIR/brute_force.txt"

echo "漏洞评估完成,结果保存在 $OUTPUT_DIR 目录中"

# 生成报告摘要
echo "生成报告摘要..."
{
    echo "=== 漏洞评估报告 ==="
    echo "目标: $TARGET"
    echo "时间: $(date)"
    echo ""
    echo "=== 发现的漏洞 ==="
    grep -i "vulnerable\|exploit\|CVE" "$OUTPUT_DIR"/*.txt | head -20
} > "$OUTPUT_DIR/summary.txt"

Web应用扫描

#!/bin/bash
# web_app_scan.sh - Web应用安全扫描

TARGET="$1"
PORT="${2:-80}"

if [ -z "$TARGET" ]; then
    echo "使用方法: $0 <target> [port]"
    exit 1
fi

echo "扫描Web应用: $TARGET:$PORT"

# HTTP方法检测
echo "检测HTTP方法..."
nmap -p "$PORT" --script http-methods "$TARGET"

# 目录枚举
echo "目录枚举..."
nmap -p "$PORT" --script http-enum "$TARGET"

# 常见漏洞检测
echo "漏洞检测..."
nmap -p "$PORT" --script http-vuln-* "$TARGET"

# SQL注入检测
echo "SQL注入检测..."
nmap -p "$PORT" --script http-sql-injection "$TARGET"

# XSS检测
echo "XSS检测..."
nmap -p "$PORT" --script http-xssed "$TARGET"

# 备份文件检测
echo "备份文件检测..."
nmap -p "$PORT" --script http-backup-finder "$TARGET"

# 敏感信息泄露
echo "敏感信息检测..."
nmap -p "$PORT" --script http-config-backup,http-frontpage-login "$TARGET"

🛡️ 防火墙规避技术

基本规避技术

# 分片扫描
nmap -f 192.168.1.100

# MTU设置
nmap --mtu 24 192.168.1.100

# 使用诱饵IP
nmap -D RND:10 192.168.1.100
nmap -D 192.168.1.10,192.168.1.11,ME 192.168.1.100

# 源端口欺骗
nmap --source-port 53 192.168.1.100
nmap -g 53 192.168.1.100

# 空闲扫描
nmap -sI zombie_host target_host

# FTP反弹扫描
nmap -b ftp_relay_host target_host

时间规避

# 慢速扫描
nmap -T0 192.168.1.100

# 添加随机延迟
nmap --scan-delay 10s 192.168.1.100

# 随机化扫描顺序
nmap --randomize-hosts 192.168.1.0/24

# 限制发包率
nmap --max-rate 10 192.168.1.100

高级规避技术

# 使用原始IP包
nmap --send-eth 192.168.1.100

# 自定义IP选项
nmap --ip-options "L 192.168.1.1 192.168.1.2" 192.168.1.100

# 坏校验和
nmap --badsum 192.168.1.100

# 数据填充
nmap --data-length 25 192.168.1.100

# MAC地址欺骗
nmap --spoof-mac Dell 192.168.1.100
nmap --spoof-mac 0 192.168.1.100

⚡ 性能优化

并行化和速度控制

# 设置并行主机数
nmap --min-hostgroup 50 --max-hostgroup 100 192.168.1.0/24

# 设置并行探测数
nmap --min-parallelism 10 --max-parallelism 300 192.168.1.100

# 设置重传次数
nmap --max-retries 2 192.168.1.100

# RTT超时设置
nmap --min-rtt-timeout 100ms --max-rtt-timeout 2s 192.168.1.100

# 发包速率控制
nmap --min-rate 100 --max-rate 1000 192.168.1.100

网络优化脚本

#!/bin/bash
# optimized_scan.sh - 优化的网络扫描

TARGET="$1"
THREADS="${2:-50}"

if [ -z "$TARGET" ]; then
    echo "使用方法: $0 <target> [threads]"
    exit 1
fi

# 快速主机发现
echo "快速主机发现..."
nmap -sn -T5 --min-hostgroup "$THREADS" "$TARGET" | \
grep "Nmap scan report" | awk '{print $5}' > live_hosts.tmp

HOST_COUNT=$(wc -l < live_hosts.tmp)
echo "发现 $HOST_COUNT 个活跃主机"

if [ "$HOST_COUNT" -eq 0 ]; then
    echo "未发现活跃主机"
    rm live_hosts.tmp
    exit 1
fi

# 快速端口扫描
echo "快速端口扫描..."
nmap -sS -T5 --top-ports 100 \
     --min-hostgroup "$THREADS" \
     --max-retries 1 \
     --host-timeout 5m \
     -iL live_hosts.tmp

# 清理临时文件
rm live_hosts.tmp

🔐 安全与合规

合规扫描

#!/bin/bash
# compliance_scan.sh - 合规性扫描

TARGET="$1"
POLICY="${2:-pci}"  # pci, hipaa, soc2

if [ -z "$TARGET" ]; then
    echo "使用方法: $0 <target> [policy]"
    exit 1
fi

OUTPUT_DIR="./compliance_scan_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUTPUT_DIR"

echo "开始 $POLICY 合规性扫描: $TARGET"

case "$POLICY" in
    "pci")
        echo "PCI DSS 合规性检测..."
        # SSL/TLS配置检测
        nmap -p 443 --script ssl-enum-ciphers,ssl-cert "$TARGET" -oN "$OUTPUT_DIR/ssl_pci.txt"

        # 弱加密检测
        nmap -p 80,443 --script ssl-dh-params "$TARGET" -oN "$OUTPUT_DIR/weak_crypto.txt"
        ;;

    "hipaa")
        echo "HIPAA 合规性检测..."
        # 加密传输检测
        nmap --script ssl-cert,ssl-enum-ciphers "$TARGET" -oN "$OUTPUT_DIR/encryption.txt"
        ;;

    "soc2")
        echo "SOC 2 合规性检测..."
        # 访问控制检测
        nmap --script auth "$TARGET" -oN "$OUTPUT_DIR/access_control.txt"
        ;;
esac

echo "合规性扫描完成,结果保存在 $OUTPUT_DIR"

安全扫描最佳实践

#!/bin/bash
# secure_scan.sh - 安全扫描最佳实践

TARGET="$1"
if [ -z "$TARGET" ]; then
    echo "使用方法: $0 <target>"
    exit 1
fi

# 检查扫描权限
echo "检查扫描授权..."
read -p "您是否有权限扫描目标 $TARGET? (y/n): " permission
if [ "$permission" != "y" ]; then
    echo "未获得扫描授权,退出"
    exit 1
fi

# 创建输出目录
OUTPUT_DIR="./authorized_scan_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUTPUT_DIR"

# 记录扫描日志
exec > >(tee -a "$OUTPUT_DIR/scan.log")
exec 2>&1

echo "=== 授权安全扫描开始 ==="
echo "操作员: $(whoami)"
echo "时间: $(date)"
echo "目标: $TARGET"
echo "=================================="

# 1. 轻量级初始扫描
echo "1. 执行初始扫描..."
nmap -sS -T3 --top-ports 100 "$TARGET" -oA "$OUTPUT_DIR/initial"

# 2. 服务识别
echo "2. 服务识别..."
nmap -sV -T3 "$TARGET" -oA "$OUTPUT_DIR/services"

# 3. 安全脚本扫描(非侵入性)
echo "3. 安全检测(非侵入性)..."
nmap --script "safe and not intrusive" "$TARGET" -oA "$OUTPUT_DIR/security"

# 4. 生成报告
echo "4. 生成安全报告..."
{
    echo "=== 安全扫描报告 ==="
    echo "扫描时间: $(date)"
    echo "目标: $TARGET"
    echo ""
    echo "=== 开放端口 ==="
    grep -E "^[0-9]+" "$OUTPUT_DIR/initial.nmap"
    echo ""
    echo "=== 识别的服务 ==="
    grep -E "^[0-9]+" "$OUTPUT_DIR/services.nmap"
    echo ""
    echo "=== 安全发现 ==="
    grep -i "vulnerable\|warning\|risk" "$OUTPUT_DIR/security.nmap"
} > "$OUTPUT_DIR/security_report.txt"

echo "扫描完成,报告保存在: $OUTPUT_DIR/security_report.txt"

📚 实用命令速查

常用扫描组合

# 快速网络概览
nmap -sn -T4 192.168.1.0/24

# 基本安全扫描
nmap -sS -sV -O -T4 --script=default 192.168.1.100

# 全面漏洞扫描
nmap -sS -sV -O -T4 --script=vuln 192.168.1.100

# Web服务器扫描
nmap -p 80,443 -sV --script=http-* 192.168.1.100

# 数据库服务扫描
nmap -p 1433,1521,3306,5432 -sV --script=*-brute 192.168.1.100

# 邮件服务器扫描
nmap -p 25,110,143,993,995 -sV --script=smtp-*,pop3-*,imap-* 192.168.1.100

# DNS服务器扫描
nmap -p 53 -sU -sV --script=dns-* 192.168.1.100

输出处理

# 提取开放端口
grep "open" scan.nmap | awk '{print $1}' | cut -d'/' -f1

# 提取HTTP服务
grep -E "80|443|8080|8443" scan.nmap | grep "open"

# 统计扫描结果
grep "Nmap scan report" scan.nmap | wc -l

# 转换XML到HTML
xsltproc /usr/share/nmap/nmap.xsl scan.xml -o scan.html

# 合并多个扫描结果
cat scan1.xml scan2.xml > combined.xml

⚠️ 注意事项

法律和道德考虑

  1. 获得授权:始终确保有权限扫描目标网络
  2. 遵守法律:了解当地网络安全法律法规
  3. 负责任的披露:发现漏洞后按照负责任披露原则处理
  4. 最小影响:使用适当的扫描强度,避免影响业务

技术注意事项

  1. 防火墙检测:现代防火墙可能检测到扫描行为
  2. 日志记录:扫描活动会被目标系统记录
  3. 网络影响:大规模扫描可能影响网络性能
  4. 误报处理:验证扫描结果,避免误报

💡 小贴士: Nmap是一个强大的工具,但强大意味着责任。始终确保在授权范围内使用,并遵守相关法律法规。定期更新Nmap及其脚本数据库以获得最新的检测能力。

开始输入以搜索文档

尝试搜索: DevOps, Docker, Kubernetes