Manpages

名 称

nmap - 网 络 探 测 工 具 和 安 全 /端 口 扫 描 器

大 纲

nmap [扫 描 类 型 ...] [选 项 ] {扫 描 目 标 说 明 }

描 述

Nmap (“Network Mapper(网 络 映 射 器 )”) 是 一 款 开 放 源 代 码 的 网 络 探 测 和 安 全 审 核 的 工 具 。 它 的 设 计 目 标 是 快 速 地 扫 描 大 型 网 络 , 当 然 用 它 扫 描 单 个 主 机 也 没 有 问 题 。 Nmap以 新 颖 的 方 式 使 用 原 始 IP报 文 来 发 现 网 络 上 有 哪 些 主 机 , 那 些 主 机 提 供 什 么 服 务 (应 用 程 序 名 和 版 本 ), 那 些 服 务 运 行 在 什 么 操 作 系 统 (包 括 版 本 信 息 ), 它 们 使 用 什 么 类 型 的 报 文 过 滤 器 /防 火 墙 , 以 及 一 堆 其 它 功 能 。 虽 然 Nmap通 常 用 于 安 全 审 核 , 许 多 系 统 管 理 员 和 网 络 管 理 员 也 用 它 来 做 一 些 日 常 的 工 作 , 比 如 查 看 整 个 网 络 的 信 息 , 管 理 服 务 升 级 计 划 , 以 及 监 视 主 机 和 服 务 的 运 行 。

Nmap输 出 的 是 扫 描 目 标 的 列 表 , 以 及 每 个 目 标 的 补 充 信 息 , 至 于 是 哪 些 信 息 则 依 赖 于 所 使 用 的 选 项 。 “所 感 兴 趣 的 端 口 表 格 ”是 其 中 的 关 键 。 那 张 表 列 出 端 口 号 , 协 议 , 服 务 名 称 和 状 态 。 状 态 可 能 是 open(开 放 的 ), filtered(被 过 滤 的 ), closed(关 闭 的 ), 或 者 unfiltered(未 被 过 滤 的 )。 Open(开 放 的 )意 味 着 目 标 机 器 上 的 应 用 程 序 正 在 该 端 口 监 听 连 接 /报 文 。 filtered(被 过 滤 的 ) 意 味 着 防 火 墙 , 过 滤 器 或 者 其 它 网 络 障 碍 阻 止 了 该 端 口 被 访 问 , Nmap无 法 得 知 它 是 open(开 放 的 ) 还 是 closed(关 闭 的 )。 closed(关 闭 的 ) 端 口 没 有 应 用 程 序 在 它 上 面 监 听 , 但 是 他 们 随 时 可 能 开 放 。 当 端 口 对 Nmap的 探 测 做 出 响 应 , 但 是 Nmap无 法 确 定 它 们 是 关 闭 还 是 开 放 时 , 这 些 端 口 就 被 认 为 是 unfiltered(未 被 过 滤 的 ) 如 果 Nmap报 告 状 态 组 合 open|filtered 和 closed|filtered时 , 那 说 明 Nmap无 法 确 定 该 端 口 处 于 两 个 状 态 中 的 哪 一 个 状 态 。 当 要 求 进 行 版 本 探 测 时 , 端 口 表 也 可 以 包 含 软 件 的 版 本 信 息 。 当 要 求 进 行 IP协 议 扫 描 时 (-sO), Nmap提 供 关 于 所 支 持 的 IP协 议 而 不 是 正 在 监 听 的 端 口 的 信 息 。 除 了 所 感 兴 趣 的 端 口 表 , Nmap还 能 提 供 关 于 目 标 机 的 进 一 步 信 息 , 包 括 反 向 域 名 , 操 作 系 统 猜 测 , 设 备 类 型 , 和 MAC地 址 。 一 个 典 型 的 Nmap扫 描 如 例  1 “一 个 典 型 的 Nmap扫 描 ”所 示 。 在 这 个 例 子 中 , 唯 一 的 选 项 是 -A, 用 来 进 行 操 作 系 统 及 其 版 本 的 探 测 , -T4 可 以 加 快 执 行 速 度 , 接 着 是 两 个 目 标 主 机 名 。 例  1. 一 个 典 型 的 Nmap扫 描

# nmap -A -T4 scanme.nmap.org playground

Starting nmap ( https://nmap.org/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
port STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99)
53/tcp open domain
70/tcp closed gopher
80/tcp open http Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Uptime 33。 908 days (since Thu Jul 21 03:38:03 2005)

Interesting ports on playground。 nmap。 或 者 g (192.168.0.40):
(The 1659 ports scanned but not shown below are in state: closed)
port STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
389/tcp open ldap?
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1002/tcp open windows-icfw?
1025/tcp open msrpc Microsoft Windows RPC
1720/tcp open H.323/Q.931 CompTek AquaGateKeeper
5800/tcp open vnc-http RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900)
5900/tcp open vnc VNC (protocol 3.8)
MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications)
Device type: general purpose
Running: Microsoft Windows NT/2K/XP
OS details: Microsoft Windows XP Pro RC1+ through final release
Service Info: OSs: Windows, Windows XP

Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds

译 注

该 Nmap参 考 指 南 中 文 版 由 Fei Yang <fyang1024 [AT] gmail.com>和 Lei Li<lilei_721 [AT] 6611.org> 从 英 文 版 本 [1] 翻 译 而 来 。 我 们 希 望 这 将 使 全 世 界 使 用 中 文 的 人 们 更 了 解 Nmap, 但 我 们 不 能 保 证 该 译 本 和 官 方 的 英 文 版 本 一 样 完 整 , 也 不 能 保 证 同 步 更 新 。 它 可 以 在 Creative Commons Attribution License [2] 下 被 修 改 并 重 新 发 布 。

选 项 概 要

当 Nmap不 带 选 项 运 行 时 , 该 选 项 概 要 会 被 输 出 , 最 新 的 版 本 在 这 里 https://nmap.org/data/nmap.usage.txt。 它 帮 助 人 们 记 住 最 常 用 的 选 项 , 但 不 能 替 代 本 手 册 其 余 深 入 的 文 档 , 一 些 晦 涩 的 选 项 甚 至 不 在 这 里 。

Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
-iL <inputfilename>: Input from list of hosts/networks
-iR <num hosts>: Choose random targets
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks
--excludefile <exclude_file>: Exclude list from file
HOST DISCOVERY:
-sL: List Scan - simply list targets to scan
-sP: Ping Scan - go no further than determining if host is online
-P0: Treat all hosts as online -- skip host discovery
-PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sN/sF/sX: TCP Null, FIN, and Xmas scans
--scanflags <flags>: Customize TCP scan flags
-sI <zombie host[:probeport]>: Idlescan
-sO: IP protocol scan
-b <ftp relay host>: FTP bounce scan
PORT SPECIFICATION AND SCAN ORDER:
-p <port ranges>: Only scan specified ports
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-F: Fast - Scan only the ports listed in the nmap-services file)
-r: Scan ports sequentially - don't randomize
SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info
--version-light: Limit to most likely probes for faster identification
--version-all: Try every single probe for version detection
--version-trace: Show detailed version scan activity (for debugging)
OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
TIMING AND PERFORMANCE:
-T[0-6]: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
--min-parallelism/max-parallelism <numprobes>: Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Specifies
probe round trip time.
--host-timeout <msec>: Give up on target after this long
--scan-delay/--max-scan-delay <msec>: Adjust delay between probes
FIREWALL/IDS EVASION AND SPOOFING:
-f; --mtu <val>: fragment packets (optionally w/given MTU)
-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
-S <IP_Address>: Spoof source address
-e <iface>: Use specified interface
-g/--source-port <portnum>: Use given port number
--data-length <num>: Append random data to sent packets
--ttl <val>: Set IP time-to-live field
--spoof-mac <mac address, prefix, or vendor name>: Spoof your MAC address
OUTPUT:
-oN/-oX/-oS/-oG <file>: Output scan results in normal, XML, s|<rIpt kIddi3,
and Grepable format, respectively, to the given filename.
-oA <basename>: Output in the three major formats at once
-v: Increase verbosity level (use twice for more effect)
-d[level]: Set or increase debugging level (Up to 9 is meaningful)
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
--append-output: Append to rather than clobber specified output files
--resume <filename>: Resume an aborted scan
--stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
--no-stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output
MISC:
-6: Enable IPv6 scanning
-A: Enables OS detection and Version detection
--datadir <dirname>: Specify custom Nmap data file location
--send-eth/--send-ip: Send packets using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
-V: Print version number
-h: Print this help summary page.
EXAMPLES:
nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -P0 -p 80

目 标 说 明

除 了 选 项 , 所 有 出 现 在 Nmap命 令 行 上 的 都 被 视 为 对 目 标 主 机 的 说 明 。 最 简 单 的 情 况 是 指 定 一 个 目 标 IP地 址 或 主 机 名 。 有 时 候 您 希 望 扫 描 整 个 网 络 的 相 邻 主 机 。 为 此 , Nmap支 持 CIDR风 格 的 地 址 。 您 可 以 附 加 一 个 /numbit在 一 个 IP地 址 或 主 机 名 后 面 , Nmap将 会 扫 描 所 有 和 该 参 考 IP地 址 具 有 numbit相 同 比 特 的 所 有 IP地 址 或 主 机 。 例 如 , 192.168.10.0/24将 会 扫 描 192.168.10.0 (二 进 制 格 式 : 11000000 10101000 00001010 00000000)和 192.168.10.255 (二 进 制 格 式 : 11000000 10101000 00001010 11111111)之 间 的 256台 主 机 。 192.168.10.40/24 将 会 做 同 样 的 事 情 。 假 设 主 机 scanme.nmap.org的 IP地 址 是 205.217.153.62, scanme.nmap.org/16 将 扫 描 205.217.0.0和 205.217.255.255之 间 的 65,536 个 IP地 址 。 所 允 许 的 最 小 值 是 /1, 这 将 会 扫 描 半 个 互 联 网 。 最 大 值 是 /32, 这 将 会 扫 描 该 主 机 或 IP地 址 , 因 为 所 有 的 比 特 都 固 定 了 。

CIDR标 志 位 很 简 洁 但 有 时 候 不 够 灵 活 。 例 如 , 您 也 许 想 要 扫 描 192.168.0.0/16, 但 略 过 任 何 以 .0或 者 .255 结 束 的 IP地 址 , 因 为 它 们 通 常 是 广 播 地 址 。 Nmap通 过 八 位 字 节 地 址 范 围 支 持 这 样 的 扫 描 您 可 以 用 逗 号 分 开 的 数 字 或 范 围 列 表 为 IP地 址 的 每 个 八 位 字 节 指 定 它 的 范 围 。 例 如 , 192.168.0-255.1-254 将 略 过 在 该 范 围 内 以 .0和 .255结 束 的 地 址 。 范 围 不 必 限 于 最 后 的 8位 : 0-255.0-255.13.37 将 在 整 个 互 联 网 范 围 内 扫 描 所 有 以 13.37结 束 的 地 址 。 这 种 大 范 围 的 扫 描 对 互 联 网 调 查 研 究 也 许 有 用 。

IPv6地 址 只 能 用 规 范 的 IPv6地 址 或 主 机 名 指 定 。 CIDR 和 八 位 字 节 范 围 不 支 持 IPv6, 因 为 它 们 对 于 IPv6几 乎 没 什 么 用 。

Nmap命 令 行 接 受 多 个 主 机 说 明 , 它 们 不 必 是 相 同 类 型 。 命 令 nmap scanme.nmap.org 192.168.0.0/8 10.0.0, 1, 3-7.0-255将 和 您 预 期 的 一 样 执 行 。 虽 然 目 标 通 常 在 命 令 行 指 定 , 下 列 选 项 也 可 用 来 控 制 目 标 的 选 择 :

-iL <inputfilename> (从 列 表 中 输 入 ) 从 inputfilename中 读 取 目 标 说 明 。 在 命 令 行 输 入 一 堆 主 机 名 显 得 很 笨 拙 , 然 而 经 常 需 要 这 样 。 例 如 , 您 的 DHCP服 务 器 可 能 导 出 10,000个 当 前 租 约 的 列 表 , 而 您 希 望 对 它 们 进 行 扫 描 。 如 果 您 不 是 使 用 未 授 权 的 静 态 IP来 定 位 主 机 , 或 许 您 想 要 扫 描 所 有 IP地 址 。 只 要 生 成 要 扫 描 的 主 机 的 列 表 , 用 -iL 把 文 件 名 作 为 选 项 传 给 Nmap。 列 表 中 的 项 可 以 是 Nmap在 命 令 行 上 接 受 的 任 何 格 式 (IP地 址 , 主 机 名 , CIDR, IPv6, 或 者 八 位 字 节 范 围 )。 每 一 项 必 须 以 一 个 或 多 个 空 格 , 制 表 符 或 换 行 符 分 开 。 如 果 您 希 望 Nmap从 标 准 输 入 而 不 是 实 际 文 件 读 取 列 表 , 您 可 以 用 一 个 连 字 符 (-)作 为 文 件 名 。

-iR <hostnum> (随 机 选 择 目 标 ) 对 于 互 联 网 范 围 内 的 调 查 和 研 究 , 您 也 许 想 随 机 地 选 择 目 标 。 hostnum 选 项 告 诉 Nmap生 成 多 少 个 IP。 不 合 需 要 的 IP如 特 定 的 私 有 , 组 播 或 者 未 分 配 的 地 址 自 动 略 过 。 选 项 0 意 味 着 永 无 休 止 的 扫 描 。 记 住 , 一 些 网 管 对 于 未 授 权 的 扫 描 可 能 会 很 感 冒 并 加 以 抱 怨 。 使 用 该 选 项 的 后 果 自 负 ! 如 果 在 某 个 雨 天 的 下 午 , 您 觉 得 实 在 无 聊 , 试 试 这 个 命 令 nmap -sS -PS80 -iR 0 -p 80随 机 地 找 一 些 网 站 浏 览 。

--exclude <host1[, host2][, host3], ...> (排 除 主 机 /网 络 ) 如 果 在 您 指 定 的 扫 描 范 围 有 一 些 主 机 或 网 络 不 是 您 的 目 标 , 那 就 用 该 选 项 加 上 以 逗 号 分 隔 的 列 表 排 除 它 们 。 该 列 表 用 正 常 的 Nmap语 法 , 因 此 它 可 以 包 括 主 机 名 , CIDR, 八 位 字 节 范 围 等 等 。 当 您 希 望 扫 描 的 网 络 包 含 执 行 关 键 任 务 的 服 务 器 , 已 知 的 对 端 口 扫 描 反 应 强 烈 的 系 统 或 者 被 其 它 人 看 管 的 子 网 时 , 这 也 许 有 用 。

--excludefile <excludefile> (排 除 文 件 中 的 列 表 ) 这 和 --exclude 选 项 的 功 能 一 样 , 只 是 所 排 除 的 目 标 是 用 以 换 行 符 , 空 格 , 或 者 制 表 符 分 隔 的 excludefile提 供 的 , 而 不 是 在 命 令 行 上 输 入 的 。

主 机 发 现

任 何 网 络 探 测 任 务 的 最 初 几 个 步 骤 之 一 就 是 把 一 组 IP范 围 (有 时 该 范 围 是 巨 大 的 )缩 小 为 一 列 活 动 的 或 者 您 感 兴 趣 的 主 机 。 扫 描 每 个 IP的 每 个 端 口 很 慢 , 通 常 也 没 必 要 。 当 然 , 什 么 样 的 主 机 令 您 感 兴 趣 主 要 依 赖 于 扫 描 的 目 的 。 网 管 也 许 只 对 运 行 特 定 服 务 的 主 机 感 兴 趣 , 而 从 事 安 全 的 人 士 则 可 能 对 一 个 马 桶 都 感 兴 趣 , 只 要 它 有 IP地 址 :-)。 一 个 系 统 管 理 员 也 许 仅 仅 使 用 Ping来 定 位 内 网 上 的 主 机 , 而 一 个 外 部 入 侵 测 试 人 员 则 可 能 绞 尽 脑 汁 用 各 种 方 法 试 图 突 破 防 火 墙 的 封 锁 。 由 于 主 机 发 现 的 需 求 五 花 八 门 , Nmap提 供 了 一 箩 筐 的 选 项 来 定 制 您 的 需 求 。 主 机 发 现 有 时 候 也 叫 做 ping扫 描 , 但 它 远 远 超 越 用 世 人 皆 知 的 ping工 具 发 送 简 单 的 ICMP回 声 请 求 报 文 。 用 户 完 全 可 以 通 过 使 用 列 表 扫 描 (-sL)或 者 通 过 关 闭 ping (-P0)跳 过 ping的 步 骤 , 也 可 以 使 用 多 个 端 口 把 TCP SYN/ACK, UDP和 ICMP 任 意 组 合 起 来 玩 一 玩 。 这 些 探 测 的 目 的 是 获 得 响 应 以 显 示 某 个 IP地 址 是 否 是 活 动 的 (正 在 被 某 主 机 或 者 网 络 设 备 使 用 )。 在 许 多 网 络 上 , 在 给 定 的 时 间 , 往 往 只 有 小 部 分 的 IP地 址 是 活 动 的 。 这 种 情 况 在 基 于 RFC1918的 私 有 地 址 空 间 如 10.0.0.0/8尤 其 普 遍 。 那 个 网 络 有 16,000,000个 IP, 但 我 见 过 一 些 使 用 它 的 公 司 连 1000台 机 器 都 没 有 。 主 机 发 现 能 够 找 到 零 星 分 布 于 IP地 址 海 洋 上 的 那 些 机 器 。 如 果 没 有 给 出 主 机 发 现 的 选 项 , Nmap 就 发 送 一 个 TCP ACK报 文 到 80端 口 和 一 个 ICMP回 声 请 求 到 每 台 目 标 机 器 。 一 个 例 外 是 ARP扫 描 用 于 局 域 网 上 的 任 何 目 标 机 器 。 对 于 非 特 权 UNIX shell用 户 , 使 用 connect()系 统 调 用 会 发 送 一 个 SYN报 文 而 不 是 ACK 这 些 默 认 行 为 和 使 用 -PA -PE选 项 的 效 果 相 同 。 扫 描 局 域 网 时 , 这 种 主 机 发 现 一 般 够 用 了 , 但 是 对 于 安 全 审 核 , 建 议 进 行 更 加 全 面 的 探 测 。

-P*选 项 (用 于 选 择 ping的 类 型 )可 以 被 结 合 使 用 。 您 可 以 通 过 使 用 不 同 的 TCP端 口 /标 志 位 和 ICMP码 发 送 许 多 探 测 报 文 来 增 加 穿 透 防 守 严 密 的 防 火 墙 的 机 会 。 另 外 要 注 意 的 是 即 使 您 指 定 了 其 它 -P*选 项 , ARP发 现 (-PR)对 于 局 域 网 上 的 目 标 而 言 是 默 认 行 为 , 因 为 它 总 是 更 快 更 有 效 。 下 列 选 项 控 制 主 机 发 现 。

-sL (列 表 扫 描 ) 列 表 扫 描 是 主 机 发 现 的 退 化 形 式 , 它 仅 仅 列 出 指 定 网 络 上 的 每 台 主 机 , 不 发 送 任 何 报 文 到 目 标 主 机 。 默 认 情 况 下 , Nmap仍 然 对 主 机 进 行 反 向 域 名 解 析 以 获 取 它 们 的 名 字 。 简 单 的 主 机 名 能 给 出 的 有 用 信 息 常 常 令 人 惊 讶 。 例 如 , fw.chi.playboy.com是 花 花 公 子 芝 加 哥 办 公 室 的 防 火 墙 。 Nmap最 后 还 会 报 告 IP地 址 的 总 数 。 列 表 扫 描 可 以 很 好 的 确 保 您 拥 有 正 确 的 目 标 IP。 如 果 主 机 的 域 名 出 乎 您 的 意 料 , 那 么 就 值 得 进 一 步 检 查 以 防 错 误 地 扫 描 其 它 组 织 的 网 络 。 既 然 只 是 打 印 目 标 主 机 的 列 表 , 像 其 它 一 些 高 级 功 能 如 端 口 扫 描 , 操 作 系 统 探 测 或 者 Ping扫 描 的 选 项 就 没 有 了 。 如 果 您 希 望 关 闭 ping扫 描 而 仍 然 执 行 这 样 的 高 级 功 能 , 请 继 续 阅 读 关 于 -P0选 项 的 介 绍 。

