Nmap
# Nmap
# 1. 指定扫描目标
# 1.1 直接指定
# 参数
nmap <地址>
### 示例
nmap www.example.com
nmap www.example.com/24
nmap 192.168.1.1
nmap 192.168.1.1/24
# 扫描192.168.1.1 - 192.168.1.254
nmap 192.168.1.1-254
# 扫描192.168.0.1 - 192.168.255.254
nmap 192.168.0-255.1-254
# 多个地址可以用 逗号, 隔开
nmap 192.168.1.1,192.168.1.50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1.2 从文件中读取
你可以将多个地址 保存到文件中(每行一个地址),然后使用 Nmap 批量读取并扫描。
# 参数
nmap -iL <文件名>
# 示例
nmap -iL 1.txt
1
2
3
4
5
2
3
4
5
# 1.3 排除地址
如果你不想扫描某个地址,则可以排除它。
# 参数
nmap <地址> --exclude <排除地址>
### 示例
# 扫描192.168.0.1 - 192.168.0.254,跳过其中的192.168.0.100
nmap 192.168.0.1-254 --exclude 192.168.0.100
# 多个排除地址可以使用 逗号, 隔开
nmap 192.168.0.1-254 --exclude 192.168.0.100,192.168.0.200
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2. 主机发现方式
# 2.1 Ping扫描
启用 ping扫描 之后:
- 自动禁用端口扫描;
- 用 ping 的方式发现主机。
适用于需要 主机发现 ,而不需要 端口扫描 的场景。
### 示例
# 探测192.168.0.1 - 192.168.0.254中存活的主机有哪些
nmap -sn 192.168.0.1-254
1
2
3
4
2
3
4
# 2.2 跳过主机发现
Nmap 通常会用 Ping 的方式来检测目标主机是否在线。
在某些情况下,目标主机会“禁ping”,这样一来 Nmap 就会错失一台主机。
- 你可以禁用主机发现,让 Nmap 始终认为这台主机是存活的。
### 示例
# nmap会跳过主机发现,认为192.168.0.1的主机是存活,直接进行扫描
nmap -Pn 192.168.0.1
1
2
3
4
2
3
4
# 3. 扫描技术
# 3.1 SYN扫描方式(默认)
该扫描方式是 Nmap 默认的扫描方式。
使用 TCP SYN 方式进行扫描(TCP协议 扫描类型之一)。
- 该扫描使用了 TCP协议的SYN技术,并不是完整的 TCP协议。
# 不指定参数, 默认就是SYN扫描
nmap 192.168.1.1
# 指定参数
nmap -sS 192.168.1.1
1
2
3
4
5
2
3
4
5
# 3.2 TCP扫描方式
在 3.1 当中,使用了 TCP协议 的 SYN技术 进行扫描,如果你想使用完整的TCP扫描,则可以:
# 示例
nmap -sT 192.168.1.1
1
2
2
# 3.3 UDP扫描方式
如题。
# 示例
nmap -sU 192.168.1.1
1
2
2
# 3.99 更多扫描方式
你可以参考官方文档:https://nmap.org/man/zh/man-port-scanning-techniques.html (opens new window)
-sA
:ACK扫描(TCP扫描类型的其中一种)-sW
:窗口扫描(和 ACK扫描 类似)-sM
:Maimon扫描(和 Xmas扫描 类似)-sN
:TCP Null扫描(和TCP标志位有关)-sF
:FIN扫描(和TCP标志位有关)-sX
:Xmas扫描(和TCP标志位有关)-b
:FTP弹跳扫描--scanflags
:定制你自己的TCP扫描(稍微复杂,对用户的知识掌握程度 要求较高)
# 4. 端口和扫描顺序
# 4.1 扫描指定端口
Nmap 默认只扫描 Top 1000 端口,例如 80、443、3306 等。
# 参数
nmap <地址> -p <端口范围>
### 示例
# 只扫描 22 这一个端口
nmap 192.168.0.1 -p 22
# 扫描1 到 65535端口,也就是全端口
nmap 192.168.0.1 -p 1-65535
### 高级用法
# 以UDP方式扫描23和111端口,以TCP方式扫描21至25端口,以SYN方式扫描9端口
nmap 192.168.0.1 -p U:53,111,T:21-25,S:9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 4.2 快速扫描
快速扫描方式,扫描的端口数量 比 默认的 还要少。
# 示例
nmap -F 192.168.1.1
1
2
2
# 4.3 按顺序扫描端口
默认情况下,Nmap 按随机顺序扫描端口。
# 示例
# nmap从1端口开始,按数字顺序扫描到最后一个端口
nmap -r -p 1-65535 192.168.0.1
1
2
3
4
2
3
4
# 5. 服务和版本侦测
# 5.1 探测端口的 服务/版本 信息
添加该参数后,如果某个端口是开放(Open)状态,则 Nmap 会尝试探测端口的 服务和版本信息。
# 示例
nmap -sV 192.168.1.1
1
2
2
# 5.2 探测级别
用于设置 服务/版本 信息探测的级别。
- 可选范围
0-9
- 数字越大,侦测强度也越大
- 默认级别为
7
# 参数
nmap --version-intensity <级别> <地址>
# 示例
nmap --version-intensity 9 192.168.0.1
1
2
3
4
5
2
3
4
5
# 5.3 显示详细的版本扫描活动(用于debug)
# 示例
nmap --version-trace 192.168.0.1
1
2
2
# 6. 操作系统检测
# 6.1 启用操作系统检测
启用“操作系统检测”之后,Nmap 会尝试探测目标的操作系统类型。
# 示例
nmap -O 192.168.0.1
1
2
2
# 6.2 缩小 操作系统检测 范围
将操作系统检测范围,限制为有希望的目标类型。
# 示例
nmap -O --osscan-limit 192.168.0.1
1
2
2
# 6.3 增加 操作系统检测 范围
让 Nmap 更积极地猜测操作系统。
- 当 Nmap 无法确定所检测的操作系统时,会尽可能地提供最相近的匹配。
# 示例
nmap -O --osscan-guess 192.168.0.1
1
2
2
# 7. 时间和性能
# 7.1 扫描线程(计时模板)
Nmap 默认提供了 6 个线程:
- paranoid (0)
- sneaky (1)
- polite (2)
- normal (3)
- aggressive (4)
- insane (5)
你可以使用对应的 数字或名称 来指定模板,默认线程为3
。
# 参数
nmap -T<数字> <地址>
### 示例
# Nmap 默认采用速率 3 来进行扫描
nmap 192.168.0.1
# 使用速率 4 进行扫描
nmap -T4 192.168.0.1
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
编辑 (opens new window)