• 西电计网ARP欺骗实验


    ARP欺骗实验

    Cloud云设备

    想查一下华为官方使用手册,看看云到底是个啥,但是查不到.

    ensp模拟器中云设备这篇博客上这样写的:

    eNSP工具中的云代表通过各种网络技术连接起来的计算机网络环境,目前可实现的功能包括:仿真设备之间建立映射关系、绑定网卡与仿真设备之间进行通信,以及通过开放UDP端口方式与外部程序进行通信。

    然后实例给出的云的用法

    image-20221116180902542

    试图让两个PC相互ping通

    云上是这样设置的:

    image-20221116180929548

    云上有两个端口,这两个端口只能对UDP协议提供服务,其他的包它不管

    端口映射表明,凡是从1口进入的UDP包,直接无脑从2口出去

    反过来同样

    也就是说云屏蔽了下面的实现细节,给我们的看到的是,一个双向的无条件UDP通道

    确实是可以ping通的

    image-20221116181242729

    下面将PC2换成HTTP server,将PC1换成Client,试试发一个基于TCP的HTTP请求,能否通过云呢?

    image-20221116181538169

    server已经设置好了HTTP服务,并在80端口上开放

    Client也是可以ping通HTTPserver@192.168.1.3的

    image-20221116181629814

    然后尝试获取192.168.1.3/login.html(事先写好了的)这个文件

    image-20221116181817397

    竟然也可以成功

    在Cloud朝向Client1的那个接口上抓包

    image-20221116181850601

    TCP包竟然也可以通过

    连接本机网卡

    网络拓扑长这样

    image-20221117111152251

    Cloud1要连接到本机的一块网卡上,其Ethernet 0/0/1端口朝向PC1,PC2这个子网

    Ethernet0/0/2朝向本机上的一块网卡VMnet8

    image-20221117110332584

    Ethernet 0/0/2这个端口上绑定的是"VMware Network Adapter VMnet8"这块网卡.这个网卡是个啥呢?

    VMware中,给NAT网络建立的网卡,宿主机也就是本机,在192.168.191.1上

    VMware还创建了VMnet1网卡,用于桥接

    以太网适配器 VMware Network Adapter VMnet8:
    
       连接特定的 DNS 后缀 . . . . . . . :
       描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
       物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08
       DHCP 已启用 . . . . . . . . . . . : 否
       自动配置已启用. . . . . . . . . . : 是
       本地链接 IPv6 地址. . . . . . . . : fe80::8c3f:c867:124c:937%6(首选)
       IPv4 地址 . . . . . . . . . . . . : 192.168.191.1(首选)
       子网掩码  . . . . . . . . . . . . : 255.255.255.0
       默认网关. . . . . . . . . . . . . :
       DHCPv6 IAID . . . . . . . . . . . : 889213014
       DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-29-56-AF-A7-84-A9-38-F4-9B-69
       TCPIP 上的 NetBIOS  . . . . . . . : 已启用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    kali虚拟机在192.168.191.129上

    方便期间,可以在kali上安装open-sshserver,然后在主机终端上ssh连接kali虚拟机进行控制,就像wsl一样

    ┌──(root💀kali)-[/home/kali]
    └─# route                                                                        130 ⨯
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         192.168.191.2   0.0.0.0         UG    100    0        0 eth0
    192.168.191.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    下面配置R1路由器开启DHCP服务,给PC1和PC2分配192.168.191.0/24网段中的地址

    <Huawei>
    <Huawei>sys
    Enter system view, return user view with Ctrl+Z.
    [Huawei]un in en
    Info: Information center is disabled.
    [Huawei]sysname router
    
    #设置E0端口ip地址
    [router]int E0/0/0
    [router-Ethernet0/0/0]ip address 192.168.191.254 24
    [router-Ethernet0/0/0]dhcp enable
    Info: The operation may take a few seconds. Please wait for a moment.done.
    
    
    #配置dhcp地址池
    [router]ip pool swimmingpool
    Info:It's successful to create an IP address pool.
    [router-ip-pool-swimmingpool]network 192.168.191.0 mask 24
    [router-ip-pool-swimmingpool]lease day 5 hour 5
    [router-ip-pool-swimmingpool]gateway-list 192.168.191.254#设置网关为dns地址
    [router-ip-pool-swimmingpool]dns-list 192.168.191.254 8.8.8.8#设置dns服务器为路由器地址
    [router-ip-pool-swimmingpool]disp this
    #
    ip pool swimmingpool
     gateway-list 192.168.191.254
     network 192.168.191.0 mask 255.255.255.0
     lease day 5 hour 5 minute 0
     dns-list 192.168.191.254 8.8.8.8
    #
    return
    
    #E0端口上使用dhcp地址池
    [router-ip-pool-swimmingpool]int E0/0/0
    [router-Ethernet0/0/0]dhcp select global
    [router-Ethernet0/0/0]disp this
    #
    interface Ethernet0/0/0
     ip address 192.168.191.254 255.255.255.0
     dhcp select global
    #
    return
    [router-Ethernet0/0/0] User interface con0 is available
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    然后PC2使用DHCP服务,ipconfig已经获取到了ip地址

    image-20221117112657301

    PC1同理

    image-20221117113350037

    目前网络拓扑长这样

    image-20221117113614533

    实际上这里的云可以这样理解:画个图意思意思

    image-20221117131149016

    现在测试网络通断

    kali可以ping通所有设备

    image-20221117114026133

    主机也可以ping通所有设备

    image-20221117114002326

    PC1也可以ping通所有设备

    image-20221117114131677

    到此准备工作完毕

    ARP欺骗实验

    实际上win11主机就可以通过一些软件,实现ARP欺骗,装kali不装无所谓

    如果将win11作为攻击机,可以用Cain这个软件

    Cain&Abel,该隐和亚伯,哥俩是亚当和夏娃的孩子

    Cain嫉妒父母对Abel的偏爱,就给Abel弄死了,于是Cain成为世界上所有的恶人的祖先

    用到子网中十分贴切,可以理解为子网中的邻居就是Abel,攻击者就是Cain

    Cain长这样子,关键部件已经框出,

    Cain

    Cain基本设置

    首先要设置Cain使用哪块网卡

    由于主机上有很多网卡,需要给Cain指定其中一个,也就是VMnet 8这个网卡

    在菜单栏的Configure菜单中sniffer嗅探器选项卡,选择一个网卡

    Cain configure

    但是这里的网卡都是内核对象id的形式,不方便区分哪一块是VMnet8

    可以打开注册表编辑器去查

    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
    
    • 1

    根据注册表中的IPAddress键值找到192.168.191.1对应的这块网卡,其id为{30b09604-410c-4077-bae0-5636555317b2}

    hkey

    然后在Cain中选择这块网卡确定

    image-20221117115735316

    主机发现

    下面要做的是主机扫描,看看哪些邻居在线,实际上类似于nmap 主机发现的功能

    image-20221117120001662

    扫描192.168.191.0/24网段中的所有ip地址(除去0和255两个特殊地址)

    扫描结果显示在下面的列表里

    这里扫发现了

    kali@192.168.191.129,

    router@192.168.191.254,

    PC1@192.168.191.253,

    PC2@192.168.191.252,

    VMnet8默认网关@192.168.191.2,

    win7@192.168.191.134

    这几个主机

    ARP欺骗的原理

    现在是知道了邻居都是谁了,在整蛊邻居之前,首先了解ARP欺骗的原理

    ARP协议

    以太网中的数据传输使用链路层协议,源主机需要知道目的主机的MAC地址,才能向目的主机发送报文

    可以使用arp -a查看本机缓存,arp -d 可以删除目标地址的缓存

    如果源主机没有缓存目的主机的MAC地址,在发送数据之前,首先会在子网内广播ARP报文,意图寻找目的主机的MAC地址

    正常情况下,非目的主机不会多管闲事,事不关己就不会回应,只有目的主机在收到ARP广播后会回应,此后目的主机和源主机都会更新自己的arp缓存,记录彼此的MAC地址

    这个过程可以抓包观察,还是这个拓扑,在PC1@192.168.191.253的唯一网卡上抓包,

    image-20221117121426778

    首先在PC1上arp -d *删除其所有的arp缓存,此举保证下一次ping的时候必然会首先发送ARP广播询问目的MAC地址

    然后ping 192.168.191.252

    image-20221117121633808

    第90和第91两帧就分别是广播的ARP请求和单播的ARP回应

    此时PC1的ARP缓存中就记录了PC2@192.168.1.252的MAC地址54-89-98-ED-53-0C

    PC>arp -a
    
    Internet Address    Physical Address    Type
    192.168.191.252     54-89-98-ED-53-0C   dynamic
    192.168.191.2       00-50-56-F5-46-91   dynamic
    
    • 1
    • 2
    • 3
    • 4
    • 5

    此后的ICMP ping报文才可以在链路层顺利发送

    ARP欺骗

    在描述ARP协议时有这么一句

    正常情况下,

    非目的主机不会多管闲事,事不关己就不会回应,

    只有目的主机在收到ARP广播后会回应,

    此后目的主机和源主机都会更新自己的arp缓存,记录彼此的MAC地址

    非目的主机不会多管闲事,这是个君子协定,

    就好比老师上课的时候,学生不应该随便说话,但是就算是学生随便说话,老师也不能怎么样.

    关键是,我突然站起来就说,声如洪钟盖过了老师,有些傻蛋学生居然就听信了我说的,比如老师说1+1=2, 我非得说1+1=王.这个傻蛋学生就记住了1+1=王

    这就是ARP欺骗的道理

    你PC1@192.168.191.253不是要广播找192.168.191.252的MAC吗?

    我win11@192.168.191.1也听见你的广播了,并且我不是君子,我是小人,我也可以张嘴说"我就是192.168.191.252",并且我还得喋喋不休地使劲说,让你根本没有机会收到PC2的回复.

    好了,你PC1听信了我的谗言,现在就认为,192.168.191.252这个逻辑地址对应的MAC地址是我win11网卡的地址了

    此后在链路层通信时,你发往192.168.1.252的包,实际上使用链路层协议,都会发往我win11这里来

    下面就在Cain上实现这一点

    实现

    image-20221117123158434

    这里有两个框,其作用就是让谁把谁当成谁,要看一下上面的警告

    APR enables you to hijack IP traffic between the selected host on the left list and all selected hosts on the right list in both directions.

    APR使你可以双向劫持左侧主机和右侧主机的IP路由

    If a selected host has routing capabilities WAN traffic will be intercepted as well.

    如果所选主机具有路由功能,则 WAN 流量也会被拦截。

    Please note that since your machine has not the same performance of a router you could cause DoS if you set APR between your Default Gateway and all other hosts on your LAN.

    请注意,因为你的机器没有路由功能,因此当你将自己的网卡作为网关欺骗其他主机的时候,会导致拒绝服务

    下面欺骗192.168.191.252和192.168.191.253,让他们尝试获取对方的MAC地址时,实际得到win11的MAC地址

    image-20221117124136729

    在PC1和PC2唯一的网卡上抓包,之后开始欺骗

    image-20221117124254768

    现在我们站在被害人PC1,PC2的视角上,它啥也不知道,不知道win11@192.168.191.1在发坏

    首先arp -d *清理一下各自的arp的缓存,然后PC1 ping PC2,甚至不用ping,他们会定期发ARP报文建立缓存

    然后在PC1上就发生了下面一幕:

    PC>arp -a
    
    Internet Address    Physical Address    Type
    192.168.191.253     00-50-56-C0-00-08   dynamic
    192.168.191.252     00-50-56-C0-00-08   dynamic
    192.168.191.1       00-50-56-C0-00-08   dynamic
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里三个MAC地址都是00-50-56-C0-00-08,正是win11的VMnet8网卡的地址,

    甚至PC1认为192.168.191.253这个自己的ip地址都应该对应win11.VMnet8网卡的MAC地址

    以太网适配器 VMware Network Adapter VMnet8:
    
       连接特定的 DNS 后缀 . . . . . . . :
       描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
       物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08
       ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    下面到win11上抓VMnet8的包,用PC1再ping PC2,看看win11能否收到

    image-20221117125143053

    收到了,明明是192.168.191.253和192.168.191.252之间的通讯,结果发到192.168.191.1上了

    下面到PC2上抓包再用PC1 ping PC2看看PC2能否收到

    image-20221117125322280

    PC2也收到了并且有回复

    Cain干了啥

    在win11的VMnet8网卡上抓包,过滤只关心ARP协议,可以发现这种东西

    image-20221117125750567

    明明没有任何ARP请求的广播,win11缺一个劲地给PC1@192.168.191.253和PC2@192.168.191.252发送ARP回复报文,

    win11告诉PC1@192.168.191.253,说:听我的,"192.168.191.252"的MAC地址就是00-50-56-C0-00-08

    win11告诉PC2@192.168.191.253,说:听我的,"192.168.191.253"的MAC地址就是00-50-56-C0-00-08

    也就是说Cain一直在伪造ARP回复报文,并将本机网卡MAC地址作为目标MAC地址

    DNS欺骗实验

    基于ARP欺骗的原理,还可以用Cain进行DNS欺骗

    在win11上Cain的DNS欺骗功能受了点影响,即使设置了DNS欺骗,也不会对DNS查询报文做出回复,就导致了域名无法解析错误

    于是从win7@192.168.191.134上使用Cain继续实验

    先前我们骗了192.168.191.252和253两个终端,这一次更加严重,需要欺骗网关

    image-20221117141743826

    PC1@192.168.191.253这个终端本来的网关和DNS服务器都是192.168.191.2,

    也就是说,当PC1尝试访问外网或者尝试使用DNS协议时,都会首先和网关@192.168.191.2进行通讯

    现在win7@192.168.191.134要进行一个中间人攻击,通过ARP攻击,让PC1认为win7的网卡地址就是网关的网卡地址.

    让网关认为win7的网卡地址就是PC1的网卡地址

    而PC1的DNS服务器ip地址也会解析到win7的网卡地址上,显然windows正常情况下是不具备DNS解析能力的,但是win+Cain可以

    在win7上用Cain设置假的DNS解析

    image-20221117142609102

    也就是说,只要有关于baidu.com和www.baidu.com的dns解析请求发到win7上了,win7就会返回dns回复报文,将域名解析到192.168.191.1上,而这正是win11的ip地址

    受害者是PC1@192.168.191.253,从PC1上尝试ping baidu.com,发现ip地址被解析到192.168.191.1了

    image-20221117140416222

    在win11@192.168.191.1:80上开启微软IIS http服务器

    在拓扑中添加一个HTTP终端,同样来这么一套,观察其访问baidu.com获取到的HTTP服务是谁提供的

    image-20221117143056398

    image-20221117143206022

    终端尝试访问http://baidu.com

    image-20221117143233405

    确实是在访问微软IIS服务器的主页

    Cain干了啥

    可想而知,Cain监听到baidu的dns请求报文后会乱回应dns相应,解析到错误的ip地址

    image-20221117143651182

    欺骗转发

    欺骗转发是个什么事情呢,画个图意思意思,为了方便表达报文的传送方向,省略了二层交换机,连线就是报文的传播方向

    左正常,右欺骗转发

    也就是说,攻击者欺骗了邻居,让邻居认为攻击者才是网关,于是邻居任何访问外网的数据包都会先经过攻击者.

    至于网关是将包发给攻击者再转发给邻居还是说网关能够正确地将包发给邻居,这已经不重要了

    为了让邻居不发现,攻击者需要让邻居的包再转发到真正的网关,

    攻击者自己呢,就像一个检查站一样,可以过目邻居的每一个访问外网的数据包.

    如果有些网站的用户名和密码是明文传送的,或者是比较容易破解的加密传送,就可以被监听到

    并且邻居的所有上网行为,包括浏览了什么网站,都会被看的一清二楚

    下面使用kali虚拟机作为攻击者实现这一实验

    实验

    首先在kali上安装武器,dsniff

    kali换apt下载源

    vim /etc/apt/sources.list

    中科大镜像

     deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
     deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
    
    • 1
    • 2
    apt install dsniff
    
    • 1

    然后看一下kali在子网中的网卡是哪一个

    ┌──(root💀kali)-[/home/kali]
    └─# ifconfig                                                                                                        1 ⨯
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.191.129  netmask 255.255.255.0  broadcast 192.168.191.255
            ...
    
    • 1
    • 2
    • 3
    • 4
    • 5

    是eth0

    下面就是ARP欺骗了

    ┌──(root💀kali)-[/home/kali]
    └─# arpspoof -i eth0 -t 192.168.191.253 -r 192.168.191.2
    0:c:29:89:6:49 54:89:98:62:11:26 0806 42: arp reply 192.168.191.2 is-at 0:c:29:89:6:49
    0:c:29:89:6:49 0:50:56:f5:46:91 0806 42: arp reply 192.168.191.253 is-at 0:c:29:89:6:49
    0:c:29:89:6:49 54:89:98:62:11:26 0806 42: arp reply 192.168.191.2 is-at 0:c:29:89:6:49
    0:c:29:89:6:49 0:50:56:f5:46:91 0806 42: arp reply 192.168.191.253 is-at 0:c:29:89:6:49
    0:c:29:89:6:49 54:89:98:62:11:26 0806 42: arp reply 192.168.191.2 is-at 0:c:29:89:6:49
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这条命令的意思是,将自己eth0网卡的信息作为网关信息,欺骗192.168.191.253

    执行之后,观察PC1的arp缓存,已经上当了

    PC>arp -a
    
    Internet Address    Physical Address    Type
    192.168.191.134     00-0C-29-BB-FE-E5   dynamic
    192.168.191.2       00-0C-29-89-06-49   dynamic
    
    • 1
    • 2
    • 3
    • 4
    • 5

    PC1此时ping baidu是不会通的

    此后kali的这个终端将会一直进行ARP欺骗,可以另开一个终端做别的事情

    在另一个终端上开启路由转发

    ┌──(root💀kali)-[/home/kali]
    └─#     echo 1 >/proc/sys/net/ipv4/ip_forward
    
    • 1
    • 2

    也就是在/proc/sys/net/ipv4/ip_forward这个文件里写了一个1,表示打开

    此后再在PC1上ping百度

    image-20221117150204917

    通了

    同样的道理,先用arpspoof -i eth0 -t 192.168.191.10 -r 192.168.191.2欺骗终端,然后从终端上尝试访问baidu.com

    image-20221117151051933

    立刻就访问到了百度首页

    同时kali上也抓到了终端的请求

    image-20221117151136721

    这里110.242.68.66就是baidu的ip地址

  • 相关阅读:
    PHP从多维数组中删除重复的值
    基于java+ssm+vue+mysql的学生考勤管理系统
    分享股票数据的api接口设计文档的代码
    Redis(主从复制、哨兵模式、集群)概述及部署
    spring cloud
    怎么把mp4转换成amv格式?如何下载amv格式视频?
    修复 Android 手机陷入恢复模式的 5 种方法
    yum使用
    互联网广告人--联合御寒--品牌,代理,平台,达人 多方携手御寒
    软考高频考点——项目中标了以后该怎么做?
  • 原文地址:https://blog.csdn.net/qq_26131031/article/details/127955123