-sP (Ping扫 描 ) 该 选 项 告 诉 Nmap仅 仅 进 行 ping扫 描 (主 机 发 现 ), 然 后 打 印 出 对 扫 描 做 出 响 应 的 那 些 主 机 。 没 有 进 一 步 的 测 试 (如 端 口 扫 描 或 者 操 作 系 统 探 测 )。 这 比 列 表 扫 描 更 积 极 , 常 常 用 于 和 列 表 扫 描 相 同 的 目 的 。 它 可 以 得 到 些 许 目 标 网 络 的 信 息 而 不 被 特 别 注 意 到 。 对 于 攻 击 者 来 说 , 了 解 多 少 主 机 正 在 运 行 比 列 表 扫 描 提 供 的 一 列 IP和 主 机 名 往 往 更 有 价 值 。 系 统 管 理 员 往 往 也 很 喜 欢 这 个 选 项 。 它 可 以 很 方 便 地 得 出 网 络 上 有 多 少 机 器 正 在 运 行 或 者 监 视 服 务 器 是 否 正 常 运 行 。 常 常 有 人 称 它 为 地 毯 式 ping, 它 比 ping广 播 地 址 更 可 靠 , 因 为 许 多 主 机 对 广 播 请 求 不 响 应 。

-sP选 项 在 默 认 情 况 下 , 发 送 一 个 ICMP回 声 请 求 和 一 个 TCP报 文 到 80端 口 。 如 果 非 特 权 用 户 执 行 , 就 发 送 一 个 SYN报 文 (用 connect()系 统 调 用 )到 目 标 机 的 80端 口 。 当 特 权 用 户 扫 描 局 域 网 上 的 目 标 机 时 , 会 发 送 ARP请 求 (-PR), , 除 非 使 用 了 --send-ip选 项 。 -sP选 项 可 以 和 除 -P0)之 外 的 任 何 发 现 探 测 类 型 -P* 选 项 结 合 使 用 以 达 到 更 大 的 灵 活 性 。 一 旦 使 用 了 任 何 探 测 类 型 和 端 口 选 项 , 默 认 的 探 测 (ACK和 回 应 请 求 )就 被 覆 盖 了 。 当 防 守 严 密 的 防 火 墙 位 于 运 行 Nmap的 源 主 机 和 目 标 网 络 之 间 时 , 推 荐 使 用 那 些 高 级 选 项 。 否 则 , 当 防 火 墙 捕 获 并 丢 弃 探 测 包 或 者 响 应 包 时 , 一 些 主 机 就 不 能 被 探 测 到 。

-P0 (无 ping) 该 选 项 完 全 跳 过 Nmap发 现 阶 段 。 通 常 Nmap在 进 行 高 强 度 的 扫 描 时 用 它 确 定 正 在 运 行 的 机 器 。 默 认 情 况 下 , Nmap只 对 正 在 运 行 的 主 机 进 行 高 强 度 的 探 测 如 端 口 扫 描 , 版 本 探 测 , 或 者 操 作 系 统 探 测 。 用 -P0禁 止 主 机 发 现 会 使 Nmap对 每 一 个 指 定 的 目 标 IP地 址 进 行 所 要 求 的 扫 描 。 所 以 如 果 在 命 令 行 指 定 一 个 B类 目 标 地 址 空 间 (/16), 所 有 65,536 个 IP地 址 都 会 被 扫 描 。 -P0的 第 二 个 字 符 是 数 字 0而 不 是 字 母 O。 和 列 表 扫 描 一 样 , 跳 过 正 常 的 主 机 发 现 , 但 不 是 打 印 一 个 目 标 列 表 , 而 是 继 续 执 行 所 要 求 的 功 能 , 就 好 像 每 个 IP都 是 活 动 的 。

-PS [portlist] (TCP SYN Ping) 该 选 项 发 送 一 个 设 置 了 SYN标 志 位 的 空 TCP报 文 。 默 认 目 的 端 口 为 80 (可 以 通 过 改 变 nmap.h) 文 件 中 的 DEFAULT-TCP-PROBE-PORT值 进 行 配 置 , 但 不 同 的 端 口 也 可 以 作 为 选 项 指 定 。 甚 至 可 以 指 定 一 个 以 逗 号 分 隔 的 端 口 列 表 (如 -PS22, 23, 25, 80, 113, 1050, 35000), 在 这 种 情 况 下 , 每 个 端 口 会 被 并 发 地 扫 描 。

SYN标 志 位 告 诉 对 方 您 正 试 图 建 立 一 个 连 接 。 通 常 目 标 端 口 是 关 闭 的 , 一 个 RST (复 位 ) 包 会 发 回 来 。 如 果 碰 巧 端 口 是 开 放 的 , 目 标 会 进 行 TCP三 步 握 手 的 第 二 步 , 回 应 一 个 SYN/ACK TCP报 文 。 然 后 运 行 Nmap的 机 器 则 会 扼 杀 这 个 正 在 建 立 的 连 接 , 发 送 一 个 RST而 非 ACK报 文 , 否 则 , 一 个 完 全 的 连 接 将 会 建 立 。 RST报 文 是 运 行 Nmap的 机 器 而 不 是 Nmap本 身 响 应 的 , 因 为 它 对 收 到 的 SYN/ACK感 到 很 意 外 。

Nmap并 不 关 心 端 口 开 放 还 是 关 闭 。 无 论 RST还 是 SYN/ACK响 应 都 告 诉 Nmap该 主 机 正 在 运 行 。 在 UNIX机 器 上 , 通 常 只 有 特 权 用 户 root 能 否 发 送 和 接 收 原 始 的 TCP报 文 。 因 此 作 为 一 个 变 通 的 方 法 , 对 于 非 特 权 用 户 , Nmap会 为 每 个 目 标 主 机 进 行 系 统 调 用 connect(), 它 也 会 发 送 一 个 SYN 报 文 来 尝 试 建 立 连 接 。 如 果 connect()迅 速 返 回 成 功 或 者 一 个 ECONNREFUSED 失 败 , 下 面 的 TCP堆 栈 一 定 已 经 收 到 了 一 个 SYN/ACK或 者 RST, 该 主 机 将 被 标 志 位 为 在 运 行 。 如 果 连 接 超 时 了 , 该 主 机 就 标 志 位 为 down掉 了 。 这 种 方 法 也 用 于 IPv6 连 接 , 因 为 Nmap目 前 还 不 支 持 原 始 的 IPv6报 文 。

-PA [portlist] (TCP ACK Ping)

TCP ACK ping和 刚 才 讨 论 的 SYN ping相 当 类 似 。 也 许 您 已 经 猜 到 了 , 区 别 就 是 设 置 TCP的 ACK标 志 位 而 不 是 SYN标 志 位 。 ACK报 文 表 示 确 认 一 个 建 立 连 接 的 尝 试 , 但 该 连 接 尚 未 完 全 建 立 。 所 以 远 程 主 机 应 该 总 是 回 应 一 个 RST报 文 , 因 为 它 们 并 没 有 发 出 过 连 接 请 求 到 运 行 Nmap的 机 器 , 如 果 它 们 正 在 运 行 的 话 。

-PA选 项 使 用 和 SYN探 测 相 同 的 默 认 端 口 (80), 也 可 以 用 相 同 的 格 式 指 定 目 标 端 口 列 表 。 如 果 非 特 权 用 户 尝 试 该 功 能 , 或 者 指 定 的 是 IPv6目 标 , 前 面 说 过 的 connect()方 法 将 被 使 用 。 这 个 方 法 并 不 完 美 , 因 为 它 实 际 上 发 送 的 是 SYN报 文 , 而 不 是 ACK报 文 。 提 供 SYN和 ACK两 种 ping探 测 的 原 因 是 使 通 过 防 火 墙 的 机 会 尽 可 能 大 。 许 多 管 理 员 会 配 置 他 们 的 路 由 器 或 者 其 它 简 单 的 防 火 墙 来 封 锁 SYN报 文 , 除 非 连 接 目 标 是 那 些 公 开 的 服 务 器 像 公 司 网 站 或 者 邮 件 服 务 器 。 这 可 以 阻 止 其 它 进 入 组 织 的 连 接 , 同 时 也 允 许 用 户 访 问 互 联 网 。 这 种 无 状 态 的 方 法 几 乎 不 占 用 防 火 墙 /路 由 器 的 资 源 , 因 而 被 硬 件 和 软 件 过 滤 器 广 泛 支 持 。 Linux Netfilter/iptables 防 火 墙 软 件 提 供 方 便 的 --syn选 项 来 实 现 这 种 无 状 态 的 方 法 。 当 这 样 的 无 状 态 防 火 墙 规 则 存 在 时 , 发 送 到 关 闭 目 标 端 口 的 SYN ping探 测 (-PS) 很 可 能 被 封 锁 。 这 种 情 况 下 , ACK探 测 格 外 有 闪 光 点 , 因 为 它 正 好 利 用 了 这 样 的 规 则 。 另 外 一 种 常 用 的 防 火 墙 用 有 状 态 的 规 则 来 封 锁 非 预 期 的 报 文 。 这 一 特 性 已 开 始 只 存 在 于 高 端 防 火 墙 , 但 是 这 些 年 类 它 越 来 越 普 遍 了 。 Linux Netfilter/iptables 通 过 --state选 项 支 持 这 一 特 性 , 它 根 据 连 接 状 态 把 报 文 进 行 分 类 。 SYN探 测 更 有 可 能 用 于 这 样 的 系 统 , 由 于 没 头 没 脑 的 ACK报 文 通 常 会 被 识 别 成 伪 造 的 而 丢 弃 。 解 决 这 个 两 难 的 方 法 是 通 过 即 指 定 -PS又 指 定 -PA来 即 发 送 SYN又 发 送 ACK。

