Nmap使用教程
kali的命令行中可以直接使用 nmap 命令,打开一个「终端」,输入 nmap 后回车,可以看到 nmap 的版本,证明 nmap 可用。
Nmap有四种基本功能:「端口扫描」、「主机探测」、「服务识别」和「系统识别」。
一、端口扫描
扫描主机的「开放端口」,在nmap后面直接跟主机IP(默认扫描1000个端口)
nmap 192.168.31.180
从上图可以看到:它用1.58秒扫描了1000个端口,其中991个端口关闭,结果中列出的9个端口就是开放的端口。
1. 指定端口
扫描「指定端口」,使用 -p
参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口
nmap 192.168.31.180 -p 80
nmap 192.168.31.180 -p 1-80
nmap 192.168.31.180 -p 80,3389,22,21
nmap 192.168.31.180 -p 1-65535
nmap 192.168.31.180 -p- # -p- 等价于 -p 1-65535
2. 指定扫描方式
我们通过kali中的「wireshark」抓包分析不同扫描方式的请求信息,从而判断这些方式的区别。
点开kali的左上角,输入 wireshark 单击打开,选择抓包的网卡(我这里是 eth0 )。
输入过滤条件ip.addr == 192.168.31.180 and tcp.port == 80
后,点击箭头应用。
这个过滤条件的意思是:过滤IP地址是 192.168.31.180 并且 端口是 TCP的80端口。
设置完过滤条件后,我们在命令行执行扫描命令,然后查看「wireshark」中的请求包。
2.1 TCP全连接扫描
使用 -sT
参数进行TCP全连接扫描。
「全连接扫描」使用完整的三次握手建立链接,能够建立链接就判定端口开放,否则判定端口关闭。
nmap 192.168.31.180 -p 80 -sT
1)如果端口开放,就会进行完整的三次握手,成功建立链接,扫描结果中,STATE字段显示为 open 。
2)如果端口关闭,就只能进行一次握手,无法建立链接,扫描结果中,STATE字段显示为 closed。
2.2 SYN半链接扫描
使用 -sS
参数进行SYN半链接扫描。
「半链接扫描」只进行两次握手,对方返回确认帧(ACK=1)就判定端口开放,否则判定端口关闭。
nmap 192.168.31.180 -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扫描
![img](https://img-blog.csdnimg.cn/img_convert/7b9f9d13bf56cec673d8e4f2345c600b.png)
![img](https://img-blog.csdnimg.cn/img_convert/a4baf0d213eb5d8a5e2921c349d96880.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**