Linux之脚本应用实战:利用静态绑定方法防范ARP攻击

Linux之脚本应用实战:利用静态绑定方法防范ARP攻击

ARP攻击原理

  • 背景:我们知道在Windows系统下的防火墙,可以抵御外部攻击,其中就包括了ARP攻击;同样的,我们要了解在Linux系统下如何防范ARP攻击,我们就必须了解清楚ARP攻击的原理及其种类,才能有的放矢,做好防范工作。
  • ARP工作原理:ARP,即地址解析协议,实现通过IP地址得知其物理地址。以太网 环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应 物理地址,这组协议就是ARP协议。
  • 什么是arp攻击?通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
  • 如何判断arp攻击?有机器伪装成了网关的mac,所以浏览受害机器的arp缓存肯定可以发现一台或者多台机器与网关有相同的mac地址。arping ip 查看你网关真实mac地址(结果里面也有部分以假乱真,但我们前提知道哪部分是假的)

Linux系统性通过arposion模拟发起ARP攻击

Linux命令防范ARP攻击

#进攻者发起攻击前,先通过ping命令间接获取IP地址
[root@ ~/test 10:05:04]#ping 192.168.6.146

#经过几秒之后中断ping命令,通过下面命令查看ARP缓存
[root@ ~/test 10:05:29]#arp -a
gateway (192.168.6.2) at 00:50:56:fb:ea:34 [ether] on ens33 #网关真实MAC地址
? (192.168.6.1) at 00:50:56:c0:00:08 [ether] on ens33
? (192.168.6.146) at 00:0c:29:dd:00:64 [ether] on ens33 #目的ip对应真实MAC地址

#在被攻击者主机执行arp -n命令查看ARP缓存信息
#(因为攻击者ping了我们,所以我们可读到对方的ip和mac地址)
[root@lin ~]# arp -a
? (192.168.6.1) at 00:50:56:c0:00:08 [ether] on eth0
? (192.168.6.128) at 00:0c:29:52:a9:d1 [ether] on eth0 #喏,这就是潜在的凶手
? (192.168.6.2) at 00:50:56:fb:ea:34 [ether] on eth0

#攻击者开始发起攻击 (回车后持续发送,ctrl+c终止)
#-i 后接攻击者的网络设备号 若是无线网络 可能是wlan0 
#-d 接目标ip地址
#-s 接网关ip
#-t 接目标MAC
#-r 接伪造MAC地址
#-n 接指定发送多少个数据包
arpoison -i ens33 -d 192.168.6.146 -s 192.168.6.2 -t 00:0c:29:dd:00:64 -r 44:44:44:44:44:44
#注意:arpoison需要手动去安装

静态绑定ARP脚本内容

  • 被攻击者:需要知道网关正确MAC地址,可以在正常运行情况下通过Ping网关ip得到正确MAC地址。再进行相关绑定

  • 命令方式:

# arp -s 后面跟网关IP地址以及真实MAC地址
arp -s 192.168.6.2 00:50:56:fb:ea:34

# arp -a 查看arp缓存出现PERM字段的条目: 说明此条目为静态arp条目
arp -a

#删除静态绑定的方式(一般也要先清空arp缓存再进行绑定)
arp -d 192.168.6.2 00:50:56:fb:ea:34

#觉得手动绑定麻烦,可以有如下两种方式
#其一:启动系统时候自动绑定网关MAC
vi /etc/ethers
输入 :192.168.6.2 00:50:56:fb:ea:34
#保存以后,在/etc/rc.local中增加 arp -f 命令
#也可以用:scan_ip_man.sh ens33 > /etc/ether
#扫描局域网内所有主机的mac地址,保存至这个文件,载运行arp -f绑定所有的ip MAC条目。

#其二:不想系统启动自动配置,但图个方便,使用如下脚本
  • 脚本
#!/bin/bash
declare gw=`route -n | grep -e '^0.0.0.0'`			
declare gwname=`echo $gw | grep -oe '\w*$'`		#网卡名			
declare gwip=`echo $gw | grep -oe '[0-9]\{2,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'`					   		 #网卡ip
declare gwmac=`arp -n | grep -e $gwip | grep -oe '[0-9A-F]\{
    
    2\}:[0-9A-F]\{
    
    2\}:[0-9A-F]\{
    
    2\}:[0-9A-
F]\{
    
    2\}:[0-9A-F]\{
    
    2\}:[0-9A-F]\{
    
    2\}'`   	    #网卡MAC地址
echo "switch $gwname arp: $gwip - $gwmac to static" 
arp -s $gwip $gwmac                      		#绑定
echo "done, off arp reuqest .."
ifconfig $gwname -arp
echo "all done."

猜你喜欢

转载自blog.csdn.net/weixin_31789689/article/details/107947392