-PU [portlist] (UDP Ping) 还 有 一 个 主 机 发 现 的 选 项 是 UDP ping, 它 发 送 一 个 空 的 (除 非 指 定 了 --data-length UDP报 文 到 给 定 的 端 口 。 端 口 列 表 的 格 式 和 前 面 讨 论 过 的 -PS-PA选 项 还 是 一 样 。 如 果 不 指 定 端 口 , 默 认 是 31338。 该 默 认 值 可 以 通 过 在 编 译 时 改 变 nmap.h文 件 中 的 DEFAULT-UDP-PROBE-PORT值 进 行 配 置 。 默 认 使 用 这 样 一 个 奇 怪 的 端 口 是 因 为 对 开 放 端 口 进 行 这 种 扫 描 一 般 都 不 受 欢 迎 。 如 果 目 标 机 器 的 端 口 是 关 闭 的 , UDP探 测 应 该 马 上 得 到 一 个 ICMP端 口 无 法 到 达 的 回 应 报 文 。 这 对 于 Nmap意 味 着 该 机 器 正 在 运 行 。 许 多 其 它 类 型 的 ICMP错 误 , 像 主 机 /网 络 无 法 到 达 或 者 TTL超 时 则 表 示 down掉 的 或 者 不 可 到 达 的 主 机 。 没 有 回 应 也 被 这 样 解 释 。 如 果 到 达 一 个 开 放 的 端 口 , 大 部 分 服 务 仅 仅 忽 略 这 个 空 报 文 而 不 做 任 何 回 应 。 这 就 是 为 什 么 默 认 探 测 端 口 是 31338这 样 一 个 极 不 可 能 被 使 用 的 端 口 。 少 数 服 务 如 chargen会 响 应 一 个 空 的 UDP报 文 , 从 而 向 Nmap表 明 该 机 器 正 在 运 行 。 该 扫 描 类 型 的 主 要 优 势 是 它 可 以 穿 越 只 过 滤 TCP的 防 火 墙 和 过 滤 器 。 例 如 。 我 曾 经 有 过 一 个 Linksys BEFW11S4无 线 宽 带 路 由 器 。 默 认 情 况 下 , 该 设 备 对 外 的 网 卡 过 滤 所 有 TCP端 口 , 但 UDP探 测 仍 然 会 引 发 一 个 端 口 不 可 到 达 的 消 息 , 从 而 暴 露 了 它 自 己 。

-PE; -PP; -PM (ICMP Ping Types) 除 了 前 面 讨 论 的 这 些 不 常 见 的 TCP和 UDP主 机 发 现 类 型 , Nmap也 能 发 送 世 人 皆 知 的 ping 程 序 所 发 送 的 报 文 。 Nmap发 送 一 个 ICMP type 8 (回 声 请 求 )报 文 到 目 标 IP地 址 , 期 待 从 运 行 的 主 机 得 到 一 个 type 0 (回 声 响 应 )报 文 。 对 于 网 络 探 索 者 而 言 , 不 幸 的 是 , 许 多 主 机 和 防 火 墙 现 在 封 锁 这 些 报 文 , 而 不 是 按 期 望 的 那 样 响 应 , 参 见 RFC 1122 [3] 。 因 此 , 仅 仅 ICMP扫 描 对 于 互 联 网 上 的 目 标 通 常 是 不 够 的 。 但 对 于 系 统 管 理 员 监 视 一 个 内 部 网 络 , 它 们 可 能 是 实 际 有 效 的 途 径 。 使 用 -PE选 项 打 开 该 回 声 请 求 功 能 。 虽 然 回 声 请 求 是 标 准 的 ICMP ping查 询 , Nmap并 不 止 于 此 。 ICMP标 准 (RFC 792 [4] )还 规 范 了 时 间 戳 请 求 , 信 息 请 求 request, 和 地 址 掩 码 请 求 , 它 们 的 代 码 分 别 是 13, 15和 17。 虽 然 这 些 查 询 的 表 面 目 的 是 获 取 信 息 如 地 址 掩 码 和 当 前 时 间 , 它 们 也 可 以 很 容 易 地 用 于 主 机 发 现 。 很 简 单 , 回 应 的 系 统 就 是 在 运 行 的 系 统 。 Nmap目 前 没 有 实 现 信 息 请 求 报 文 , 因 为 它 们 还 没 有 被 广 泛 支 持 。 RFC 1122 坚 持 “主 机 不 应 该 实 现 这 些 消 息 ”。 时 间 戳 和 地 址 掩 码 查 询 可 以 分 别 用 -PP-PM选 项 发 送 。 时 间 戳 响 应 (ICMP代 码 14)或 者 地 址 掩 码 响 应 (代 码 18)表 示 主 机 在 运 行 。 当 管 理 员 特 别 封 锁 了 回 声 请 求 报 文 而 忘 了 其 它 ICMP查 询 可 能 用 于 相 同 目 的 时 , 这 两 个 查 询 可 能 很 有 价 值 。

-PR (ARP Ping) 最 常 见 的 Nmap使 用 场 景 之 一 是 扫 描 一 个 以 太 局 域 网 。 在 大 部 分 局 域 网 上 , 特 别 是 那 些 使 用 基 于 RFC1918私 有 地 址 范 围 的 网 络 , 在 一 个 给 定 的 时 间 绝 大 部 分 IP地 址 都 是 不 使 用 的 。 当 Nmap试 图 发 送 一 个 原 始 IP报 文 如 ICMP回 声 请 求 时 , 操 作 系 统 必 须 确 定 对 应 于 目 标 IP的 硬 件 地 址 (ARP), 这 样 它 才 能 把 以 太 帧 送 往 正 确 的 地 址 。 这 一 般 比 较 慢 而 且 会 有 些 问 题 , 因 为 操 作 系 统 设 计 者 认 为 一 般 不 会 在 短 时 间 内 对 没 有 运 行 的 机 器 作 几 百 万 次 的 ARP请 求 。 当 进 行 ARP扫 描 时 , Nmap用 它 优 化 的 算 法 管 理 ARP请 求 。 当 它 收 到 响 应 时 , Nmap甚 至 不 需 要 担 心 基 于 IP的 ping报 文 , 既 然 它 已 经 知 道 该 主 机 正 在 运 行 了 。 这 使 得 ARP扫 描 比 基 于 IP的 扫 描 更 快 更 可 靠 。 所 以 默 认 情 况 下 , 如 果 Nmap发 现 目 标 主 机 就 在 它 所 在 的 局 域 网 上 , 它 会 进 行 ARP扫 描 。 即 使 指 定 了 不 同 的 ping类 型 (如 -PI或 者 -PS) , Nmap也 会 对 任 何 相 同 局 域 网 上 的 目 标 机 使 用 ARP。 如 果 您 真 的 不 想 要 ARP扫 描 , 指 定 --send-ip

-n (不 用 域 名 解 析 ) 告 诉 Nmap 永 不 对 它 发 现 的 活 动 IP地 址 进 行 反 向 域 名 解 析 。 既 然 DNS一 般 比 较 慢 , 这 可 以 让 事 情 更 快 些 。

-R (为 所 有 目 标 解 析 域 名 ) 告 诉 Nmap 永 远 对 目 标 IP地 址 作 反 向 域 名 解 析 。 一 般 只 有 当 发 现 机 器 正 在 运 行 时 才 进 行 这 项 操 作 。

--system-dns (使 用 系 统 域 名 解 析 器 ) 默 认 情 况 下 , Nmap通 过 直 接 发 送 查 询 到 您 的 主 机 上 配 置 的 域 名 服 务 器 来 解 析 域 名 。 为 了 提 高 性 能 , 许 多 请 求 (一 般 几 十 个 ) 并 发 执 行 。 如 果 您 希 望 使 用 系 统 自 带 的 解 析 器 , 就 指 定 该 选 项 (通 过 getnameinfo()调 用 一 次 解 析 一 个 IP)。 除 非 Nmap的 DNS代 码 有 bug--如 果 是 这 样 , 请 联 系 我 们 。 一 般 不 使 用 该 选 项 , 因 为 它 慢 多 了 。 系 统 解 析 器 总 是 用 于 IPv6扫 描 。

端 口 扫 描 基 础

虽 然 Nmap这 些 年 来 功 能 越 来 越 多 , 它 也 是 从 一 个 高 效 的 端 口 扫 描 器 开 始 的 , 并 且 那 仍 然 是 它 的 核 心 功 能 。 nmap target这 个 简 单 的 命 令 扫 描 主 机 target上 的 超 过 1660个 TCP端 口 。 。 许 多 传 统 的 端 口 扫 描 器 只 列 出 所 有 端 口 是 开 放 还 是 关 闭 的 , Nmap的 信 息 粒 度 比 它 们 要 细 得 多 。 它 把 端 口 分 成 六 个 状 态 : open(开 放 的 ), closed(关 闭 的 ), filtered(被 过 滤 的 ), unfiltered(未 被 过 滤 的 ), open|filtered(开 放 或 者 被 过 滤 的 ), 或 者 closed|filtered(关 闭 或 者 被 过 滤 的 )。 这 些 状 态 并 非 端 口 本 身 的 性 质 , 而 是 描 述 Nmap怎 样 看 待 它 们 。 例 如 , 对 于 同 样 的 目 标 机 器 的 135/tcp端 口 , 从 同 网 络 扫 描 显 示 它 是 开 放 的 , 而 跨 网 络 作 完 全 相 同 的 扫 描 则 可 能 显 示 它 是 filtered(被 过 滤 的 )。

Nmap所 识 别 的 6个 端 口 状 态 。

open(开 放 的 ) 应 用 程 序 正 在 该 端 口 接 收 TCP 连 接 或 者 UDP报 文 。 发 现 这 一 点 常 常 是 端 口 扫 描 的 主 要 目 标 。 安 全 意 识 强 的 人 们 知 道 每 个 开 放 的 端 口 都 是 攻 击 的 入 口 。 攻 击 者 或 者 入 侵 测 试 者 想 要 发 现 开 放 的 端 口 。 而 管 理 员 则 试 图 关 闭 它 们 或 者 用 防 火 墙 保 护 它 们 以 免 妨 碍 了 合 法 用 户 。 非 安 全 扫 描 可 能 对 开 放 的 端 口 也 感 兴 趣 , 因 为 它 们 显 示 了 网 络 上 那 些 服 务 可 供 使 用 。

closed(关 闭 的 ) 关 闭 的 端 口 对 于 Nmap也 是 可 访 问 的 (它 接 受 Nmap的 探 测 报 文 并 作 出 响 应 ), 但 没 有 应 用 程 序 在 其 上 监 听 。 它 们 可 以 显 示 该 IP地 址 上 (主 机 发 现 , 或 者 ping扫 描 )的 主 机 正 在 运 行 up 也 对 部 分 操 作 系 统 探 测 有 所 帮 助 。 因 为 关 闭 的 关 口 是 可 访 问 的 , 也 许 过 会 儿 值 得 再 扫 描 一 下 , 可 能 一 些 又 开 放 了 。 系 统 管 理 员 可 能 会 考 虑 用 防 火 墙 封 锁 这 样 的 端 口 。 那 样 他 们 就 会 被 显 示 为 被 过 滤 的 状 态 , 下 面 讨 论 。

filtered(被 过 滤 的 ) 由 于 包 过 滤 阻 止 探 测 报 文 到 达 端 口 , Nmap无 法 确 定 该 端 口 是 否 开 放 。 过 滤 可 能 来 自 专 业 的 防 火 墙 设 备 , 路 由 器 规 则 或 者 主 机 上 的 软 件 防 火 墙 。 这 样 的 端 口 让 攻 击 者 感 觉 很 挫 折 , 因 为 它 们 几 乎 不 提 供 任 何 信 息 。 有 时 候 它 们 响 应 ICMP错 误 消 息 如 类 型 3代 码 13 (无 法 到 达 目 标 : 通 信 被 管 理 员 禁 止 ), 但 更 普 遍 的 是 过 滤 器 只 是 丢 弃 探 测 帧 , 不 做 任 何 响 应 。 这 迫 使 Nmap重 试 若 干 次 以 访 万 一 探 测 包 是 由 于 网 络 阻 塞 丢 弃 的 。 这 使 得 扫 描 速 度 明 显 变 慢 。

unfiltered(未 被 过 滤 的 ) 未 被 过 滤 状 态 意 味 着 端 口 可 访 问 , 但 Nmap不 能 确 定 它 是 开 放 还 是 关 闭 。 只 有 用 于 映 射 防 火 墙 规 则 集 的 ACK扫 描 才 会 把 端 口 分 类 到 这 种 状 态 。 用 其 它 类 型 的 扫 描 如 窗 口 扫 描 , SYN扫 描 , 或 者 FIN扫 描 来 扫 描 未 被 过 滤 的 端 口 可 以 帮 助 确 定 端 口 是 否 开 放 。

open|filtered(开 放 或 者 被 过 滤 的 ) 当 无 法 确 定 端 口 是 开 放 还 是 被 过 滤 的 , Nmap就 把 该 端 口 划 分 成 这 种 状 态 。 开 放 的 端 口 不 响 应 就 是 一 个 例 子 。 没 有 响 应 也 可 能 意 味 着 报 文 过 滤 器 丢 弃 了 探 测 报 文 或 者 它 引 发 的 任 何 响 应 。 因 此 Nmap无 法 确 定 该 端 口 是 开 放 的 还 是 被 过 滤 的 。 UDP, IP协 议 , FIN, Null, 和 Xmas扫 描 可 能 把 端 口 归 入 此 类 。

closed|filtered(关 闭 或 者 被 过 滤 的 ) 该 状 态 用 于 Nmap不 能 确 定 端 口 是 关 闭 的 还 是 被 过 滤 的 。 它 只 可 能 出 现 在 IPID Idle扫 描 中 。

端 口 扫 描 技 术

作 为 一 个 修 车 新 手 , 我 可 能 折 腾 几 个 小 时 来 摸 索 怎 样 把 基 本 工 具 (锤 子 , 胶 带 , 扳 子 等 ) 用 于 手 头 的 任 务 。 当 我 惨 痛 地 失 败 , 把 我 的 老 爷 车 拖 到 一 个 真 正 的 技 师 那 儿 的 时 候 , 他 总 是 在 他 的 工 具 箱 里 翻 来 翻 去 , 直 到 拽 出 一 个 完 美 的 工 具 然 后 似 乎 不 费 吹 灰 之 力 搞 定 它 。 端 口 扫 描 的 艺 术 和 这 个 类 似 。 专 家 理 解 成 打 的 扫 描 技 术 , 选 择 最 适 合 的 一 种 (或 者 组 合 )来 完 成 给 定 的 任 务 。 另 一 方 面 , 没 有 经 验 的 用 户 和 刚 入 门 者 总 是 用 默 认 的 SYN扫 描 解 决 每 个 问 题 。 既 然 Nmap是 免 费 的 , 掌 握 端 口 扫 描 的 唯 一 障 碍 就 是 知 识 。 这 当 然 是 汽 车 世 界 所 不 能 比 的 , 在 那 里 , 可 能 需 要 高 超 的 技 巧 才 能 确 定 您 需 要 一 个 压 杆 弹 簧 压 缩 机 , 接 着 您 还 得 为 它 付 数 千 美 金 。 大 部 分 扫 描 类 型 只 对 特 权 用 户 可 用 。 这 是 因 为 他 们 发 送 接 收 原 始 报 文 , 这 在 Unix系 统 需 要 root权 限 。 在 Windows上 推 荐 使 用 administrator账 户 , 但 是 当 WinPcap已 经 被 加 载 到 操 作 系 统 时 , 非 特 权 用 户 也 可 以 正 常 使 用 Nmap。 当 Nmap在 1997年 发 布 时 , 需 要 root权 限 是 一 个 严 重 的 局 限 , 因 为 很 多 用 户 只 有 共 享 的 shell账 户 。 现 在 , 世 界 变 了 , 计 算 机 便 宜 了 , 更 多 人 拥 有 互 联 网 连 接 , 桌 面 UNIX系 统 (包 括 Linux和 MAC OS X)很 普 遍 了 。 Windows版 本 的 Nmap现 在 也 有 了 , 这 使 它 可 以 运 行 在 更 多 的 桌 面 上 。 由 于 所 有 这 些 原 因 , 用 户 不 再 需 要 用 有 限 的 共 享 shell账 户 运 行 Nmap。 这 是 很 幸 运 的 , 因 为 特 权 选 项 让 Nmap强 大 得 多 也 灵 活 得 多 。 虽 然 Nmap努 力 产 生 正 确 的 结 果 , 但 请 记 住 所 有 结 果 都 是 基 于 目 标 机 器 (或 者 它 们 前 面 的 防 火 墙 )返 回 的 报 文 的 。 。 这 些 主 机 也 许 是 不 值 得 信 任 的 , 它 们 可 能 响 应 以 迷 惑 或 误 导 Nmap的 报 文 。 更 普 遍 的 是 非 RFC兼 容 的 主 机 以 不 正 确 的 方 式 响 应 Nmap探 测 。 FIN, Null和 Xmas扫 描 特 别 容 易 遇 到 这 个 问 题 。 这 些 是 特 定 扫 描 类 型 的 问 题 , 因 此 我 们 在 个 别 扫 描 类 型 里 讨 论 它 们 。 这 一 节 讨 论 Nmap支 持 的 大 约 十 几 种 扫 描 技 术 。 一 般 一 次 只 用 一 种 方 法 , 除 了 UDP扫 描 (-sU)可 能 和 任 何 一 种 TCP扫 描 类 型 结 合 使 用 。 友 情 提 示 一 下 , 端 口 扫 描 类 型 的 选 项 格 式 是 -sC, 其 中 C 是 个 显 眼 的 字 符 , 通 常 是 第 一 个 字 符 。 一 个 例 外 是 deprecated FTP bounce扫 描 (-b)。 默 认 情 况 下 , Nmap执 行 一 个 SYN扫 描 , 但 是 如 果 用 户 没 有 权 限 发 送 原 始 报 文 (在 UNIX上 需 要 root权 限 )或 者 如 果 指 定 的 是 IPv6目 标 , Nmap调 用 connect()。 本 节 列 出 的 扫 描 中 , 非 特 权 用 户 只 能 执 行 connect()和 ftp bounce扫 描 。

-sS (TCP SYN扫 描 )

SYN扫 描 作 为 默 认 的 也 是 最 受 欢 迎 的 扫 描 选 项 , 是 有 充 分 理 由 的 。 它 执 行 得 很 快 , 在 一 个 没 有 入 侵 防 火 墙 的 快 速 网 络 上 , 每 秒 钟 可 以 扫 描 数 千 个 端 口 。 SYN扫 描 相 对 来 说 不 张 扬 , 不 易 被 注 意 到 , 因 为 它 从 来 不 完 成 TCP连 接 。 它 也 不 像 Fin/Null/Xmas, Maimon和 Idle扫 描 依 赖 于 特 定 平 台 , 而 可 以 应 对 任 何 兼 容 的 TCP协 议 栈 。 它 还 可 以 明 确 可 靠 地 区 分 open(开 放 的 ), closed(关 闭 的 ), 和 filtered(被 过 滤 的 ) 状 态 它 常 常 被 称 为 半 开 放 扫 描 , 因 为 它 不 打 开 一 个 完 全 的 TCP连 接 。 它 发 送 一 个 SYN报 文 , 就 像 您 真 的 要 打 开 一 个 连 接 , 然 后 等 待 响 应 。 SYN/ACK表 示 端 口 在 监 听 (开 放 ), 而 RST (复 位 )表 示 没 有 监 听 者 。 如 果 数 次 重 发 后 仍 没 响 应 , 该 端 口 就 被 标 记 为 被 过 滤 。 如 果 收 到 ICMP不 可 到 达 错 误 (类 型 3, 代 码 1, 2, 3, 9, 10, 或 者 13), 该 端 口 也 被 标 记 为 被 过 滤 。

-sT (TCP connect()扫 描 ) 当 SYN扫 描 不 能 用 时 , CP Connect()扫 描 就 是 默 认 的 TCP扫 描 。 当 用 户 没 有 权 限 发 送 原 始 报 文 或 者 扫 描 IPv6网 络 时 , 就 是 这 种 情 况 。 Instead of writing raw packets as most other scan types do, Nmap通 过 创 建 connect() 系 统 调 用 要 求 操 作 系 统 和 目 标 机 以 及 端 口 建 立 连 接 , 而 不 像 其 它 扫 描 类 型 直 接 发 送 原 始 报 文 。 这 是 和 Web浏 览 器 , P2P客 户 端 以 及 大 多 数 其 它 网 络 应 用 程 序 用 以 建 立 连 接 一 样 的 高 层 系 统 调 用 。 它 是 叫 做 Berkeley Sockets API编 程 接 口 的 一 部 分 。 Nmap用 该 API获 得 每 个 连 接 尝 试 的 状 态 信 息 , 而 不 是 读 取 响 应 的 原 始 报 文 。 当 SYN扫 描 可 用 时 , 它 通 常 是 更 好 的 选 择 。 因 为 Nmap对 高 层 的 connect()调 用 比 对 原 始 报 文 控 制 更 少 , 所 以 前 者 效 率 较 低 。 该 系 统 调 用 完 全 连 接 到 开 放 的 目 标 端 口 而 不 是 像 SYN扫 描 进 行 半 开 放 的 复 位 。 这 不 仅 花 更 长 时 间 , 需 要 更 多 报 文 得 到 同 样 信 息 , 目 标 机 也 更 可 能 记 录 下 连 接 。 IDS(入 侵 检 测 系 统 )可 以 捕 获 两 者 , 但 大 部 分 机 器 没 有 这 样 的 警 报 系 统 。 当 Nmap连 接 , 然 后 不 发 送 数 据 又 关 闭 连 接 , 许 多 普 通 UNIX系 统 上 的 服 务 会 在 syslog留 下 记 录 , 有 时 候 是 一 条 加 密 的 错 误 消 息 。 此 时 , 有 些 真 正 可 怜 的 服 务 会 崩 溃 , 虽 然 这 不 常 发 生 。 如 果 管 理 员 在 日 志 里 看 到 来 自 同 一 系 统 的 一 堆 连 接 尝 试 , 她 应 该 知 道 她 的 系 统 被 扫 描 了 。

-sU (UDP扫 描 ) 虽 然 互 联 网 上 很 多 流 行 的 服 务 运 行 在 TCP 协 议 上 , UDP [5] 服 务 也 不 少 。 DNS, SNMP, 和 DHCP (注 册 的 端 口 是 53, 161/162, 和 67/68)是 最 常 见 的 三 个 。 因 为 UDP扫 描 一 般 较 慢 , 比 TCP更 困 难 , 一 些 安 全 审 核 人 员 忽 略 这 些 端 口 。 这 是 一 个 错 误 , 因 为 可 探 测 的 UDP服 务 相 当 普 遍 , 攻 击 者 当 然 不 会 忽 略 整 个 协 议 。 所 幸 , Nmap可 以 帮 助 记 录 并 报 告 UDP端 口 。

UDP扫 描 用 -sU选 项 激 活 。 它 可 以 和 TCP扫 描 如 SYN扫 描 (-sS)结 合 使 用 来 同 时 检 查 两 种 协 议 。

UDP扫 描 发 送 空 的 (没 有 数 据 )UDP报 头 到 每 个 目 标 端 口 。 如 果 返 回 ICMP端 口 不 可 到 达 错 误 (类 型 3, 代 码 3), 该 端 口 是 closed(关 闭 的 )。 其 它 ICMP不 可 到 达 错 误 (类 型 3, 代 码 1, 2, 9, 10, 或 者 13)表 明 该 端 口 是 filtered(被 过 滤 的 )。 偶 尔 地 , 某 服 务 会 响 应 一 个 UDP报 文 , 证 明 该 端 口 是 open(开 放 的 )。 如 果 几 次 重 试 后 还 没 有 响 应 , 该 端 口 就 被 认 为 是 open|filtered(开 放 |被 过 滤 的 )。 这 意 味 着 该 端 口 可 能 是 开 放 的 , 也 可 能 包 过 滤 器 正 在 封 锁 通 信 。 可 以 用 版 本 扫 描 (-sV)帮 助 区 分 真 正 的 开 放 端 口 和 被 过 滤 的 端 口 。

UDP扫 描 的 巨 大 挑 战 是 怎 样 使 它 更 快 速 。 开 放 的 和 被 过 滤 的 端 口 很 少 响 应 , 让 Nmap超 时 然 后 再 探 测 , 以 防 探 测 帧 或 者 响 应 丢 失 。 关 闭 的 端 口 常 常 是 更 大 的 问 题 。 它 们 一 般 发 回 一 个 ICMP端 口 无 法 到 达 错 误 。 但 是 不 像 关 闭 的 TCP端 口 响 应 SYN或 者 Connect 扫 描 所 发 送 的 RST报 文 , 许 多 主 机 在 默 认 情 况 下 限 制 ICMP端 口 不 可 到 达 消 息 。 Linux和 Solaris对 此 特 别 严 格 。 例 如 , Linux 2.4.20内 核 限 制 一 秒 钟 只 发 送 一 条 目 标 不 可 到 达 消 息 (见 net/ipv4/icmp。 c)。

Nmap探 测 速 率 限 制 并 相 应 地 减 慢 来 避 免 用 那 些 目 标 机 会 丢 弃 的 无 用 报 文 来 阻 塞 网 络 。 不 幸 的 是 , Linux式 的 一 秒 钟 一 个 报 文 的 限 制 使 65,536个 端 口 的 扫 描 要 花 18小 时 以 上 。 加 速 UDP扫 描 的 方 法 包 括 并 发 扫 描 更 多 的 主 机 , 先 只 对 主 要 端 口 进 行 快 速 扫 描 , 从 防 火 墙 后 面 扫 描 , 使 用 --host-timeout跳 过 慢 速 的 主 机 。

-sN; -sF; -sX (TCP Null, FIN, and Xmas扫 描 ) 这 三 种 扫 描 类 型 (甚 至 用 下 一 节 描 述 的 --scanflags 选 项 的 更 多 类 型 ) 在 TCP RFC [6] 中 发 掘 了 一 个 微 妙 的 方 法 来 区 分 open(开 放 的 )和 closed(关 闭 的 )端 口 。 第 65页 说 “如 果 [目 标 ]端 口 状 态 是 关 闭 的 .... 进 入 的 不 含 RST的 报 文 导 致 一 个 RST响 应 。 ” 接 下 来 的 一 页 讨 论 不 设 置 SYN, RST, 或 者 ACK位 的 报 文 发 送 到 开 放 端 口 : “理 论 上 , 这 不 应 该 发 生 , 如 果 您 确 实 收 到 了 , 丢 弃 该 报 文 , 返 回 。 ” 如 果 扫 描 系 统 遵 循 该 RFC, 当 端 口 关 闭 时 , 任 何 不 包 含 SYN, RST, 或 者 ACK位 的 报 文 会 导 致 一 个 RST返 回 , 而 当 端 口 开 放 时 , 应 该 没 有 任 何 响 应 。 只 要 不 包 含 SYN, RST, 或 者 ACK, 任 何 其 它 三 种 (FIN, PSH, and URG)的 组 合 都 行 。 Nmap有 三 种 扫 描 类 型 利 用 这 一 点 :

Null扫 描 (-sN) 不 设 置 任 何 标 志 位 (tcp标 志 头 是 0)

FIN扫 描 (-sF) 只 设 置 TCP FIN标 志 位 。

Xmas扫 描 (-sX) 设 置 FIN, PSH, 和 URG标 志 位 , 就 像 点 亮 圣 诞 树 上 所 有 的 灯 一 样 。 除 了 探 测 报 文 的 标 志 位 不 同 , 这 三 种 扫 描 在 行 为 上 完 全 一 致 。 如 果 收 到 一 个 RST报 文 , 该 端 口 被 认 为 是 closed(关 闭 的 ), 而 没 有 响 应 则 意 味 着 端 口 是 open|filtered(开 放 或 者 被 过 滤 的 )。 如 果 收 到 ICMP不 可 到 达 错 误 (类 型 3, 代 号 1, 2, 3, 9, 10, 或 者 13), 该 端 口 就 被 标 记 为 被 过 滤 的 。 这 些 扫 描 的 关 键 优 势 是 它 们 能 躲 过 一 些 无 状 态 防 火 墙 和 报 文 过 滤 路 由 器 。 另 一 个 优 势 是 这 些 扫 描 类 型 甚 至 比 SYN扫 描 还 要 隐 秘 一 些 。 但 是 别 依 赖 它 -- 多 数 现 代 的 IDS产 品 可 以 发 现 它 们 。 一 个 很 大 的 不 足 是 并 非 所 有 系 统 都 严 格 遵 循 RFC 793。 许 多 系 统 不 管 端 口 开 放 还 是 关 闭 , 都 响 应 RST。 这 导 致 所 有 端 口 都 标 记 为 closed(关 闭 的 )。 这 样 的 操 作 系 统 主 要 有 Microsoft Windows, 许 多 Cisco设 备 , BSDI, 以 及 IBM OS/400。 但 是 这 种 扫 描 对 多 数 UNIX系 统 都 能 工 作 。 这 些 扫 描 的 另 一 个 不 足 是 它 们 不 能 辨 别 open(开 放 的 )端 口 和 一 些 特 定 的 filtered(被 过 滤 的 )端 口 , 从 而 返 回 open|filtered(开 放 或 者 被 过 滤 的 )。

-sA (TCP ACK扫 描 ) 这 种 扫 描 与 目 前 为 止 讨 论 的 其 它 扫 描 的 不 同 之 处 在 于 它 不 能 确 定 open(开 放 的 )或 者 open|filtered(开 放 或 者 过 滤 的 ))端 口 。 它 用 于 发 现 防 火 墙 规 则 , 确 定 它 们 是 有 状 态 的 还 是 无 状 态 的 , 哪 些 端 口 是 被 过 滤 的 。

