ip通信如何获取端口(路由器端口)
时间:2023-10-28 15:48:03 浏览量:50
这篇文章我们来了解端口扫描的相关内容,下文讲给大家介绍nmap探测端口、masscan探测端口、socket探测端口、telnet探测端口、nc探测端口这五种端口扫描方式。感兴趣的朋友就继续往下看吧!
事件原由
笔者在写一个小工具,针对渗透测试中需要搜集的信息,使用脚本自动化采集。而在这个模块中有个很难搞的部分就是端口banner 信息搜集,起初我尝试使用了python nmap 多线程扫描,扫描20 的ip,等的花都谢了。。。而笔者目标是扫描200 的ip。下面我就针对端口扫描的技术进行分析。
1、nmap探测端口
nmap在扫描多个主机的时候可以设置参数 --min-hostgroup ,设置这个参数可以并行扫描多个主机,将这些主机划分成组,然后一次扫描一个组。
举例:
--min-hostgroup 50 nmap 以50个主机为一组,在扫描完50个主机之前不会显示结果。
如图,运行10个ip需要318s。
2、masscan探测端口
(1)调用python masscan
默认情况下,masscan 发送的是syn数据包,如果目标主机返回ack syn,则说明端口开放。具体流程如下
A:192.168.70.142
B:192.168.0.143 开放端口3306
(1)A->B syn
(2)B->A syn ack
(3)A->B RST
探测未开放的端口
A->B syn
B->A rst
举例:
使用系统命令探测
使用方法
3、socket探测端口
socket 探测端口发送的不是完整的三次握手包如下,
A:192.168.70.142
B:192.168.0.143 开放端口3306
A接收到B返回的syn ack数据包后,A把数据丢弃。
探测不开放端口
A发送syn,B没有开放33端口,所以返回RST数据包。
探测10个ip花费了26.3s差不多一个2.6s。
4、telnet探测端口
telnet 探测端口采用完整的三次握手连接,使用命令 telnet ip port ,发包流程如下
A:192.168.70.142
B:192.168.0.143 开放端口3306
telnet 192.168.0.143 3306
过程如下:
使用TCP三次握手建立连接: SYN -> SYN ACK ACK
探测不存在端口,发送SYN数据包,然后RST包丢弃。
如果有返回值,则说明端口开放,否则则端口关闭。
探测10个ip花费了27.8s差不多一个2.7s。
5、nc探测端口
nc探测端口采用完整的三次握手连接,使用命令 nc -v -w 1 -z ip port,发包过程和telent 探测一样。
探测开放端口的数据包
探测未开放端口的数据包
端口开放,返回值为0,可以依此作为判断依据。
备注:比如你想探测某个指定的端口开放情况,推荐使用nc。
总结
nmap 作为扫描端口的神器,扫描出的结果比其他几种方式要详细。如果追求效率的话,建议采用socket。相比于nmap,socket会存在漏报情况,笔者在测试某主机时,nmap扫出了8888端口,但是socket没有。
现在大家对于的几种常见方式应该都有所了解了,希望大家阅读完这篇文章能有所收获。最后,如果想要了解更多安全知识可以关注笔者。
文本转载自PHP中文网