目录
一、分析ARP攻击与欺骗
1.1 ARP协议
1.1.1 广播与广播域概述
广播与广播域
广播:将广播地址作为目的地址的数据帧
广播域:网络中能接收到同一个广播所有节点的集合(就是广播的范围)
广播域越小越好
交换机隔离不了广播域,大家在交换机里面大家就都是一个广播域,在一个广播域意味着一个人广播,其他人都能接收到
路由器可以隔离广播域
交换机控制不了广播,路由器可以控制广播
MAC地址广播
广播地址为FF-FF-FF-FF-FF-FF
IP地址广播
1)255.255.255.255
2)广播IP地址为IP地址网段的广播地址,如192.168.1.255/24
1.1.2 ARP协议概述
什么是ARP协议?(Address Resolution Protocol 地址解析协议)
作用:将一个已知的IP地址解析成MAC地址
ARP协议的工作范围只是内网,属于内网协议,即便是ARP攻击也只是内网攻击
因为它的工作原理是靠广播来实现的,只要碰到路由器就“完蛋”。(路由器可以控制广播,隔离广播)
查看本机的ARP缓存命令:arp -a
1.1.3 ARP协议原理
1)发送ARP广播请求
ARP报文内容:我是10.1.1.1 我的mac:AA,谁是10.1.1.3 你的mac:?
2)接收ARP单播应答
1.1.4 ARP相关命令
Windows系统中ARP命令:
arp -a:查看ARP缓存表(缓存都是自己本次开机学习的,关机就没了)
arp -d:清除ARP缓存
arp -s:ARP绑定
Cisco系统中的ARP命令
查看ARP缓存表:Router#show arp
清除ARP缓存:Router#clear arp-cache
ARP绑定:Router(config)#arp ip-address mac-address arpa
二、ARP攻击与ARP欺骗的原理与应用
2.1 ARP欺骗与攻击的原理
通过发送伪造虚假的ARP报文(广播或单播),来实现的攻击或欺骗!
如虚假报文的mac是伪造的不存在的,实现ARP攻击,结果为中断通信/断网!
如虚假报文的mac是攻击者自身的mac地址,实现ARP欺骗,结果可以监听、窃取、篡改、控制流量,但不中断通信!
当你发现目标IP跟自己不在同一网段的时候,你还是会发生ARP广播报文,但是在广播报文里面问的不是外网那个网段的MAC地址
问的是“我是10.1.1.1我虽然要访问百度,但是ARP广播请求是这么问的“我是10.1.1.1我的MAC是AA,谁是网关(10.1.1.254)?请把你的MAC地址告诉我。””
网关说:我是10.1.1.254,我的MAC地址是BB。
我学习到之后,我就会把我送往百度的数据的帧头写上BB送到交换机上,交换机就把这个帧送到网关上去了
情景描述:
咱们这个屋子里假设都是10.1.1.0网段,“小天”是10.1.1.3我是10.1.1.1,这个屋的网关是10.1.1.254,大家都指了网关都能上网
我说:“谁是10.1.1.3,请把你的mac地址告诉我”,本来只有“小天”能收到,这时候“小郑”收到这个广播,有点不怀好意,找了一个工具伪造了一个假的ARP应答“说我是10.1.1.3,我的MAC是EE(凭空捏造的)”。在ARP协议缓存里面谁后到后得,谁后到我学谁的。比如“小郑”先到我这,我就以为10.1.1.3是EE,“小天”只发了一次,而“小郑”可以一直捏造。“小郑”这么一攻击,我一天都收不到“小天”的消息了。这时候“小天”也想和我发信息,问“谁是10.1.1.1,请把你的mac地址告诉我”,我给他一个回应“我是10.1.1.1,我的mac地址是AA”,“小郑”这时候又回话了说“我是10.1.1.1,我的mac地址是EE”,这时候“小天”就以为“小郑”是我。【这叫ARP攻击】攻击的目的:中断我和“小天”的通信
ARP协议难点:
刚才我和“小天”在同一网段,意味着一开始“小天”告诉我说“我是10.1.1.3”的时候(一台PC在和外界通信的时候第一件事情就是目标IP和自己是不是在同一网段),因为我和“小天”在同一个局域网。
这时候我要访问百度,百度地址假设是200.1.1.1,我的电脑做的第一个判断是目标IP跟自己在不在同一个网段?不在。我去找网关,接下来我的首要任务是把数据给网关还是直接送到百度?给网关。
这时候在广播的时候问“谁是200.1.1.1请把你的mac地址告诉我”(不会这样问,因为百度不跟你在同一网段,你的广播不能出去,你的广播连网关都出不去),这时候想访问200.1.1.1但是它在外网,现在我只要把我的地址给网关就行了(虽然你的三层包头里面说你要访问200.1.1.1,但是这个帧给交换机,交换机不管你的IP地址,要让交换机把帧送到网关,)
当你判断你的目标IP地址和自己在同一网段的时候,你会直接发送ARP广播报文,去请求它的mac地址
如果你判断目标IP和自己不在同一网段的时候,你还是会发送ARP广播报文,但是在广播报文里面问的不是外网那个网段的MAC地址,问的是“我是10.1.1.1,我虽然要访问百度,但是我的arp广播报文是这么问的:“我是10.1.1.1我的mac是AA,谁是网关10.1.1.254,请把你的mac地址告诉我””,这时候只有网关会给应答,网关说:“我是10.1.1.254,我的mac是BB”这时候我就会把我送往百度的帧头写上BB,送到交换机上,这时交换机就把帧送到网关。
这时候我又问谁是网关,“小郑”又来捣乱,说“我是网关,我的mac是EE”,这时候在我心目中网关就是EE了,现在他想给我断网。
所以ARP攻击就是终止通信,再狠一点就是断网(手法:伪造虚假的arp报文,以及虚假的mac地址,不存在的mac地址去欺骗你)
其实它不仅可以通过arp应答报文来攻击,也可以通过arp广播报文来攻击。
“小郑”发一个广播报文说“:谁是10.1.1.10?请把你的mac地址告诉我,我是10.1.1.254,我的mac地址是EE”(他既不是10.1.1.254,mac也不是EE),这时候他说他要找10.1.1.10跟我没关系,但是他说他是10.1.1.254,我就把它记下来记到缓存,这时候我要去上网我要去找网关,这时候缓存告诉我网关是EE,瞬间就被攻击了
刚才这个叫ARP攻击:是通过发送虚假的广播或者是应答报文来实现让你断网,下面来看看ARP欺骗:
背景:我是10.1.1.1,mac是AA;小天是10.1.1.3,mac是CC;小郑是10.1.1.4,mac是DD;网关是10.1.1.254,mac是BB
情景:
我说:“谁是10.1.1.3请把你的mac地址告诉我”,小天说“我是10.1.1.3,我的mac是CC”。小郑来捣乱了说“我是10.1.1.3,我的mac是DD【这个mac是小郑自己真正的mac】”,这时候我的缓存就会认为“小天的ip是10.1.1.3,MAC是DD”。这时候我所有给小天发的信息全部给了小郑,小郑看了一遍又原封不动的发给小天了,我的信息也发给了小天,只是过了一遍小郑的手,小郑就成为了“中间人”,ARP欺骗的目的就不是断网,目的是截获、窃取、篡改、控制你们的数据接下来我要想访问外网,我跟网关在聊天,小郑来捣乱了说“我是10.1.1.254,我的mac是DD”,这时候我跟网关之间的数据也要经过“小郑”,他就可以对我的上网数据做完全控制,窃取你的密码等
ARP可以完成攻击或欺骗,攻击成功的原因 是ARP协议没有验证机制(无法验证真伪)【只要你收到一个ARP报文,不管是应答还是请求我就会学习,学习的结果可能是真的也可能是假的,假的话就会被欺骗或者攻击。学习到假的,你的缓存出假的东西出来了】
ARP攻击者通过发送虚假伪造的arp报文对受害者进行ARP缓存投毒(换句话说你的缓存里面学到的东西都是假的)
二、路由原理(二)
凡是可以配IP的接口才有MAC
不能陪IP的接口也没有MAC地址
只有交换机有mac地址表
描述通信的完整过程
路由器的工作原理(★)
1)一个帧到达路由器之后,路由器首先检查帧头的目标MAC地址是否是自己,如果不是则丢弃,如果是则解封装,并将IP包(三四五层)送到路由器内部
2)路由器检查IP包头中的目标IP,并匹配路由表,如果匹配失败,则丢弃,并向源IP回馈错误信息,如匹配成功,则将IP包路由到出接口。
3)封装帧,首先将出接口的MAC地址作为源MAC封装好,然后检查ARP缓存表,检查是否有下一跳IP的MAC地址,如有,将提取并作为目标MAC地址封装到帧中,如没有,则发送ARP广播请求下一跳的MAC,并获取到对方的mac地址,再记录缓存,并封装帧,最后将帧发送出去。
三、ARP实验演示
实验环境:虚拟机:winxp-1(受害人一号),win2003-1(小坏蛋)、win2003-2(受害人二号)【都桥接到VMnet2】
tip:win2003老是过一段时间就自动锁屏 去掉:桌面空白处单击鼠标右键---屏幕保护程序---改成“无”
受害人一号mac: 00-0C-29-7F-53-E6
小坏蛋mac: 00-0C-29-F6-26-4C
受害人二号: 00-0C-29-79-47-F5
缓存表一会就自己删干净了
ARP攻击实验:
小坏蛋使用工具:网络执法官 v3.56 (这个软件是为了管理网络)
打开软件:介绍:
说是扫描其实就是挨个ping一下,也就自动发送arp了,也就知道mac地址了
实验目的:让受害者一号和受害者二号终止通信
对准受害者一号的IP地址右键--手工管理
当勾选了“禁止与所有主机进行TCP/IP连接”,去受害者一号电脑上ping 10.1.1.3
发现10.1.1.3的mac地址变成了捏造的那个mac地址
ARP欺骗实验:
再找一个软件cain.exe
点击这个网卡标识的图标,下方有一个“sniffer”嗅探,抓包的意思,点击sniff(现在不知道公司有哪些人,先扫出来)
单击鼠标右键---Scan MAC Addresses
现在受害者一号和受害者二号的信息没往小坏蛋这里经过,要做ARP欺骗
现在受害人一号以为小坏蛋就是受害者二号,受害人二号以为小坏蛋就是受害者一号
现在,受害者一号和二号直接能通信,但是感觉不到有中间人,这就是被欺骗
查看缓存表
00-0C-29-F6-26-4C就是小坏蛋的mac
如果受害者一号和二号聊天记录有密码就极不安全(telnet就是明文密码)
这时候受害者二号把自己电脑上的telnet打开了
现在受害者一号远程控制受害者二号
小坏蛋开启sniff抓包(cain.exe里面自带抓包软件)
在公司能用ssh就用ssh
如果FTP不允许匿名访问
四、ARP攻击防御
做实验的时候一定要在虚拟机里面做,不要在真实环境下做
1、静态ARP绑定
把网关的ip和网关真正的mac地址手动写到我的电脑里面,在我电脑的arp缓存表里面就形成了一条静态的ARP缓存
在正常情况下我就不再学习动态的了(静态的优先级高于动态,以后我就不会问网关了)
我在我电脑上绑定网关了,要想完全避免坏蛋对我和网关之间的流量进攻击,还要在路由器上写上我真正的mac静态绑定其实就是手工绑定/双向绑定,缓存是保存不住的(做个批处理)
windows客户机上:
arp -s 10.1.1.254 00-01-2c-a0-e1-09(-s表示static静态绑定)
arp -a 查看ARP缓存表
路由器上静态绑定:
Router(config)#arp 10.0.0.95 0013.240a.b219 arpa f0/0
优点:配置简单
缺点:工作量大,维护量大
2、ARP防火墙
自动绑定静态ARP
主动防御
优点:简单易用
缺点:当开启人数较多时,会增大网络负担在大公司里面一般不允许使用
3、硬件级ARP防御(终极方法)
交换机支持在“端口”做动态ARP绑定(动态绑定要配合DHCP服务器)
或做静态ARP绑定如:
conf t
ip dhcp snooping(告诉交换机开启DHCP监听功能)【前提是这台交换机要支持】
int range f0/1 - 48(进入一组接口)
switch(config-if-range)#