ACK扫 描 探 测 报 文 只 设 置 ACK标 志 位 (除 非 您 使 用 --scanflags)。 当 扫 描 未 被 过 滤 的 系 统 时 , open(开 放 的 )和 closed(关 闭 的 ) 端 口 都 会 返 回 RST报 文 。 Nmap把 它 们 标 记 为 unfiltered(未 被 过 滤 的 ), 意 思 是 ACK报 文 不 能 到 达 , 但 至 于 它 们 是 open(开 放 的 )或 者 closed(关 闭 的 ) 无 法 确 定 。 不 响 应 的 端 口 或 者 发 送 特 定 的 ICMP错 误 消 息 (类 型 3, 代 号 1, 2, 3, 9, 10, 或 者 13)的 端 口 , 标 记 为 filtered(被 过 滤 的 )。

-sW (TCP窗 口 扫 描 ) 除 了 利 用 特 定 系 统 的 实 现 细 节 来 区 分 开 放 端 口 和 关 闭 端 口 , 当 收 到 RST时 不 总 是 打 印 unfiltered, 窗 口 扫 描 和 ACK扫 描 完 全 一 样 。 它 通 过 检 查 返 回 的 RST报 文 的 TCP窗 口 域 做 到 这 一 点 。 在 某 些 系 统 上 , 开 放 端 口 用 正 数 表 示 窗 口 大 小 (甚 至 对 于 RST报 文 ) 而 关 闭 端 口 的 窗 口 大 小 为 0。 因 此 , 当 收 到 RST时 , 窗 口 扫 描 不 总 是 把 端 口 标 记 为 unfiltered, 而 是 根 据 TCP窗 口 值 是 正 数 还 是 0, 分 别 把 端 口 标 记 为 open或 者 closed 该 扫 描 依 赖 于 互 联 网 上 少 数 系 统 的 实 现 细 节 , 因 此 您 不 能 永 远 相 信 它 。 不 支 持 它 的 系 统 会 通 常 返 回 所 有 端 口 closed。 当 然 , 一 台 机 器 没 有 开 放 端 口 也 是 有 可 能 的 。 如 果 大 部 分 被 扫 描 的 端 口 是 closed, 而 一 些 常 见 的 端 口 (如 22, 25, 53) 是 filtered, 该 系 统 就 非 常 可 疑 了 。 偶 尔 地 , 系 统 甚 至 会 显 示 恰 恰 相 反 的 行 为 。 如 果 您 的 扫 描 显 示 1000个 开 放 的 端 口 和 3个 关 闭 的 或 者 被 过 滤 的 端 口 , 那 么 那 3个 很 可 能 也 是 开 放 的 端 口 。

-sM (TCP Maimon扫 描 )

Maimon扫 描 是 用 它 的 发 现 者 Uriel Maimon命 名 的 。 他 在 Phrack Magazine issue #49 (November 1996)中 描 述 了 这 一 技 术 。 Nmap在 两 期 后 加 入 了 这 一 技 术 。 这 项 技 术 和 Null, FIN, 以 及 Xmas扫 描 完 全 一 样 , 除 了 探 测 报 文 是 FIN/ACK。 根 据 RFC 793 (TCP), 无 论 端 口 开 放 或 者 关 闭 , 都 应 该 对 这 样 的 探 测 响 应 RST报 文 。 然 而 , Uriel注 意 到 如 果 端 口 开 放 , 许 多 基 于 BSD的 系 统 只 是 丢 弃 该 探 测 报 文 。

--scanflags (定 制 的 TCP扫 描 ) 真 正 的 Nmap高 级 用 户 不 需 要 被 这 些 现 成 的 扫 描 类 型 束 缚 。 --scanflags选 项 允 许 您 通 过 指 定 任 意 TCP标 志 位 来 设 计 您 自 己 的 扫 描 。 让 您 的 创 造 力 流 动 , 躲 开 那 些 仅 靠 本 手 册 添 加 规 则 的 入 侵 检 测 系 统 !

--scanflags选 项 可 以 是 一 个 数 字 标 记 值 如 9 (PSH和 FIN), 但 使 用 字 符 名 更 容 易 些 。 只 要 是 URG, ACK, PSH, RST, SYN, and FIN的 任 何 组 合 就 行 。 例 如 , --scanflags URGACKPSHRSTSYNFIN设 置 了 所 有 标 志 位 , 但 是 这 对 扫 描 没 有 太 大 用 处 。 标 志 位 的 顺 序 不 重 要 。 除 了 设 置 需 要 的 标 志 位 , 您 也 可 以 设 置 TCP扫 描 类 型 (如 -sA或 者 -sF)。 那 个 基 本 类 型 告 诉 Nmap怎 样 解 释 响 应 。 例 如 , SYN扫 描 认 为 没 有 响 应 意 味 着 filtered端 口 , 而 FIN扫 描 则 认 为 是 open|filtered。 除 了 使 用 您 指 定 的 TCP标 记 位 , Nmap会 和 基 本 扫 描 类 型 一 样 工 作 。 如 果 您 不 指 定 基 本 类 型 , 就 使 用 SYN扫 描 。

-sI <zombie host[:probeport]> (Idlescan) 这 种 高 级 的 扫 描 方 法 允 许 对 目 标 进 行 真 正 的 TCP端 口 盲 扫 描 (意 味 着 没 有 报 文 从 您 的 真 实 IP地 址 发 送 到 目 标 )。 相 反 , side-channel攻 击 利 用 zombie主 机 上 已 知 的 IP分 段 ID序 列 生 成 算 法 来 窥 探 目 标 上 开 放 端 口 的 信 息 。 IDS系 统 将 显 示 扫 描 来 自 您 指 定 的 zombie机 (必 须 运 行 并 且 符 合 一 定 的 标 准 )。 这 种 奇 妙 的 扫 描 类 型 太 复 杂 了 , 不 能 在 此 完 全 描 述 , 所 以 我 写 一 篇 非 正 式 的 论 文 , 发 布 在 https://nmap.org/book/idlescan.html。 除 了 极 端 隐 蔽 (由 于 它 不 从 真 实 IP地 址 发 送 任 何 报 文 ), 该 扫 描 类 型 可 以 建 立 机 器 间 的 基 于 IP的 信 任 关 系 。 端 口 列 表 从 zombie 主 机 的 角 度 。 显 示 开 放 的 端 口 。 因 此 您 可 以 尝 试 用 您 认 为 (通 过 路 由 器 /包 过 滤 规 则 )可 能 被 信 任 的 zombies扫 描 目 标 。 如 果 您 由 于 IPID改 变 希 望 探 测 zombie上 的 特 定 端 口 , 您 可 以 在 zombie 主 机 后 加 上 一 个 冒 号 和 端 口 号 。 否 则 Nmap会 使 用 默 认 端 口 (80)。

-sO (IP协 议 扫 描 )

IP 协 议 扫 描 可 以 让 您 确 定 目 标 机 支 持 哪 些 IP协 议 (TCP, ICMP, IGMP, 等 等 )。 从 技 术 上 说 , 这 不 是 端 口 扫 描 , 既 然 它 遍 历 的 是 IP协 议 号 而 不 是 TCP或 者 UDP端 口 号 。 但 是 它 仍 使 用 -p选 项 选 择 要 扫 描 的 协 议 号 , 用 正 常 的 端 口 表 格 式 报 告 结 果 , 甚 至 用 和 真 正 的 端 口 扫 描 一 样 的 扫 描 引 擎 。 因 此 它 和 端 口 扫 描 非 常 接 近 , 也 被 放 在 这 里 讨 论 。 除 了 本 身 很 有 用 , 协 议 扫 描 还 显 示 了 开 源 软 件 的 力 量 。 尽 管 基 本 想 法 非 常 简 单 , 我 过 去 从 没 想 过 增 加 这 一 功 能 也 没 收 到 任 何 对 它 的 请 求 。 在 2000年 夏 天 , Gerhard Rieger孕 育 了 这 个 想 法 , 写 了 一 个 很 棒 的 补 丁 程 序 , 发 送 到 nmap-hackers邮 件 列 表 。 我 把 那 个 补 丁 加 入 了 Nmap, 第 二 天 发 布 了 新 版 本 。 几 乎 没 有 商 业 软 件 会 有 用 户 有 足 够 的 热 情 设 计 并 贡 献 他 们 的 改 进 。 协 议 扫 描 以 和 UDP扫 描 类 似 的 方 式 工 作 。 它 不 是 在 UDP报 文 的 端 口 域 上 循 环 , 而 是 在 IP协 议 域 的 8位 上 循 环 , 发 送 IP报 文 头 。 报 文 头 通 常 是 空 的 , 不 包 含 数 据 , 甚 至 不 包 含 所 申 明 的 协 议 的 正 确 报 文 头 TCP, UDP, 和 ICMP是 三 个 例 外 。 它 们 三 个 会 使 用 正 常 的 协 议 头 , 因 为 否 则 某 些 系 统 拒 绝 发 送 , 而 且 Nmap有 函 数 创 建 它 们 。 协 议 扫 描 不 是 注 意 ICMP端 口 不 可 到 达 消 息 , 而 是 ICMP 协 议 不 可 到 达 消 息 。 如 果 Nmap从 目 标 主 机 收 到 任 何 协 议 的 任 何 响 应 , Nmap就 把 那 个 协 议 标 记 为 open。 ICMP协 议 不 可 到 达 错 误 (类 型 3, 代 号 2) 导 致 协 议 被 标 记 为 closed。 其 它 ICMP不 可 到 达 协 议 (类 型 3, 代 号 1, 3, 9, 10, 或 者 13) 导 致 协 议 被 标 记 为 filtered (虽 然 同 时 他 们 证 明 ICMP是 open )。 如 果 重 试 之 后 仍 没 有 收 到 响 应 , 该 协 议 就 被 标 记 为 open|filtered

-b <ftp relay host> (FTP弹 跳 扫 描 )

FTP协 议 的 一 个 有 趣 特 征 (RFC 959 [7] ) 是 支 持 所 谓 代 理 ftp连 接 。 它 允 许 用 户 连 接 到 一 台 FTP服 务 器 , 然 后 要 求 文 件 送 到 一 台 第 三 方 服 务 器 。 这 个 特 性 在 很 多 层 次 上 被 滥 用 , 所 以 许 多 服 务 器 已 经 停 止 支 持 它 了 。 其 中 一 种 就 是 导 致 FTP服 务 器 对 其 它 主 机 端 口 扫 描 。 只 要 请 求 FTP服 务 器 轮 流 发 送 一 个 文 件 到 目 标 主 机 上 的 所 感 兴 趣 的 端 口 。 错 误 消 息 会 描 述 端 口 是 开 放 还 是 关 闭 的 。 这 是 绕 过 防 火 墙 的 好 方 法 , 因 为 FTP服 务 器 常 常 被 置 于 可 以 访 问 比 Web主 机 更 多 其 它 内 部 主 机 的 位 置 。 Nmap用 -b选 项 支 持 ftp弹 跳 扫 描 。 参 数 格 式 是 username:password@server:portServer 是 某 个 脆 弱 的 FTP服 务 器 的 名 字 或 者 IP地 址 。 您 也 许 可 以 省 略 username:password, 如 果 服 务 器 上 开 放 了 匿 名 用 户 (user:anonymous password:-wwwuser@)。 端 口 号 (以 及 前 面 的 冒 号 ) 也 可 以 省 略 , 如 果 server使 用 默 认 的 FTP端 口 (21)。 当 Nmap1997年 发 布 时 , 这 个 弱 点 被 广 泛 利 用 , 但 现 在 大 部 分 已 经 被 fix了 。 脆 弱 的 服 务 器 仍 然 存 在 , 所 以 如 果 其 它 都 失 败 了 , 这 也 值 得 一 试 。 如 果 您 的 目 标 是 绕 过 防 火 墙 , 扫 描 目 标 网 络 上 的 开 放 的 21端 口 (或 者 甚 至 任 何 ftp服 务 , 如 果 您 用 版 本 探 测 扫 描 所 有 端 口 ), 然 后 对 每 个 尝 试 弹 跳 扫 描 。 Nmap会 告 诉 您 该 主 机 脆 弱 与 否 。 如 果 您 只 是 试 着 玩 Nmap, 您 不 必 (事 实 上 , 不 应 该 )限 制 您 自 己 。 在 您 随 机 地 在 互 联 网 上 寻 找 脆 弱 的 FTP服 务 器 时 , 考 虑 一 下 系 统 管 理 员 不 太 喜 欢 您 这 样 滥 用 他 们 的 服 务 器 。

端 口 说 明 和 扫 描 顺 序

除 了 所 有 前 面 讨 论 的 扫 描 方 法 , Nmap提 供 选 项 说 明 那 些 端 口 被 扫 描 以 及 扫 描 是 随 机 还 是 顺 序 进 行 。 默 认 情 况 下 , Nmap用 指 定 的 协 议 对 端 口 1到 1024以 及 nmap-services 文 件 中 列 出 的 更 高 的 端 口 在 扫 描 。

-p <port ranges> (只 扫 描 指 定 的 端 口 ) 该 选 项 指 明 您 想 扫 描 的 端 口 , 覆 盖 默 认 值 。 单 个 端 口 和 用 连 字 符 表 示 的 端 口 范 围 (如 1-1023)都 可 以 。 范 围 的 开 始 以 及 /或 者 结 束 值 可 以 被 省 略 , 分 别 导 致 Nmap使 用 1和 65535。 所 以 您 可 以 指 定 -p-从 端 口 1扫 描 到 65535。 如 果 您 特 别 指 定 , 也 可 以 扫 描 端 口 0。 对 于 IP协 议 扫 描 (-sO), 该 选 项 指 定 您 希 望 扫 描 的 协 议 号 (0-255)。 当 既 扫 描 TCP端 口 又 扫 描 UDP端 口 时 , 您 可 以 通 过 在 端 口 号 前 加 上 T: 或 者 U:指 定 协 议 。 协 议 限 定 符 一 直 有 效 您 直 到 指 定 另 一 个 。 例 如 , 参 数 -p U:53, 111, 137, T:21-25, 80, 139, 8080 将 扫 描 UDP 端 口 53, 111, 和 137, 同 时 扫 描 列 出 的 TCP端 口 。 注 意 , 要 既 扫 描 UDP又 扫 描 TCP, 您 必 须 指 定 -sU , 以 及 至 少 一 个 TCP扫 描 类 型 (如 -sS-sF, 或 者 -sT)。 如 果 没 有 给 定 协 议 限 定 符 , 端 口 号 会 被 加 到 所 有 协 议 列 表 。

-F (快 速 (有 限 的 端 口 ) 扫 描 ) 在 nmap的 nmap-services 文 件 中 (对 于 -sO, 是 协 议 文 件 )指 定 您 想 要 扫 描 的 端 口 。 这 比 扫 描 所 有 65535个 端 口 快 得 多 。 因 为 该 列 表 包 含 如 此 多 的 TCP端 口 (1200多 ), 这 和 默 认 的 TCP扫 描 scan (大 约 1600个 端 口 )速 度 差 别 不 是 很 大 。 如 果 您 用 --datadir选 项 指 定 您 自 己 的 小 小 的 nmap-services文 件 , 差 别 会 很 惊 人 。

-r (不 要 按 随 机 顺 序 扫 描 端 口 ) 默 认 情 况 下 , Nmap按 随 机 顺 序 扫 描 端 口 (除 了 出 于 效 率 的 考 虑 , 常 用 的 端 口 前 移 )。 这 种 随 机 化 通 常 都 是 受 欢 迎 的 , 但 您 也 可 以 指 定 -r来 顺 序 端 口 扫 描 。

服 务 和 版 本 探 测

把 Nmap指 向 一 个 远 程 机 器 , 它 可 能 告 诉 您 端 口 25/tcp, 80/tcp, 和 53/udp是 开 放 的 。 使 用 包 含 大 约 2,200个 著 名 的 服 务 的 nmap-services数 据 库 , Nmap可 以 报 告 那 些 端 口 可 能 分 别 对 应 于 一 个 邮 件 服 务 器 (SMTP), web服 务 器 (HTTP), 和 域 名 服 务 器 (DNS)。 这 种 查 询 通 常 是 正 确 的 -- 事 实 上 , 绝 大 多 数 在 TCP端 口 25监 听 的 守 护 进 程 是 邮 件 服 务 器 。 然 而 , 您 不 应 该 把 赌 注 押 在 这 上 面 ! 人 们 完 全 可 以 在 一 些 奇 怪 的 端 口 上 运 行 服 务 。 即 使 Nmap是 对 的 , 假 设 运 行 服 务 的 确 实 是 SMTP, HTTP和 DNS, 那 也 不 是 特 别 多 的 信 息 。 当 为 您 的 公 司 或 者 客 户 作 安 全 评 估 (或 者 甚 至 简 单 的 网 络 明 细 清 单 )时 , 您 确 实 想 知 道 正 在 运 行 什 么 邮 件 和 域 名 服 务 器 以 及 它 们 的 版 本 。 有 一 个 精 确 的 版 本 号 对 了 解 服 务 器 有 什 么 漏 洞 有 巨 大 帮 助 。 版 本 探 测 可 以 帮 您 获 得 该 信 息 。 在 用 某 种 其 它 类 型 的 扫 描 方 法 发 现 TCP 和 /或 者 UDP端 口 后 , 版 本 探 测 会 询 问 这 些 端 口 , 确 定 到 底 什 么 服 务 正 在 运 行 。 nmap-service-probes 数 据 库 包 含 查 询 不 同 服 务 的 探 测 报 文 和 解 析 识 别 响 应 的 匹 配 表 达 式 。 Nmap试 图 确 定 服 务 协 议 (如 ftp, ssh, telnet, http), 应 用 程 序 名 (如 ISC Bind, Apache httpd, Solaris telnetd), 版 本 号 , 主 机 名 , 设 备 类 型 (如 打 印 机 , 路 由 器 ), 操 作 系 统 家 族 (如 Windows, Linux)以 及 其 它 的 细 节 , 如 如 是 否 可 以 连 接 X server, SSH协 议 版 本 , 或 者 KaZaA用 户 名 )。 当 然 , 并 非 所 有 服 务 都 提 供 所 有 这 些 信 息 。 如 果 Nmap被 编 译 成 支 持 OpenSSL, 它 将 连 接 到 SSL服 务 器 , 推 测 什 么 服 务 在 加 密 层 后 面 监 听 。 当 发 现 RPC服 务 时 , Nmap RPC grinder (-sR)会 自 动 被 用 于 确 定 RPC程 序 和 它 的 版 本 号 。 如 果 在 扫 描 某 个 UDP端 口 后 仍 然 无 法 确 定 该 端 口 是 开 放 的 还 是 被 过 滤 的 , 那 么 该 端 口 状 态 就 被 标 记 为 open|filtered。 版 本 探 测 将 试 图 从 这 些 端 口 引 发 一 个 响 应 (就 像 它 对 开 放 端 口 做 的 一 样 ), 如 果 成 功 , 就 把 状 态 改 为 开 放 。 open|filtered TCP端 口 用 同 样 的 方 法 对 待 。 注 意 Nmap -A选 项 在 其 它 情 况 下 打 开 版 本 探 测 。 有 一 篇 关 于 版 本 探 测 的 原 理 , 使 用 和 定 制 的 文 章 在 https://nmap.org/vscan/。 当 Nmap从 某 个 服 务 收 到 响 应 , 但 不 能 在 数 据 库 中 找 到 匹 配 时 , 它 就 打 印 一 个 特 殊 的 fingerprint和 一 个 URL给 您 提 交 , 如 果 您 确 实 知 道 什 么 服 务 运 行 在 端 口 。 请 花 两 分 钟 提 交 您 的 发 现 , 让 每 个 人 受 益 。 由 于 这 些 提 交 , Nmap有 350种 以 上 协 议 如 smtp, ftp, http等 的 大 约 3, 000条 模 式 匹 配 。 用 下 列 的 选 项 打 开 和 控 制 版 本 探 测 。

