12.24网络安全期末,用这篇文章来梳理一下对相关知识的理解
这篇文章主要从TCP/IP五层模型的层次来比较宽泛地讲一些常见的网络攻击。众所周知,TCP/IP五层模型将网络架构分为物理层、数据链路层、网络层、运输层和应用层。针对物理层的攻击我不是很懂,因此不在本篇文章的描述范围内,而应用层出现的app漏洞和防御技术比较广泛,会用几章分别叙述。
每一章大概分为"协议-攻击方式-防御措施"三部分。常见攻击可以分为"DoS,投毒,劫持",其中,劫持一般是劫持有状态的协议。
下面是一些用于应试的背诵点,不考试的读者直接跳过即可。
分层带来的功能是:拆分与重组、封装、连接控制、顺序递交、流控制、出错控制和复用
bugs指的是软件程序中的错误或缺陷,vuln指的是系统需求、设计、实现或运行中的缺陷或弱点, exploit指的是一段软件、一系列命令或一组数据利用vuln或bugs来引发计算机软件或硬件上的非预期行为
网络攻击可以分为:面向报文头的攻击、面向认证的攻击、面向协议的攻击和面向网络流的攻击。
[0] 比较容易遗忘的点:
分层带来的功能
bugs,vuln,==exp==
==网络攻击分类方式==
==IPSec的enchidala怎么来的==
==传输层:TCP攻击方式 + manimon==
==DNS报文解析,什么样的报文会被递归DNS接收,劫持型DNS poison,响应型服务器做什么检查?DNS有哪些攻击方式?==
==web系统安全:css/js有哪些安全风险?服务器的风险(缓存没记住),web系统风险,cookieparams,第三方插件安全,tls工作阶段==
==邮件安全:绕过身份验证攻击,DKIM重放,根本原因==
防火墙:功能、缺陷、三种防火墙的原理和优缺点、其他类型防火墙、WAF、内部防火墙的部署
IDS:HIDS/NIDS的原理及优缺点,常见入侵,P2DR,IDS技术
arp投毒如何防护
缓存:①被注入②未授权的访问数据③字段错误导致访问问题④窃取行为习惯
web系统的风险有:①身份冒充②网络监听和中间人③DOS④针对应用的攻击
包过滤防火墙优点:高效开销小+透明,缺点:粒度粗容易误报漏报、不防御应用层漏洞、不防御IP伪造、日志提供有限
状态检测防火墙优点:建立连接跟踪,检测会话,减少虚假报警;缺点:配置复杂、开销大、不防御应用层漏洞、不适合UDP
应用层防火墙优点:能防御应用层、日志详细,缺点:配置复杂因地制宜+开销大+错误拦截多+第三方漏洞
WAF:基于特征、基于行为、基于语义分析
其他类型防火墙:
HIDS优点:检测加密前解密后的数据、不受交换网络影响、检测NIDS无法检测的内容、检测软件完整性破坏 缺点:开销大、因地制宜配置复杂、可能背攻击禁用
NIDS优点:被动捕获、扩展性好、OS独立、抗DoS。缺点:①受交换空间影响②无法检测加密内容③难以处理高速网络
常见入侵:蠕虫木马、钓鱼邮件、勒索病毒、APT、DoS
基于误用:模式匹配,静态只匹配静态表,动态还分析时间序列或状态变化等
静态mac表,开启路由器和网关的arp防护,用软件或中间件来检测arp
[1] 数据链路层(局域网)
[1-1] 协议
这部分讲述的协议不只是设计数据链路层的协议,而是涉及到局域网通信的协议。
由于物理媒介的不同,我们可以把网络分为有线网络和无线网络。无线网络涉及AP、信道等内容,不利于基础攻防技术的学习,因此本文主要基于有线网络进行讲述。根据IEEE 802.3 的规定,有线网络使用的数据传输策略是CSMA/CD(carrier sensation multiple access/collision detection),即带有碰撞检测的载波监听多点接入技术,该技术的细节就不在这里过多描述, 我们只需要知道因为该协议的存在,数据链路层的数据包的data部分必须控制在46byte-1500byte,被称为MTU。在数据链路层中,我们为每一个网络设备分配了唯一的标识符,即MAC地址(media access control address)。多个网络设备可以通过交换机连接成一个局域网。
[1-1-1] ARP
如果设备A要与设备B通信,那么A需要先通过ARP协议得知B的MAC地址。ARP其实是通过IP地址找MAC地址的一种协议,如果发送方A不知道接受方B的MAC地址,A会先广播一条消息"我是A(MAC:aaa,IP:aaa),我想知道bbb这个IP对应的MAC地址是什么",这条消息叫做ARP Request。用同一台交换机相连的所有网络设备都会接收到这条消息,当B发现A在找自己的时候,B就会记录下A的MAC地址,然后给A回复一条消息告诉A"bbb这个IP地址指的是我,我的MAC地址是bbb"
在数据传输的过程中,交换机也会不断学习这个数据包的源MAC地址和目的MAC地址,记录在交换机的缓存当中,这个过程叫做交换机的逆学习过程。
[1-1-2] DHCP
如果设备A想要跟互联网通信,那么设备A必须要获取自己的IP地址和所在子网,除此之外,它还需要知道递归DNS服务器和默认网关的IP地址,这些都是DHCP服务器为设备A分配的。
[1-2] 常见攻击
[1-2-1] ARP
[1-2-1-1] ARP DoS(MAC地址洪泛)
交换机的MAC表有老化机制,当一条MAC记录生存期结束之后才会被新的MAC记录替换;而MAC表的容量又是有限的,如果MAC表满了,并且当前表中所有记录都尚未过期,那此时交换机将对它无法找到MAC地址的所有数据包进行泛洪,也就是将这个数据包广播到它的所有接口(除了收到数据包的接口)。
如果攻击者伪造大量的MAC地址将交换机填满,再发送大量不在表中的MAC地址给交换机,交换机就会广播大量数据包给局域网,给网络造成压力。
[1-2-1-2] ARP 缓存投毒
- ARP Reply
攻击者伪造reply包,欺骗受害者的目的MAC地址
- ARP Request
攻击者伪造request包,欺骗受害者的源MAC地址
这两种攻击可以欺骗客户端/网关/服务器,获取他们发送/接收的数据包。
[1-2-2] DHCP
[1-2-2-1] DHCP DoS
攻击者伪造大量"从不同MAC发来的DHCP req"数据包,消耗DHCP服务器分配的资源 #### [1-2-2-2] DHCP 投毒 攻击者伪装成DHCP服务器向受害者发送DHCP Reply
[2] 网络层
[2-1] 协议
[2-1-1] IP
由于MAC地址唯一且不可随意更改,我们需要用IP地址来灵活管理接入网络的设备。IP协议规定了数据包 的头部(比如源IP目的IP,是否分片),同时IP协议规定了最大数据包大小(MTU,1500bytes),其中IP头占据20字节
[2-1-2] ICMP
ICMP协议用于报告网络通信中的错误情况和诊断信息,ICMP头部包含type(类型)、code(子类型)、checksum和其余字段,通过改变type/code等内容,可以报告不同的错误类型, 比如目标不可达、超时和源抑制等,ICMP头一般占据8byte
[2-2] 常见攻击
[2-2-1] IP
[2-2-1-1] Ping of Death
ICMP协议规定 ICMP Echo Request 的数据包最大不超过 65535 字节,去掉IP和ICMP头部的28字节, 还剩 65507 byte。如果我们构造的数据包数据部分大于这个数目,可能会导致缓冲区溢出。 比如我们构造一个75000byte的数据包,MTU大小为1500,去掉头部还剩1472byte,所以我们需要 构造 \(\lceil 75000 / 1472 \rceil = 51\) 个分片,当这些分片被组合起来的时候就会造成缓冲区溢出。
[2-2-2] ICMP
[2-2-2-1] Smurf攻击(ICMP DoS)
攻击者向某个含有大量网络设备的广播域发送一个 ICMP Echo Request 包,这个包的 源IP地址伪造为受害者的IP,这样该广播域所有接收到request包的设备都会向受害者 发送reply包,导致流量放大,使受害者网络资源耗尽。
[2-2-2-2] ICMP Redirect(ICMP Poisoning)
ICMP包中Type=5叫做重定向包,路由器A在接收到用户的数据包后, 发现用户将该数据包转发到B可以更有效地到达目标,就会用 ICMP 重定向包告知用户更改默认网关。 如果在用户发出一个数据包后,攻击者伪造一个IMCP重定向包,将用户的默认网关修改为自己可以控制的IP, 用户发出的所有流量就会被攻击者获得。
[2-3] 防护措施-IPSec
通过常见攻击手段,我们可以发现利用网络层发起的攻击都有以下特点:①报头会被伪造②数据包 可以被修改后转发或重放。因此,我们设计的防御措施可以从以下安全目标出发: ①加密数据包,防止中间人查看数据②加入序列号,防止重放攻击③加入哈希函数和数字签名, 防止数据包伪造。
[2-3-1] 组件
ESP: 封装安全载荷,提供数据完整性、不可抵赖性和保密性
AH: 认证报头协议,提供数据完整性、不可抵赖性
IKE: 互联网密钥交换协议
[2-3-1-1] 密钥管理系统
Security Association(SA): 一组用于保护通信的安全参数,定义了数据包如何传入传出 SA是单向的,因此双向通信需要用到2个SA。 SA一般由IKE自动维护,SA中包括一个参数叫做Security Parameter Index,用于在数据库中索引和匹配SA
Security Association Database(SAD): 端点用于存储SA的数据库,发送方发送数据包前首先检查SAD确认发送方式, 接收方接收到数据包后,根据数据包中的SPI匹配SAD中的SA,来确认用什么方式处理数据包。
Security Policy Database(SPD): 端点通过源IP、目的IP和协议号来匹配SPD,查看此次通话是否需要用到IPSec, 如果要用的话就去查找SAD,确认使用哪个SA。
IKE工作流程:IKE的工作分为两阶段,第一阶段协商一个辅助的端到端安全信道IKE SA,第二阶段用于协商范围更小的IPSec SA。 IKE经常分为用户IKE守护进程,或者是内核IKE。当IKE进程启动时就会协商IKE SA,后续每个应用程序使用IKE的话, IKE就会进入第二阶段,为每个进程协商IPSec SA
[2-3-2] 传输模式
传输模式:不加密IP头,适用于端到端
隧道模式:加密IP头,适用于网关到网关
[2-3-3] ESP TUN Mode 工作流程
①在原始数据包前后加入ESP头和ESP尾形成新数据包,ESP头包含SPI和序列号,ESP尾用于padding
②加密新数据包,形成enchidala,注意头部是不加密的,要不然接收方无法确认SPI,也就无法选择SA。
③对enchidala进行mac计算,将结果拼接到enchidala尾部
④最终数据包: 新IP头 + enchidala + MAC认证
[3] 运输层
[3-1] 协议
[3-1-1] UDP
UDP类似于IP协议,在底层数据包的基础上加入一个8字节的头部,包含源端口、目的端口、长度和checksum。 UDP协议是无状态的。
[3-1-2] TCP
TCP协议是有状态的,通过三次握手建立连接,通过四次挥手释放连接。
三次握手过程为: ①A随机挑选一个序列号seq=x,向B发送seq=x的数据包 ②B随机挑选一个序列号ack=y,向A发送seq=y,ack=x+1的数据包,同时将SYN和ACK标志位设置为1 同时服务器分配一个端口给该TCP连接,此时B称为半连接状态 ③A接收到数据包之后,向B发送seq=x+1,ack=y+1的数据包,该数据包ACK标志为1,第三次握手已经可以携带其他数据。
四次挥手考察的比较少,用人话来说可以模拟成如下场景:
A:我数据发完了,连接可以关闭了
B:我知道了,连接先留着,等我数据发完再关
B:我发完了,TCP连接可以关了
A:我知道了,那就关吧
[3-2] 主要攻击方式
[3-2-1] 端口扫描与资产探查
资产探查就是利用不同操作系统、app等对IP、ICMP等协议数据包处理细节的不同,来判断该主机使用的是什么OS或app。 比如windows和linux对TTL设置就不相同。
按连接状态分,端口扫描有两种方式,全连接扫描和半连接扫描,全连接比较完善,但是半连接更隐蔽一些。
按协议分,端口扫描也可以分为TCP和UDP扫描两种方式。UDP扫描比较简单,就是给一台主机的全部端口发送空的UDP包, 如果收到ICMP目的不可达说明端口关闭,收到响应报文则说明端口开放。
TCP扫描有四种基本方式:Manimon(SYN+ACK),NULL(标志位全0),FIN(FIN),Xmas(FIN,URG,PSH), 开放的端口对这些错误包都是不予理睬的,FIN扫描最多会回显一个ICMP错误,但是未开放的端口会响应一个RST包
[3-2-1-1] 隐蔽扫描
攻击者通过伪造数据包srcIP为A的IP,利用主机A来扫描主机B的端口,然后通过ICMP包来查看A的IPID增加数目来判断B的端口是否开放。
[3-2-2] TCP SYN Flood(TCP DoS)
攻击者不断发起第一次握手,等服务器第二次握手结束后不发送第三次握手,这样就会大量占据服务器的端口资源
[3-2-3] TCP 会话劫持/重置
攻击者通过预测TCP序列号,向该TCP连接注入恶意数据包。比如向telnet服务器注入反弹shell命令,或者单纯发一个RST数据包重置TCP连接,都会造成较大的影响。
如何预测 TCP 序列号?
RFC标准中规定,如果一台主机收到TCP报文但报文中含有错误的序列号或确认号时,会回复一个ACK报文来明确正确的序列号和确认号。 那么攻击者只要在预测序列号前后都查看一次IPID,如果IPID+1则正确,+2则不正确
[3-2-4] TCP反射放大攻击
防火墙在阻拦TCP连接时往往第一次握手就会回复一个比请求包大的多的阻断包。攻击者可以利用该特性实施反射放大攻击
补充:CDN反射放大攻击
当客户向CDN请求资源时,CDN可能会向源站请求完整资源,然后只回复客户所需的资源。攻击者可以构造较小的资源请求,使CDN向源站请求较大的完整资源,从而造成反射放大。
[3-3] 防御措施
[3-3-1] 针对SYN Flood
- 增大半连接等待队列
- 降低资源回收时间
- TCP Cookie,在验证第三次握手cookie正确前不分配资源
[4] 应用层
[4-1] 域名系统
[4-1-1] 域名系统概述
整个域名系统可以由如下部分构成:根域名服务器-顶级域名服务器-权威域名服务器-递归域名服务器-客户端。 客户端如果想要查询一个域名对应的IP地址,只需要向递归域名服务器发起询问,递归域名服务器会向根域名服务器查询顶级域名服务器的位置, 然后向顶级域名服务器查询二级、三级域名服务器的位置,最后向权威域名服务器查询这个域名对应的IP地址。 当递归域名服务器得到IP地址之后,就会向客户返回这个资源条目。
一个资源条目一般包括:域名-缓存时间-资源类别-资源类型-IP地址。资源类型一般包含A(ipv4地址)、AAAA(ipv6地址)、NS(权威DNS名称)、 MX(邮件服务器名称)、CNAME(域名别名)和SOA(起始授权信息)
同时,为了减轻网络压力,递归域名服务器和客户主机一般会缓存一部分DNS条目。
另外,DNS报文体对应报文头中的四个数量字段,它们分别是:
- 问题区域:指定用户查询的目标域名和资源记录类型
- 应答区域:直接回答查询请求,即满足目标域名和资源记录类型的权威应答
- 授权区域:一般包含类型为NS的资源记录,指向域名的权威服务器名称
- 附加区域:包含域名服务器返回的在查询过程中可能用到的其他资源记录,比如权威服务器对应的IP地址等
[4-1-2] 主要攻击方式
[4-1-2-1] Poisoning
- 应答型
客户在发起DNS请求后,攻击者抢在递归域名服务器之前向客户发起响应,不过只有IP地址匹配、端口匹配、TXID匹配和问题区域匹配, response包才会被递归DNS接收,问题区域可以通过自问自答的方式解决,IP地址填自己就行, 但TXID和目的端口需要攻击者爆破去猜测。
- 劫持型
[4-1-2-2] 绕过同源策略(DNS 重绑定攻击)
同源策略是指JS脚本只能访问同源资源,同源指的是"协议://域名:端口"相同。绕过同源策略需要攻击者控制递归域名服务器。
当客户向域名服务器查询域名A的IP时,攻击者可以返回一个恶意IP,客户会在这个IP被注入恶意脚本,该恶意脚本每隔一段时间访问域名A。 同时,攻击者控制的DNS服务器将这个域名-IP的缓存时间设置的极短,当该DNS缓存条目过期之后,恶意脚本再访问域名A就会再次向攻击者DNS服务器查询域名, 此时攻击者返回用户的内网IP,恶意脚本就绕过同源策略,可以访问到这个内网IP的资源了。
[4-1-2-3] DNS 反射放大
攻击者伪造DNS请求的srcIP,并向网络中大量递归域名服务器发送请求,这些DNS服务器收到请求后都会返回一个响应包到srcIP,大量占用srcIP网络的资源
[4-1-2-4] DNS 劫持
只要攻击者控制了域名系统中包含信道的任何一个关键节点,攻击者就可以将用户访问的域名绑定到恶意IP
[4-1-3] 防护措施
[4-1-3-1] 基于随机化
事务ID随机化、域名大小写随机化、DNS Cookie(64位随机值)
[4-1-3-2] 基于加密
DNS on TLS
DNS on HTTPS:与HTTPS协议共享443端口来执行域名解析,防止被防火墙监控和拦截。
DNS on QUIC:基于UDP的协议,传输速度快但尚未普及
DNSSEC:在加密的同时使用签名机制
[4-2] Web系统安全
[4-2-1] web系统概述
web系统主要由客户端浏览器、服务器和中间交互的协议组成。
[4-2-2] 主要攻击
[4-2-2-1] 客户端浏览器
从客户端浏览器出发,我们首先考虑到的风险是前端三件套的风险:html是框架可以暂且不谈; 攻击者可以用css本身诱骗用户进行一些点击操作从而访问恶意网站,比如构建一个透明的样式图, 同时css解析出错也会导致一些问题,比如导致渲染错误,或者利用反斜杠等解析错误来注入某些恶意代码; 再就是javascript,攻击者可以注入恶意js代码,造成信息泄露、会话劫持、DoS等破坏。而除去前端三件套, 第三方插件也会带来隐私泄露和额外引入的安全漏洞,同时第三方插件也可能是恶意软件,泄露用户隐私或者诱骗用户访问恶意网站等。
[4-2-2-2] 服务器
从服务器端出发,主要风险可以来源于①持续对话②认证③缓存④分段数据传输
HTTP协议可以基于TCP协议,因此可以通过Connection: keep-alive来实现持续对话,双方可以在这个持久连接上发送多个HTTP包,减少资源浪费。 但如果服务器发出的一个HTTP包中设置了多个Content-Length字段,web客户端可能会将该对话与多个不同对话对应起来,导致客户端显示混乱, 如果是代理服务器可能还会导致全局缓存错误,分发错误的缓存内容给其他用户。
HTTP协议支持分段数据传输,但过多的数据分段或者content-length设置错误可能会导致整数溢出或者浏览器显示混乱。
HTTP协议有一个认证字段,当认证字段被攻击者修改为明文认证而不是摘要认证时,攻击者就可以获得用户的明文敏感信息。
web缓存器也称为代理服务器,可以是距离用户较近的网关服务器,也可以是较大的CDN。缓存有可能会有非授权的数据访问,也可能保存用户的隐私数据, 当访问缓存参数失当可能也会导致浏览器处理异常,此外,缓存可能被污染。
[4-2-2-3] 整个Web系统
- 身份假冒攻击:HTTP最开始没有身份认证,攻击者可以伪装成正常的web服务器欺骗用户访问
- 网络流量监听和中间人:未授权的网络监听被称为被动攻击;主动攻击是指攻击者不仅未授权监听流量,还主动注入恶意流量
[4-2-3] 防护措施
[4-2-3-1] 同源策略
[4-2-3-2] 浏览器插件安全规则
①最小权限②数据保护③更新机制④使用安全的第三方库
[4-2-3-3] HTTP Cookie安全策略
通过设置不同的安全字段,保证cookie的安全。
Secure:cookie只通过HTTPS传输。HTTPOnly:拒绝JS代码访问cookie。SameSite:设置第三方站点何时可以在跨站点请求中携带cookie。 除了这些字段以外,还可以设置cookie过期时间,以及Domain和Path的限制。
[4-2-3-4] HTTPS
HTTPS是指 HTTP on TLS,TLS可以分为握手协议、记录协议和告警协议。其中记录协议可以看作外壳协议,专门用来加解密数据包、验证、完整性检验和压缩解压缩的。 告警协议是指收到不正确的数据包时如何通知会话对方。下面着重描述记录协议。
首先,客户端发送ClientHello消息,其中包括客户端的安全能力。然后服务器发送Serverhello消息,其中包括服务器选择的各个参数。 然后服务器发送证书,该证书包含证书链的多个证书,包括服务器证书、签发该服务器证书的CA证书,注意该证书可能不包括根CA证书,因为浏览器可能预装了所有的根CA证书。 之后,服务器发送ServerKeyExchange消息,这条消息包含的是密钥协商所需要的额外数据,有些算法不需要就不用发,比如RSA。 之后,服务器发送certificateRequest消息,只有服务器要求客户端用公钥证书证明身份时才会发送这一条消息。 之后,服务器发送ServerHelloDone消息,告知客户端服务器这边的消息已经全部发送完毕。
如果收到CertificateRequest消息,客户端首先发送自己的证书给服务器。之后,为了完成密钥协商,客户端发送ClientKeyExchange消息。 之后,如果收到CertificateRequest消息,客户端还会发送CertificateVerify消息,发送一条包含客户端证书对应的私钥对握手消息的数字签名, 通过这条消息,服务器可以验证从握手开始到现在所有消息未被篡改并且没有被重放,因为握手消息中包含客户端和服务器生成的随机数,保证不被重放。 之后,客户端和服务器都向对方发送ChangeCipherSpec,表明自己已经完成密钥协商,之后所有消息都是加密的,这条消息是独立协议,并不属于握手子协议。 最后,双方发送Finished消息,这条消息是加密数据的第一条消息,包含了握手阶段所有消息的哈希值,主要意义在于验证握手的完整性,防止中间人攻击。
[4-2-3-5] CDN
CDN(Content Distribution Network)内容分发网络是在不同地理位置设置代理服务器, 把web网站的内容分散到更接近用户的地方。
CDN的功能:①均衡网络负载②抗DoS攻击③保证网络更加稳定④降低网络延迟⑤过滤恶意web访问
[4-3] 邮件系统
[4-3-1] 概述
用户通过MUA(Mail User Agent)编写、发送、接收和管理邮件,当用户X通过MUA发送邮件给用户Y时, 邮件会先被提交给X的MSA(Mail Sending Agent),MSA再把邮件推送到X的MTA(Mail Transition Agent)中, X的MTA会将邮件发送给Y的MTA,Y的MTA再将邮件交给MDA(Mail Delivery Agent)来投递给Y的MUA。
总结一下,每个用户都有自己的MUA,发件人邮件供应商会配置一个MSA一个MTA,收件人邮件供应商会配置一个MDA一个MTA。 另外,MTA往往是域名的邮件服务器。
[4-3-2] 协议
[4-3-2-1] SMTP
对每一条命令,服务器都会回复相应信息
[4-3-2-2] POP3
离线邮件协议,对每一条命令服务器都会回复相应信息
[4-3-2-3] IMAP4
分布式存储存储邮件保证服务器与客户端的同步,在线操作和阅读服务器上的邮件
[4-3-3] 常见攻击
垃圾邮件、钓鱼邮件
造成下列攻击的根本原因是:多协议之间的薄弱环节、多角色之间的薄弱环节和多服务之间的薄弱环节。
[4-3-3-1] 身份验证标识符不一致
建议学习[4-3-4]后再来学习本节
通常情况下,MUA显示的是FROM字段的内容。
空 Mail FROM 攻击:SPF检验的是一个服务器是否可以代替其服务器发送,当MAIL FROM为空时, SPF协议要通过HELO字段来完成SPF验证,因此攻击者可以将HELO字段设置为恶意域名,然后FROM字段设置为正常邮箱, 这样受害者看到的发件人是FROM字段,HELO字段还能绕过SPF。
多FROM标头:攻击者可以在一个FROM写上自己的邮箱,然后在另一个FROM写上正常邮箱,最后用自己的签名完成DMARC验证。 这样不仅可以完成DMARC验证,还能让受害者看到FROM是正常邮箱。
多邮件地址攻击:攻击者在同一个FROM写入合法邮箱和自己的邮箱,同时用自己的签名签署邮件,可以达到与多FROM攻击一样的效果
不存在子域名攻击:当域名没有MX记录时,会使用域名的A记录。这意味着所有的A记录都是合法的域名, 又因为知名网站大多都会配置带有通配符的DNS A记录,因此这种攻击较为广泛。这种邮件会被SPF打上none标签, 但往往不会被MTA邮件直接拒收。
[4-3-3-2] 身份验证结果注入攻击
建议学习[4-3-4]后再来学习本节
DKIM注入是利用"b="字段将左括号认为是注释的原理来绕过,SPF注入是利用MAIL FROM字段将单引号认为是注释的原理来绕过。
[4-3-3-3] DKIM签名重放
建议学习[4-3-4]后再来学习本节
DKIM不防重放,并且允许攻击者将额外的电子邮件标头甚至正文添加到被签名保护的消息中。
"h=": DKIM对于邮件标头的签名是可选的,如果h=中包含的标头不完整,重放攻击者可以修改那些未受保护的标头而不会使DKIM签名失效。
如果不同组件以不同方式解析额外的邮件标头,攻击者可以通过在签名邮件中添加新标头来制造混淆。比如如果DKIM使用原subject,那MUA显示的就是恶意Subject。
"l=": 该标签允许向电子邮件列表中的不同地址发送不同内容,另外该标签允许攻击者在原始邮件正文添加新的而已内容而不会破坏签名。
利用转发功能:通常知名的邮件转发服务器不会被过滤
[4-3-3-4] 身份验证绕过攻击
建议学习[4-3-4]后再来学习本节
共享MTA场景:多个域名共享一个合法MTA,如果接收方只验证MTA IP则会有安全风险
直接MTA场景:攻击者不通过发送方MTA,而是直接连接到接收方MTA来发送邮件,这样接收方MTA可能不会验证邮件。
转发MTA场景:攻击者利用受信任的转发MTA来发送。
[4-3-4] 常见防护
[4-3-4-1] SPF
通过SPF记录指明哪些服务器可以代表域名发送电子邮件到MSA,SPF记录以DNS TXT记录的形式发布, 一个域名只能发布一条记录。举个例子:
v=spf1 ip4:192.168.1.0/24 mx include:spf.example.net ~all
这条记录的含义是:
ip4:192.168.1.0/24:允许来自 192.168.1.0/24 子网的IP地址发送邮件。
mx:允许来自 example.com 域的MX记录指向的IP地址发送邮件。
include:spf.example.net:允许 spf.example.net 域的SPF记录中的IP地址发送邮件。
~all:如果邮件来源不符合这些规则,则标记为软失败(通常会被标记为垃圾邮件)。
当MUA接收到一封邮件时,SPF协议会提取MAIL FROM字段中的域名,通过DNS查询来确认是否匹配。
[4-3-4-2] DKIM
DKIM协议会在邮件的标头添加一个数字签名,这个签名是这样计算的:
首先计算邮件正文的哈希值、选定邮件标头的哈希值以及整个邮件的哈希值。然后发件人的MTA会对哈希值进行签名, 生成DKIM-Signature。
[4-3-4-3] DMARC
引入多认证标识符对齐机制,将FROM命令里的身份信息与SPF和DKIM的认证关联起来
[4-3-4-4] 共享/直接/转发 MTA 场景
[5] 防御技术
[5-1] 防火墙
[5-1-1] 概述
功能:①包过滤、入侵检测、监控和日志②负载均衡、应用程序代理服务器、数据缓存③网络地址转换
缺陷:①无法对抗旁路攻击②不完全透明,可能会带来延迟③不防范端到端加密通信④有时会拦截有用的服务
内部防火墙的部署:①内部防火墙提供更严格的过滤能力②在DMZ之间提供双向保护③多个防火墙保护内部网络的不同区域
[5-1-2] 分类
优缺点大一统:①应用层?②开销③配置难易④日志
[5-1-2-1] 包过滤防火墙
拦截依据:协议类型/IP地址/端口/流向的接口/IP选项/TCP选项/其他协议选项/流动方向
优点:①便于配置,检查效率高②对于用户是透明的
缺点:①粒度过粗②无法防御针对特定app漏洞的攻击③无法防御IP伪造攻击④日志信息有限
[5-1-2-2] 状态检查防火墙
拦截依据:TCP等协议建立的状态+包过滤防火墙的拦截依据
优点:①建立连接跟踪,跟踪网络连接的状态,以便返回流量能通过防火墙②会话感知过滤,可以根据会话信息进行更细粒度的过滤③减少虚假报警,不会将合法的响应流量误以为是未经授权的入侵 -> 其实就是粒度更细了、更适合TCP了、更精确了
缺点:①配置复杂②资源开销大③无法防御针对特定app漏洞的攻击④UDP效果较差
[5-1-2-3] 应用层防火墙
拦截依据:数据包头+数据包内容(模式匹配+正则匹配+协议分析)
优点:①过滤规则容易配置和测试②进行内容过滤、复杂访问控制、精细注册和审核等 ③防御针对应用层的攻击④提供详细的日志和审计功能
缺点:①性能开销大②特定协议特定检查机制③可能引入新漏洞④配置复杂⑤误报误阻会封堵正常业务流程,需要额外测试和配置。
WAF:Web Application Firewall,基于特征、行为和语义分析来检测恶意行为,可以作为独立硬件或虚拟设备部署在web前端, 可以通过云端waf在云中保护web应用,可以作为浏览器插件或应用,也能以反向代理模式部署
[5-1-2-4] 其他类型
下一代防火墙
网络分割防火墙
云防火墙
[5-2] IDS(Intrusion Detection System)
[5-2-1] \(P^2DR模型\)
策略:模型核心,其他方面围绕策略展开
防护:阻止侵入系统或延长侵入系统的时间,为检测和反应提供时间。主要包括:安全规章制定(在安全策略的基础上指定安全细则)、 系统安全配置(安装各种必要补丁,进行仔细配置)、采用安全措施(安装防火墙、IDS、VPN软件或设备)
检测:异常监视(发现系统异常行为,如异常登录)+模式发现(对已知的攻击模式进行匹配)
响应:报告(让管理员知道风险)+记录(记录入侵细节与系统反应)+反应(进行处理并防止进一步入侵,比如修复漏洞+增加防护措施)+ 恢复(清楚入侵影响,让系统恢复正常)
[5-2-2] 分类
[5-2-2-1] HIDS
HIDS是基于主机的IDS,信息一般来源于操作系统的日志等。
优点:①检测NIDS无法察觉的攻击②HIDS的信息源不会被网络传输中的加密干扰③不受网络环境变化的影响④当HIDS运行在OS的审计线上时,可以检测特洛伊木马等针对软件完整性破坏的攻击
缺点:①必须为每个受监控的主机配置HIDS②HIDS可能被攻击禁用③性能损耗
[5-2-2-2] NIDS
通常由一组放置在网络各个点的单一用途传感器组成,这些单元监控流量分析问题并向中央报告问题,他们用途单一更难被破坏,并且通常被设置为隐形的,难以被攻击者发现
优点:①使用被动接口捕获网络数据包②可扩展性好③OS独立的④提供更好的DoS防御
缺点:①如果流量被加密则无法检测②在现代交换网络上,NIDS变得困难③无法处理高速网络
[5-2-3] IDS技术
[5-2-3-1] 基于误用的入侵检测
将传入的网络流量特征与特征数据库中已经存在的先前入侵的特征进行匹配,分为静态签名检测和动态监测。 静态签名检测就是直接与数据库中的模式进行匹配,动态检测还关注行为的时间序列和状态变化。
[5-2-3-2] 基于异常的检测
根据系统行为或资源使用状态的正常程度来进行判断。