了解OSI模型
理解TCP/IP协议原理
了解TCP/IP协议存在的安全隐患
理解针对TCP/IP各层常见攻击的技术原理
OSI 7层模型: 开放系统互连参考模型
应用层 message 报文 HTTP DNS FTP 应用层协议
表示层 PPDU
会话层 SODU
传输层 segment 报文段 端口:16bit
网络层 package 包/分组 路由器 IP:32bit
数据链路层 frame 帧 交换机 MAC 物理地址长度:48bit
物理层 bit 比特 集线器
各层功能:
应用层功能:提供方便的接口和运行程序。(提供应用程序间通信)
表示层功能:加密,处理用户信息的表示问题,如编码、数据格式转换和加密解密。(处理数据格式、数据加密)
会话层功能:向两个实体的表示层提供建立和使用连接的方法(单工,半双工,全双工)。(建立、维护和管理会话)
传输层功能:完成端到端差错检测和流量控制
网络层功能:确定数据包从源端到目的端如何选择路由,即使用逻辑地址进行选址。(寻址和路由选择)
数据链路层:定义了在单个链路上如何传输数据,传输的数据单元称为数据帧。(提供介质访问、链路管理等)
物理层功能;为数据通信提供传输设备及互连设备,传输的数据单元称为比特流。(比特流传输)
TCP/IP模型包含以下4个层次:
应用层:直接为用户的应用进程提供服务。
运输层:负责向两个主机进程之间的通信提供服务。
网际层:负责提供基本的数据封包传送功能,让每块数据包都能到达目的主机。
网络接口层:接收IP数据包并进行传输,从网络上接收物理帧,抽取IP数据包转交给下一层,对实际的网络媒体的管理。
以太网帧:目的地址(6字节)、源地址(6字节)、类型(2字节)、数据(46~1500字节)、FCS(4字节)
类型:0x0800,代表IP
类型:0x0806,代表ARP
类型:0x8035,代表RARP
MAC:物理地址 48bit
48位中
单播MAC:xxxxxxx0,
组播MAC:xxxxxxx1,01-00-5E-
广播MAC:111…,FF-FF-FF-
解析过程:
ARP 用于把一个已知的 IP 地址解析成 MAC 地址,以便在 MAC 层通信。为了确定目标 的 MAC 地址,首先查找 ARP 缓存表。如果要查找的 MAC 地址不在表中,ARP 会发送一个广 播,从而发现目的地的 MAC 地址,并记录到 ARP 缓存表中以便下次查找。
ARP协议: 4种典型情况
主机A 发一个IP数据报给 主机B —— 同一网络
主机HOST-A先在自己的ARP高速缓存中查看有无主机HOST-B的IP地址对应的MAC地址。
如果有,就将此MAC地址写到封装IP数据报的MAC帧的目的MAC地址字段,发出该MAC帧。
如果没有,就先找到主机B的MAC地址。 ARP广播请求request(包内包含发送端主机IP和MAC和接收端主机IP),主机B在ARP请求分组中见到自己的IP地址,一方面将主机A的IP地址和主机A对应的MAC地址存入自己ARP高速缓存中,另一方面主机B向主机A发送ARP响应response分组,接着主机A收到主机B的IP地址和对应的MAC地址存入其ARP表中。 其他主机看到不是自己的IP地址就会丢弃。
跨网络 A网段的主机A,发到B网络的主机B
发送方是主机A,用ARP找到路由器的硬件地址,剩下工作由这个路由器完成
发送方是路由器,用ARP找到本网络上的一个路由器的硬件地址,剩下工作由这个路由器完成
发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址
三层设备会丢掉 TTL=0的
发送端网络层生成的IP数据报还要继续向下传输,到达数据链路层就要封装成数据帧了。IP数据报的“帧封装”只需把来自网络层的整个IP数据报(报头和数据部分)当做数据链路层帧的数据部分,然后在前面加上与数据链路层对应的协议头即可。
这里补充前篇数据链路层中没有说到的一点:在以太局域网中,由于数据链路层分成了LLC子层和MAC子层这两层,所以来自网络层的IP数据报在到达数据链路层后先要经过LLC子层和MAC子层的协议头封装,最终形成数据链路层的以太网MAC帧。
数据帧格式参见数据链路层
(经过路由器)解封装则是去掉帧头和帧尾(如果有帧尾)。
可以得知,IP数据报无论经过了多少个网络,整个数据报内容都不会变,包括报头部分的源和目的地址信息。变化的只是在不同网络数据链路上传输的帧头信息。
(1)序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位(Flags):共6个,即URG、ACK、PSH、RST、SYN、FIN等。具体含义如下:
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。RST:重置连接。
SYN:发起一个新连接。FIN:释放一个连接。
首先A的TCP客户进程向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x,表明传送数据时的第一个数据字节的序号是 x。 TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但要消耗掉一个序号。这时,A的客户进程就进入SYN-SENT(同步已发送)状态。
B收到连接请求报文段后,向A发送确认。在确认报文段中把SYN和ACK位都置为1 ,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时B的TCP服务器进程就进入SYN-RCVD(同步已收到)状态。
A的TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置为1 ,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态,
当B收到A的确认后,也会进入ESTABLISHED状态。
为什么连接的时候是三次握手,关闭的时候却是四次挥手?
因为在握手过程中,当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。
四次握手因为是双方彼此都建立了连接,因此双方都要释放自己的连接,A向B发出一个释放连接请求,他要释放链接表明不再向B发送数据了,此时B收到了A发送的释放链接请求之后,给A发送一个确认,A不能再向B发送数据了,它处于FIN-WAIT-2的状态,但是此时B还可以向A进行数据的传送。此时B向A 发送一个断开连接的请求,A收到之后给B发送一个确认。此时B关闭连接。A也关闭连接。
1、缺乏数据源验证机制
2、缺乏完整性验证机制
3、缺乏机密性保障机制
对于MAC攻击的防范措施
1.MAC欺骗
攻击原理:攻击者将自己的MAC地址更改位受信任系统的地址(伪装)
造成影响:仿冒用户,截取数据帧
防范策略:在交换机上配置静态条目,将特定的MAC地址始终与特定的端口绑定
2.MAC泛洪
MAC泛洪攻击利用了:
MAC泛洪攻击的预防
攻击原理:因为交换机的MAC学习机制,MAC表项的数目限制,交换机的转发机制,攻击者向交换机发酥大量的二层数据帧,以快速填满交换机的MAC表,MAC表填满之后,开始将后续的帧进行泛洪,导致整个网络系统中的链路还有交换机处于拥塞的状态,直至崩溃
造成影响:(1)试交换机无法正常工作(MAC表满)(2)网络中流量增大
防范策略:配置静态的MAC转发表,配置端口的MAC学习数目限制
3.ARP欺骗
攻击原理:攻击者抢先合法主机发出的ARP请求作出应答,这样要发送给合法主机的数据就会发送到伪装主机处
造成影响:截获数据
1.IP欺骗
攻击原理:攻击者使用相同的IP地址可以模仿网络上的合法主机,来访问关键信息
造成影响:伪装成某一合法用户
攻击步骤:
(1)首先使被信任主机的网络暂时瘫痪,以免对攻击造成干扰(攻陷要伪装的主机)
(2)连接到目标机的某个端口来猜测序列号和增加的规律
(3)接下来把源地址伪装成被信任的主机,发送带有SYN标志的数据段来请求连接
(4)等待目标机发送SYN+ACK包给已经瘫痪的主机
(5)最后再此伪装成被信任主机向目标发送ACK,此时发送的数据段带有预测的目标机的序列号+1
(6)连接建立,发送命令请求
2.Smurf攻击(DDOS攻击的一种)
攻击原理:攻击者发送ICMP请求,请求包的目标地址设置为受害网络的广播地址,这样该网络中的所有主机对此ICMP请求作出答复,导致网络阻塞,高级的Smurf攻击,主要使用来攻击目标主机,方法是将上述ICMP请求包的源地址改为被迫害的主机,最终导致受害主机雪崩,网络中的主机越多,攻击效果越明显
造成影响:(1)被攻击网络内流量增大(2)接受ICMP应答包的主机可能会宕机
防范策略:检查ICMP请求包的目的地址是否为子网广播地址或子网的网络地址,如果是则直接拒绝
3.ICMP重定向和不可达攻击
攻击原理:ICMP重定向报文是ICMP控制报文中的一种,在某些情况下,当路由器检测到一台机器上使用非优化路由的时候,他会向该主机发送一个ICMP重定向报文,请求主机改变路由。ICMP协议虽然不是路由协议,但是他可以指导数据包的流向。攻击者通过向主机发送ICMP重定向数据包,使受害人主机数据包发送不到正确的网关,以达到攻击目的
造成影响:使用户的数据不按正常的路径转发,造成网络断开
防范策略:修改注册表关闭主机的ICMP重定向报文处理
4.IP地址扫描攻击
攻击原理:攻击者运用ICMP报文探测目标地址,或者使用TCP/UDP报文对一定地址发起连接,通过判断是否有应答报文,以确定哪些目标系统存活并连接在目标网络上
造成影响:使攻击者获悉存在的网络主机,对后续进攻作准备
防范策略:设置主机使其不对ping请求作出应答
1.TCP欺骗
描述:利用主机之间某种网络服务的信任关系建立虚拟的TCP连接,可能模拟受害者从服务器端获取信息,具体过程类似于IP欺骗攻击
攻击原理:
(1)攻击者先将要伪装的主机攻克
(2)攻击者用被攻克的主机的地址作为源地址给目的主机发送TCP SYN报文
(3)目标主机回应TCP SYN/ACK报文,携带序列码S
(4)C收不到序列码,但为了完成握手必须使用S+1作为序列码进行应答,这时C可以通过监听SYN/ACK报文,根据得到的值进行计算或者根据操作系统的特新进行猜测
(5)攻击者使用得出的序列码S回应给目标主机,握手完成,虚假连接建立
2.TCP拒绝服务攻击—SYN Flood攻击
攻击原理:SYN报文是TCP连接的第一个报文,攻击者通过大量发送SYN报文,造成大量未完全建立的TCP连接,占用被攻击者的资源
解决方法:关闭处于Half Open状态的连接
3.端口扫描攻击
攻击原理:攻击者通常使用一些软件,先大范围的主机的一系列TCP/UDP端口发起连接,根据应答报文判断主机是否使用这些端口提供服务
防范策略:配置端口扫描攻击防范参数后,设备对进入的TCP,UDP,ICMP报文进行检测,并以每个源地址作为索引,判断该源地址发送报文的目的端口与前一报文的目的端口是否不同,如果是则异常数加1,当异常频率到达阈值时,则认为该源IP地址的报文为端口扫描攻击,并将该源ip地址加入黑名单