简记 ARP 和 ARP攻击

1.

ARP = 询问局域网内的各个主机某 IP对应的机子的MAC是多少

ARP 请求帧的MAC会是FFFFFFFF,表示待寻找。

IP地址为A , 硬件地址为a 的主机,找IP地址为 B 的主机( 硬件地址为b ),但是A的缓存表中没有特定条目,即没有 B - b 的缓存条目。

于是A发送 一条ARP信息 : 源IP = A    源MAC = a ; 目的IP = B   目的MAC = FFFFFFFF  类型是ARP request

B收到之后 在本机的ARP缓存中存 A - a 记录。表示知道IP为A的主机的MAC地址是a。

并且发出 一条ARP信息: 源IP = B 源MAC = b;目的IP = A   目的MAC = a  类型是ARP reply

A收到之后 在本机的ARP缓存中存 B - b 记录。表示知道IP为B的主机的MAC地址是b。

以后向B通信就可以在 MAC帧中把 b 当作目标MAC地址包进去。

2.

ARP攻击

上述过程如果有一台黑客的机子 C 要冒充 B 的话

C打开网卡的混合模式(Linux 通过 ifconfig 网卡名 promisc 指令打开混合模式,还没试过能不能达到效果)

在A发送ARP request之后,即使C的IP不是 B,C也会对A的 ARP request 做出反应。

具体是回复一条ARP信息 : 源IP = B  源MAC = c(C的MAC地址)  目的IP = A  目的MAC = a

A接收到这条假的ARP信息,就会把 B - c 这条记录存在ARP缓存中

如果A,B,C 之间是通过一条交换机链接的话,交换机会记下MAC地址对应的端口。

C发送上述的这条伪装的ARP信息之后,交换机就会记录下c对应的端口是通向C的。

以后只要A访问IP地址B,就会根据A上的ARP缓存,指定MAC地址是 c,而交换机又记录了 c 的端口是通向 C的,所以信息都会发送给C。

B得不到A发送的信息。上述即ARP攻击,同理,对B也可以发起同样的攻击。这样的话,相当于C在A,B两者之间充当一位代理。

掌控A和B之间通信的内容。如果通信的内容没有加密的话,C可以根据内容,在A,B两者之间建立起看似正常的会话。

原文地址:https://www.cnblogs.com/lqlqlq/p/13253990.html