小白网-奉贤部落-奉贤免费信息发布平台

查看: 23|回复: 0
打印 上一主题 下一主题

网络安全里四层发现的工具介绍

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 13:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我前面已经介绍了第二层和第三层发现。今天我就分享一些第四层发现的工具。
第二层和第四层中的网络发现扫描的目的是发现网络中幸存的IP地址。虽然第四层基于TCP和UDP进行扫描,但它不会识别目标端口的状态。
对四层网络的扫描发现,只有四层网络通信用于识别目标IP的生存状态。
发现四层具有这些优点:
  • 可路由和可靠的结果。
  • 不太可能被防火墙过滤掉。
  • 您甚至可以找到过滤了所有端口的主机。当然,也有一些缺点:
  • 基于状态过滤的防火墙可以过滤扫描。
  • 全端口扫描速度慢。据说前面四层发现用的是TCP和UDP。简单来说,大概如下。
    TCP:
  • 未经请求的确认-RST
  • 同步-同步/确认、RST直接发送ACK包。一般来说,状态为up的目标主机会返回一个RST包来终止这条异常的TCP链路;您也可以发送正常的SYN数据包。如果目标主机返回SYN/ACK或SRT数据包,就可以证明目标主机处于运行状态。
    UDP:
  • ICMP端口无法到达,并且永远消失了。如果目的IP up,UDP目的端口关闭,目的主机会返回一个目的端口不可达的数据包,可以证明目的端口up。
    TCP和UDP的具体定义和交互逻辑这里就不展开了。如果没有概念,可以上网查一下。还有更详细的解释帖。
    需要注意的是,随着网络安全意识的提高,有些服务器其实对扫描做了一些保护。比如收到直接收到ACK的包,就不会返回包,以免被扫描。所以现在扫描的结果只是参考,不要完全相信。
    Scapy-TCP演示了使用TCP和Scapy的四层扫描:
    Scapy使用tcp进行四层扫描。
    收到的响应数据包:
    a .显示()
    可以看出,返回的分组标志=R指示它是RST。
    用一行代码请求:
    A = sr1(IP(dst = ' 192 . 168 . 31 . 97 ')/TCP(dport = 80,flags='A '),timeout=1
    根据以上解释,您可以使用tcp为四层发现制作一个脚本:
    #!/usr/bin/python导入日志记录logging . get logger(' scapy . runtime ')。setLevel(日志记录。ERROR)from scapy . all import *if len(sys . argv)!= 2:print('用法。/ack_ping_script.py [/24网络地址]')print('示例。/ACK _ ping _ script . py 172 . 18 . 14 . 0 ')print(' Example将对172.18.14.0/24范围执行TCP ACK ping扫描')sys . exit()address = str(sys . argv[1])IP _ num _ list = address . split(' . ')prefix = ip_num_list[0] +' . '+ ip_num_list[1] +' . '+ ip_num_list[2] +' . 'for addr in range(1,254):A = sr1(IP(dst = prefix+str(addr))/TCP(dport = 333,flags='A '),timeout=0.1,verbose = 0)try:if int(A[TCP]。flags)= = 4:print(prefix+str(addr))除:pass
    解释为什么脚本中的20行使用4作为判断:
    收到的响应数据包中的标志
    从图中可以看出,RST换算成十进制后是4,所以在剧本中用于这样的判断。
    在执行之前,您仍然需要更改权限。执行过程是这样的:
    python 3 ack _ ping _ script . py 192 . 168 . 31 . 0
    scapy-udp使用udp进行四层扫描时,需要设置几乎不使用的端口,因为我们只是通过无法到达的目标端口来检测ip是否有效。
    具体用途:
    Scapy使用udp进行四层扫描。
    如果ip不存在或端口正常打开,则不会收到返回的数据包:
    目标ip不存在。
    还要编写一个使用udp进行四层发现的脚本:
    #!/usr/bin/python导入日志记录logging . get logger(' scapy . runtime ')。setLevel(日志记录。ERROR)from scapy . all import *if len(sys . argv)!= 2:print('用法。/udp_ping_script.py [/24网络地址]')print('示例。/UDP _ ping _ script . py 172 . 18 . 14 . 0 ')print(' Example将对172.18.14.0/24范围执行UDP ping扫描')sys . exit()address = str(sys . argv[1])IP _ num _ list = address . split(' . ')prefix = ip_num_list[0] +' . '+ ip_num_list[1] +' . '+ ip_num_list[2] +' . 'for addr in range(1,254):a = sr1(IP(dst = prefix+str(addr))/UDP(dport = 23687),timeout=0.1,verbose = 0)try:if int(a[IP].proto)= = 1:print(prefix+str(addr))除:pass
    解释第20行的判断依据:
    1代表ICMP
    执行结果:
    python 3 UDP _ Pinger . py 192 . 168 . 31 . 0
    我在scapy中使用tcp和udp做四层发现时,得到的结果有些不同,所以再次提醒大家,扫描结果只能作为参考。
    Nmapnmap在三层和四层发现中的作用应该算是主流。当然也有可能是我接触的工具还是比较少的。如果有更好的工具,请推荐给我。接下来,我们来介绍一下nmap在四层发现中的使用。
    Nmap使用udp进行四层发现:
    nmap 192 . 168 . 31 . 1-254-pu 12345-sn
    Nmap使用tcp进行四层发现:
    nmap 192 168 . 1 . 1-254-pa 12345-sn
    实际上,nmap还为四层发现提供了一些其他参数:
    四层发现的参数
    在实践中,如果时间充裕,四层发现最好改变几个参数,可能会得到不同的结果,综合比较后的结果会更有参考性。
    前一篇文章还说nmap也可以发送ip文档作为参数来扫描文档中指定的ip:
    nmap -iL ip.txt -PA123 -sn
    HP 3 hp3也可以用于四层发现。如果使用udp,则如下所示:
    hp3-UDP 192 . 168 . 31 . 97-p 12345-C1
    如果udp用于四层发现,参数传输中的端口也应该使用未打开的端口。
    使用hp3编写四层发现脚本:
    #!/bin/bashif[" $ # "-ne 1];然后echo '用法。/UDP _ hp3 . sh[/24网络地址]'echo '示例。/UDP _ hp3 . sh 192 . 168 . 31 . 0 'echo '示例将对192.168.31.0/24网络执行UDP ping扫描,并输出到output.txt文件'exitfiprefix = $(echo $ 1 | cut-d '。'-f1-3)for addr in $(seq 1 254);dohp3 $前缀。$ addr-UDP-p 13215-c 1  gt; gtr . txtdonegrep Unreachable r . txt | cut-d ' '-F5 | cut-d ' = '-F2  gt; gtoutput.txtrm r.txt
    hp3使用时不加- udp,即默认使用tcp扫描:
    hp3 192 . 168 . 31 . 168-C1
    您还可以编写一个使用tcp的hp3脚本:
    #!/bin/bashif[" $ # "-ne 1];然后echo '用法。/UDP _ hp3 . sh[/24网络地址]'echo '示例。/UDP _ hp3 . sh 192 . 168 . 31 . 0 'echo '示例将对192.168.31.0/24网络执行UDP ping扫描,并输出到output.txt文件'exitfiprefix = $(echo $ 1 | cut-d '。'-f1-3)for addr in $(seq 1 254);dohp3 $前缀。$ addr-C1  gt; gtr . txtdonegrep Unreachable r . txt | cut-d ' '-F5 | cut-d ' = '-F2  gt; gtoutput.txtrm r.txt
    执行的结果是这样的:
    。/TCP _ hp3 . sh 36 . 152 . 44 . 0
    这里如果用hp3扫描同一个网段,会自动降级到arp协议,变成二层扫描。通过抓包可以看到,有兴趣可以试试。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-8-21 17:21 , Processed in 0.052641 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表