一、端口扫描简介
1.二三四层发现的目的只是为了准确发现所有存活的主机IP,确定攻击目标。端口扫描即发现开放端口,发现攻击点。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。
2.进行端口扫描的原因
(1):端口对应网络服务及应用端程序
(2):服务端程序的漏洞通过端口攻入。
(3):通过发现的端口来放大攻击面
二、UDP端口扫描
- 原理:因为UDP是面向无连接的传输协议,尽最大努力传输。因此使用UDP来探测开启的端口的步骤如下:
(1):先向目标主机发送一个数据包并且目的端口是一个没有开启的端口(选择一个不常用并且尽可能大的端口),如果收到数据包并且表明端口不可达,则表明主机存活。
(2):然后向目标主机发送需要测试的端口,如果收到数据包且表明端口不可达,则端口关闭;如果没有收到数据包,则端口开启 - 优点:速度快
- 缺点:准确性差
1.scapy
(1):探测主机是否存活
sr1(IP(dst=‘192.168.223.10’)/UDP(dport=8786),timeout=5,verbose=0).display()
- IP(dst=‘192.168.223.10’):设置目标IP
- UDP(dport=8786):设置目标端口
- timeout=5:设置超时时间
- verbose=0:verbose=0不显示详细信息,verbose=1显示详细信息
(2):探测端口是否开启
三、TCP端口扫描
TCP端口扫描可以分为两类:全连接扫描、半连接扫描
1.全连接扫描
- 原理:扫描者向目标主机发送一个SYN+SYN/ACK数据包,目标主机会回复一个ACK数据包。无法利用scapy模块进行全连接扫描,因为如果同时向目标主机发送一个SYN+SYN/ACK数据包,目标主机会认为这是一个错误的数据包,会直接回复一个RST。如果向目标主机发送一个SYN数据包,目标主机会回复一个SYN/ACK数据包,但是此时并没有再向目标主机发送ACK数据包,因此,全连接无法建立。(但是可以使用nmap中的-sT参数来进行全连接扫描)
- 优点:探测结果准确
- 缺点:会被目标主机的日志记录
(1):nmap
namp -sT IP地址
-sT:进行全连接扫描
可以使用-p来指定端口号或端口范围,不指定默认扫描前1000个端口
(2):dmitry
dmitry使用全连接进行扫描,默认扫描最常用的150个端口
dmitry -p IP地址
(3):nc
nc -nv -w 超时时间 -z IP地址 端口号
-n表示跟数字内容,-v表示不做域名解析 -w表示超时时间 -z表示使用扫描模式
2.半连接扫描(也称为隐蔽扫描)
- 原理:扫描者向目标主机发送一个SYN,如果目标主机回复了一个SYN/ACK数据包,那么说明主机存活,如果收到一个RST/ACK数据包,那么主机没有存活。因为扫描者只向目标主机发送了SYN,并没有和目标主机进行连接,因此称为半连接。
- 优点:不会在目标主机的日志上有所记录
- 缺点:扫描结果不是很准确
(1):scapy
(2):nmap
nmap -sS IP地址
-sS:进程半连接扫描
可以使用-p来指定端口号或端口范围,不指定默认扫描前1000个端口
hping3
hping3 IP地址 --scan 目标端口 -S