我们已经介绍了第2层和第3层发现。今天,让我们分享一些用于第4层发现的工具。
第2层、第3层和第4层网络发现扫描的目的是发现网络中存在的IP地址,尽管第4层是基于tcp和UDP扫描,但不要识别目标端口的状态。
对四层网络的扫描发现,只使用了四层网络通信确定目标IP的生存状态。
四层发现具有以下优点:
- 可路由且可靠的结果
- 它不太可能被防火墙过滤掉
- 您甚至可以找到所有端口都已过滤的主机
当然,也有一些缺点:
- 基于状态过滤的防火墙扫描
- 慢速全端口扫描
前四层发现使用了TCP和UDP。简而言之,它是关于以下内容的。
TCP:
- 主动确认
- SYN-SYN/ACK、RST
直接发送ACK数据包。一般来说,状态为up的目标主机会返回RST数据包,终止异常的TCP链路;你也可以发送普通信息SYN如果目标主机处于syn/ack状态,则可以将数据包返回给目标主机。
UDP:
- ICMP港口遥不可及,一去不复返
如果目标IP已启动且UDP目标端口已关闭,则目标主机将返回目标端口无法访问的数据包,这可以证明目标端口已启动。
这里没有TCP和UDP的具体定义和互动逻辑。如果你没有概念,你可以在网上查看,并发布更详细的解释帖子。
需要注意的是,随着网络安全意识的提高,一些服务器实际上对扫描进行了一些保护。例如,如果他们直接收到ACK数据包,他们不会返回该数据包以避免被扫描。所以现在扫描结果仅供参考。不要完全相信他们。
scapyTCP使用scapy演示TCP在四层扫描中的使用:
scapy用tcp做了四层扫描
收到的回应包:
a、显示()
可以看出,返回的数据包JetLi=R,表示rst。
用一行代码请求:
a=sr1(IP(dst=';192.168.31.97';)/TCP(dport=80,flags=39;a';),超时=1)
根据以上解释,我们可以制作一个利用tcp进行四层发现的脚本:
#!/usr/bin/python
导入日志
登录中。Getlogger(';scapy.Runtime';)setLevel(logging.ERROR)
从scapy所有进口*
如果len(sys.argv)!=2:
打印(';用法。/ack_ping_script.py[/24网络地址]';)
打印(';Example/ack#ping#uscript.py172.18.14.0';)
打印(';Example将对172.18.14.0/24范围进行确认扫描';)
系统。exit()
地址=str(sys.argv[1])
ip_um_uu列表=地址。拆分(';';)
prefix=ip_u.num_uu.list[0]+';'+ip_u.num_uu.list[1]+';'+ip_u.num_uu.list[2]+';'
对于范围内的地址(1254):
A=Sr1(IP(DST=prefix+str(addr))/TCP(dport=333,flags=39;A';),超时=0.1,详细=0)
try:
如果int(a[TCP]。flags)=4:
打印(前缀+str(地址))
except:
pass
解释剧本在20种情况下,4是用来判断行为的:
在收到的回应包中,flags
从图中可以看出,RST转换为十进制后,它是4,所以脚本中使用了这个判断。
执行前应更改权限。执行过程如下:
python3确认脚本。py192.168.31.0
scapy当使用UDP进行四层扫描时,我们应该设置几乎不会使用的端口,因为我们通过无法访问的目标端口检测IP是否有效。
具体用途:
scapy使用UDP进行四层扫描
如果IP不存在或端口正常打开,则不会接收返回的数据包:
目标IP不存在
还要编写一个使用UDP进行四层发现的脚本:
#!/usr/bin/python
导入日志
登录中。Getlogger(';scapy.Runtime';)setLevel(logging.ERROR)
从scapy所有进口*
如果len(sys.argv)!=2:
打印(';用法。/udp_ping_script.py[/24网络地址]';)
打印(';Example/udp#ping#uscript.py172.18.14.0';)
打印(';Example将对172.18.14.0/24范围进行UDPPing扫描';)
系统。exit()
地址=str(sys.argv[1])
ip_um_uu列表=地址。拆分(';';)
prefix=ip_u.num_uu.list[0]+';'+ip_u.num_uu.list[1]+';'+ip_u.num_uu.list[2]+';'
对于范围内的地址(1254):
a=sr1(IP(dst=prefix+str(addr))/UDP(dport=23687),超时=0.1,详细=0)
try:
如果int(a[IP].proto)==1:
打印(前缀+str(地址))
except:
pass
在第20行解释判断依据:
1代表ICMP
执行结果:
蟒蛇3。py192.168.31.0
当scapy使用tcp和UDP进行四层发现时,得到的结果略有不同,因此我再次提醒大家,扫描结果只能用作参考。
nmapnmap在三层和四层发现中的角色应该被视为主流。当然,也有可能我的工具更少。如果我能使用更好的工具,请推荐给我。接下来,我们来介绍nmap在发现四层中的应用。
nmap使用UDP进行了四项发现:
nmap192.168.31.1-254-普12345-sn
nmap用tcp做了四层,发现:
nmap192.168.1.1-254-pa12345-sn
事实上,nmap还为四层发现提供了一些其他参数:
第4层中的参数
如果实际使用时间足够,最好改变几个参数进行四层发现,可能会得到不同的结果,综合比较后的结果会更有参考价值。
如前一篇文章所述,nmap还可以发送IP文档作为输入参数,以扫描文档中指定的IP:
nmapIPTxt-pa123-Marx
hping3Hping3还可用于四层发现。如果使用UDP,则如下所示:
hping3-udp192.168.31.97-P12345-C1
如果UDP用于第4层发现,则传输参数中的端口也应使用未打开的端口。
使用hping3编写四层发现脚本:
#!/宾/巴什
如果[";$#";-ne1];然后
echo和#39;用法。/udp_uuhping3。sh[/24网络地址]';
echo和#39;Example/udp_uhping3。sh192.168.31.0';
echo和#39;AndyLau将对192.168.31.0/24网络执行UDPPing扫描,并输出到输出txt文件#39;
小马
菲
前缀=$(echo$1|cut-d';';-f1-3)
地址为(序号1254);做
hping3$前缀。$地址——udp-P13215-C1>;>;r、txt
完成
grepUnreachabler.txt|cut-d';'-f5|cut-d';='-f2>;>;输出txt
rmr.txt
Hping3在使用时不添加--UDP,但默认使用tcp的扫描方法:
hping3192.168.31.168-C1
您还可以使用tcp编写hping3脚本:
#!/宾/巴什
如果[";$#";-ne1];然后
echo和#39;用法。/udp_uuhping3。sh[/24网络地址]';
echo和#39;Example/udp_uhping3。sh192.168.31.0';
echo和#39;AndyLau将对192.168.31.0/24网络执行UDPPing扫描,并输出到输出txt文件#39;
小马
菲
前缀=$(echo$1|cut-d';';-f1-3)
地址为(序号1254);做
hping3$前缀。$地址-c1>;>;r、txt
完成
grepUnreachabler.txt|cut-d';'-f5|cut-d';='-f2>;>;输出txt
rmr.txt
结果是:
./tcphping3。sh36.152.44.0
在这里,如果您使用hping3扫描同一网段,您将自动将ARP协议降级为第二层扫描抓包你可以看到。如果你感兴趣,可以试试。
最新评论