Nmap 基础:主机发现与端口识别(授权扫描)
admin
2026-10-27 04:54
116人看过
免费
# Nmap 基础:主机发现与端口识别(仅用于**授权/本地靶场**扫描)
> 前置提醒:**未经授权扫描任何公网服务器、IP属于违法行为**。下面所有操作,只在自己搭建的靶场环境练习。
## 一、主机发现(判断网段内哪些机器存活,不扫描端口)
核心参数 `-sn`(skip port scan,只做存活探测)
```bash
# 扫描C段,找出内网存活主机
nmap -sn 192.168.1.0/24
# 扫描单个IP是否存活
nmap -sn 192.168.1.100
```
### 主机发现原理
默认组合探测方式:
1. ICMP Ping(ping)
2. TCP 80、443端口探测
3. ICMP时间戳请求
### 常用补充参数
```bash
# 目标禁ping,强制跳过存活检测,直接扫端口
nmap -Pn 192.168.1.100
# 只使用ICMP ping探测
nmap -sn -PE 192.168.1.0/24
# ARP扫描(内网局域网效果最好,优先推荐,root权限)
nmap -sn -PR 192.168.1.0/24
```
> 内网ARP扫描优势:很多防火墙禁ICMP,但ARP无法拦截,内网识别存活主机最准。
## 二、端口扫描基础:识别开放端口与服务
### 端口状态4种结果(必背)
1. `open`:端口开放,有程序监听
2. `closed`:端口关闭,主机在线
3. `filtered`:防火墙/ACL拦截,无法确认端口状态
4. `unfiltered`:能收到TCP响应,但无法判断开放/关闭
### 常用端口扫描命令
```bash
# 默认:扫描TOP1000常用端口,SYN扫描(sudo)
sudo nmap 192.168.1.100
# 快速扫描:只扫描TOP100端口
sudo nmap -F 192.168.1.100
# 指定单个端口
sudo nmap -p 80 192.168.1.100
# 多个端口逗号分隔
sudo nmap -p 80,443,3306,22 192.168.1.100
# 端口范围
sudo nmap -p 1-1000 192.168.1.100
# 全端口扫描(1~65535,耗时较长,靶场使用)
sudo nmap -p- 192.168.1.100
```
## 三、扫描类型(TCP扫描重点区分)
```bash
# -sS SYN半开扫描【推荐,root权限】
# 只发SYN包,不完成完整TCP三次握手,日志痕迹更少
sudo nmap -sS 192.168.1.100
# -sT TCP全连接扫描(无root权限自动使用,握手完整,容易被日志记录)
nmap -sT 192.168.1.100
# -sU UDP扫描,慢!用于DNS53、SNMP161、memcached
sudo nmap -sU -p 53,161 192.168.1.100
```
## 四、识别服务版本 + 操作系统识别
```bash
# -sV:探测端口上运行的服务、版本号
sudo nmap -sV 192.168.1.100
# -O:操作系统识别(root)
sudo nmap -O 192.168.1.100
# 组合:SYN扫描 + 版本探测 + OS识别 + 显示端口原因
sudo nmap -sS -sV -O --reason -T4 192.168.1.100
```
- `--reason`:显示Nmap判定端口状态的理由(学习推荐)
- `-T4`:时序模板,平衡速度与稳定性(T1慢,T5极快容易丢包)
## 五、输出保存(取证,报告使用)
```bash
# 普通文本
nmap -sV 192.168.1.100 -oN scan.txt
# XML格式(导入Metasploit、Nessus等工具)
nmap -sV 192.168.1.100 -oX scan.xml
```
## 六、标准实操工作流(靶场授权扫描)
1. 网段存活探测:`nmap -sn 192.168.1.0/24`,拿到存活IP清单
2. 对目标IP做端口+版本扫描:`sudo nmap -sS -sV --reason -T4 -Pn 目标IP`
3. 记录开放端口、服务版本
4. 根据开放端口选择后续测试:80/443 → Burp Web测试;22/3306 关注弱口令等
## 七、常见坑
1. **必须root才能执行-sS**,普通用户自动降级为全连接扫描 `-sT`
2. 防火墙/WAF会大量返回`filtered`,造成端口漏判
3. UDP扫描速度极慢,**不要直接扫全部UDP端口,指定端口**
4. 版本识别只是猜测,服务可能伪装Banner,存在误判
## 八、速记命令合集
```bash
# 存活主机发现
nmap -sn 192.168.1.0/24
# 深度端口+版本扫描(推荐靶场)
sudo nmap -sS -sV --reason -T4 -Pn 192.168.1.100
# 全端口扫描
sudo nmap -sS -p- -sV -T4 192.168.1.100
```
版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载或以其他方式使用本站原创内容。