一、ARP协议
1、ARP协议概念
1、什么是ARP
- address resollution protocol,地址解析协议。
- 将一个已知的IP地址解析成MAC地址
- ARP协议通过IP地址向MAC地址的转换,解决网际层和网络访问层的衔接问题(网际层是TCP/IP协议簇四层模型中的底层,是数据链路层和物理层的整合)
- 由于IP地址和MAC地址定位方式不同,ARP协议成为数据传输的必备协议,主机发送信息前,必须通过ARP协议获取目标IP地址对应的MAC地址,才能正确的发送数据包。
2、为什么需要ARP协议
- 在网络访问层中,同一局域网中的一台主机要和另一台主机进行通信,需要通过MAC地址进行定位,然后才能进行数据包发送。而在网络层中和传输层中,计算机之间是通过IP地址定位目标主机,对应的数据报只包含目标主机的IP地址,而没有MAC地址。因此,在发送之前需要根据IP地址获取MAC地址,然后才能将数据包发送到正确的目标主机,而这个获取过程是通过ARP协议完成的
3、ARP工作基本流程
- ARP工作流程分为两个阶段。一个是ARP请求(ARP广播)过程,另一个是ARP响应过程
- 主机A以广播形式向网络中所有主机发送ARP请求,请求中包含了目标IP地址如192.168.1.2,主机B收到请求,发现自己就是主机A要找的主机,返回响应,相应包中包含主机的MAC地址。则其他主机收到默认将丢弃
- 当主机A发送广播时不知MAC地址则用6组0进行填充
2、ARP报文的格式
- 以太网目的地址:是ARP请求的目的以太网地址,为全1时代表广播地址
- 以太网源地址:是发送ARP请求的以太网地址
- 帧类型:是后面的数据类型,ARP请求和ARP应答的这个值为0x0806
- 硬件类型:表示硬件地址的类型,硬件地址不只以太网一种,当为以太网类型时此值为1
- 协议类型:表示要映射的协议地址类型,要对IPv4地址进行映射,此值为0x0800
- 硬件地址长度和协议地址长度:MAC地址占6字节,IP地址占4字节
- op code:操作类型字段,值为1,表示进行ARP请求,值为2,表示进行ARP应答,值为3,表示进行RARP请求,值为4,表示进行RARP应答
- 发送端以太网地址:发送端ARP请求或应答的硬件地址,这里是以太网地址,和以太网源地址相同
- 发送端IP地址:发送ARP请求和应答的IP地址
- 目的以太网地址:目的端的硬件地址
- 目的IP地址:目的端的协议地址
3、ARP缓存
- 为了避免重复发送ARP请求,每一太主机都有一个ARP告诉缓存。当主机的到ARP响应后,将目标主机的IP地址和物理地址存入本机ARP缓存中,并保留一定时间(两分钟),只要在这个时间范围内,下次请求MAC地址时,直接查询ARP缓存,而无需再发送ARP请求
1、使用ARP命令
-
windows系统中使用
arp -a #显示当前ARP项 arp -d #清空ARP缓存,包括静态绑定 arp -s IP地址 MAC地址 #添加静态绑定
-
思科设备上使用
show arp #查看ARP缓存表 clear arp-cache #清除ARP缓存 arp IP地址 MAC地址 #绑定静态ARP
4、ARP 攻击与欺骗
1、原理
(1)ARP攻击原理
- 首先明确ARP攻击发送的是ARP应答,但是ARP应答中的MAC地址为虚假地址,所以在其他主机想要通信时,会将目的的MAC地址设置成此虚假MAC地址导致无法正常通讯。
(2)ARP欺骗原理
- ARP欺骗攻击
- 目的不是为了让被攻击主机无法访问互联网,而是让被攻击主机访问互联网时的数据发送给攻击者,由攻击者将数据发送给网关,所以被攻击主机和网关收到的都是真实的MAC地址(攻击者的MAC地址)
(3)ARP防御手段
- 绑定静态ARP
- 使用ARP防火墙
2、使用kali linux攻击
-
arpspoof
apt-get -y install dsniff #安装
(1)ARP攻击
arpspoof -i eth0 -t 192.168.1.188 192.168.1.1
# -i 使用的接口
# -t 攻击主机目标地址 攻击主机网关地址
(2)ARP欺骗
echo 1 >> /proc/sys/net/ipv4/ip_forward #末尾添加1,表示开启流量转发
arpspoof -i eth0 -t 192.168.1.188 192.168.1.1
#主机和网关地址可以调换,从而监控进或出流量
5、driftnet工具
-
driftnet工具负责显示某个网卡的流量转换成图片(ARP欺骗转发流量)
apt-get -y install driftnet driftnet -i eth0
二、ICMP协议
1、ICMP协议概念
(1)什么是ICMP
- internet control message protocol,控制报文协议。
- 它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户的数据传递起着重要的作用
- ICMP协议属于网络层协议,封装在传输层与网络层之间
2、ICMP报文格式
- ICMP报文包含在IP数据报文中,IP头部就在ICMP报文的前面
- ICMP头部中的类型域用于说明ICMP报文的作用及格式,此外还有一个代码域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面
- type:报文类型
- Code:类型代码
- Cchecksum:校验和
- [Cchecksum status:Good] :校验和状态
- Iddentifier(BE):标识符大端
- Iddentifier(LE):标识符小端
- Sequence Number(BE):序列号大端
- Sequence Number(LE):序列号小端
- Data:数据字段
(1)13种ICMP报文类型
类型 | 代码 | 目的不可达 | 处理方法 |
---|---|---|---|
0 | 0 | 回显应答 | 用户进程 |
3 | 0 | 网络不可达 | 无路由到达主机 |
3 | 1 | 主机不可达 | 无路由到达主机 |
3 | 2 | 协议不可达 | <