一、ARP攻击
ARP欺骗攻击原理:
ARP欺骗攻击建立在局域网主机间相互信任的基础上的。
比如:假设A、B、C在同一个局域网中,网关为192.168.43.1,IP地址和MAC地址分别假设如下。假设C是攻击者。
当A发广播询问:我是192.168.43.2,硬件地址macA,我想知道主机IP是192.168.43.3的硬件地址。
此时B回应:我是192.168.43.3,硬件地址是macB。
如果此时IP地址是192.168.43.4的C非法回应:我是IP192.168.43.3,我的硬件地址是macC。
这样A就会收到两个ARP回应包,由于ARP遵循后到优先规则,所以如果C持续不停发出ARP欺骗包,就一定能够覆盖掉正常的ARP回应包(也称为ARP毒化)。然后A就会误信192.168.43.3的硬件地址是macC。这样当主机A向主机B发送数据时,主机C就劫持了主机A发送给主机B的数据,这就是ARP欺骗的过程。
相反,如果主机B向主机A发送数据,主机C依然可以以同样的ARP欺骗,劫持主机B发送给主机A的数据,这样就形成了“中间人攻击”。
还有一种ARP欺骗的方法:主机C直接冒充网关,此时主机C会不停的发送ARP欺骗广播,大声说:我是192.168.43.1,硬件地址是macC。此时局域网内所有主机都会被欺骗,更改自己的缓存表,C将会监听到整个局域网发送给互联网的数据报。
ARP攻击分类:
1、ARP泛洪攻击
通过向网关发送大量ARP报文,导致网关无法正常响应。首先发送大量的ARP请求报文,然后又发送大量虚假的ARP响应报文,从而造成网关部分的CPU利用率上升难以响应正常服务请求,而且网关还会被错误的ARP表充满导致无法更新维护正常ARP表,消耗网络带宽资源。
2、ARP欺骗主机的攻击
攻击者通过ARP欺骗冒充网关,使得局域网内被攻击主机发送给网关的流量信息实际上都发送给攻击者。
3、欺骗网关的攻击
把别的主机发送给网关的数据通过欺骗网关的形式使得这些数据通过网关发送给攻击者。这种攻击目标选择的不是个人主机而是局域网的网关,这样就会攻击者源源不断的获取局域网内其他用户数据。
4、中间人攻击
最典型的攻击之一,中间人攻击是同时欺骗局域网内的主机和网关,局域网中用户的数据和网关的数据会发给同一个攻击者,这样,用户与网关的数据就会泄露。
5、IP地址冲突攻击
通过对局域网中的物理主机进行扫描,扫描出局域网中的物理主机的MAC地址,然后根据物理主机的MAC进行攻击,导致局域网内的主机产生IP地址冲突,影响用户的网络正常使用。
二、编程实现
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/ether.h>
#include <pthread.h>
#include <sys/ioctl.h> //ioctl头文件