Nmap
(一)基本介绍
nmap(Network Mapper)是一款开源的网络扫描和安全审计工具,可用于:
- 主机发现
- 开放端口扫描
- 服务识别(如运行的 Web 服务器类型)
- 操作系统检测
- 网络拓扑分析
(二)安装 Nmap(Ubuntu)
1. 有 sudo 权限
打开终端,输入:
sudo apt update
sudo apt install nmap
2. 无 sudo 权限
如果你没有 sudo 权限,可以手动下载预编译的 nmap 可执行文件。
步骤如下:
# 创建一个目录保存 nmap
mkdir -p ~/tools/nmap
cd ~/tools/nmap
# 下载 nmap 的源码或预编译版本
wget https://nmap.org/dist/nmap-7.94.tar.bz2
# 解压
tar -xvjf nmap-7.94.tar.bz2
cd nmap-7.94
# 编译安装到本地路径,不需要 sudo
./configure --prefix=$HOME/tools/nmap/install
make
make install
使用时添加 PATH:
export PATH=$HOME/tools/nmap/install/bin:$PATH
你现在可以使用 nmap 命令了。
(三)常用用法示例
| 序号 | 功能说明 | 命令示例 | 说明 |
|---|---|---|---|
| 1 | 扫描一个主机的开放端口 | nmap 192.168.1.1 | 默认扫描前 1000 个端口 |
| 2 | 扫描多个 IP 或整个子网 | nmap 192.168.1.1 192.168.1.2 192.168.1.3 nmap 192.168.1.0/24 | 扫描多个指定主机或整个子网 |
| 3 | 扫描特定端口 | nmap -p 22,80,443 192.168.1.1 | 指定扫描目标主机的特定端口 |
| 4 | 操作系统与服务识别 | nmap -A 192.168.1.1 | 包含服务识别、操作系统猜测、版本检测、脚本扫描等 |
| 5 | 跳过 Ping 快速扫描 | nmap -Pn 192.168.1.1 | 对不响应 ICMP 的主机进行扫描(如防火墙禁 Ping) |
| 6 | 使用漏洞检测脚本(NSE) | nmap --script=vuln 192.168.1.1 | 调用内置脚本引擎检测已知漏洞,部分脚本需 root 权限支持 |
Nmap 内置了很多扫描脚本,例如用于漏洞检测、安全检查等。
推荐命令合集
# 基础扫描
nmap 192.168.1.1
# 全端口 + 服务版本识别
nmap -p- -sV 192.168.1.1
# 操作系统检测
nmap -O 192.168.1.1
# 快速多目标扫描
nmap -T4 -F 192.168.1.0/24
# 漏洞扫描(需 root 权限)
nmap -sS --script vuln 192.168.1.1
示例:
C:\Users\28121>nmap 10.105.100.232
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-22 17:55 中国标准时间
Nmap scan report for 10.105.100.232
Host is up (0.017s latency).
Not shown: 994 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
443/tcp closed https
8080/tcp closed http-proxy
8081/tcp closed blackice-icecap
8082/tcp closed blackice-alerts
8083/tcp closed us-srv
这份 Nmap 扫描结果说明了目标主机 10.105.100.232 的网络服务和 1-1000 端口状态。我们逐条解释
-
Not shown: 994 filtered tcp ports (no-response):有 994 个 TCP 端口处于 “filtered” 状态,意味着:
- 这些端口没有返回任何响应。
- 通常是由于防火墙丢弃了探测包(不返回 ACK/RST)。
| 端口号 | 协议 | 状态 | 服务名 | 说明 |
|---|---|---|---|---|
| 22 | TCP | open | ssh | 该主机开启了 SSH 服务,可能用于远程登录。存在潜在安全访问入口。 |
| 443 | TCP | closed | https | HTTPS 服务端口关闭,扫描到了但未开启服务。 |
| 8080 | TCP | closed | http-proxy | 常用于 Web 应用或代理服务,端口存在但未启用。 |
| 8081 | TCP | closed | blackice-icecap | 安全工具相关端口,未启用。 |
| 8082 | TCP | closed | blackice-alerts | 同上。 |
| 8083 | TCP | closed | us-srv | 一种较少见的服务端口,未启用。 |
(四)进阶功能
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 扫描端口范围 | -p 1-65535 | 全端口扫描 |
| 仅探测主机存活 | -sn 192.168.1.0/24 | Ping 扫描 |
| 操作系统检测 | -O | 猜测操作系统 |
| 使用 TCP 连接扫描 | -sT | TCP connect() 扫描 |
| 使用 SYN 扫描 | -sS(需 root) | 更隐蔽的扫描方式 |
| 输出为文件 | -oN 输出.txt / -oX 输出.xml | 保存结果为文本或 XML 格式 |