-sV (版 本 探 测 ) 打 开 版 本 探 测 。 您 也 可 以 用 -A同 时 打 开 操 作 系 统 探 测 和 版 本 探 测 。

--allports (不 为 版 本 探 测 排 除 任 何 端 口 ) 默 认 情 况 下 , Nmap版 本 探 测 会 跳 过 9100 TCP端 口 , 因 为 一 些 打 印 机 简 单 地 打 印 送 到 该 端 口 的 任 何 数 据 , 这 回 导 致 数 十 页 HTTP get请 求 , 二 进 制 SSL会 话 请 求 等 等 被 打 印 出 来 。 这 一 行 为 可 以 通 过 修 改 或 删 除 nmap-service-probes 中 的 Exclude指 示 符 改 变 , 您 也 可 以 不 理 会 任 何 Exclude指 示 符 , 指 定 --allports扫 描 所 有 端 口

--version-intensity <intensity> (设 置 版 本 扫 描 强 度 ) 当 进 行 版 本 扫 描 (-sV)时 , nmap发 送 一 系 列 探 测 报 文 , 每 个 报 文 都 被 赋 予 一 个 1到 9之 间 的 值 。 被 赋 予 较 低 值 的 探 测 报 文 对 大 范 围 的 常 见 服 务 有 效 , 而 被 赋 予 较 高 值 的 报 文 一 般 没 什 么 用 。 强 度 水 平 说 明 了 应 该 使 用 哪 些 探 测 报 文 。 数 值 越 高 , 服 务 越 有 可 能 被 正 确 识 别 。 然 而 , 高 强 度 扫 描 花 更 多 时 间 。 强 度 值 必 须 在 0和 9之 间 。 默 认 是 7。 当 探 测 报 文 通 过 nmap-service-probes ports指 示 符 注 册 到 目 标 端 口 时 , 无 论 什 么 强 度 水 平 , 探 测 报 文 都 会 被 尝 试 。 这 保 证 了 DNS 探 测 将 永 远 在 任 何 开 放 的 53端 口 尝 试 , SSL探 测 将 在 443端 口 尝 试 , 等 等 。

--version-light (打 开 轻 量 级 模 式 ) 这 是 --version-intensity 2的 方 便 的 别 名 。 轻 量 级 模 式 使 版 本 扫 描 快 许 多 , 但 它 识 别 服 务 的 可 能 性 也 略 微 小 一 点 。

--version-all (尝 试 每 个 探 测 )

--version-intensity 9的 别 名 , 保 证 对 每 个 端 口 尝 试 每 个 探 测 报 文 。

--version-trace (跟 踪 版 本 扫 描 活 动 ) 这 导 致 Nmap打 印 出 详 细 的 关 于 正 在 进 行 的 扫 描 的 调 试 信 息 。 它 是 您 用 --packet-trace所 得 到 的 信 息 的 子 集 。

-sR (RPC扫 描 ) 这 种 方 法 和 许 多 端 口 扫 描 方 法 联 合 使 用 。 它 对 所 有 被 发 现 开 放 的 TCP/UDP端 口 执 行 SunRPC程 序 NULL命 令 , 来 试 图 确 定 它 们 是 否 RPC端 口 , 如 果 是 , 是 什 么 程 序 和 版 本 号 。 因 此 您 可 以 有 效 地 获 得 和 rpcinfo -p一 样 的 信 息 , 即 使 目 标 的 端 口 映 射 在 防 火 墙 后 面 (或 者 被 TCP包 装 器 保 护 )。 Decoys目 前 不 能 和 RPC scan一 起 工 作 。 这 作 为 版 本 扫 描 (-sV)的 一 部 分 自 动 打 开 。 由 于 版 本 探 测 包 括 它 并 且 全 面 得 多 , -sR很 少 被 需 要 。

操 作 系 统 探 测

Nmap最 著 名 的 功 能 之 一 是 用 TCP/IP协 议 栈 fingerprinting进 行 远 程 操 作 系 统 探 测 。 Nmap发 送 一 系 列 TCP和 UDP报 文 到 远 程 主 机 , 检 查 响 应 中 的 每 一 个 比 特 。 在 进 行 一 打 测 试 如 TCP ISN采 样 , TCP选 项 支 持 和 排 序 , IPID采 样 , 和 初 始 窗 口 大 小 检 查 之 后 , Nmap把 结 果 和 数 据 库 nmap-os-fingerprints中 超 过 1500个 已 知 的 操 作 系 统 的 fingerprints进 行 比 较 , 如 果 有 匹 配 , 就 打 印 出 操 作 系 统 的 详 细 信 息 。 每 个 fingerprint包 括 一 个 自 由 格 式 的 关 于 OS的 描 述 文 本 , 和 一 个 分 类 信 息 , 它 提 供 供 应 商 名 称 (如 Sun), 下 面 的 操 作 系 统 (如 Solaris), OS版 本 (如 10), 和 设 备 类 型 (通 用 设 备 , 路 由 器 , switch, 游 戏 控 制 台 , 等 )。 如 果 Nmap不 能 猜 出 操 作 系 统 , 并 且 有 些 好 的 已 知 条 件 (如 至 少 发 现 了 一 个 开 放 端 口 和 一 个 关 闭 端 口 ), Nmap会 提 供 一 个 URL, 如 果 您 确 知 运 行 的 操 作 系 统 , 您 可 以 把 fingerprint提 交 到 那 个 URL。 这 样 您 就 扩 大 了 Nmap的 操 作 系 统 知 识 库 , 从 而 让 每 个 Nmap用 户 都 受 益 。 操 作 系 统 检 测 可 以 进 行 其 它 一 些 测 试 , 这 些 测 试 可 以 利 用 处 理 过 程 中 收 集 到 的 信 息 。 例 如 运 行 时 间 检 测 , 使 用 TCP时 间 戳 选 项 (RFC 1323) 来 估 计 主 机 上 次 重 启 的 时 间 , 这 仅 适 用 于 提 供 这 类 信 息 的 主 机 。 另 一 种 是 TCP序 列 号 预 测 分 类 , 用 于 测 试 针 对 远 程 主 机 建 立 一 个 伪 造 的 TCP连 接 的 可 能 难 度 。 这 对 于 利 用 基 于 源 IP地 址 的 可 信 关 系 (rlogin, 防 火 墙 过 滤 等 ) 或 者 隐 含 源 地 址 的 攻 击 非 常 重 要 。 这 一 类 哄 骗 攻 击 现 在 很 少 见 , 但 一 些 主 机 仍 然 存 在 这 方 面 的 漏 洞 。 实 际 的 难 度 值 基 于 统 计 采 样 , 因 此 可 能 会 有 一 些 波 动 。 通 常 采 用 英 国 的 分 类 较 好 , 如 “worthy challenge”或 者 “trivial joke”。 在 详 细 模 式 (-v)下 只 以 普 通 的 方 式 输 出 , 如 果 同 时 使 用 -O, 还 报 告 IPID序 列 产 生 号 。 很 多 主 机 的 序 列 号 是 “增 加 ”类 别 , 即 在 每 个 发 送 包 的 IP头 中 增 加 ID域 值 , 这 对 一 些 先 进 的 信 息 收 集 和 哄 骗 攻 击 来 说 是 个 漏 洞 。

https://nmap.org/book/osdetect.html 文 档 使 用 多 种 语 言 描 述 了 版 本 检 测 的 方 式 、 使 用 和 定 制 。 采 用 下 列 选 项 启 用 和 控 制 操 作 系 统 检 测 :

-O (启 用 操 作 系 统 检 测 ) 也 可 以 使 用 -A来 同 时 启 用 操 作 系 统 检 测 和 版 本 检 测 。

--osscan-limit (针 对 指 定 的 目 标 进 行 操 作 系 统 检 测 ) 如 果 发 现 一 个 打 开 和 关 闭 的 TCP端 口 时 , 操 作 系 统 检 测 会 更 有 效 。 采 用 这 个 选 项 , Nmap只 对 满 足 这 个 条 件 的 主 机 进 行 操 作 系 统 检 测 , 这 样 可 以 节 约 时 间 , 特 别 在 使 用 -P0扫 描 多 个 主 机 时 。 这 个 选 项 仅 在 使 用 -O-A 进 行 操 作 系 统 检 测 时 起 作 用 。

--osscan-guess; --fuzzy (推 测 操 作 系 统 检 测 结 果 ) 当 Nmap无 法 确 定 所 检 测 的 操 作 系 统 时 , 会 尽 可 能 地 提 供 最 相 近 的 匹 配 , Nmap默 认 进 行 这 种 匹 配 , 使 用 上 述 任 一 个 选 项 使 得 Nmap的 推 测 更 加 有 效 。

时 间 和 性 能

Nmap开 发 的 最 高 优 先 级 是 性 能 。 在 本 地 网 络 对 一 个 主 机 的 默 认 扫 描 (nmap hostname)需 要 1/5秒 。 而 仅 仅 眨 眼 的 时 间 , 就 需 要 扫 描 上 万 甚 至 几 十 万 的 主 机 。 此 外 , 一 些 特 定 的 扫 描 选 项 会 明 显 增 加 扫 描 时 间 , 如 UDP扫 描 和 版 本 检 测 。 同 样 , 防 火 墙 配 置 以 及 特 殊 的 响 应 速 度 限 制 也 会 增 加 时 间 。 Nmap使 用 了 并 行 算 法 和 许 多 先 进 的 算 法 来 加 速 扫 描 , 用 户 对 Nmap如 何 工 作 有 最 终 的 控 制 权 。 高 级 用 户 可 以 仔 细 地 调 整 Nmap命 令 , 在 满 足 时 间 要 求 的 同 时 获 得 他 们 所 关 心 的 信 息 。 改 善 扫 描 时 间 的 技 术 有 : 忽 略 非 关 键 的 检 测 、 升 级 最 新 版 本 的 Nmap(性 能 增 强 不 断 改 善 )。 优 化 时 间 参 数 也 会 带 来 实 质 性 的 变 化 , 这 些 参 数 如 下 。

--min-hostgroup <size>; --max-hostgroup <size> (调 整 并 行 扫 描 组 的 大 小 )

Nmap具 有 并 行 扫 描 多 主 机 端 口 或 版 本 的 能 力 , Nmap将 多 个 目 标 IP地 址 空 间 分 成 组 , 然 后 在 同 一 时 间 对 一 个 组 进 行 扫 描 。 通 常 , 大 的 组 更 有 效 。 缺 点 是 只 有 当 整 个 组 扫 描 结 束 后 才 会 提 供 主 机 的 扫 描 结 果 。 如 果 组 的 大 小 定 义 为 50, 则 只 有 当 前 50个 主 机 扫 描 结 束 后 才 能 得 到 报 告 (详 细 模 式 中 的 补 充 信 息 除 外 )。 默 认 方 式 下 , Nmap采 取 折 衷 的 方 法 。 开 始 扫 描 时 的 组 较 小 , 最 小 为 5, 这 样 便 于 尽 快 产 生 结 果 ; 随 后 增 长 组 的 大 小 , 最 大 为 1024。 确 切 的 大 小 依 赖 于 所 给 定 的 选 项 。 为 保 证 效 率 , 针 对 UDP或 少 量 端 口 的 TCP扫 描 , Nmap 使 用 大 的 组 。

--max-hostgroup选 项 用 于 说 明 使 用 最 大 的 组 , Nmap不 会 超 出 这 个 大 小 。 --min-hostgroup选 项 说 明 最 小 的 组 , Nmap 会 保 持 组 大 于 这 个 值 。 如 果 在 指 定 的 接 口 上 没 有 足 够 的 目 标 主 机 来 满 足 所 指 定 的 最 小 值 , Nmap可 能 会 采 用 比 所 指 定 的 值 小 的 组 。 这 两 个 参 数 虽 然 很 少 使 用 , 但 都 用 于 保 持 组 的 大 小 在 一 个 指 定 的 范 围 之 内 。 这 些 选 项 的 主 要 用 途 是 说 明 一 个 最 小 组 的 大 小 , 使 得 整 个 扫 描 更 加 快 速 。 通 常 选 择 256来 扫 描 C类 网 段 。 对 于 端 口 数 较 多 的 扫 描 , 超 出 该 值 没 有 意 义 。 对 于 端 口 数 较 少 的 扫 描 , 2048或 更 大 的 组 大 小 是 有 帮 助 的 。

--min-parallelism <numprobes>; --max-parallelism <numprobes> (调 整 探 测 报 文 的 并 行 度 ) 这 些 选 项 控 制 用 于 主 机 组 的 探 测 报 文 数 量 , 可 用 于 端 口 扫 描 和 主 机 发 现 。 默 认 状 态 下 , Nmap基 于 网 络 性 能 计 算 一 个 理 想 的 并 行 度 , 这 个 值 经 常 改 变 。 如 果 报 文 被 丢 弃 , Nmap降 低 速 度 , 探 测 报 文 数 量 减 少 。 随 着 网 络 性 能 的 改 善 , 理 想 的 探 测 报 文 数 量 会 缓 慢 增 加 。 这 些 选 项 确 定 这 个 变 量 的 大 小 范 围 。 默 认 状 态 下 , 当 网 络 不 可 靠 时 , 理 想 的 并 行 度 值 可 能 为 1, 在 好 的 条 件 下 , 可 能 会 增 长 至 几 百 。 最 常 见 的 应 用 是 --min-parallelism值 大 于 1, 以 加 快 性 能 不 佳 的 主 机 或 网 络 的 扫 描 。 这 个 选 项 具 有 风 险 , 如 果 过 高 则 影 响 准 确 度 , 同 时 也 会 降 低 Nmap基 于 网 络 条 件 动 态 控 制 并 行 度 的 能 力 。 这 个 值 设 为 10较 为 合 适 , 这 个 值 的 调 整 往 往 作 为 最 后 的 手 段 。

--max-parallelism选 项 通 常 设 为 1, 以 防 止 Nmap在 同 一 时 间 向 主 机 发 送 多 个 探 测 报 文 , 和 选 择 --scan-delay同 时 使 用 非 常 有 用 , 虽 然 这 个 选 项 本 身 的 用 途 已 经 很 好 。

--min-rtt-timeout <milliseconds>--max-rtt-timeout <milliseconds>--initial-rtt-timeout <milliseconds> (调 整 探 测 报 文 超 时 )

Nmap使 用 一 个 运 行 超 时 值 来 确 定 等 待 探 测 报 文 响 应 的 时 间 , 随 后 会 放 弃 或 重 新 发 送 探 测 报 文 。 Nmap基 于 上 一 个 探 测 报 文 的 响 应 时 间 来 计 算 超 时 值 , 如 果 网 络 延 迟 比 较 显 著 和 不 定 , 这 个 超 时 值 会 增 加 几 秒 。 初 始 值 的 比 较 保 守 (高 ), 而 当 Nmap扫 描 无 响 应 的 主 机 时 , 这 个 保 守 值 会 保 持 一 段 时 间 。 这 些 选 项 以 毫 秒 为 单 位 , 采 用 小 的 --max-rtt-timeout值 , 使 --initial-rtt-timeout值 大 于 默 认 值 可 以 明 显 减 少 扫 描 时 间 , 特 别 是 对 不 能 ping通 的 扫 描 (-P0)以 及 具 有 严 格 过 滤 的 网 络 。 如 果 使 用 太 小 的 值 , 使 得 很 多 探 测 报 文 超 时 从 而 重 新 发 送 , 而 此 时 可 能 响 应 消 息 正 在 发 送 , 这 使 得 整 个 扫 描 的 时 间 会 增 加 。 如 果 所 有 的 主 机 都 在 本 地 网 络 , 对 于 --max-rtt-timeout值 来 说 , 100毫 秒 比 较 合 适 。 如 果 存 在 路 由 , 首 先 使 用 ICMP ping工 具 ping主 机 , 或 使 用 其 它 报 文 工 具 如 hpings, 可 以 更 好 地 穿 透 防 火 墙 。 查 看 大 约 10个 包 的 最 大 往 返 时 间 , 然 后 将 --initial-rtt-timeout设 成 这 个 时 间 的 2倍 , --max-rtt-timeout 可 设 成 这 个 时 间 值 的 3倍 或 4倍 。 通 常 , 不 管 ping的 时 间 是 多 少 , 最 大 的 rtt值 不 得 小 于 100ms, 不 能 超 过 1000ms。

--min-rtt-timeout这 个 选 项 很 少 使 用 , 当 网 络 不 可 靠 时 , Nmap的 默 认 值 也 显 得 过 于 强 烈 , 这 时 这 个 选 项 可 起 作 用 。 当 网 络 看 起 来 不 可 靠 时 , Nmap仅 将 超 时 时 间 降 至 最 小 值 , 这 个 情 况 是 不 正 常 的 , 需 要 向 nmap-dev邮 件 列 表 报 告 bug。

--host-timeout <milliseconds> (放 弃 低 速 目 标 主 机 ) 由 于 性 能 较 差 或 不 可 靠 的 网 络 硬 件 或 软 件 、 带 宽 限 制 、 严 格 的 防 火 墙 等 原 因 , 一 些 主 机 需 要 很 长 的 时 间 扫 描 。 这 些 极 少 数 的 主 机 扫 描 往 往 占 据 了 大 部 分 的 扫 描 时 间 。 因 此 , 最 好 的 办 法 是 减 少 时 间 消 耗 并 且 忽 略 这 些 主 机 , 使 用 --host-timeout选 项 来 说 明 等 待 的 时 间 (毫 秒 )。 通 常 使 用 1800000 来 保 证 Nmap不 会 在 单 个 主 机 上 使 用 超 过 半 小 时 的 时 间 。 需 要 注 意 的 是 , Nmap在 这 半 小 时 中 可 以 同 时 扫 描 其 它 主 机 , 因 此 并 不 是 完 全 放 弃 扫 描 。 超 时 的 主 机 被 忽 略 , 因 此 也 没 有 针 对 该 主 机 的 端 口 表 、 操 作 系 统 检 测 或 版 本 检 测 结 果 的 输 出 。

--scan-delay <milliseconds>; --max-scan-delay <milliseconds> (调 整 探 测 报 文 的 时 间 间 隔 ) 这 个 选 项 用 于 Nmap控 制 针 对 一 个 主 机 发 送 探 测 报 文 的 等 待 时 间 (毫 秒 ), 在 带 宽 控 制 的 情 况 下 这 个 选 项 非 常 有 效 。 Solaris主 机 在 响 应 UDP扫 描 探 测 报 文 报 文 时 , 每 秒 只 发 送 一 个 ICMP消 息 , 因 此 Nmap发 送 的 很 多 数 探 测 报 文 是 浪 费 的 。 --scan-delay 设 为 1000, 使 Nmap低 速 运 行 。 Nmap尝 试 检 测 带 宽 控 制 并 相 应 地 调 整 扫 描 的 延 迟 , 但 并 不 影 响 明 确 说 明 何 种 速 度 工 作 最 佳 。

