网络接口层协议安全分析
网络嗅探
共享环境下的网络嗅探
-
以太网采用星型拓扑结构,使用集线器(hub)或者交换机(switch)连接网络节点。
-

-
集线器本质上是物理层的中继器:
处理的基本单位是比特
信号放大,延长网络距离
收到的比特发送给所有其它连接节点
多个端口使用相同的传输速率,没有帧缓存
没有CSMA/CD:由计算机的网卡检测冲突
工作原理
网络嗅探器是通过对网卡的编程来实现的。对网卡的编程是使用原始套接字方式来进行。
嗅探前提:网卡设置为混杂模式,与被嗅探机同处一个广播式局域网.
Windows环境下
- 创建原始套接字s=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);
- 设置为对IP头进行编写操作setsockopt(s,IPPROTO_IP,IP_HDRINCL,(char*)&bFlag,sizeof(bFlag));
- 设置 SOCK_RAW 为SIO_RCVALL,以便接收所有的IP包ioctlsocket(s, SIO_RCVALL, &dwValue),
- 将网卡设置为混杂模式,来获取网络接口上侦听到的所有的数据包。

交换环境下的网络嗅探
交换机采用接口转发方式实现主机间的通信。
交换机工作在*链路层
于帧转发, 实现MAC地址过滤
物理上和逻辑上都是星型结构(星型结构以中央节点为中心,并用单独的线路使中央节点与其他各节点相连,相邻节点之间的通信都要通过中心节点。)
交换:A-to-A’和 B-to-B’同时工作,不冲突

需要通过交换机毒化或ARP欺骗
- 交换机内部保存一个源地址表又称为交换表
- 交换表的表项: (MAC地址, 接口, 时间)
- 交换表中过期的表项将被删除 (TTL 可以是60分钟)
- 交换机学习哪一个主机可以通过哪一个接口到达。交换机当接收一个数据帧时,交换机“学习”发送者的位置:即数据进入交换机的LAN网段与接口之间的对应关系,在交换表中记录发送者/位置对应关系
上述机制称之为交换机的“自学习”
交换机工作过程
-
交换表有记录
假设A发送数据帧到E
交换机接收来自A的数据帧
1. 注意在交换表中A在交换机的接口1上,E在交换机的接口2上
交换机将转发数据帧到接口
2. 数据帧被E接收

-
交换表无记录
假设C发送数据帧到D
交换机接收来自C的数据帧- 记录C所对应的接口号1
- 因为D不在交换表中,交换机将转发数据帧到接口2和3
数据帧被D接收

假设D回复数据帧给C
交换机接收来自D的数据帧- 记录D所对应的接口号为2
- 因为C在交换表中,并且接口为1,则交换机只向接口1转发数据帧
数据帧被C接收

交换机毒化的攻击(嗅探)
- 交换表的空间是有限的,新的“MAC地址——接口”映射对的到达会替换旧的表项。
- 如果攻击者发送大量的具有不同伪造源MAC地址的帧,由于交换机的自学习功能,这些新的“MAC地址—接口”映射对会填充整个交换机表,而这些表项都是无效的,结果交换机完全退化为广播模式,攻击者达到窃听数据的目的。
ARP欺骗
ARP协议功能
在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。因此ARP协议位于网络层与数据链路层之间。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。
所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
- ARP协议:IP地址——>MAC地址
- RARP协议:MAC地址——>IP地址
ARP头部结构

ARP协议工作原理
- 每个在局域网上的IP节点 (Host, Router)都有ARP表
- ARP表:局域网上(部分)节点的IP/MAC地址映射
<IP address; MAC address; TTL>- TTL (Time To Live): 映射地址的失效时间 (典型为20分钟)
- ARP是即插即用的,无需网络管理员干预,节点就能创建ARP表。
- A想发送分组给 B,A知道 B的IP地址,假设B的MAC地址不在A的ARP表中

ARP欺骗
- ARP协议的特殊设计(改进效率)
响应ARP请求的主机将请求者的IP-MAC映射缓存。
主动的ARP应答会被视为有效信息接受 - ARP协议的缺陷
- ARP协议设计之初没有考虑认证问题,所以任何计算机都可以发送虚假的ARP数据包。
- ARP协议的无状态性。响应数据包和请求数据包之间没有什么关系,如果主机收到一个ARP响应却无法知道是否真的发送过对应的ARP请求。
- ARP缓存需要定时更新,给攻击者以可乘之机。
- ARP欺骗过程

8538





