MAC地址
一般我们称为物理地址,它是以太网或网络适配器的唯一标识符,MAC地址能够区分不同的网络接口,并使用多种网络技术,
MAC地址长48bit,在使用网卡(NIC)的情况下,MAC地址一般都会输入到ROM中,所以任何一个网卡的MAC地址都是唯一的。
ARP协议
又叫做地址解析协议 ,用来实现ip地址到物理地址的映射,即询问目标ip对应的MAC地址的一种协议。
一般使用于IPV4中,而IPV6中使用的是Neighbor。
简单来讲就是利用ip地址定位下一个应该接收数据分包的主机MAC地址,如果目标主机不在同一个链路上,那么查找下一个路由器的MAC地址。
ARP的工作机制
上图中的主机A与主机B位于同一个链路,不需要经过路由器的转换。
主机A向主机B发送一个ip分组,A的地址为192.168.1.2,B的地址为192.168.1.3,互相不知道对方的MAC地址,C和D是同一链路的其它主机。
如果A想获取B的MAC地址,A会通过广播的方式向以太网的所有主机发送一个ARP请求包,
而A发送的ARP请求包会被同一链路上的所有主机或路由器接收并解析。就是每个主机/路由器都会检查ARP请求包中的信息,如果ARP请求包中的目标ip地址和自己的相同,就会将自己主机的MAC地址写入响应包返回主机A。
通过ARp从ip地址获取MAC地址,实现同一链路内的通信。
如果是不同链路的话该怎么办?
这就需要代理ARP,通常ARP会被路由器隔离,但是采用代理ARP的路由器的路由器可以将ARP的请求转发给临时的网段,使网段中的节点像是在同一个网段内通信。
ARP缓存
发送ip分组前通过发送一次ARP请求就能确定MAC地址,而ARP高效运行的关键就是维护每个主机和路由器上的ARP缓存,通过每一次ARP获取的MAC地址作为ip对MAC的映射关系到一个ARP缓存表中,下一次在向这个地址发送数据包时就不再需要发送新的ARP请求,直接利用这个缓存表的MAC地址进行数据包的发送,每发送一次ARP请求,缓存表中对应的映射关系都会被清除。MAC地址的缓存有一定的期限,超过该期限,缓存的内容会被清除
在Windows中对arp缓存的查询:
在Windows中使用"-"进行分隔,在Linux中用":"分隔
ARP结构
发送的ARP请求,一般包含着以下的信息,
(在以太网中转换IPV4的地址常用的ARP请求或响应的报文格式)
前面的14个字节构成标准以太网的首部,前面两个字HE段DST
和SRC分别表示以太网的目的地址和以太网的原地址,后面紧跟着ARP请求的长度或类型,ARP请求和ARP应答的值为:0x0806
ARP欺骗
顾名思义,ARP欺骗是针对以太网地址解析协议的一种攻击技术,通过欺骗局域网
内访问者PC的网关MAC地址,使访问者PC误以为攻击更改后的MAC地址是网关的MAC,导致网络不通。
攻击主机kali与被攻击主机CentOS
根据以上可以知道都在同一个链路
192.168.161.130和192.168.161.133
测试一下能否互通
网关ip(看CentOS):192.168.161.2
看CentOS能否上网,ping www.baidu.com观察后发现可以上网
在kali中开启Apache,并观察它的状态
扫描局域网内存在哪些主机,确定攻击的ip地址,如果不知道CentOS的ip地址时,
进行攻击需要再攻击机上使用arpspoof工具进行伪装网关
而arpspoof是dsniff的一个附属工具,所以需要下载一下
安装异常时,更换镜像并进行实时更新
进入/etc/apt路径,输入:
cat sources.list <<EOF
输入新的镜像地址之后
进行镜像更新:apt-get update
进行断网攻击:
一般来说在实战中,我们要进行ARP欺骗前要打开ip转发,否则断网之后对方会被察觉
但是我们这里为了确认是否成功欺骗,没有开启
打开ip转发:
sysctl -w net.ipv4.ip_forward=1 或者 echo 1 > /proc/sys/net/ipv4/ip_forward
而kali中为了安全是没有ip转发功能的,配置文件写在了:
/proc/sys/net/ipv4的ip_forward,它的默认为0,修改为1
命令:
arpspoof -i 你的网卡名称 -t 攻击目标的ip地址 攻击目标的网关地址
现在看看CentOS中是否能够上网,不能上网,还有观察网关的mac和kali的mac此时相同,就能成功了
按Ctrl+c 停止,攻击机不在伪装,返回自己的MAC地址,CentOS又可以上网了。
但是arp欺骗存在局限性,仅能在局域网中进行,无法对外网进行攻击。
现在打开ip转发
使用相同的方法进行攻击,
ping一下百度,发现还可以上网,但是网速很慢,
如果正在浏览图片,也可以获取,但是要使用driftnet工具,监测网络流和获取TCP中的图片
drifnet工具可以获取http协议下传输的图片,因为http是明文传输,可以获取http流量中的图片数据,并将它解码为jpg格式的图片,储存在终端上,但是https就不可以了,尝试其他攻击SSLspli
一般命令:
drifnet -i 自己的网卡名 -a 需要储存的目录 -d指定目录 -s 抓取声音
,这个在kali里面自带了。
打开方式: sudo ettercap -G
主要有两种方式
UNIFIED :以中间人方式嗅探,比较常用
BRIDGED :在双网卡的情况下,嗅探两块网卡之间的数据包
查看嗅探主机:
发起断网攻击并窃取数据包
加载插件:remote_broser插件
就可以进行远程攻击了,其实可以利用它来进行arp欺骗,但一般被攻击机时win系统
还可以利用它来进行http账户密码的获取,
ettercap -Tq -i eth0
利用:sudo ip neigh flush all 在kali里面清除arp缓存
如何防范ARP欺骗?
主要通过:
主机绑定MAC地址和ip地址为静态,arp -s 网关ip 网关MAC;
网关绑定Mac地址和ip地址;
使用arp防火墙;