Nmap
主要功能:【端口扫描】【主机探测】【服务识别】【系统识别】【结果导出】
一、端口扫描
扫描主机的「开放端口」,在nmap后面直接跟主机IP(默认扫描1000个端口)
nmap 192.168.129.130
1.指定端口扫描
扫描「指定端口」,使用 -p 参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口
nmap 192.168.129.130 -p 80
nmap 192.168.129.130 -p-
nmap 192.168.129.130 -p 1-80
nmap 192.168.129.130 -p 1-65535
nmap 192.168.129.130 -p 80,3389,22,21
2.指定扫描方式「wireshark」
我们通过kali中的「wireshark」抓包分析不同扫描方式的请求信息,从而判断这些方式的区别。点开kali的左上角,输入 wireshark 单击打开,选择抓包的网卡(这里是举例的是 eth0 )。
也可以在wireshark输入过滤条件来进行请求输入过滤条件
ip.addr == 192.168.129.130 and tcp.port == 80
这个过滤条件的意思是:过滤IP地址是 192.168.129.130 并且 端口是 TCP的80端口
,设置完过滤条件后,我们在命令行执行扫描命令,然后查看「wireshark」中的请求包。
2.1TCP全连接扫描
(1)使用 -sT 参数进行TCP全连接扫描。全连接扫描」使用完整的三次握手建立链接,能够建立链接就判定端口开放,否则判定端口关闭。
nmap 192.168.129.130 -p 80 -sT
(2)如果端口开放,就会进行完整的三次握手,成功建立链接,扫描结果中,STATE字段显示为 open 。
nmap 192.168.129.130 -p 440 -sT
nmap 192.168.129.130 -p 445 -sT
2.2SYN半链接扫描
使用 -sS 参数镜像SYN半链接扫描
「半链接扫描」只进行两次握手,对方返回确认帧(ACK=1)就判定端口开放,否则判定端口关闭。
nmap 192.168.129.130 -p 80 -sS
(1)如果端口开放,就会进行两次握手,扫描结果中,STATE字段为 open 。
(2)如果端口关闭,就只有一次握手,扫描结果中,STATE字段为 closed。
2.3隐秘扫描
隐秘扫描,只适用于Linux系统。
「隐秘扫描」向目标主机的端口发送TCP FIN包 或 Xmas tree包 或 Null包,如果收到RST响应包,就判定端口关闭,否则就判定端口开放或被屏蔽(open/filtered)
nmap 127.0.0.1 -p 80 -sF # Fin扫描
nmap 127.0.0.1 -p 80 -sN # Null扫描(所有flags都为0的TCP包)
nmap 127.0.0.1 -p 80 -sX # Xmas扫描(flags的FIN、URG、PUSH都为1的包)
二、主机探测
扫描网段中有哪些主机在线,使用 -sP 参数,不扫描端口,只扫描「存活主机」。
本质上是Ping扫描,能Ping通有回包,就判定主机在线。
nmap -sP 192.168.129.0/24
三、服务识别
扫描端口时,默认显示端口对应的服务,但不显示服务版本。
想要识别具体的「服务版本」,可以使用 -sV 参数,以此来显示服务的详细版本。
nmap 192.168.129.130 -p 80 -sV
四、系统识别
想要识别「操作系统版本」,可以使用 -O 参数。
nmap 192.168.129.130 -p 80 -O
五、扫描结果导出
Nmap的扫描结果可以保存到文件中,比如文本格式、XML格式。
(1)将扫描结果导出为「文本格式」,结果原样保存。
nmap 192.168.129.130 -p 80 -oN result.txt
(2)将扫描结果导出为「xml格式」,结果的保存格式会发生变化。
nmap 192.168.129.130 -p 80 -oX result.xml