ARP 原理及攻击

百度上有许多关于ARP攻击的文章,先整理如下:

这是一个系列文章:

https://www.toutiao.com/a6694190965701214723/

https://www.toutiao.com/a6694472980338049548/

https://www.toutiao.com/i6694546383665365512/#comment_area

https://www.toutiao.com/a6734938756387701252/

发arp报文的命令行工具:arping

例子:

arping -U -I eth0 -s 192.168.10.129 192.168.10.129

此种模式发送免费arp报文,是arp广播请求包,目的ip和源ip都是192.168.10.129,目的mac为广播macff:ff:ff:ff:ff:ff,源mac为192.168.10.129的mac地址。

此命令发送请求,如果局域网里面没有别的主机使用192.168.10.129这个ip地址,就不会收到回复,所以一直发广播请求。

arping  -U -i eth0 -s 192.168.10.129 192.168.10.2 

此种模式发送arp请求报文,目的ip是192.168.10.2, 源ip是192.168.10.129,目的mac为广播macff:ff:ff:ff:ff:ff:ff,源mac为192.168.10.129的mac地址,

此命令发送请求,如果局域网里存在192.168.10.2这个主机,就会收到回复,所以只有第一个请求包是广播包,收到回复后,后面的arp请求包都是单播包。

发arp欺骗报文的命令行工具:arpspoof

arpspoof [ -i interface ] [ -t target ] host

说明:

向target主机发送arp回复报文,内容是host的mac地址是interface接口的mac地址。

用于在局域网中,拦截报文。

实际上就是把局域网里面到一个主机的报文,重定向到另一个主机。通过ARP欺骗实现,基于伪装arp回复包。

如果想实现完整的网络流量,不影响被攻击主机的上网,需要开启攻击主机的网络转发。

echo "1">/proc/sys/net/ipv4/ip_forward

可以搭一下环境试一下,

我的网络拓扑环境是

主机winPC ------------路由器/网关-----------------互联网

 |        |

 |        |

10.1.5.200   10.1.5.254

主机上winpc安装了Linux 虚机,通过桥接模式上网(必须),让主机和Linux虚机、路由器在一个局域网里面。

虚机的ip地址为10.1.5.201.

虚机上执行

arp -i eth0 -t 10.1.5.200 10.1.5.254  

#虚机 告诉10.1.5.200,10.1.5.254的mac地址是我的eth0的mac地址。

这样,10.1.5.200发送给10.1.5.254的包,都被发到虚机的eth0 口上了,

可以通过在主机winPC上运行arp -a 查看arp缓存表中10.1.5.254的mac地址与10.1.5.201的mac地址一致。

这时主机winPC 上ping 8.8.8.8是没回复包的。

当Linux主机开启网口转发之后,

echo "1">/proc/sys/net/ipv4/ip_forward

ping 8.8.8.8就有回复包了。

有时间,大家可以试一下,很有趣!!!

具体命令使用,请man手册

原文地址:https://www.cnblogs.com/blueyunchao0618/p/11867814.html