ARP欺骗与中间人攻击

前言:

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

ARP与MITM原理

什么是ARP

  ARP全称为Address Resolution Protocol,即地址解析协议。是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本 机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主 发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

  例如,在Linux命令行下

$sudo arp -a

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.1.1            ether    0A-11-22-33-44-01   C                     wlan0
192.168.1.2            ether    0A-11-22-33-44-02   C                     wlan0

可以看到局域网中其他客户端的内网地址和MAC地址。

工作过程

  现假设主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;

主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广 播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址 匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

工作要素:ARP缓存  

  ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址->MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。静态项目一直保留在缓存中,直到重新启动计算机为止。

ARP欺骗与MITM

  MITM,全称为Man In The Middle,即中间人。地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷。ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关 系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送 ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器。攻击者再对目标和网关之间的数据进行转发,则可作为一个“中间人”,实现监听目标却又不影响目标正常上网的目的。

具体攻击实现

  具体的中间人攻击,大体上可以分为以下几个步骤:

1. 对目标主机进行ARP欺骗,声称自己是网关。

2. 转发目标的NAT数据到网关,维持目标的外出数据。

3. 对网关进行ARP欺骗,声称自己是目标主机。

4. 转发网关的NAT数据到目标主机,维持目标的接收数据。

5. 监听劫持或者修改目标的进入和外出数据,从而实现攻击。

其中1,3都是ARP欺骗;2,4都是转发,下面会分别说到。

ARP欺骗

  ARP欺骗又叫ARP投毒(ARP poisoning),实现方式有很多,但其原理都是通过不断向攻击目标发送ARP replies,从而实现重定向从一个主机(或所有主机)到另一个主机的数据包的目的。

这里以dsniff工具集的arpspoof命令为例:

#  arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

其中,

-i 指定使用的接口。

-c 指定当还原arp配置时t使用的MAC地址,默认为使用原来的MAC。(即当停止arpspoof命令后,默认取消毒化)

-t 指定要毒化的主机,如果不指定的话默认为局域网下所有主机。

-r 双向毒化(host和target),从而双向扑捉数据。(仅当同时指定 -t的时候才有效)

host 为你想要伪装成的主机,通常是本地网关。所有从target到host的数据包都被重定向到本机。

数据流转发

  毒化了目标主机的ARP缓存表之后,其经过网关外出的数据流将会发送到攻击者的主机。但此时由于目的地址出错,目标主机对外的请求将无法到达,亦即无法访问互联网了。为了维持目标正常上网,需要我们在收到目标来的数据时将其进行转发到真正的网关。

首先开启端口转发,允许本机像路由器一样转发数据:

# echo 1 > /proc/sys/net/ipv4/ip_forward

此时本机收到的数据包含源地址和目的地址(外网地址),我们需要将其转发到网关。这里进行了(NAT)网络地址转换的功能,关于NAT可参考我上一章P2P通信原理与实现(C++)

# iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -j SNAT --to-source 192.168.1.110这条命令的作用是修改本机的转发规则,将所有从本机出去的源地址为192.168.1.XXX的数据包都修改为本机地址192.168.1.110其中,-t 指定要操作的表,这里是nat-A 即--append,表示增加一条规则。nat有三个内建规则,分别是  PREROUTING,在数据包进入时改变其地址  POSTROUTING,在数据包将要出去时改变其地址  OUTPUT,在路由前改变本地产生的数据包地址-p 表示数据包要检查的协议-s 指定源地址。地址格式可以是网络名字,主机名字,IP地址或者是address/mask格式的网络地址。可以指定多个,-s前加!表示取补集-j 指定规则的目标,即如果数据包符合规则该如何做;SNAT表示修改数据包的源地址,且此次链接的余下数据包都不再检查--to-source 在SNAT选项下指定所转发数据包的新的源地址,这里设为192.168.1.110,即攻击者的地址

关于iptables的详细用途可以man iptables查看。上述命令描述了外出数据的转发规则,那么从外部来的数据要转发到被攻击主机上也是同理:

# iptables -t nat -A PREROUTING -p tcp -d 192.168.1.110 -j DNAT --to 192.168.1.114在本机转发之前将数据包目的地址为192.168.1.110的修改为192.168.1.114(被攻击主机),然后转发出去。

其他工具

  上面为了说明原理,吧arp毒化和数据转发分开做,其实利用现有的工具,可以很简单地执行上面的工作,例如用ettercap:

