ARP协议
TCP/IP协议栈中,最不安全的协议莫过于是“ARP协议”了。
ARP(Address Resolution Protocol 地址解析协议)用于实现从IP地址到MAC地址的映射。
ARP协议的不安全性的原因是:它是建立在局域网中所有主机完全信任的基础上的,即其前提为所有在局域网中传送的ARP数据包都是正确。那么一旦局域网中存在着恶意或者非法者,就会出现网络安全隐患。当攻击源向局域网中大量发送虚假的ARP信息后,就会造成局域网中的机器ARP缓存的崩溃或主机ARP缓存信息错误。
ARP协议工作原理
(注:图片摘于网上)
当两台主机PC1和PC2需要通信时,需要填写源IP地址(IP1)、源MAC地址(MAC1)和目的IP地址(IP2)、目的MAC地址(MAC2)。
当数据包在发送方(PC1)进行封装时,并不知道接收方(PC2)的MAC地址,只知道PC2的IP地址。此时ARP协议就开始起作用了。
发送方(PC1)会在局域网内发送ARP请求包,广播询问:我的IP地址是IP1,MAC地址是MAC1,请问谁是IP2,IP2对应的MAC地址是多少?
IP地址为IP2的主机接收到该广播包后即单播回复:我的IP地址为IP2,我的MAC地址是MAC2。并且在ARP缓存表中存储IP1—MAC1的映射关系
最后在PC1封装时,即可将MAC2填入数据包中进行传输。并且在PC1的ARP缓存表中会存储 IP2—MAC2 的映射关系,方便下次传输数据包。
注:一般情况下,只有IP地址对应的主机才会回复广播包,其余主机一般都将广播包丢弃;而ARP应答数据包是采用单播,因为在ARP请求包中带有源IP地址和源MAC地址;被询问者PC2会先生成ARP映射信息,然后才是询问者PC1。
ARP数据包解析(通过WireShark抓取)
-
ARP请求包(广播)
-
ARP回应包(单播)
ARP协议字段解读
- Hardware type :硬件类型,标识链路层协议
- Protocol type: 协议类型,标识网络层协议
- Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bti)
- Protocol size: 协议地址大小,标识IP地址长度,这里是4个字节(32bit)
- Opcode: 操作代码,标识ARP数据包类型,1表示请求(request),2表示回应(reply)
- Sender MAC address :发送者MAC
- Sender IP address :发送者IP
- Target MAC address :目标MAC,此处全0表示在请求,尚不知道目标MAC地址
- Target IP address: 目标IP
ARP攻击原理
PC1跟PC2通信,通过ARP请求包询问PC2的MAC地址,因为ARP请求包是采用广播形式,故交换机会将ARP请求包向各个接口转发。
正常情况下,若收到的ARP请求包中的IP地址与自己不符,会直接丢弃。但这里的PC3在监听后,发送了ARP回应包:我的IP地址是IP2,我的MAC地址是MAC3。形成了 IP2—MAC3的错误映射。
同时,PC2在收到给自己的ARP请求包时也会回应,故PC1会收到两个ARP回应包,分别是
- 来自PC2的回应包:我是PC2,我的IP地址是IP2,我的MAC地址是MAC2
- 来自PC3的回应包:我是PC2,我的IP地址是IP3,我的MAC地址是MAC3
ARP缓存遵循的是“后到优先原则”,即会以最后一个得到的最新的ARP回应包作为缓存内容。而攻击者(PC3)只需要不断的发送ARP欺骗包,就能覆盖PC2的回应包,从而在PC1中形成 IP2—MAC3 的错误映射。
之后当PC1要与PC2通信时,在目的MAC中填写的就是MAC3,而交换机会根据MAC缓存将数据包发送给PC3,从而形成ARP攻击。
ARP攻击实验
工具:P2P终结者、VMware虚拟机、WireShark抓包软件。
网络:Windows Server 2003(IP:192.168.229.132、MAC:00-0C-29-EF-11-33);Windows XP(IP:192.168.229.130、00-0C-29-FF-E1-B2)、网关(IP:192.168.229.2)
流程:在Windows Server 2003上运行了P2P终结者进行ARP攻击,并通过WireShark抓包窃取局域网内其他用户的信息。
1. 打开P2P终结者,选择网卡;打开WireShark,选择相应的网卡进行监听
2. 点击扫描网络,获取本局域网内的主机信息
此时可在WireShark中抓取到大量的ARP请求包
此时两主机的ARP缓存如下
-
Windows Server 2003
-
Windows XP
3. 点击启动提速,会发送大量的ARP欺骗包,欺骗他人说:我(Windows Server 2003)就是网关,即把该局域网内的所有主机ARP缓存中的网关的MAC改为攻击者的MAC,导致所有发往网关的数据报都会先流过攻击者的网卡,攻击者可用WireShark获取当中的信息
可在WireShark中抓取到大量的ARP欺骗包
即网关(192.168.229.2)的MAC地址是攻击者主机的MAC地址
此时观察Windows XP的ARP缓存表,发现网关(192.168.229.2)的MAC地址已经变为了攻击者(Windows Server 2003)的MAC地址
4. 在Windows XP中ping 114.114.114.114,Windows Server 2003(攻击者)可使用WireShark通过ICMP过滤在Windows Server 2003的网卡中获取来自Windows XP(源IP地址是192.168.229.130)的数据包
5. 在Windows XP上输入telnet route-server.ip.att.net 登录国外的一台公共服务器,输入账号:rviews;密码:rviews。
在Windows Server 2003上过滤telnet,并使用“follow tcp stream”功能可窃取到Windows XP用户输入的账号密码