最近上午比较悠闲一些吧,翻阅以前的笔记,准备整理系列文章记录一下,忆往昔。。。
给kali先开个专题,慢慢来。。。今天第一篇,arp欺骗实现。
先谈谈arp这个协议的原理,就是知道对方的IP地址,不知道对方的MAC地址,此时可以触发源端发起ARP请求(request,广播)来获取目的节点的MAC地址,对方回应ARP应答(replay,单播)给源端,这样才能进行数据链路层的封装(数据帧)。其中的ARP请求是广播,这样本网段其他主机也会收到此ARP请求,但是他们不做应答,只是偷偷的把ARP请求中的源MAC进行记录到本地的ARP缓存中供以后使用(有效期内)。多说无益,抓个包试试,
![](https://img.haomeiwen.com/i2009223/5e1040f51e1ad0c9.png)
看下ARP请求的详细内容
![](https://img.haomeiwen.com/i2009223/ef75f51298aabce5.png)
大家收到ARP请求后,会检查请求的目的IP地址是不是自己,如果是找的自己,那么要进行回应(replay),可以看到replay报文中携带了目的端自己的MAC地址。且replay是但单播,因为已经知道了源端的MAC,没必要再广播回应。
![](https://img.haomeiwen.com/i2009223/133ec5ffbc579abf.png)
这样源端就知道了目的端的MAC,记录到自己的ARP缓存表中
![](https://img.haomeiwen.com/i2009223/a2589b35db8f1ea0.png)
到此为止,通信双方的MAC地址互相学习完毕,那么就可以按照TCP/IP模型进行数据帧的封装转发了
![](https://img.haomeiwen.com/i2009223/3dbc221535b71f5e.png)
以上是ARP的原理,那么ARP欺骗呢?其实道理很简单,可以发现在上述过程中,本网段的所有主机在收到ARP请求时并不关心验证此ARP请求的真实性(到底是不是该IP地址发出的ARP请求)就自己提取参数学习到自己的ARP缓存中。。。那骗子就容易得手啊,嘿嘿
![](https://img.haomeiwen.com/i2009223/89e6563ca4067227.png)
接下来实现ARP欺骗:
根据以上原理,我们简单模拟拓扑图解释一下,
![](https://img.haomeiwen.com/i2009223/092f4eb2c58e6481.png)
kali主机冒充A给B发送ARP请求,ARP请求中的sender-MAC是kali主机自己的,但是B不知道,导致B学习到的A主机对应的MAC实际是kali的,那么最终B将发往A的数据就会发给kali。嗯,就这么简单。
测试案例一:
实验环境,两台虚拟机 PC、kali
被攻击PC IP配置地址192.168.1.103 GW 192.168.1.1
![](https://img.haomeiwen.com/i2009223/efaa15622819bea8.png)
ARP表项
![](https://img.haomeiwen.com/i2009223/8e3ad2bbe51f3892.png)
未欺骗之前可以访问www.qq.com
![](https://img.haomeiwen.com/i2009223/57f26e43acc35304.png)
使用kali
查看kali网卡配置 IP:192.168.1.106
![](https://img.haomeiwen.com/i2009223/f7c5da05c392c94a.png)
利用arpspoof进行攻击欺骗
参数
![](https://img.haomeiwen.com/i2009223/a05cfa06743aa324.png)
![](https://img.haomeiwen.com/i2009223/8b658fd00c1866f2.png)
进行攻击测试
![](https://img.haomeiwen.com/i2009223/a879e689de47327a.png)
可以看到PC无法访问外网,学到MAC地址为kali 主机eth0网卡MAC
![](https://img.haomeiwen.com/i2009223/373a2eea9dd87cc4.png)
以上的方法是使得网关和指定目标机器之间断网(网间通信失败)
arpspoof还有一个进行流量传输的功能 即不截断,目标主机可以正常上网 但是网络流量会经过我的主机进行转发,这样就可以监控传输的流量。
使用方法:
先开启kali liunx的路由转发功能,默认没有启用
echo 1 > /proc/sys/net/ipv4/ip_forward
注意:这个路由转发只是临时生效 如果开机重启后还需要从新打开
![](https://img.haomeiwen.com/i2009223/319d7dded1e166c9.png)
然后执行arpspoof命令 arpspoof -i eth0 -t 192.168.80.x(目标主机ip) 目标主机的路由ip地址
这时目标机器还可以正常上网 但流量已经被我们监控
![](https://img.haomeiwen.com/i2009223/22b9952c4c8daf96.png)
kali上抓包,显示被欺骗主机的流量
![](https://img.haomeiwen.com/i2009223/222e53b4fcf8d93f.png)
案例二:
来一个双向欺骗
Web 192.168.1.106-----------------client 192.168.1.101 kali 192.168.1.107
kali进行双向欺骗,
![](https://img.haomeiwen.com/i2009223/8f617953f79aa8b1.png)
![](https://img.haomeiwen.com/i2009223/87ff8e91a819483f.png)
kali允许转发的情况下,client可以正常访问到server,
![](https://img.haomeiwen.com/i2009223/26c663f13be38158.png)
client进行登录,kali抓包,可以看到
![](https://img.haomeiwen.com/i2009223/300fcd742e0b4b44.png)
通信双方无感知。
思考总结:
(1)以上分析了ARP,那么RARP呢?
(2)在案例二测试中,抓包的话只能抓明文协议(http),如果是https的不行。为啥?请大家思考,后续分析。。。
(3)以上实验通过kali自带的arpspoof实现,大家感兴趣的可以使用其他工具(比如ARP发包工具)自己配置ARP包也可以实现,或者编写个脚本实现。。。后续更新。
网友评论