• 【网络安全---ICMP报文分析】Wireshark教程----Wireshark 分析ICMP报文数据试验


    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取:

    超详细的网络安全笔记

    二,文件包含漏洞详解

    一,试验环境搭建

    1-1 试验环境示例图

    1-2 环境准备

    两台kali主机(虚拟机) 

                    kali2022   192.168.220.129/24

                    kali2022   192.168.220.3/27

    1-2-1 网关配置: 

     编辑-------- 虚拟网路编辑器  

    更改设置进来以后 ,先选择NAT模式,然后是NAT设置

    网关配置好确定

    1-2-2 IP地址配置

    首选更改网络连接模式为NAT模式

    两个主机都设置成NAT模式以后开机 ,打开终端修改A主机的配置,指令如下:

    1. nmcli connection edit Wired\ connection\ 1
    2. goto ipv4.addresses
    3. change
    4. 192.168.220.129/24
    5. back
    6. goto gateway
    7. change
    8. 192.168.220.2
    9. back
    10. back
    11. save
    12. activate
    13. quit

    截图如下:

    这样主机A的IP地址设置完成 

    以同样的方法设置主机B的IP地址

    1. nmcli connection edit Wired\ connection\ 1
    2. goto ipv4.addresses
    3. change
    4. 192.168.220.3/27
    5. back
    6. goto gateway
    7. change
    8. 192.168.220.2
    9. back
    10. back
    11. save
    12. activate
    13. quit

    1-2-3 Mac地址配置

    修改A主机的mac地址,修改为00:aa:aa:aa:aa:aa

    macchanger --mac=00:aa:aa:aa:aa:aa eth0

    修改好了查看A主机的网络配置 

    ip addr show

    修改B主机的mac地址,修改为00:bb:bb:bb:bb:bb 

    macchanger --mac=00:bb:bb:bb:bb:bb eth0

     修改好了查看一下B主机的网络配置 

    ip addr show

    试验环境准备好了,接下来就开始抓包,开始分许 

    二,详细试验步骤

    为了避免物理机网络的干扰,最好是物理机断网进行试验

    2-1 主机A--- Ping ---主机B

    2-1-1 理论分析过程图解

    2-1-2 判断对方是否跟自己处在同一个网段 

    A主机判断B主机是否跟自己同一个网段

    A_IP:192.168.220.129                   

    GW:255.255.255.0

    B_IP:192.168.220.3

    GW:255.255.255.254

    第一步:把A主机的IP地址转换为二进制

     11000000.10101000.11011100.10000001

    第二步:A主机的子网掩码转换成二进制

     11111111.11111111.11111111.00000000

    第三步:对两者进行‘与’操作,全1得1,有零得零,最后得到结果

     11000000.10101000.11011100.10000001

     11111111.11111111.11111111.00000000

    得到结果为 11000000.10101000.11011100.0000000

    转换成十进制为:192.168.220.0

    第四步:把B主机的IP地址转换为二进制

      11000000.10101000.11011100.00000011

    第五步B主机二进制IP地址跟A主机二进制子网掩码进行‘与’操作:

       11000000.10101000.11011100.00000011

       11111111.11111111.11111111.00000000

    得到结果为 11000000.10101000.11011100.0000000

    转换成十进制为:192.168.220.0

    结论:得到都是192.168.220.0 A主机跟B主机处于同一个网段

    B主机判断A主机是否跟自己同一个网段

    A_IP:192.168.220.129                   

    GW:255.255.255.0

    B_IP:192.168.220.3

    GW:255.255.255.254

    第一步:把B主机的IP地址转换为二进制

    11000000.10101000.11011100.00000011

    第二步:B主机的子网掩码转换成二进制

     11111111.11111111.11111111.11100000

    第三步:对两者进行‘与’操作,全1得1,有零得零,最后得到结果

     11000000.10101000.11011100.00000011

     11111111.11111111.11111111.11100000

    得到结果为 11000000.10101000.11011100.0000000

    转换成十进制为:192.168.220.0

    第四步:把A主机的IP地址转换为二进制

      11000000.10101000.11011100.10000001

    第五步:A主机二进制IP地址跟B主机二进制子网掩码进行‘与’操作:

       11000000.10101000.11011100.10000001

       11111111.11111111.11111111.11100000

    得到结果为 11000000.10101000.11011100.10000000

    转换成十进制为:192.168.220.128

    结论:得到分别是192.168.220.0 和 192.168.220.128 所以B主机跟A主机不在同一个网段

    总结:简单来说就是主机A拿自己的IP地址的二进制和子网掩码的二进制进行异或运算得到一个IP地址,主机A再拿B主机的IP地址跟自己自己的子网掩码进行同样的异或运算得到另一个IP地址,看这两个IP地址是否一样

    2-1- 3 试验分析

    主机A,主机B打开wireshark工具

    搜索wireshark

    打开以后 捕获---选项---eth0 (两个主机的都打开转备好,但别开始)

    注意:一定要关掉最下面的‘在所有接口上使用混杂模式’

    主机A输入ping命令(准备好,不要运行)

    ping -c 192.168.220.129

    接下来迅速打开连个主机的wireshark 点击开始进行抓包 

    然后迅速回到A主机回车执行ping 命令

    执行完以后两个主机停止抓包

    主机A的数据包

    主机B的数据包 

    分析过程 

    主机A先判断主机B是否跟自己同一个网段,发现是跟自己同一个网段

    A4:广播问谁有主机B的Mac地址

    A5:B回复了自己的Mac地址

    A2:A封装自己的ICMP报文以后,直接发给了B(源Mac是自己,目标Mac是主机B

    B3:由于B判断A跟自己不是一个网段,所以通过广播询问网关Mac地址

    B4:网关回复了自己的Mac地址给B

    B2:主机B封装ICMP回复信息发给A主机,但是注意报文内容,源Mac是自己,目标Mac是网关

    这个数据包会送到网关那里,由网关转发给A主机,可能抓包没抓完整,网关通过ARP协议问主机A的Mac地址过程没有抓出来,应该是网关拿到数据以后发现是发给主机A的,就会广播询问主机A的Mac地址的。

    注意:主机A,主机B抓到的有些包是一样的,比如A4和B5,B6和A5,是因为ARP是广播协议,何为广播?每个主机都能听得到,所以两个主机抓到的有些包一样。

    2-2 主机B---ping ---主机A

    2-2-1 理论分析过程

    01:主机B先判断A是不是跟自己一个网段,发现不是跟自己一个网段

    02:主机B就会广播的方式问网关的mac地址

    03:网关把自己的mac地址发给B

    04:主机B封装ICMP报文以后发给主机A,源Mac是自己,目标Mac是网关,由网关进行转发

    05:主机A收到B的ICMP报文以后会需要回复,所以先判断主机B是否跟自己同一个网段

           发现主机B是跟自己同一个网段

    06:这时候A会广播问主机B的Mac地址

    07:主机B把自己的Mac地址回复给A主机

    08:A主机封装ICMP数据包直接发送给B,源mac:主机A自己,目标Mac:B主机的Mac

    2-2-2 试验分析

    如果达到更好的效果,应该虚拟机恢复拍照,重新配置网路信息,因为经过一轮通信以后很有可能会ARP缓存,有了缓存以后有些时候就不需要发ARP广播了,直接根据缓存进行发包。

    不过我就直接演示了

    按上述步骤抓包

    ping 192.168.220.129

    主机B的数据包

    主机A的数据包 

    分析过程 

    先判断自己是不是A主机一个网段,结果不是(之间讲了如何判断)

    所以先询问网关的Mac地址

    B4:询问网关的Mac地址

    B5:网关回复自己的Mac地址

    B1:主机B封装ICMP数据发给A主机(注意源Mac是自己,目标Mac是网关,不信看一下数据包内容,第二行src表示源Mac地址,dst表示目标Mac地址)

    B2:网关拿到数据发现要发给主机A,发广播询问主机A的Mac地址

    A2:主机A收到广播以后告诉网关自己的Mac地址,网关就会把数据转交给主机A

    主机A收到报文,需要回复,先判断主机B是否跟自己一个网段,发现是

    A5:主机A广播询问B的Mac地址

    A6:主机B收到广播进行回复,把自己的Mac地址告诉主机A

    A4:主机A直接对主机B进行回复,源Mac是自己的,目标Mac是主机B的(因为对于主机A,主机B跟自己处于一个网段,看一下这个数据包内容把)

    果然src是主机A自己,dst是主机B

    三,试验建议

    最好是通过kali linux去做,修改MAC地址比较方便

    在抓包的时候关闭混杂模式

    在抓包之后,注意清空ARP缓存

    最好是只ping 一个包,通过-c 来指定个数

    四,总结

    其实做这个试验之前,我对如何判断两个主机是否处于同一个网段,如何用ICMP协议通信等比较模糊,甚至认为两个主机处在同一个网段就处在同一个网段。现在才发现还有相对之分,就比如说本试验以A的视角,主机B跟主机A就是同一个网段,以B的视角主机B跟主机A不在同一个网段,虽然是A ping B 然后B ping A .但是两者通信还是有所区别的。本试验关键点就是理解一些概念,还要会判断两个主机是否处于同一个网段等,希望大家也能自己动手去分析分析具体过程。

  • 相关阅读:
    【车载开发系列】CAN总线知识入门篇
    【考研英语语法】名词性从句
    为什么不建议给MySQL设置Null值?《死磕MySQL系列 十八》
    Redis
    Vue插件
    Node学习笔记之使用Express框架开发接口
    【图像检测】基于K-L实现人脸检测附matlab代码
    uniapp项目笔记
    Pulsar bundle数目的选择
    设计模式的思考(四)
  • 原文地址:https://blog.csdn.net/m0_67844671/article/details/133418418