--scan-delay的 另 一 个 用 途 是 躲 闭 基 于 阈 值 的 入 侵 检 测 和 预 防 系 统 (IDS/IPS)。

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (设 置 时 间 模 板 ) 上 述 优 化 时 间 控 制 选 项 的 功 能 很 强 大 也 很 有 效 , 但 有 些 用 户 会 被 迷 惑 。 此 外 , 往 往 选 择 合 适 参 数 的 时 间 超 过 了 所 需 优 化 的 扫 描 时 间 。 因 此 , Nmap提 供 了 一 些 简 单 的 方 法 , 使 用 6个 时 间 模 板 , 使 用 时 采 用 -T选 项 及 数 字 (0 - 5) 或 名 称 。 模 板 名 称 有 paranoid (0)、 sneaky (1)、 polite (2)、 normal(3)、 aggressive (4)和 insane (5)。 前 两 种 模 式 用 于 IDS躲 避 , Polite模 式 降 低 了 扫 描 速 度 以 使 用 更 少 的 带 宽 和 目 标 主 机 资 源 。 默 认 模 式 为 Normal, 因 此 -T3 实 际 上 是 未 做 任 何 优 化 。 Aggressive模 式 假 设 用 户 具 有 合 适 及 可 靠 的 网 络 从 而 加 速 扫 描 。 Insane模 式 假 设 用 户 具 有 特 别 快 的 网 络 或 者 愿 意 为 获 得 速 度 而 牺 牲 准 确 性 。 用 户 可 以 根 据 自 己 的 需 要 选 择 不 同 的 模 板 , 由 Nmap负 责 选 择 实 际 的 时 间 值 。 模 板 也 会 针 对 其 它 的 优 化 控 制 选 项 进 行 速 度 微 调 。 例 如 , -T4 针 对 TCP端 口 禁 止 动 态 扫 描 延 迟 超 过 10ms, -T5对 应 的 值 为 5ms。 模 板 可 以 和 优 化 调 整 控 制 选 项 组 合 使 用 , 但 模 板 必 须 首 先 指 定 , 否 则 模 板 的 标 准 值 会 覆 盖 用 户 指 定 的 值 。 建 议 在 扫 描 可 靠 的 网 络 时 使 用 -T4, 即 使 在 自 己 要 增 加 优 化 控 制 选 项 时 也 使 用 (在 命 令 行 的 开 始 ), 从 而 从 这 些 额 外 的 较 小 的 优 化 中 获 益 。 如 果 用 于 有 足 够 的 带 宽 或 以 太 网 连 接 , 仍 然 建 议 使 用 -T4选 项 。 有 些 用 户 喜 欢 -T5选 项 , 但 这 个 过 于 强 烈 。 有 时 用 户 考 虑 到 避 免 使 主 机 崩 溃 或 者 希 望 更 礼 貌 一 些 会 采 用 -T2选 项 。 他 们 并 没 意 识 到 -T Polite选 项 是 如 何 的 慢 , 这 种 模 式 的 扫 描 比 默 认 方 式 实 际 上 要 多 花 10倍 的 时 间 。 默 认 时 间 选 项 (-T3)很 少 有 主 机 崩 溃 和 带 宽 问 题 , 比 较 适 合 于 谨 慎 的 用 户 。 不 进 行 版 本 检 测 比 进 行 时 间 调 整 能 更 有 效 地 解 决 这 些 问 题 。 虽 然 -T0-T1选 项 可 能 有 助 于 避 免 IDS告 警 , 但 在 进 行 上 千 个 主 机 或 端 口 扫 描 时 , 会 显 著 增 加 时 间 。 对 于 这 种 长 时 间 的 扫 描 , 宁 可 设 定 确 切 的 时 间 值 , 而 不 要 去 依 赖 封 装 的 -T0-T1选 项 。

T0选 项 的 主 要 影 响 是 对 于 连 续 扫 描 , 在 一 个 时 间 只 能 扫 描 一 个 端 口 , 每 个 探 测 报 文 的 发 送 间 隔 为 5分 钟 。 T1T2选 项 比 较 类 似 , 探 测 报 文 间 隔 分 别 为 15秒 和 0.4秒 。 T3是 Nmap的 默 认 选 项 , 包 含 了 并 行 扫 描 。 T4选 项 与 --max-rtt-timeout 1250 --initial-rtt-timeout 500 等 价 , 最 大 TCP扫 描 延 迟 为 10ms。 T5等 价 于 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000, 最 大 TCP扫 描 延 迟 为 5ms。

防 火 墙 /IDS躲 避 和 哄 骗

很 多 Internet先 驱 们 设 想 了 一 个 全 球 开 放 的 网 络 , 使 用 全 局 的 IP 地 址 空 间 , 使 得 任 何 两 个 节 点 之 间 都 有 虚 拟 连 接 。 这 使 得 主 机 间 可 以 作 为 真 正 的 对 等 体 , 相 互 间 提 供 服 务 和 获 取 信 息 。 人 们 可 以 在 工 作 时 访 问 家 里 所 有 的 系 统 、 调 节 空 调 温 度 、 为 提 前 到 来 的 客 人 开 门 。 随 后 , 这 些 全 球 连 接 的 设 想 受 到 了 地 址 空 间 短 缺 和 安 全 考 虑 的 限 制 。 在 90年 代 早 期 , 各 种 机 构 开 始 部 署 防 火 墙 来 实 现 减 少 连 接 的 目 的 , 大 型 网 络 通 过 代 理 、 NAT和 包 过 滤 器 与 未 过 滤 的 Internet隔 离 。 不 受 限 的 信 息 流 被 严 格 控 制 的 可 信 通 信 通 道 信 息 流 所 替 代 。 类 似 防 火 墙 的 网 络 隔 离 使 得 对 网 络 的 搜 索 更 加 困 难 , 随 意 的 搜 索 变 得 不 再 简 单 。 然 而 , Nmap提 供 了 很 多 特 性 用 于 理 解 这 些 复 杂 的 网 络 , 并 且 检 验 这 些 过 滤 器 是 否 正 常 工 作 。 此 外 , Nmap提 供 了 绕 过 某 些 较 弱 的 防 范 机 制 的 手 段 。 检 验 网 络 安 全 状 态 最 有 效 的 方 法 之 一 是 尝 试 哄 骗 网 络 , 将 自 己 想 象 成 一 个 攻 击 者 , 使 用 本 节 提 供 的 技 术 来 攻 击 自 己 的 网 络 。 如 使 用 FTP bounce扫 描 、 Idle扫 描 、 分 片 攻 击 或 尝 试 穿 透 自 己 的 代 理 。 除 限 止 网 络 的 行 为 外 , 使 用 入 侵 检 测 系 统 (IDS)的 公 司 也 不 断 增 加 。 由 于 Nmap 常 用 于 攻 击 前 期 的 扫 描 , 因 此 所 有 主 流 的 IDS都 包 含 了 检 测 Nmap扫 描 的 规 则 。 现 在 , 这 些 产 品 变 形 为 入 侵 预 防 系 统 (IPS), 可 以 主 动 地 阻 止 可 疑 的 恶 意 行 为 。 不 幸 的 是 , 网 络 管 理 员 和 IDS厂 商 通 过 分 析 报 文 来 检 测 恶 意 行 为 是 一 个 艰 苦 的 工 作 , 有 耐 心 和 技 术 的 攻 击 者 , 在 特 定 Nmap选 项 的 帮 助 下 , 常 常 可 以 不 被 IDS检 测 到 。 同 时 , 管 理 员 必 须 应 付 大 量 的 误 报 结 果 , 正 常 的 行 为 被 误 判 而 被 改 变 或 阻 止 。 有 时 , 人 们 建 议 Nmap不 应 该 提 供 躲 闭 防 火 墙 规 则 或 哄 骗 IDS的 功 能 , 这 些 功 能 可 能 会 被 攻 击 者 滥 用 , 然 而 管 理 员 却 可 以 利 用 这 些 功 能 来 增 强 安 全 性 。 实 际 上 , 攻 击 的 方 法 仍 可 被 攻 击 者 利 用 , 他 们 可 以 发 现 其 它 工 具 或 Nmap的 补 丁 程 序 。 同 时 , 管 理 员 发 现 攻 击 者 的 工 作 更 加 困 难 , 相 比 较 采 取 措 施 来 预 防 执 行 FTP Bounce攻 击 的 工 具 而 言 , 部 署 先 进 的 、 打 过 补 丁 的 FTP服 务 器 更 加 有 效 。

Nmap不 提 供 检 测 和 破 坏 防 火 墙 及 IDS系 统 的 魔 弹 (或 Nmap选 项 ), 它 使 用 的 是 技 术 和 经 验 , 这 超 出 了 本 参 考 手 册 的 范 围 , 下 面 描 述 了 相 关 的 选 项 和 完 成 的 工 作 。

-f (报 文 分 段 ); --mtu (使 用 指 定 的 MTU)

-f选 项 要 求 扫 描 时 (包 挺 ping扫 描 )使 用 小 的 IP包 分 段 。 其 思 路 是 将 TCP头 分 段 在 几 个 包 中 , 使 得 包 过 滤 器 、 IDS以 及 其 它 工 具 的 检 测 更 加 困 难 。 必 须 小 心 使 用 这 个 选 项 , 有 些 系 统 在 处 理 这 些 小 包 时 存 在 问 题 , 例 如 旧 的 网 络 嗅 探 器 Sniffit在 接 收 到 第 一 个 分 段 时 会 立 刻 出 现 分 段 错 误 。 该 选 项 使 用 一 次 , Nmap在 IP 头 后 将 包 分 成 8个 字 节 或 更 小 。 因 此 , 一 个 20字 节 的 TCP头 会 被 分 成 3个 包 , 其 中 2个 包 分 别 有 TCP头 的 8个 字 节 , 另 1个 包 有 TCP头 的 剩 下 4个 字 节 。 当 然 , 每 个 包 都 有 一 个 IP头 。 再 次 使 用 -f可 使 用 16字 节 的 分 段 (减 少 分 段 数 量 )。 使 用 --mtu选 项 可 以 自 定 义 偏 移 的 大 小 , 使 用 时 不 需 要 -f, 偏 移 量 必 须 是 8的 倍 数 。 包 过 滤 器 和 防 火 墙 对 所 有 的 IP分 段 排 队 , 如 Linux核 心 中 的 CONFIG-IP-ALWAYS-DEFRAG配 置 项 , 分 段 包 不 会 直 接 使 用 。 一 些 网 络 无 法 承 受 这 样 所 带 来 的 性 能 冲 击 , 会 将 这 个 配 置 禁 止 。 其 它 禁 止 的 原 因 有 分 段 包 会 通 过 不 同 的 路 由 进 入 网 络 。 一 些 源 系 统 在 内 核 中 对 发 送 的 报 文 进 行 分 段 , 使 用 iptables连 接 跟 踪 模 块 的 Linux就 是 一 个 例 子 。 当 使 用 类 似 Ethereal 的 嗅 探 器 时 , 扫 描 必 须 保 证 发 送 的 报 文 要 分 段 。 如 果 主 机 操 作 系 统 会 产 生 问 题 , 尝 试 使 用 --send-eth选 项 以 避 开 IP层 而 直 接 发 送 原 始 的 以 太 网 帧 。

