一、回顾ARP协议

ARP协议的作用

  1. 为每台计算机建立IP/MAC映射表,用于实现IPMAC之间的转换,通过IP查找MAC地址,
    实现数据包的实际传输
  2. 我们可以通过ARP命令查看本机的ip/mac

查看命令:arp -a
查看到了很多杂乱信息怎么办?

  • 把不用的其它网卡禁用(比如我的虚拟机网卡,有线网卡)
  • 删除已有注册表,然后再查看

删除命令:arp -dWindows中搜索C盘,找到cmd.exesystem32目录下)程序,以管理员权限运行

macsudo arp -d -a,

注册表中显示的动态是什么意思?
网卡的MAC是固定的,但是IP地址是路由器DHCP动态分配的,
所以IP/MAC对中IP可能会因为路由器的自动分配,而发生动态变化,动态指的就是这个意思。


二、ARP协议建立IP/MAC表具体的过程

分两种情况来看:第一个是跨网通信,第二个是局域网内部通信。

1. 跨网通信

跨网通信必须过“路由器”,因为要过路由器,所以数据包中封装的下一站MAC地址,一定是路由器的内网卡的MAC地址。
所以在源计算机的IP/MAC表中,就必须要有路由器的“网关IP/MAC对”,那么网关的IP/MAC对是怎么来的呢?

实际上路由器的IP/MAC对,并不是源计算机主动广播询问到的,而是路由器通过ARP协议,以一定的频率,循环的广播给局域网内,其它所有的计算机的

你把你的计算机的IP/MAC映射表删除了,你会发现很快又有了网关的IP/MAC映射对,因为路由器通过ARP协议,主动广播给了局域网内其它所有的计算机


2. 局域网内部通信

目标计算机的IP/MAC对建立过程

使用目标IPIP/MAC表中查找,目标IP设备的MAC地址:

  • 如果有:直接使用找到的MAC
  • 如果没有:

当前计算机会使用ARP协议,向局域网发ARP广播,询问目标IP设备的MAC
然后在表中建立该目标设备的IP/MAC对,
这时当前计算机的IP/MAC表中,就有了目标计算机的IP/MAC对,拿到了对方的MAC,就可以通信了。

这个过程可以总结为一句话:

如果目标机不是路由器的话,发数据的计算机会按照需求来发ARP广播,然后建立目标设备的IP/MAC对的,也就是说当在表中找不到目标设备的IP/MAC对时,才会发ARP广播。


3. 总结

网段内,普通计算机的IP/MAC对的建立

当本机有与对方通信的需求时,才会主动的发ARP广播去询问对方的IP/MAC对。

网关的IP/MAC

不需要主动询问,路由器会主动广播给局域网内所有其它的计算机。


三、ARP欺骗原理

1. 基本原理

局域网中某台计算机会冒充路由器,让局域网中其它的计算机把数据发给这个冒充路由器的计算机,冒充路由器的计算机就可以截获所有其它计算机的数据,实现“不可告人”的目的。

2. 实现冒充大致原理

原理很简单,将其它计算机IP/MAC表中的,路由器的网关IP/MAC对中的MAC,偷换为“冒充者计算机”的MAC,然后实现了对路由器冒充,其它计算机在查询网关的MAC时,找到的是冒充者的MAC,所以就会把数据发给冒充者。

比如:路由器的网关IP/MAC对为192.168.1.1/32-4E-5C-23-12-2B

冒充计算机会向路由一样,也会给其它计算机发ARP广播,只不过广播的是一个假的网关IP/MC对,
假设为192.168.1.1/33-44-5B-28-1A-2D(冒充者的MAC),其他设备的IP/MAC表中的网关IP/MAC就被换成假的了。

冒充的关键是:将网关的MAC换成冒充者自己的MAC。

3. 欺骗的具体过程

冒充计算机会通过ARP协议,以比路由器更高的频率,向局域网内的所有的计算机广播冒充的IP/MAC对,由于频率比路由器的广播的频率还高,所以网段内其它计算机记录的网关IP/MAC对,都是冒充的。

由于其它计算机的网关IP/MAC对都是冒充的,因此使用网关IP查找自己的IP/MAC表时,找到的都是冒充的IP/MAC对,所有原本发给路由器的数据,都发到了冒充者的手里。

4. 我可以自己操作下ARP欺骗吗?

可以,很简单,下载一个专门进行ARP欺骗的工具软件,运行改软件后,就可以实现ARP欺骗。

我们后面有时间的话,会出ARP欺骗的实验课程,不过还是那句话,如果你感兴趣可以学习,但是对于IT应用开发来说,这些东西事对开发没有太大意义,但是我们还是需要了解的。

5. 总结:什么是ARP欺骗

就是“冒充计算机”,通过ARP协议发广播,欺骗那些普通的计算机自己就网关,以盗取客户信息。


四、如何搭建“冒充计算机”

1. 搭建环境

自己搭建

自己在别人的局域网里面,偷偷的搭建一台局域网计算机,在这台计算机上运行ARP欺骗的工具软件,就可以实现ARP欺骗。

植入木马实现

把自己的ARP欺骗的木马程序,植入局域网内某台别人的计算机,让那台计算机运行ARP欺骗的工具软件(木马),帮你去欺骗。


2. 费劲的实现ARP欺骗,到底图什么?

很简单,通过ARP欺骗,让所有的用户的把数据发给“冒充计算机”,“冒充计算机”拿到客户数据后,自然就可以有很多事情。

不过,使用ARP欺骗截取普通用户计算机的通信数据,价值不大,事实上真正搞ARP欺骗的人,
都是去针对服务器进行欺骗的,服务器的数据才是真正有价值的。

一般进行ARP欺骗的人,大致就两种目的:

(1)恶搞你:就是想让你上不了网

没什么明确目的,说白了就是想通过ARP欺骗恶搞你,让你上不了网,如何实现上不了网呢?

很简单,你本来是想过路由器访问外网的,但是你的数据全都发到了“冒充者”手里,数据根本就没有过路由器,
冒充者也不干啥坏事,就是把你的数据包丢掉,外网服务器无法收到你的访问数据,你自然就上不了网了。

(2)拿你的数据做坏事

比如冒充者采集到客户数据后,冒充者此时关闭ARP欺骗,然后让路由器正常工作,冒充计算机再通过路由器,把自己的采集到的客户数据,打包发送给外网的某个做坏事的服务器,这个服务器就可以拿这些客户数据进行不好的勾当了。


五、 目前的ARP多吗

总体上来说不多了。

(1)因为现在很难轻易进行ARP欺骗了

现在的360等杀毒软件,都可以检测并排除ARP欺骗,防止你中ARP相关的病毒和木马。

疑问:木马和病毒怎么区分。
简单区分,单纯恶意攻击的就是病毒,如果没有恶性的攻击你,只是向你的电脑植入了某软件,让你的计算机运该软件帮忙做事,比如帮忙刷流量啥的,但是并不影响你计算机的正常运行,也没有对你形成破坏,这种被认为就是木马。

(2)360是如何预防ARP欺骗的

猜测的预防原理有两种,因为看不到360的源码,这里也只能简单的猜测而已。

(a)方法1

原理很简单,你所连接的路由器的内网卡(网关)的MAC是固定的,如果360检测到网关的IP/MAC对中,MAC地址发生变化了,他就认为出现了ARP欺骗,这个时候360只会采用最开始记录的真实路由器的MAC地址,抛弃ARP欺骗后,发生了变化的那个MAC地址。

(b)方法2

通过广播网关IP/MAC频率判断,频率高的哪一个就应该是冒充者发送的。