一、原理
虽然计算机之间通信需要对方的ip,但是最底层的传输是物理层上,传输的是MAC帧,讲ip解析成MAC地址的是ARP缓存表,这个缓存表每个网络层设备都有。
主机A要和主机B通信,知道主机A的ip,但是arp缓存表了没有主机B的MAC地址,于是他会在局域网内广播询问主机B的mac,主机B会应答自己的MAC.(注:因为每个主机的ip是不固定的,所以设备的arp缓存表也要每隔一段时间都会更新,发起广播)
这种工作方式有一个BUG,就是如果主机C不停的应答自己的MAC,主机A广播询问主机B的MAC时,主机C应答自己的MAC,这时主机A中就会以为主机C是主机B。
当你在浏览器中输入www.baidu.com的时候,要先对该域名发给DNS服务器进行解析,DNS服务器的地址是外网ip,网络数据要先通过网关,如果把攻击者的mac伪造成网关的MAC,局域网内本来要发给网关的数据发给攻击者,攻击者就可以对这些数据进行截获。
被攻击者请求解析百度的时候攻击者截获请求,并解析成自己的ip,并配置好自己的伪造的百度首页,被攻击者这样就打开的是你伪造的百度。当然,你不一定非要伪造百度,你可以弄个钓鱼网站或恶搞网站。
二、技术实现
首先安装虚拟机,安装kali linux操作系统。(kali镜像文件链接https://images.offensive-security.com/kali-linux-2018.2-amd64.torrent)
现在我开始用虚拟机攻击实体机,对每一步截图。
先以root登录kali。
在/var/www/html/文件夹中编辑index.html首页,
命令service apache2 start打开apache web服务器。
编辑etter.dns文件,(域名 A ip )表示要截获的域名并解析成的ip,*代表所有域名。
使用ettercap -G命令,打开ettercap的图像界面
选择网卡eth0是连网线的网卡
扫描该网段的主机
列出该网段的主机
把要攻击的主机添加标记1,网关添加标记2.
选择arp中间人攻击
双击插件dns_spoof。左边会出现一个*说明添加成功。
选择开始攻击
一段时间后在实体机上打开百度
查看arp缓存表发现虚拟机的MAC和网关的MAC一样
uslookup解析的ip是内网ip
三、防范
1.把路由器的地址池缩小到100-254。把主机的ip设置成静态ip。(缩小地址池是为了防止动态ip和静态ip冲突)
2.把ip绑定mac。
3.以https访问网站。