[c#]记一次实验室局域网的ARP欺骗

起因

某天中午午睡时,笔者被激烈的键盘和鼠标声音吵醒,发现实验室的同学在那边忘我地打LOL,顿觉不爽,于是决定整他一下。想了一下之后觉得就让他掉线一下作为惩罚好了。结合以往的理论知识,大家在同一个局域网中,用ARP欺骗显然是一个好办法,于是就有了本文接下来的故事。

ARP欺骗理论

首先先来整理一下关于ARP欺骗的理论知识。ARP欺骗[1](英语:ARP spoofing),又称ARP病毒(ARP poisoning)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定电脑或所有电脑无法正常连接。

在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台安装有TCP/IP协议的主机(包括网关)都有一个ARP缓存表。该表中保存这网络中各个电脑的IP地址和MAC地址的对照关系。
在正常情况下arp缓存表能够有效的保证数据传输的一对一性。但是ARP协议对应的ARP缓存表维护机制中存在不完善的地方,当主机收到一个ARP的应答包后,它并不验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息。这就是导致arp欺骗的根本原因。

简单总结一下,ARP欺骗大致可以分为以下三种:

1、伪造主机

欺骗源C把自己伪装成局域网内的另一台主机B,使得局域网内发往B的报文都流向了C。伪造主机的过程与伪造网关类似。

               图1:伪造主机

图1中,我们假设局域网中有三台主机,分别是网关,欺骗源和被骗主机,他们的IP的MAC地址都标在图中了。欺骗源每隔一定的时间间隔就向网关发送一个ARP报文,内容为我的IP地址是192.168.1.3(被骗主机IP),我的MAC地址是BB-BB-BB-BB-BB-BB(自己的MAC地址)。这样当网关更新ARP缓存表的时候,就会把这个错误的IP和MAC映射关系登记在ARP缓存表中,下次当网关转发报文的时候就会把发送给被骗主机的报文发送给欺骗源。这反应到现实中就是被骗主机断网了。

2、伪造网关

欺骗源把自己(或者其他非网关主机)伪装成网关,向局域网内的被骗主机发送ARP应答报文。使得局域网内的主机误以为欺骗源的MAC是网关MAC地址。使得原本流向网关的数据都被错误地发送到欺骗源。其简单的示意图如图2所示:

                  图2:伪造网关

我们还是以上面三台主机的例子来解释,主机的IP与MAC都没有改变,但是这次欺骗源向被骗主机发送ARP报文,报文的内容为,我的IP是192.168.1.1(我是网关),我的MAC地址是BB-BB-BB-BB-BB-BB(欺骗源的MAC地址)。这样当被骗主机收到ARP报文后,会更新IP地址为192.168.1.1这一项的MAC为欺骗源的MAC。这样被骗主机向网关发送数据的时候其实都发给了欺骗源,这反应到现实中其实也是被骗主机掉线了。当然第二种情况经验证理论和实际情况有出入,下文会解释。

3、双向欺骗

第三种其实是上两种方式的结合,既欺骗网关又欺骗主机,达到双向欺骗的目的,这里就不再赘述。

具体实施

通过Windows API来构造ARP报文并发送也是可以的,但是感谢伟大的开源社区,我们可以使用winpcap或者其C#的封装Sharppcap来实现,这大大简化了我们的实现过程。事实上,本文并不打算介绍编程的细节,因为笔者认为明白原理之后,通过上述工具写出一个ARP欺骗工具并不是什么事儿。所以我们直接来看一下这个工具,如图3所示。

           图 3:ARP欺骗工具

在开始ARP欺骗之前,我们先要扫描一下局域网内的所有主机,获取他们的IP地址和MAC的映射关系,这个可以通过ARP Request报文,一个一个扫描过去就可以了。

然后选择其中一个IP(MAC)进行ARP欺骗就可以了。ARP风暴是笔者加的另一个功能,其原理是不断构造ARP Request报文来不停地询问局域网内的所有主机,让他们不断做出应答从而来耗尽局域网内的带宽资源,造成网卡的假象。但似乎是因为现在的交换机带宽足够大吧,并没有什么卵用。

效果

当使用ARP网关欺骗(即对应上文的伪造主机)时,效果非常理想,那个同学掉线了,且怎么都无法重连,非常着急……

但是当使用ARP主机欺骗(即对应上文的伪造网关)时,效果超出的我的想象,实验室所有主机都掉线了,包括笔者的电脑。后来笔者分析了一下原因,理论上这个假的ARP Response报文(即笔者电脑伪装成网关给被骗主机发报文)是发送给那个被骗的主机的,其他主机应该是不会接收的。但是实际上,别的主机看到是从网关发送回来的ARP Response 报文,则不管是不是发送给自己的,都会接受下来,然后更新自己的ARP缓存表。确实,这么做是有其道理的,因为当网关的MAC地址发生给变时,局域网的主机应该第一时间更新ARP缓存表,而不是等到网关发送给你了你再更新,那就太晚了。

结论

笔者并不打算公开ARP欺骗工具和其代码,毕竟不是什么有用的工具,而且可以用来做坏事(当然有心的话自己写一个也很容易)。如果有兴趣交流的话笔者很乐意给个人发送一份^_^

参考文献

ARP欺骗 http://zh.wikipedia.net.ru/wiki/ARP%E6%AC%BA%E9%A8%99

时间: 2024-08-07 23:07:03

[c#]记一次实验室局域网的ARP欺骗的相关文章

中间人攻击-Arp之局域网内DNS欺骗

基础知识 网关是啥? 网关是工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同网络之间的连接,网关就好比一个房间通向另一个房间的一扇门. ARP协议 假设A(192.168.1.2)与B(192.168.1.3)在同一局域网,A要和B实现通信.A首先会发送一个数据包到广播地址(192.168.1.255),该数据包中包含了源IP(A).源MAC.目的IP(B).目的MAC,这个数据包会被发放给局域网中所有的主机,但是只有B主机会回复一个包含了源IP(B).源MAC.目的IP(A).目的

『局域网安全』利用ARP欺骗劫持Cookie

0x 00 ARP欺骗说明 欺骗原理相关内容就不多叙述了,百度一大堆 实施ARP欺骗在Windows下,Linux下都相关工具 由于在Linux下可以开启ip_forward功能,个人认为Linux下的工具作用效果比较好 0x 01 攻击测试 1. 攻击拓扑 攻击机:Kali Linux    IP:192.168.1.109 受害机:Win 7 64位 IP:192.168.1.106 网关IP: 192.168.1.1 攻击工具:arpspoof,tcpdump,hamster,ferret

linux 下的局域网断网攻击或arp欺骗

arp欺骗: /*正常情况下 电脑是将流量发送到网关 而欺骗后 则将流量传到此机器的网卡上 再由此机器进行转发至网关*/ --> first: 使用fping -asg ip段/*扫描段内存活的主机*/ -->second: 打开终端 输入echo  1 >/proc/sys/net/ipv4/ip_forward 进行IP流量转发 -->third: 输入命令:arpspoof -i 网卡 -t 目标主机ip 网关 -->four: 重新打开一个终端输入:driftnet

通过python对本局域网进行ARP扫描获取MAC

#!/usr/local/bin/python3 """ 对本局域网进行ARP扫描 ARP (Address Resolution Protocol,ARP); 以太网MAC地址识别(如下): 主机在整个局域网广播ARP请求消息,该ARP请求中包含目标设备的IP地址; 局域网上的每一台设备都会检查该ARP请求,看该ARP请求中的IP地址是不是自己; 只有符合该IP地址的设备才会发送ARP响应; ARP响应该中包涵了ARP请求中的IP地址及对应的MAC地址; "&qu

对一次ARP欺骗分析

一次ARP欺骗 一.   实验目的: 学习使用科来数据包生成器构造一个数据包 通过一次ARP实验,分析ARP报文格式 二.  实验内容: 通过科来数据包生成器在A主机上伪造一个arp数据包,并发送出去,将B主机的网关Mac地址的缓存修改为A的Mac地址. 三.  实验用到的工具 Wireshark.科来数据包生成器.若是在win7.8上还需要科来数据包播放器来发包(科来数据包生成器在win7.8上无法使用发包功能) 四.  实验平台 本次实验我是在虚拟机里面做的,xp系统是我装有数据包生成器的攻

中间人攻击——ARP欺骗的原理、实战及防御

? 1.1 什么是网关 首先来简单解释一下什么是网关,网关工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同网络之间的连接,简单地说,网关就好比是一个房间通向另一个房间的一扇门. 1.2 ARP协议是什么 ARP(Address Resolution Protocol)地址转换协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC地址而不是IP地址,ARP协议就是用来把IP地址转换为MAC地址的.而RARP和ARP相反,它是反向地址转换协议,把MAC地址转换为I

ARP欺骗与中间人攻击

前言: 上一篇WPA/WAP2wifi 密码破解笔记说到如何探测附近开放的AP并且破解进入,那么进入别人据局域网我们能干些什么呢?换句话说如果别人进入了我们内部网络,会有什么影响?本文简要介绍了ARP和MITM原理,并在实际环境中对目标主机的流量进行劫持.曝露了公共网络中普遍存在的问题,藉此来看看局域网中的客户端究竟面临着怎样的隐私泄漏和安全风险. ARP与MITM原理 什么是ARP ARP全称为Address Resolution Protocol,即地址解析协议.是根据IP地址获取物理地址的

发送arp欺骗报文(Microsoft Visual Studio 2010)

由于局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输.所以,MAC地址在A上被伪造成一个不存在的MAC地址,这样就会导致网络不通,A不能Ping通C!这就是一个简单的ARP欺骗. 在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,在命令提示符下,输入"arp -a"就可以查看ARP缓存表中的内容了 注:用"arp -d"命令可以删除ARP表的内容:用"arp -s"可以手动在ARP表

中间人攻击——ARP欺骗 就是中间人攻击 利用报文欺骗并修改IP和mac地址之间的映射关系 让传送数据的地址失效

中间人攻击——ARP欺骗的原理.实战及防御 0x01 网关是啥? 网关是工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同 网络之间的连接,网关就好比一个房间通向另一个房间的一扇门. 0x02 ARP协议 ARP(Address Resolution Protocol)地址转换协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC地址而不是IP地址,ARP协议就是用来把IP地址转换为MAC地址的.而RARP和ARP相反,它是反向地址转换协议,把MAC地址转换为I