# ettercap -i wlan0 -Tq -M arp:remote /target/ /host/

  一条命令即可完成arp毒化和转发的功能。其中-M表示指定MITM攻击。

后记

  一旦中间人建立攻击成功,劫持了目标的上网流量,那么接下来也就为所欲为了。轻则监控目标的上网行为,就如同二十四小时站在你身后看你上网;或者劫持目标的cookie从而用目标的帐号登录诸如微博,百度,豆瓣等网站,浏览其隐私数据,进行发贴删贴等操作;重责进行钓鱼攻击,使目标下载恶意程序或者执行恶意脚本,从而威胁其计算机安全。当然,应对这种攻击的防范方法也有很多,最简单的一种就是绑定MAC地址,并且在网关MAC地址改变的时候发出提醒,从而防止ARP毒化攻击。还有就是最好不要在公共WiFi下浏览有重要隐私的网站,万一碰上不怀好意的人就在局域网中,那可就是真的“在阳光下行走”了。

时间: 2024-08-07 21:17:12

ARP欺骗与中间人攻击的相关文章

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

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

记录利用ettercap进行简单的arp欺骗和mitm攻击过程

方法均来自网络,本人只是记录一下自己操作的过程,大神请无视之- 攻击主机平台:kali-linux        被攻击主机:安卓手机192.168.1.107    (在同一局域网内) 1.利用ettercap进行arp欺骗: root权限下打开ettercap:ettercap -C (curses UI)             ettercap -G (GTK+ GUI) curses UI工作界面: GTK+ UI工作界面: 这里以GTK+ UI为例,打开ettercap之后,选择Sn

再谈中间人攻击

前言 上一篇ARP欺骗与中间人攻击讲到了MITM攻击的基础和原理,并且在实验中成功对网关和目标主机进行了ARP毒化,从而使得无论目标的外出数据或流入数据都会经过本机这个“中间人”.在上篇后记里也略为提及到,中间人可以做的事情有很多,但是没有详细介绍.因此本文就来谈谈如何截取目标流量以及如何对目标看似杂乱无章的数据进行提取,分析和修改. 流量分析 通常我们成功变成中间人之后,会一直捕捉目标的流量数据并且保存为本地的cap文件,然后再用工具对数据信息进行分析.流量抓取的方式有很多,比如Linux下的

交换机防范典型的欺骗和二层攻击

1. MAC/CAM攻击的防范 1.1MAC/CAM攻击的原理和危害 1.2典型的病毒利用MAC/CAM攻击案例 1.3使用 Port Security feature 防范MAC/CAM攻击 1.4配置 1.5使用 其它技术 防范MAC/CAM攻击 2. DHCP攻击的防范     2.1采用DHCP管理的常见问题: 2.2DHCP Snooping技术概况 2.3基本防范 2.4高级防范 3. ARP欺骗/ MITM(Man-In-The-Middle)攻击原理和防范     3.1 MIT

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

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

中间人攻击之arp欺骗 科普ARP欺骗

中间人攻击之arp欺骗 科普ARP欺骗 A <-> B A中有个ARP Table,每次发包都会在此Table中查找,若找不到,发APR Request包询问.此时若hacker冒充B的MAC,于是A -> hacker. (1)如何清空A中的ARP Table?不然它一查询,直接发包给B. 经过百度: ARP Table采用老化机制,某一行一段时间不用就被删除,提速. hacker大量发ARP包产生大量ARP通信量使通络堵塞,A就找不到B,A必然会发ARP Request包问:B是谁,

ARP欺骗与MITM(中间人攻击)实例

? 主题名称 ARP欺骗与MITM(中间人攻击)实例 ? ? ARP协议(address resolution protocol):地址解析协议 一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析协议将IP地址解析成MAC地址.ARP协议的基本功能就是通过目标设备的IP地址,来查询目标设备的mac地址. 在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系.AR

利用ARP欺骗进行MITM(中间人攻击)

ARP欺骗主要骑着信息收集得作用,比如可以利用欺骗获取对方流量,从流量分析你认为重要得信息 0X01  了解ARP Arp协议 ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析成对应的MAC地址. 以太网(局域网)进行信息传输时,不是根据IP地址进行通信,因为IP地址是可变的,用于通信是不安全的.然而MAC地址是网卡的硬件地址,一般出厂后就具有唯一性.ARP协议就是将目标IP地址解析成MAC地址进行验证通

中间人攻击-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).目的