-D <decoy1 [, decoy2][, ME], ...> (使 用 诱 饵 隐 蔽 扫 描 ) 为 使 诱 饵 扫 描 起 作 用 , 需 要 使 远 程 主 机 认 为 是 诱 饵 在 扫 描 目 标 网 络 。 IDS可 能 会 报 个 某 个 IP的 5-10个 端 口 扫 描 , 但 并 不 知 道 哪 个 IP在 扫 描 以 及 哪 些 不 是 诱 饵 。 但 这 种 方 式 可 以 通 过 路 由 跟 踪 、 响 应 丢 弃 以 及 其 它 主 动 机 制 在 解 决 。 这 是 一 种 常 用 的 隐 藏 自 身 IP地 址 的 有 效 技 术 。 使 用 逗 号 分 隔 每 个 诱 饵 主 机 , 也 可 用 自 己 的 真 实 IP作 为 诱 饵 , 这 时 可 使 用 ME选 项 说 明 。 如 果 在 第 6个 位 置 或 更 后 的 位 置 使 用 ME选 项 , 一 些 常 用 端 口 扫 描 检 测 器 (如 Solar Designer's excellent scanlogd)就 不 会 报 告 这 个 真 实 IP。 如 果 不 使 用 ME选 项 , Nmap 将 真 实 IP放 在 一 个 随 机 的 位 置 注 意 , 作 为 诱 饵 的 主 机 须 在 工 作 状 态 , 否 则 会 导 致 目 标 主 机 的 SYN洪 水 攻 击 。 如 果 在 网 络 中 只 有 一 个 主 机 在 工 作 , 那 就 很 容 易 确 定 哪 个 主 机 在 扫 描 。 也 可 使 用 IP地 址 代 替 主 机 名 (被 诱 骗 的 网 络 就 不 可 能 在 名 字 服 务 器 日 志 中 发 现 )。 诱 饵 可 用 在 初 始 的 ping扫 描 (ICMP、 SYN、 ACK等 )阶 段 或 真 正 的 端 口 扫 描 阶 段 。 诱 饵 也 可 以 用 于 远 程 操 作 系 统 检 测 (-O)。 在 进 行 版 本 检 测 或 TCP连 接 扫 描 时 , 诱 饵 无 效 。 使 用 过 多 的 诱 饵 没 有 任 何 价 值 , 反 而 导 致 扫 描 变 慢 并 且 结 果 不 准 确 。 此 外 , 一 些 ISP会 过 滤 哄 骗 的 报 文 , 但 很 多 对 欺 骗 IP包 没 有 任 何 限 制 。

-S <IP_Address> (源 地 址 哄 骗 ) 在 某 些 情 况 下 , Nmap可 能 无 法 确 定 你 的 源 地 址 (如 果 这 样 , Nmap会 给 出 提 示 )。 此 时 , 使 用 -S选 项 并 说 明 所 需 发 送 包 的 接 口 IP地 址 。 这 个 标 志 的 另 一 个 用 处 是 哄 骗 性 的 扫 描 , 使 得 目 标 认 为 是 另 一 个 地 址 在 进 行 扫 描 。 可 以 想 象 某 一 个 竞 争 对 手 在 不 断 扫 描 某 个 公 司 ! -e选 项 常 在 这 种 情 况 下 使 用 , 也 可 采 用 -P0选 项 。

-e <interface> (使 用 指 定 的 接 口 ) 告 诉 Nmap使 用 哪 个 接 口 发 送 和 接 收 报 文 , Nmap可 以 进 行 自 动 检 测 , 如 果 检 测 不 出 会 给 出 提 示 。

--source-port <portnumber>; -g <portnumber> (源 端 口 哄 骗 ) 仅 依 赖 于 源 端 口 号 就 信 任 数 据 流 是 一 种 常 见 的 错 误 配 置 , 这 个 问 题 非 常 好 理 解 。 例 如 一 个 管 理 员 部 署 了 一 个 新 的 防 火 墙 , 但 招 来 了 很 多 用 户 的 不 满 , 因 为 他 们 的 应 用 停 止 工 作 了 。 可 能 是 由 于 外 部 的 UDP DNS服 务 器 响 应 无 法 进 入 网 络 , 而 导 致 DNS的 崩 溃 。 FTP是 另 一 个 常 见 的 例 子 , 在 FTP传 输 时 , 远 程 服 务 器 尝 试 和 内 部 用 建 立 连 接 以 传 输 数 据 。 对 这 些 问 题 有 安 全 解 决 方 案 , 通 常 是 应 用 级 代 理 或 协 议 分 析 防 火 墙 模 块 。 但 也 存 在 一 些 不 安 全 的 方 案 。 注 意 到 DNS响 应 来 自 于 53端 口 , FTP连 接 来 自 于 20端 口 , 很 多 管 理 员 会 掉 入 一 个 陷 阱 , 即 允 许 来 自 于 这 些 端 口 的 数 据 进 入 网 络 。 他 们 认 为 这 些 端 口 里 不 会 有 值 得 注 意 的 攻 击 和 漏 洞 利 用 。 此 外 , 管 理 员 或 许 认 为 这 是 一 个 短 期 的 措 施 , 直 至 他 们 采 取 更 安 全 的 方 案 。 但 他 们 忽 视 了 安 全 的 升 级 。 不 仅 仅 是 工 作 量 过 多 的 网 络 管 理 员 掉 入 这 种 陷 阱 , 很 多 产 品 本 身 也 会 有 这 类 不 安 全 的 隐 患 , 甚 至 是 微 软 的 产 品 。 Windows 2000和 Windows XP中 包 含 的 IPsec过 滤 器 也 包 含 了 一 些 隐 含 规 则 , 允 许 所 有 来 自 88端 口 (Kerberos)的 TCP和 UDP数 据 流 。 另 一 个 常 见 的 例 子 是 Zone Alarm个 人 防 火 墙 到 2.1.25版 本 仍 然 允 许 源 端 口 53(DNS)或 67(DHCP)的 UDP包 进 入 。

Nmap提 供 了 -g--source-port选 项 (它 们 是 等 价 的 ), 用 于 利 用 上 述 弱 点 。 只 需 要 提 供 一 个 端 口 号 , Nmap就 可 以 从 这 些 端 口 发 送 数 据 。 为 使 特 定 的 操 作 系 统 正 常 工 作 , Nmap必 须 使 用 不 同 的 端 口 号 。 DNS请 求 会 忽 略 --source-port选 项 , 这 是 因 为 Nmap依 靠 系 统 库 来 处 理 。 大 部 分 TCP扫 描 , 包 括 SYN扫 描 , 可 以 完 全 支 持 这 些 选 项 , UDP扫 描 同 样 如 此 。

--data-length <number> (发 送 报 文 时 附 加 随 机 数 据 ) 正 常 情 况 下 , Nmap发 送 最 少 的 报 文 , 只 含 一 个 包 头 。 因 此 TCP包 通 常 是 40字 节 , ICMP ECHO请 求 只 有 28字 节 。 这 个 选 项 告 诉 Nmap在 发 送 的 报 文 上 附 加 指 定 数 量 的 随 机 字 节 。 操 作 系 统 检 测 (-O)包 不 受 影 响 , 但 大 部 分 ping和 端 口 扫 描 包 受 影 响 , 这 会 使 处 理 变 慢 , 但 对 扫 描 的 影 响 较 小 。

--ttl <value> (设 置 IP time-to-live域 ) 设 置 IPv4报 文 的 time-to-live域 为 指 定 的 值 。

--randomize-hosts (对 目 标 主 机 的 顺 序 随 机 排 列 ) 告 诉 Nmap在 扫 描 主 机 前 对 每 个 组 中 的 主 机 随 机 排 列 , 最 多 可 达 8096个 主 机 。 这 会 使 得 扫 描 针 对 不 同 的 网 络 监 控 系 统 来 说 变 得 不 是 很 明 显 , 特 别 是 配 合 值 较 小 的 时 间 选 项 时 更 有 效 。 如 果 需 要 对 一 个 较 大 的 组 进 行 随 机 排 列 , 需 要 增 大 nmap.h文 件 中 PING-GROUP-SZ的 值 , 并 重 新 编 译 。 另 一 种 方 法 是 使 用 列 表 扫 描 (-sL -n -oN filename), 产 生 目 标 IP的 列 表 , 使 用 Perl脚 本 进 行 随 机 化 , 然 后 使 用 -iL提 供 给 Nmap。

--spoof-mac <mac address, prefix, or vendor name> (MAC地 址 哄 骗 ) 要 求 Nmap在 发 送 原 以 太 网 帧 时 使 用 指 定 的 MAC地 址 , 这 个 选 项 隐 含 了 --send-eth选 项 , 以 保 证 Nmap真 正 发 送 以 太 网 包 。 MAC地 址 有 几 种 格 式 。 如 果 简 单 地 使 用 字 符 串 “0”, Nmap选 择 一 个 完 全 随 机 的 MAC 地 址 。 如 果 给 定 的 字 符 品 是 一 个 16进 制 偶 数 (使 用 :分 隔 ), Nmap将 使 用 这 个 MAC地 址 。 如 果 是 小 于 12的 16进 制 数 字 , Nmap会 随 机 填 充 剩 下 的 6个 字 节 。 如 果 参 数 不 是 0或 16进 制 字 符 串 , Nmap将 通 过 nmap-mac-prefixes查 找 厂 商 的 名 称 (大 小 写 区 分 ), 如 果 找 到 匹 配 , Nmap将 使 用 厂 商 的 OUI(3字 节 前 缀 ), 然 后 随 机 填 充 剩 余 的 3个 节 字 。 正 确 的 --spoof-mac参 数 有 , Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, 和 Cisco.

输 出

任 何 安 全 工 具 只 有 在 输 出 结 果 时 才 是 有 价 值 的 , 如 果 没 有 通 过 组 织 和 易 于 理 解 的 方 式 来 表 达 , 复 杂 的 测 试 和 算 法 几 乎 没 有 意 义 。 Nmap提 供 了 一 些 方 式 供 用 户 和 其 它 软 件 使 用 , 实 际 上 , 没 有 一 种 方 式 可 以 使 所 有 人 满 意 。 因 此 Nmap提 供 了 一 些 格 式 , 包 含 了 方 便 直 接 查 看 的 交 互 方 式 和 方 便 软 件 处 理 的 XML格 式 。 除 了 提 供 输 出 格 式 外 , Nmap还 提 供 了 选 项 来 控 制 输 出 的 细 节 以 及 调 试 信 息 。 输 出 内 容 可 发 送 给 标 准 输 出 或 命 名 文 件 , 可 以 追 加 或 覆 盖 。 输 出 文 件 还 可 被 用 于 继 续 中 断 的 扫 描 。

Nmap提 供 5种 不 同 的 输 出 格 式 。 默 认 的 方 式 是 interactive output, 发 送 给 标 准 输 出 (stdout)。 normal output方 式 类 似 于 interactive, 但 显 示 较 少 的 运 行 时 间 信 息 和 告 警 信 息 , 这 是 由 于 这 些 信 息 是 在 扫 描 完 全 结 束 后 用 于 分 析 , 而 不 是 交 互 式 的 。

XML输 出 是 最 重 要 的 输 出 类 型 , 可 被 转 换 成 HTML, 对 于 程 序 处 理 非 常 方 便 , 如 用 于 Nmap图 形 用 户 接 口 或 导 入 数 据 库 。 另 两 种 输 出 类 型 比 较 简 单 , grepable output格 式 , 在 一 行 中 包 含 目 标 主 机 最 多 的 信 息 ; sCRiPt KiDDi3 0utPUt 格 式 , 用 于 考 虑 自 己 的 用 户 |<-r4d。 交 互 式 输 出 是 默 认 方 式 , 没 有 相 应 的 命 令 行 选 项 , 其 它 四 种 格 式 选 项 使 用 相 同 的 语 法 , 采 用 一 个 参 数 , 即 存 放 结 果 的 文 件 名 。 多 种 格 式 可 同 时 使 用 , 但 一 种 格 式 只 能 使 用 一 次 。 例 如 , 在 标 准 输 出 用 于 查 看 的 同 时 , 可 将 结 果 保 存 到 XML文 件 用 于 程 序 分 析 , 这 时 可 以 使 用 选 项 -oX myscan.xml -oN myscan.nmap。 为 便 于 描 述 的 简 化 , 本 章 使 用 类 似 于 myscan.xml的 简 单 文 件 名 , 建 议 采 用 更 具 有 描 述 性 的 文 件 名 。 文 件 名 的 选 择 与 个 人 喜 好 有 关 , 建 议 增 加 扫 描 日 期 以 及 一 到 两 个 单 词 来 描 述 , 并 放 置 于 一 个 目 录 中 。 在 将 结 果 输 出 到 文 件 的 同 时 , Nmap仍 将 结 果 发 送 给 标 准 输 出 。 例 如 , 命 令 nmap -oX myscan.xml target将 输 出 XML至 myscan.xml, 并 在 stdout 上 打 印 相 同 的 交 互 式 结 果 , 而 此 时 -oX选 项 没 有 采 用 。 可 以 使 用 连 字 符 作 为 选 项 来 改 变 , 这 使 得 Nmap禁 止 交 互 式 输 出 , 而 是 将 结 果 打 印 到 所 指 定 的 标 准 输 出 流 中 。 因 此 , 命 令 nmap -oX - target只 输 出 XML至 标 准 输 出 stdout。 严 重 错 误 仍 然 是 输 出 到 标 准 错 误 流 stderr中 。 与 其 它 Nmap参 数 不 同 , 日 志 文 件 选 项 的 空 格 (如 -oX)和 文 件 名 或 连 字 符 是 必 需 的 。 如 果 省 略 了 标 记 , 例 如 -oG--oXscan.xml, Nmap的 向 后 兼 容 特 点 将 建 立 标 准 格 式 的 输 出 文 件 , 相 应 的 文 件 名 为 G-和 Xscan.xml。

Nmap还 提 供 了 控 制 扫 描 细 节 以 及 输 出 文 件 的 添 加 或 覆 盖 的 选 项 , 这 些 选 项 如 下 所 述 。

Nmap输 出 格 式

-oN <filespec> (标 准 输 出 ) 要 求 将 标 准 输 出 直 接 写 入 指 定 的 文 件 。 如 上 所 述 , 这 个 格 式 与 交 互 式 输 出 略 有 不 同 。

-oX <filespec> (XML输 出 ) 要 求 XML输 出 直 接 写 入 指 定 的 文 件 。 Nmap包 含 了 一 个 文 档 类 型 定 义 (DTD), 使 XML解 析 器 有 效 地 进 行 XML输 出 。 这 主 要 是 为 了 程 序 应 用 , 同 时 也 可 以 协 助 人 工 解 释 Nmap的 XML输 出 。 DTD定 义 了 合 法 的 格 式 元 素 , 列 举 可 使 用 的 属 性 和 值 。 最 新 的 版 本 可 在 https://nmap.org/data/nmap.dtd获 取 。

XML提 供 了 可 供 软 件 解 析 的 稳 定 格 式 输 出 , 主 要 的 计 算 机 语 言 都 提 供 了 免 费 的 XML解 析 器 , 如 C/C++, Perl, Python和 Java。 针 对 这 些 语 言 有 一 些 捆 绑 代 码 用 于 处 理 Nmap的 输 出 和 特 定 的 执 行 程 序 。 例 如 perl CPAN中 的 Nmap::Scanner [8] Nmap::Parser [9] 。 对 几 乎 所 有 与 Nmap有 接 口 的 主 要 应 用 来 说 , XML是 首 选 的 格 式 。

XML输 出 引 用 了 一 个 XSL样 式 表 , 用 于 格 式 化 输 出 结 果 , 类 似 于 HTML。 最 方 便 的 方 法 是 将 XML输 出 加 载 到 一 个 Web浏 览 器 , 如 Firefox 或 IE。 由 于 nmap.xsl文 件 的 绝 对 路 径 , 因 此 通 常 只 能 在 运 行 了 Nmap的 机 器 上 工 作 (或 类 似 配 置 的 机 器 )。 类 似 于 任 何 支 持 Web机 器 的 HTML文 件 , --stylesheet 选 项 可 用 于 建 立 可 移 植 的 XML文 件 。

-oS <filespec> (ScRipT KIdd|3 oUTpuT) 脚 本 小 子 输 出 类 似 于 交 互 工 具 输 出 , 这 是 一 个 事 后 处 理 , 适 合 于 'l33t HaXXorZ, 由 于 原 来 全 都 是 大 写 的 Nmap输 出 。 这 个 选 项 和 脚 本 小 子 开 了 玩 笑 , 看 上 去 似 乎 是 为 了 “帮 助 他 们 ”。

-oG <filespec> (Grep输 出 ) 这 种 方 式 最 后 介 绍 , 因 为 不 建 议 使 用 。 XML输 格 式 很 强 大 , 便 于 有 经 验 的 用 户 使 用 。 XML是 一 种 标 准 , 由 许 多 解 析 器 构 成 , 而 Grep输 届 更 简 化 。 XML 是 可 扩 展 的 , 以 支 持 新 发 布 的 Nmap特 点 。 使 用 Grep输 出 的 目 的 是 忽 略 这 些 特 点 , 因 为 没 有 足 够 的 空 间 。 然 面 , Grep输 出 仍 然 很 常 使 用 。 它 是 一 种 简 单 格 式 , 每 行 一 个 主 机 , 可 以 通 过 UNIX工 具 (如 grep、 awk、 cut、 sed、 diff)和 Perl方 便 地 查 找 和 分 解 。 常 可 用 于 在 命 令 行 上 进 行 一 次 性 测 式 。 查 找 ssh端 口 打 开 或 运 行 Sloaris的 主 机 , 只 需 要 一 个 简 单 的 grep主 机 说 明 , 使 用 通 道 并 通 过 awk或 cut命 令 打 印 所 需 的 域 。

Grep输 出 可 以 包 含 注 释 (每 行 由 #号 开 始 )。 每 行 由 6个 标 记 的 域 组 成 , 由 制 表 符 及 冒 号 分 隔 。 这 些 域 有 主 机 , 端 口 , 协 议 , 忽 略 状 态 , 操 作 系 统 , 序 列 号 , IPID和 状 态 。 这 些 域 中 最 重 要 的 是 Ports, 它 提 供 了 所 关 注 的 端 口 的 细 节 , 端 口 项 由 逗 号 分 隔 。 每 个 端 口 项 代 表 一 个 所 关 注 的 端 口 , 每 个 子 域 由 /分 隔 。 这 些 子 域 有 : 端 口 号 , 状 态 , 协 议 , 拥 有 者 , 服 务 , SunRPCinfo和 版 本 信 息 。 对 于 XML输 出 , 本 手 册 无 法 列 举 所 有 的 格 式 , 有 关 Nmap Grep输 出 的 更 详 细 信 息 可 查 阅 http://www.unspecific.com/nmap-oG-output

-oA <basename> (输 出 至 所 有 格 式 ) 为 使 用 方 便 , 利 用 -oAbasename选 项 可 将 扫 描 结 果 以 标 准 格 式 、 XML格 式 和 Grep格 式 一 次 性 输 出 。 分 别 存 放 在 basename.nmap, basename.xml和 basename.gnmap文 件 中 。 也 可 以 在 文 件 名 前 指 定 目 录 名 , 如 在 UNIX中 , 使 用 ~/nmaplogs/foocorp/, 在 Window中 , 使 用 c:\hacking\sco on Windows。 细 节 和 调 试 选 项

-v (提 高 输 出 信 息 的 详 细 度 ) 通 过 提 高 详 细 度 , Nmap可 以 输 出 扫 描 过 程 的 更 多 信 息 。 输 出 发 现 的 打 开 端 口 , 若 Nmap认 为 扫 描 需 要 更 多 时 间 会 显 示 估 计 的 结 束 时 间 。 这 个 选 项 使 用 两 次 , 会 提 供 更 详 细 的 信 息 。 这 个 选 项 使 用 两 次 以 上 不 起 作 用 。 大 部 分 的 变 化 仅 影 响 交 互 式 输 出 , 也 有 一 些 影 响 标 准 和 脚 本 小 子 输 出 。 其 它 输 出 类 型 由 机 器 处 理 , 此 时 Nmap默 认 提 供 详 细 的 信 息 , 不 需 要 人 工 干 预 。 然 而 , 其 它 模 式 也 会 有 一 些 变 化 , 省 略 一 些 细 节 可 以 减 小 输 出 大 小 。 例 如 , Grep输 出 中 的 注 释 行 提 供 所 有 扫 描 端 口 列 表 , 但 由 于 这 些 信 息 过 长 , 因 此 只 能 在 细 节 模 式 中 输 出 。

-d [level] (提 高 或 设 置 调 试 级 别 ) 当 详 细 模 式 也 不 能 为 用 户 提 供 足 够 的 数 据 时 , 使 用 调 试 可 以 得 到 更 多 的 信 息 。 使 用 细 节 选 项 (-v)时 , 可 启 用 命 令 行 参 数 (-d), 多 次 使 用 可 提 高 调 试 级 别 。 也 可 在 -d 后 面 使 用 参 数 设 置 调 试 级 别 。 例 如 , -d9设 定 级 别 9。 这 是 最 高 的 级 别 , 将 会 产 生 上 千 行 的 输 出 , 除 非 只 对 很 少 的 端 口 和 目 标 进 行 简 单 扫 描 。 如 果 Nmap因 为 Bug而 挂 起 或 者 对 Nmap的 工 作 及 原 理 有 疑 问 , 调 试 输 出 非 常 有 效 。 主 要 是 开 发 人 员 用 这 个 选 项 , 调 试 行 不 具 备 自 我 解 释 的 特 点 。 例 如 , Timeoutvals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000。 如 果 对 某 行 输 出 不 明 白 , 可 以 忽 略 、 查 看 源 代 码 或 向 开 发 列 表 (nmap-dev)求 助 。 有 些 输 出 行 会 有 自 我 解 释 的 特 点 , 但 随 着 调 试 级 别 的 升 高 , 会 越 来 越 含 糊 。

--packet-trace (跟 踪 发 送 和 接 收 的 报 文 ) 要 求 Nmap打 印 发 送 和 接 收 的 每 个 报 文 的 摘 要 , 通 常 用 于 调 试 , 有 助 于 新 用 户 更 好 地 理 解 Nmap的 真 正 工 作 。 为 避 免 输 出 过 多 的 行 , 可 以 限 制 扫 描 的 端 口 数 , 如 -p20-30。 如 果 只 需 进 行 版 本 检 测 , 使 用 --version-trace

--iflist (列 举 接 口 和 路 由 ) 输 出 Nmap检 测 到 的 接 口 列 表 和 系 统 路 由 , 用 于 调 试 路 由 问 题 或 设 备 描 述 失 误 (如 Nmap把 PPP连 接 当 作 以 太 网 对 待 )。 其 它 输 出 选 项

--append-output (在 输 出 文 件 中 添 加 ) 当 使 用 文 件 作 为 输 出 格 式 , 如 -oX-oN, 默 认 该 文 件 被 覆 盖 。 如 果 希 望 文 件 保 留 现 有 内 容 , 将 结 果 添 加 在 现 有 文 件 后 面 , 使 用 --append-output选 项 。 所 有 指 定 的 输 出 文 件 都 被 添 加 。 但 对 于 XML(-oX)扫 描 输 出 文 件 无 效 , 无 法 正 常 解 析 , 需 要 手 工 修 改 。

--resume <filename> (继 续 中 断 的 扫 描 ) 一 些 扩 展 的 Nmap运 行 需 要 很 长 的 时 间 -- 以 天 计 算 , 这 类 扫 描 往 往 不 会 结 束 。 可 以 进 行 一 些 限 制 , 禁 止 Nmap在 工 作 时 间 运 行 , 导 致 网 络 中 断 、 运 行 Nmap的 主 机 计 划 或 非 计 划 地 重 启 、 或 者 Nmap自 己 中 断 。 运 行 Nmap的 管 理 员 可 以 因 其 它 原 因 取 消 运 行 , 按 下 ctrl-C 即 可 。 从 头 开 始 启 动 扫 描 可 能 令 人 不 快 , 幸 运 的 是 , 如 果 标 准 扫 描 (-oN)或 Grep扫 描 (-oG)日 志 被 保 留 , 用 户 可 以 要 求 Nmap恢 复 终 止 的 扫 描 , 只 需 要 简 单 地 使 用 选 项 --resume并 说 明 标 准 /Grep扫 描 输 出 文 件 , 不 允 许 使 用 其 它 参 数 , Nmap会 解 析 输 出 文 件 并 使 用 原 来 的 格 式 输 出 。 使 用 方 式 如 nmap --resume logfilename。 Nmap将 把 新 地 结 果 添 加 到 文 件 中 , 这 种 方 式 不 支 持 XML输 出 格 式 , 原 因 是 将 两 次 运 行 结 果 合 并 至 一 个 XML文 件 比 较 困 难 。

--stylesheet <path or URL> (设 置 XSL样 式 表 , 转 换 XML输 出 )

Nmap提 从 了 XSL样 式 表 nmap.xsl, 用 于 查 看 或 转 换 XML输 出 至 HTML。 XML输 出 包 含 了 一 个 xml-stylesheet, 直 接 指 向 nmap.xml文 件 , 该 文 件 由 Nmap安 装 (或 位 于 Windows当 前 工 作 目 录 )。 在 Web浏 览 器 中 打 开 Nmap的 XML输 出 时 , 将 会 在 文 件 系 统 中 寻 找 nmap.xsl文 件 , 并 使 用 它 输 出 结 果 。 如 果 希 望 使 用 不 同 的 样 式 表 , 将 它 作 为 --stylesheet的 参 数 , 必 段 指 明 完 整 的 路 径 或 URL, 常 见 的 调 用 方 式 是 --stylesheet https://nmap.org/data/nmap.xsl。 这 告 诉 浏 览 器 从 Insecire.Org中 加 载 最 新 的 样 式 表 。 这 使 得 没 安 装 Nmap(和 nmap.xsl) 的 机 器 中 可 以 方 便 地 查 看 结 果 。 因 此 , URL更 方 便 使 用 , 本 地 文 件 系 统 的 nmap.xsl用 于 默 认 方 式 。

--no-stylesheet (忽 略 XML声 明 的 XSL样 式 表 ) 使 用 该 选 项 禁 止 Nmap的 XML输 出 关 联 任 何 XSL样 式 表 。 xml-stylesheet指 示 被 忽 略 。

其 它 选 项

本 节 描 述 一 些 重 要 的 (和 并 不 重 要 )的 选 项 , 这 些 选 项 不 适 合 其 它 任 何 地 方 。

-6 (启 用 IPv6扫 描 ) 从 2002年 起 , Nmap提 供 对 IPv6的 一 些 主 要 特 征 的 支 持 。 ping扫 描 (TCP-only)、 连 接 扫 描 以 及 版 本 检 测 都 支 持 IPv6。 除 增 加 -6选 项 外 , 其 它 命 令 语 法 相 同 。 当 然 , 必 须 使 用 IPv6地 址 来 替 换 主 机 名 , 如 3ffe:7501:4819:2000:210:f3ff:fe03:14d0。 除 “所 关 注 的 端 口 ”行 的 地 址 部 分 为 IPv6地 址 。

IPv6目 前 未 在 全 球 广 泛 采 用 , 目 前 在 一 些 国 家 (亚 洲 )应 用 较 多 , 一 些 高 级 操 作 系 统 支 持 IPv6。 使 用 Nmap的 IPv6功 能 , 扫 描 的 源 和 目 的 都 需 要 配 置 IPv6。 如 果 ISP(大 部 分 )不 分 配 IPv6地 址 , Nmap可 以 采 用 免 费 的 隧 道 代 理 。 一 种 较 好 的 选 择 是 BT Exact, 位 于 https://tb.ipv6.btexact.com/。 此 外 , 还 有 Hurricane Electric, 位 于 http://ipv6tb.he.net/。 6to4隧 道 是 另 一 种 常 用 的 免 费 方 法 。

-A (激 烈 扫 描 模 式 选 项 ) 这 个 选 项 启 用 额 外 的 高 级 和 高 强 度 选 项 , 目 前 还 未 确 定 代 表 的 内 容 。 目 前 , 这 个 选 项 启 用 了 操 作 系 统 检 测 (-O) 和 版 本 扫 描 (-sV), 以 后 会 增 加 更 多 的 功 能 。 目 的 是 启 用 一 个 全 面 的 扫 描 选 项 集 合 , 不 需 要 用 户 记 忆 大 量 的 选 项 。 这 个 选 项 仅 仅 启 用 功 能 , 不 包 含 用 于 可 能 所 需 要 的 时 间 选 项 (如 -T4)或 细 节 选 项 (-v)。

--datadir <directoryname> (说 明 用 户 Nmap数 据 文 件 位 置 )

Nmap在 运 行 时 从 文 件 中 获 得 特 殊 的 数 据 , 这 些 文 件 有 nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes和 nmap-os-fingerprints。 Nmap首 先 在 --datadir选 项 说 明 的 目 录 中 查 找 这 些 文 件 。 未 找 到 的 文 件 , 将 在 BMAPDIR环 境 变 量 说 明 的 目 录 中 查 找 。 接 下 来 是 用 于 真 正 和 有 效 UID的 ~/.nmap 或 Nmap可 执 行 代 码 的 位 置 (仅 Win32); 然 后 是 是 编 译 位 置 , 如 /usr/local/share/nmap 或 /usr/share/nmap。 Nmap查 找 的 最 后 一 个 位 置 是 当 前 目 录 。

--send-eth (使 用 原 以 太 网 帧 发 送 ) 要 求 Nmap在 以 太 网 (数 据 链 路 )层 而 不 是 IP(网 络 层 )发 送 报 文 。 默 认 方 式 下 , Nmap选 择 最 适 合 其 运 行 平 台 的 方 式 , 原 套 接 字 (IP层 )是 UNIX主 机 最 有 效 的 方 式 , 而 以 太 网 帧 最 适 合 Windows操 作 系 统 , 因 为 Microsoft禁 用 了 原 套 接 字 支 持 。 在 UNIX中 , 如 果 没 有 其 它 选 择 (如 无 以 太 网 连 接 ), 不 管 是 否 有 该 选 项 , Nmap都 使 用 原 IP包 。

--send-ip (在 原 IP层 发 送 ) 要 求 Nmap通 过 原 IP套 接 字 发 送 报 文 , 而 不 是 低 层 的 以 太 网 帧 。 这 是 --send-eth选 项 的 补 充 。

--privileged (假 定 用 户 具 有 全 部 权 限 ) 告 诉 Nmap假 定 其 具 有 足 够 的 权 限 进 行 源 套 接 字 包 发 送 、 报 文 捕 获 和 类 似 UNIX系 统 中 根 用 户 操 作 的 权 限 。 默 认 状 态 下 , 如 果 由 getuid()请 求 的 类 似 操 作 不 为 0, Nmap将 退 出 。 --privileged在 具 有 Linux内 核 性 能 的 类 似 系 统 中 使 用 非 常 有 效 , 这 些 系 统 配 置 允 许 非 特 权 用 户 可 以 进 行 原 报 文 扫 描 。 需 要 明 确 的 是 , 在 其 它 选 项 之 前 使 用 这 些 需 要 权 限 的 选 项 (SYN扫 描 、 操 作 系 统 检 测 等 )。 Nmap-PRIVILEGED变 量 设 置 等 价 于 --privileged选 项 。

-V; --version (打 印 版 本 信 息 ) 打 印 Nmap版 本 号 并 退 出 。

-h; --help (打 印 帮 助 摘 要 面 ) 打 印 一 个 短 的 帮 助 屏 幕 , 列 出 大 部 分 常 用 的 命 令 选 项 , 这 个 功 能 与 不 带 参 数 运 行 Nmap是 相 同 的 。

运 行 时 的 交 互

在 执 行 Nmap时 , 所 有 的 键 盘 敲 击 都 被 记 录 。 这 使 得 用 户 可 以 与 程 序 交 互 而 不 需 要 终 止 或 重 启 。 特 定 的 键 可 改 变 选 项 , 其 它 键 会 输 出 一 个 有 关 扫 描 的 状 态 消 息 。 约 定 如 下 , 小 写 字 母 增 加 打 印 量 , 大 写 字 母 减 少 打 印 量 。

v / V 增 加 / 减 少 细 节

d / D 提 高 / 降 低 调 试 级 别

p / P 打 开 / 养 老 报 文 跟 踪 其 它 打 印 的 信 息 类 似 于 :

Stats: 0:00:08 elapsed; 111 hosts completed (5 up), 5 undergoing Service Scan

Service scan Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining)

实 例

下 面 给 出 一 些 实 例 , 简 单 的 、 复 杂 的 到 深 奥 的 。 为 更 具 体 , 一 些 例 子 使 用 了 实 际 的 IP地 址 和 域 名 。 在 这 些 位 置 , 可 以 使 用 你 自 己 网 络 的 地 址 /域 名 替 换 。 注 意 , 扫 描 其 它 网 络 不 一 定 合 法 , 一 些 网 络 管 理 员 不 愿 看 到 未 申 请 过 的 扫 描 , 会 产 生 报 怨 。 因 此 , 先 获 得 允 许 是 最 好 的 办 法 。 如 果 是 为 了 测 试 , scanme.nmap.org 允 许 被 扫 描 。 但 仅 允 许 使 用 Nmap扫 描 并 禁 止 测 试 漏 洞 或 进 行 DoS攻 击 。 为 保 证 带 宽 , 对 该 主 机 的 扫 描 每 天 不 要 超 过 12次 。 如 果 这 个 免 费 扫 描 服 务 被 滥 用 , 系 统 将 崩 溃 而 且 Nmap将 报 告 解 析 指 定 的 主 机 名 /IP地 址 失 败 : scanme.nmap.org。 这 些 免 费 扫 描 要 求 也 适 用 于 scanme2.nmap.org、 scanme3.nmap.org等 等 , 虽 然 这 些 主 机 目 前 还 不 存 在 。

nmap -v scanme.nmap.org 这 个 选 项 扫 描 主 机 scanme.nmap.org中 所 有 的 保 留 TCP端 口 。 选 项 -v启 用 细 节 模 式 。

nmap -sS -O scanme.nmap.org/24 进 行 秘 密 SYN扫 描 , 对 象 为 主 机 Saznme所 在 的 “C类 ”网 段 的 255台 主 机 。 同 时 尝 试 确 定 每 台 工 作 主 机 的 操 作 系 统 类 型 。 因 为 进 行 SYN扫 描 和 操 作 系 统 检 测 , 这 个 扫 描 需 要 有 根 权 限 。

nmap -sV -p 22, 53, 110, 143, 4564 198.116.0-255.1-127 进 行 主 机 列 举 和 TCP扫 描 , 对 象 为 B类 188.116网 段 中 255个 8位 子 网 。 这 个 测 试 用 于 确 定 系 统 是 否 运 行 了 sshd、 DNS、 imapd或 4564端 口 。 如 果 这 些 端 口 打 开 , 将 使 用 版 本 检 测 来 确 定 哪 种 应 用 在 运 行 。

nmap -v -iR 100000 -P0 -p 80 随 机 选 择 100000台 主 机 扫 描 是 否 运 行 Web服 务 器 (80端 口 )。 由 起 始 阶 段 发 送 探 测 报 文 来 确 定 主 机 是 否 工 作 非 常 浪 费 时 间 , 而 且 只 需 探 测 主 机 的 一 个 端 口 , 因 此 使 用 -P0禁 止 对 主 机 列 表 。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20 扫 描 4096个 IP地 址 , 查 找 Web服 务 器 (不 ping), 将 结 果 以 Grep和 XML格 式 保 存 。

host -l company.com | cut -d -f 4 | nmap -v -iL - 进 行 DNS区 域 传 输 , 以 发 现 company.com中 的 主 机 , 然 后 将 IP地 址 提 供 给 Nmap。 上 述 命 令 用 于 GNU/Linux -- 其 它 系 统 进 行 区 域 传 输 时 有 不 同 的 命 令 。

BUGS

和 作 者 一 样 , Nmap也 不 是 完 美 的 , 但 可 以 通 过 发 送 Bug报 告 甚 至 编 写 补 丁 使 其 更 加 完 善 。 如 果 Nmap不 能 满 足 要 求 , 首 先 从 https://nmap.org/ 升 级 最 新 版 本 。 如 果 总 问 题 仍 然 存 在 , 需 要 进 行 调 查 以 确 定 问 题 是 否 已 经 被 解 决 。 在 - https://seclists.org/尝 试 搜 索 出 错 消 息 或 浏 览 Nmap-dev档 案 , 以 及 仔 细 阅 读 使 用 手 册 。 如 果 问 题 还 是 不 能 解 决 , 发 送 Bug报 告 至 <dev [AT] nmap.org>。 在 报 告 中 包 含 所 有 有 关 问 题 的 信 息 , 以 及 所 使 用 的 Nmap版 本 、 操 作 系 统 版 本 。 问 题 报 告 以 及 Nmap的 使 用 问 题 发 送 给 dev [AT] nmap.org比 直 接 发 送 给 Gyodor能 更 好 回 答 。 解 决 Bug的 代 码 补 丁 比 Bug报 告 更 受 欢 迎 , 在 https://nmap.org/data/HACKING 可 获 得 建 立 补 丁 文 件 的 基 本 指 令 。 补 丁 可 发 送 给 nmap-dev(建 议 ) 或 直 接 发 给 Fyodor。

作 者

Fyodor <fyodor [AT] nmap.org> (http://www.insecure.org) 译 者 : Fei Yang <fyang1024 [AT] gmail.com>, Lei Li <lilei_721 [AT] 6611.org> 近 年 来 , 上 百 的 人 们 为 Nmap作 出 了 极 有 价 值 的 贡 献 , 详 细 信 息 参 见 随 Nmap一 起 发 布 的 CHANGELOG文 件 , 也 可 查 看 https://nmap.org/nmap_changelog.html

法 律 事 项 (版 权 、 许 可 证 、 担 保 (缺 )、 出 口 限 制 )

Unofficial Translation Disclaimer / 非 官 方 翻 译 声 明
This is an unnofficial translation of the
Nmap license details [10] into [Finnish]. It was not written by Insecure.Com LLC, and does not legally state the distribution terms for Nmap -- only the original English text does that. However, we hope that this translation helps [Finish] speakers understand the Nmap license better. 这 是 Nmap许 可 证 明 细 [10] 的 非 官 方 的 中 文 译 本 。 它 并 非 由 Insecure.Com LLC编 写 , 不 是 有 法 律 效 力 的 Nmap发 布 条 款 - - 只 有 原 英 文 版 具 有 此 法 律 效 力 。 然 而 , 我 们 希 望 该 译 本 帮 助 中 文 用 户 更 好 地 理 解 Nmap许 可 证 。 在 https://nmap.org/可 获 得 Nmap的 最 新 版 本 。

Nmap安 全 扫 描 器 (C) 1996-2005是 Insecure.Com LLC的 产 品 。 Nmap也 是 Insecure.Com LLC的 注 册 商 标 。 这 是 一 个 免 费 软 件 , 按 照 免 费 软 件 联 盟 V2.0的 GNU普 通 公 共 许 可 证 的 规 定 , 可 以 重 新 发 布 和 /或 修 改 。 这 保 证 用 户 在 一 定 的 条 件 下 可 以 使 用 、 修 改 和 重 新 发 布 此 软 件 。 如 果 需 要 将 Nmap嵌 入 专 用 软 件 , 我 们 会 销 售 相 应 的 许 可 证 (联 系 <sales [AT] insecure.com>)。 很 多 安 全 扫 描 器 厂 商 已 经 获 得 了 Nmap技 术 的 许 可 证 , 如 主 机 发 现 、 端 口 扫 描 、 OS系 统 检 测 以 及 服 务 /版 本 检 测 等 技 术 。 注 意 , GPL对 “衍 生 工 作 ”有 重 要 的 限 制 , 但 未 给 出 有 关 的 详 细 描 述 。 为 避 免 误 解 , 我 们 认 为 如 果 某 个 应 用 进 行 以 下 工 作 时 被 认 为 是 该 许 可 证 的 “衍 生 工 作 ”:

• 集 成 Nmap的 源 代 码

• 读 取 或 包 含 Nmap拷 贝 权 的 数 据 文 件 , 如 nmap-os-fingerprints或 nmap-service-probes.

• 执 行 Nmap并 解 析 结 果 (与 之 相 反 的 是 , shell执 行 或 执 行 菜 单 应 用 , 仅 仅 显 示 原 始 Nmap输 出 , 则 不 是 衍 生 工 作 。 )

• 将 Nmap集 成 /包 含 /组 合 至 一 个 专 用 的 可 执 行 安 装 程 序 , 如 由 InstallShield生 成 的 安 装 程 序 。

• 将 Nmap链 接 到 进 行 上 述 工 作 的 库 或 程 序 中 。 名 词 “Nmap”包 含 了 Nmap的 任 何 部 分 以 及 衍 生 工 作 , 因 此 不 仅 限 于 上 述 内 容 。 上 述 内 容 使 用 了 一 些 常 见 的 例 子 来 说 明 衍 生 工 作 。 这 些 限 制 仅 适 用 于 真 正 重 新 发 布 Nmap时 。 例 如 , 不 禁 止 开 发 和 销 售 Nmap的 前 端 , 可 以 任 意 发 布 , 但 必 须 说 明 从 https://nmap.org/下 载 Nmap。 这 些 条 款 并 不 是 在 GPL之 上 增 加 限 制 , 只 是 为 了 明 确 说 明 与 Nmap(有 GPL许 可 证 ) 产 品 有 关 的 “衍 生 工 作 ”。 这 类 似 于 Linus Torvalds对 Linux内 核 模 块 “衍 生 工 作 ”的 解 释 。 我 们 的 解 释 仅 适 用 于 Nmap - 不 适 合 其 它 GPL产 品 。 如 果 对 有 GPL许 可 证 限 制 的 Nmap应 用 于 非 GPL工 作 有 任 何 问 题 , 我 们 将 提 供 相 关 的 帮 助 。 如 上 述 条 款 所 述 , 我 们 提 供 了 可 选 的 许 可 证 以 集 成 Nmap到 专 用 应 用 和 设 备 , 这 些 合 同 已 被 销 售 给 多 个 安 全 厂 商 , 通 常 都 包 含 了 永 久 的 许 可 证 以 及 提 供 优 先 支 持 、 更 新 , 并 资 助 可 持 续 的 Nmap技 术 开 发 。 请 发 送 邮 件 至 <sales [AT] insecure.com> 以 获 得 更 多 信 息 。 作 为 GPL的 一 个 特 殊 例 外 , Insecure.Com LLC授 权 许 可 链 接 该 程 序 的 代 码 至 任 何 版 本 的 OpenSSL库 , 这 个 库 的 发 布 符 合 等 同 于 Copying.OpenSSL文 件 中 包 含 的 许 可 证 , 它 的 发 布 同 时 包 含 了 两 个 内 容 。 除 OpenSSL外 , 在 任 何 方 面 都 必 须 遵 守 GNU GPL。 如 果 改 变 这 个 文 件 , 就 可 能 超 出 该 文 件 的 版 本 , 但 并 不 对 此 负 责 。 如 果 收 到 书 面 的 许 可 证 协 定 或 合 同 文 件 , 与 上 述 条 款 不 同 时 , 该 可 选 的 许 可 证 协 定 具 有 优 先 权 。

Nmap软 件 提 供 源 代 码 , 这 是 因 为 我 们 认 为 用 户 有 权 在 运 行 之 前 知 道 程 序 的 工 作 内 容 , 同 时 也 使 用 户 可 以 检 查 软 件 的 漏 洞 (目 前 还 未 发 现 )。 源 代 码 还 允 许 被 移 植 到 新 的 平 台 、 修 改 Bug以 及 增 加 新 功 能 。 鼓 励 用 户 向 <fyodor [AT] nmap.org> 发 送 更 新 , 以 并 入 正 式 的 发 布 中 。 发 送 这 些 更 新 至 Fyodor或 Insecure.Org开 发 列 表 , 表 明 允 许 Fyodor和 Insecure.Com LLC 具 有 无 限 止 的 、 非 独 有 的 权 限 来 使 用 、 修 改 和 重 新 定 义 这 些 代 码 的 许 可 证 。 Nmap将 一 直 以 开 放 代 码 的 方 式 提 供 , 由 于 无 法 进 行 代 码 的 许 可 证 重 新 定 义 从 而 可 能 导 致 了 对 其 它 开 放 软 件 项 目 的 破 坏 问 题 (如 KDEt NASM), 这 一 点 很 重 要 。 偶 尔 我 们 会 向 第 三 方 提 供 重 新 定 义 的 代 码 许 可 证 。 如 果 希 望 为 自 己 的 贡 献 说 明 一 个 特 定 的 许 可 证 条 件 , 在 发 送 时 指 明 。 本 程 序 的 发 布 只 是 为 了 应 用 , 不 提 供 任 何 担 保 , 也 不 隐 含 任 何 有 关 特 定 目 的 的 商 业 或 适 用 性 担 保 。 在 http://www.gnu.org/copyleft/gpl.html 的 GNU通 用 公 共 许 可 证 或 Nmap中 包 含 的 COPYING文 件 中 可 查 看 更 多 细 节 。 还 需 要 注 意 , Nmap已 经 导 致 了 一 些 编 写 拙 劣 的 应 用 程 序 、 TCP/IP 栈 甚 至 操 作 系 统 的 崩 溃 。 Nmap不 能 用 于 破 坏 关 键 系 统 , 除 非 准 备 好 系 统 受 到 崩 溃 的 影 响 。 Nmap可 能 会 造 成 系 统 或 网 络 的 崩 溃 , 但 我 们 不 对 Nmap可 能 产 生 的 破 坏 和 问 题 负 任 何 责 任 。 由 于 崩 溃 的 风 险 以 及 一 些 攻 击 者 在 攻 击 系 统 前 使 用 Nmap进 行 检 测 , 因 此 一 些 管 理 员 对 此 感 到 不 安 , 报 怨 他 们 的 系 统 受 到 扫 描 。 因 此 , 建 议 在 扫 描 之 间 获 得 允 许 , 哪 怕 是 对 一 个 网 络 很 轻 微 的 扫 描 。 为 安 全 起 见 , 不 要 将 Nmap安 装 在 有 特 殊 权 限 的 环 境 (如 suid root)。 这 个 产 品 包 含 了 由 Apache Software Foundation [11] 开 发 的 软 件 , 发 布 时 还 包 含 了 Libpcap [12] 可 移 植 包 捕 获 器 的 改 进 版 本 。 Windows版 的 Nmap使 用 了 源 于 WinPcap library [13] 的 libpcap。 正 常 的 描 述 支 持 由 PCRE library [14] 提 供 , 这 也 是 一 个 开 放 源 码 软 件 , 由 Philip Hazel编 写 。 特 定 的 原 网 络 功 能 使 用 了 Libdnet [15] 网 络 库 , 由 Dug Song编 写 , Nmap发 布 时 带 有 一 个 改 进 版 本 。 Nmap可 以 与 OpenSSL加 密 工 具 库 [16] 链 接 用 于 SSL版 本 检 测 。 所 有 本 段 描 述 的 第 三 方 软 件 在 遵 守 BSD风 格 软 件 许 可 证 下 均 可 以 免 费 发 布 。 美 国 出 口 控 制 : Insecure.Com LLC认 为 Nmap归 入 美 国 ECCN(出 口 控 制 分 类 编 码 ) 5D922。 这 个 分 类 称 为 “不 受 5D002控 制 的 信 息 安 全 软 件 ”。 这 个 分 类 的 唯 一 限 制 是 AT(反 恐 怖 主 义 ), 这 个 限 制 几 乎 适 用 于 所 有 的 产 品 , 禁 止 出 口 到 一 些 国 家 , 如 伊 朗 和 朝 鲜 。 因 此 , 出 口 Nmap不 需 要 任 何 特 殊 的 许 可 证 、 允 许 或 其 它 政 府 授 权 。

备 注

1. 英 文 版 本

https://nmap.org/man/

2.

Creative Commons Attribution License

http://creativecommons.org/licenses/by/2.5/

3.

RFC 1122

http://www.rfc-editor.org/rfc/rfc1122.txt

4.

RFC 792

http://www.rfc-editor.org/rfc/rfc792.txt

5.

UDP

http://www.rfc-editor.org/rfc/rfc768.txt

6.

TCP RFC

http://www.rfc-editor.org/rfc/rfc793.txt

7.

RFC 959

http://www.rfc-editor.org/rfc/rfc959.txt

8.

Nmap::Scanner

http://sourceforge.net/projects/nmap-scanner/

9.

Nmap::Parser

http://www.nmapparser.com

10.

Nmap license details

https://nmap.org/man/man-legal.html

11.

Apache Software Foundation

http://www.apache.org

12.

Libpcap

http://www.tcpdump.org

13.

WinPcap library

http://www.winpcap.org

14.

PCRE library

http://www.pcre.org

15.

Libdnet

http://libdnet.sourceforge.net

16.

OpenSSL加 密 工 具 库

http://www.openssl.org