一、环境准备
- Windows10主机
- Kali虚拟机(使用nmap的地方)
- metasploitable虚拟机
- 为以上三个操作系统配置静态IP。
- Windows主机的IP:192.168.80.3
- Kali的IP:192.168.80.2
- metasploitable的IP:192.168.80.4
具体配置方法请参考kali设置静态ip地址
二、扫描端口
(一)指定扫描端口
-
扫描单个IP:
nmap 192.168.80.3
,nmap默认探测主机的1-10000范围内所有开放的端口。
-
扫描多个IP:
nmap 192.168.80.3 192.168.80.4
。
-
扫描指定端口: nmap使用[-p]来指定扫描端口号。
nmap -p 20-445 192.168.80.4 #指定范围
nmap -p 21,22,445 192.168.80.4 #指定特殊端口
nmap -p- 192.168.80.4 #指定范围为1-65535
(二)指定扫描方式
为了更直观地理解每条指令的功能,在Kali虚拟机上,打开wireshark工具,过滤器选择eth0。设置过滤条件
ip.addr == 192.168.80.4
-
扫描TCP连接:
nmap -p 80 -sT 192.168.80.4
。
(1)如果目标IP的端口是开放状态,执行此命令后,就会成功建立连接,即完成三次握手。
(2)如果目标IP的端口是关闭状态,执行此命令后,不能建立连接,即只进行一次握手。
-
扫描SYN连接:
nmap -p 80 -sS 192.168.80.4
,若不指定连接方式,nmap默认进行SYN扫描。(1)如果目标IP的端口是开放状态,执行此命令后,就会成功建立连接,即完成三次握手。
(2)如果目标IP的端口是关闭状态,执行此命令后,不能建立连接,即只进行一次握手。
-
扫描FIN:
nmap -p 80 -sF 192.168.80.4
,向目标IP发送TCP FIN包,如果收到RST响应,就判定端口关闭,否则端口开放或被屏蔽。
-
扫描Null:
nmap -p 80 -sN 192.168.80.4
,向目标IP发送TCP Null包(所有flags都为0的包),如果收到RST响应,就判定端口关闭,否则端口开放或被屏蔽。
-
扫描Xmas:
nmap -p 80 -sX 192.168.80.4
,向目标IP发送TCP Xmas tree包(flags里的FIN、URG、PUSH都为1的包),如果收到RST响应,就判定端口关闭,否则端口开放或被屏蔽。
三、扫描其他信息
- 扫描活跃主机:
nmap -sP 192.168.80.0/24
,扫描整个网段中哪些主机是活跃的。
- 识别版本:
nmap -p 80 -sV 192.168.80.4
,识别某一服务的具体版本号信息。
- 识别操作系统:
nmap -p 80 -O 192.168.80.4
。nmap扫描的结果并非完全正确,当识别不出具体版本时,nmap会给出可能为各种操作系统的概率。
四、输出扫描结果
- 将扫描结果保存为txt格式:
nmap -p 80 -oN scan.txt 192.168.80.4
- 将扫描结果保存为xml格式:
nmap -p 80 -oX scan.xml 192.168.80.4