【安全与风险】互联网协议漏洞

痛定思痛。 2023-10-09 17:58 142阅读 0赞

互联网协议漏洞

  • 互联网基础设施
  • TCP协议栈
  • 因特网协议(IP)
  • IP路由
  • IP协议功能(概述)
  • 问题:没有 src IP认证
  • 用户数据报协议(UDP)
  • 传输控制协议 (TCP)
  • TCP报头
  • TCP(三向)握手
  • 基本安全问题
    • 数据包嗅听
    • TCP连接欺骗
      • 随机初始TCP SNs
    • 路由的漏洞
      • Arp欺骗(Man in Middle Attack)
      • 防范ARP欺骗
    • DNS (Domain Name System)与安全问题
      • DNS根名称服务器
      • DNS查询示例
      • 缓存
      • 基本DNS漏洞
      • DNS缓存中毒[a la Kaminsky’08]
      • 防御
      • 野外DNS投毒攻击
  • 总结

互联网基础设施

在这里插入图片描述
本地和域间路由
用于路由和消息传递的TCP/IP

域名系统
从符号名称(www.lancaster.ac.uk)查找IP地址

域名系统是Internet或专用网络内的节点、服务和其他资源的命名系统。

TCP协议栈

在这里插入图片描述
这是通过LAN或WAN在不同机器(运行分布式应用程序)之间进行通信(向其发送数据)使用最广泛的协议,而不考虑机器中固有的硬件和软件平台。

较低的层向直接的上层提供服务。应用层是用户应用程序和下面面向通信的层之间的接口。

链路(在硬件级运行)-以太网,X.25,点对点协议(PPP)

网络(提供寻址和路由功能,将消息发送到各自的目的地)-IP(最重要的),Internet控制消息协议(ICMP)和Internet组管理协议(IGMP)。路由器将报文转发到IP报文中指定的目的IP地址。

传输(管理端到端数据传输,可以同时处理多个数据流)-传输控制协议(TCP)提供了可靠的面向连接的服务,用户数据报协议(UDP)提供了不可靠但快速的无连接服务。

应用程序对应于特定的客户端软件应用程序(例如,文件传输,电子邮件,视频流等)- HTTP, FTP, Telnet, SMTP等。应用程序和传输之间的接口。它是根据端口号和套接字定义的。

以太网报头包含一个序文、一个起始帧分隔符(SFD)、目的地、源和类型。导语是以太网帧开始的标识符。SFD是一个字节(前文的最后一个字节),表示下一个字节是目的MAC地址。destination字段是目的计算机的MAC地址,source字段是源计算机的MAC地址。Type是一个2字节的字段,存储有关直接上层(即IP)使用的协议的信息。

Ethernet trailer是一个包含4个字节的帧检查序列(FCS),用于循环冗余错误检查。

因特网协议(IP)

  1. 无连接,尽最大努力

  2. 不可靠的

  3. IP地址

  4. 命名或标记通过计算机网络相互通信的每个设备

  5. 32位数字(IPv4)
    在这里插入图片描述
    在这里插入图片描述
    IP根据报文头中的IP地址,将源主机的报文发送到目的主机。

它是不可靠的,因为故障可能发生,如数据损坏,数据包丢失和复制。因此,IP提供了最好的交付服务。

IP路由

在这里插入图片描述
典型的路由需要几跳
IP:无订货和发货保证

IP协议功能(概述)

路由选择

  1. IP主机知道路由器(网关)的位置
  2. IP网关必须知道到其他网络的路由

分段和重组
如果max-packet-size小于user-data-size

错误报告
如果报文被丢弃,ICMP报文被发送到源

TTL字段:每跳一次后减少
TTL=0时丢弃数据包。防止无限循环。

在网络上发送一个巨大的数据包在物理上是不可能的。例如,一个6000字节的数据报需要被分解成4个数据报(每个1500字节)。这个过程被称为“碎片化”。目标主机将4个数据报(按照正确的顺序)重新组装的过程称为“重新组装”。

问题:没有 src IP认证

客户端被信任嵌入正确的源IP

  1. 使用原始套接字很容易覆盖。
  2. Libnet:用于格式化带有任意IP头的原始数据包的库。
  3. 任何拥有自己机器的人都可以发送数据包。

启示(DDoS讲座中的解决方案):

  1. 匿名DoS攻击
  2. 匿名感染攻击(例如,攻击蠕虫)

用户数据报协议(UDP)

IP上不可靠的传输:

  1. 没有确认
  2. 没有拥塞控制
  3. 没有消息延续
    在这里插入图片描述
    当消息流量非常大以至于减慢整个网络响应时间时,就会发生拥塞。拥塞控制机制必须在应用程序或网络级别实现(例如,漏桶算法或令牌桶算法)。

在UDP中,丢失的消息不会被重发(也就是说,没有确认)。因此,没有消息延续。

校验和验证报头和消息的数据完整性。校验和是一个表示正在发送的数据的值。接收方计算校验和。如果两个值匹配,则数据未损坏/未更改。UDP通过位补位计算校验和值。

传输控制协议 (TCP)

以连接为导向,保持秩序
发送者

  1. 将数据分成数据包
  2. 附加数据包编号

接收者

  1. 确认接收;丢失的数据包被重发
  2. 按照正确的顺序重新组装包
    在这里插入图片描述

TCP报头

在这里插入图片描述

TCP(三向)握手

在这里插入图片描述
这个过程是在客户端和服务器之间建立连接。

  1. 客户端将段序列SNC设置为随机值randC。由于没有确认号,所以ANC的值为0。
  2. 服务器回复一个确认消息SYNC/ACK。段序列是一个随机数rand,确认数是SNC的回声。
  3. 最后,客户机向服务器发回一个确认。序列号为SNC+1,确认号为SNS的回声。

在流程结束时,客户端和服务器都收到了连接的确认。因此,建立了全双工通信。

基本安全问题

  1. 网络数据包通过不受信任的主机
    1)偷听,嗅探数据包
    2)当攻击者控制靠近受害者的机器时尤其容易
  2. TCP状态很容易猜测
    启用欺骗和会话劫持

*Perl和JavaScript是最常见的web脚本语言
从用户获取详细信息

会话劫持发生在用户会话(例如,银行应用会话或社交网络会话)被攻击者接管时。

TCP的状态有:LISTEN、SYNC-SENT、SYNC-RECEIVED、ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、CLOSE-WAIT、CLOSING、LAST-ACK、TIME-WAIT和CLOSED。

数据包嗅听

攻击者读取所有数据包

  1. 读取所有未加密的数据(例如“wireshark”)
  2. FTP, Telnet(和POP, IMAP)可以明文发送密码
    在这里插入图片描述

TCP连接欺骗

假设init.sequence是可预测的
攻击者可以利用伪造源IP创建TCP会话
破坏基于ip的身份验证(例如SPF, /etc/hosts)
在这里插入图片描述
SPF代表发送方策略框架。是一种在邮件发送过程中检测伪造发件人地址的邮件认证方法。

随机初始TCP SNs

不可预测的SNs会阻止基本的报文注入
大多数TCP堆栈现在生成随机SNs
随机发生器应该是不可预测的

路由的漏洞

ARP(地址解析协议): IP地址-》Mac地址
(发现与IP相关联的MAC (link layer address)地址)

节点A可以混淆网关,使其向B发送流量

攻击者A可以很容易地将数据包注入到B的会话中(例如WiFi网络)

Arp欺骗(Man in Middle Attack)

攻击者用自己的MAC向目标发送虚假ARP响应

目标IP上的所有流量都被路由到攻击者地址
(对嗅探很有用)在这里插入图片描述
给ARP表下毒以伪造IP地址

  1. 嗅探局域网流量以发现IP地址
  2. 攻击者使用ARP欺骗来冒充交换机/路由器和受害者的MAC地址

防范ARP欺骗

静态ARP表项

  1. 最简单的认证形式是对主机ARP缓存中的关键服务使用静态只读条目。
  2. 本地ARP缓存中的IP地址到mac地址的映射关系可能是静态输入的。如果存在ARP表项,则主机不需要发送ARP请求。
  3. 虽然静态条目提供了一些防止欺骗的安全性,但它们会导致维护工作,因为必须生成和分发网络中所有系统的地址映射。

ARP欺骗检测和预防软件(如xArp)

  1. 检测ARP欺骗的软件通常依赖于某种形式的认证或ARP响应的交叉检查。
  2. 然后阻止未经认证的ARP响应。

如果ARP表包含两个不同的IP地址和相同的MAC地址,机器可能正在遭受ARP欺骗攻击。

DNS (Domain Name System)与安全问题

层次名称空间
在这里插入图片描述

DNS根名称服务器

分层次服务系统

  1. 顶级域的根名称服务器
  2. 子域的权威名称服务器
  3. 本地名称解析器在不知道某个名称时联系权威服务器
    在这里插入图片描述
    权威名称服务器提供有关区域中名称的问题的答案。

DNS查询示例

在这里插入图片描述
DNS记录类型(部分列表)
NS: 名称服务器(指向其他服务器)
A: 地址记录(包含IP地址)

缓存

缓存DNS响应
1)快速响应重复翻译
2)用于查找服务器和地址
3)域的NS记录

DNS负查询被缓存
为不存在的网站节省时间,例如拼写错误。
补充:负查询是指请求DNS服务器返回某个域名不存在的信息。

为不存在的网站节省时间,例如拼写错误。

缓存数据定期超时

  1. 数据所有者控制的数据的生存时间(TTL)
  2. TTL通过每条记录

基本DNS漏洞

用户/主机信任DNS提供的主机地址映射
用作许多安全策略的基础(浏览器同源策略,URL地址栏)

明显的问题
拦截DNS服务器的请求可能导致错误或恶意的响应(例如:咖啡馆里的恶意接入点)

DNS缓存中毒[a la Kaminsky’08]

在这里插入图片描述
本地DNS解析器认为攻击者是ns.bank.com

攻击者欺骗记录,试图猜测DNS查询ID。

受害者的机器访问攻击者的网站并下载JavaScript。

如果对所有j: x1 = yj攻击者获胜。

本地DNS服务器发现恶意站点并将其存储在缓存中。因此,用户被转发到恶意站点。

防御

A:解析器随机化它发送查询的src端口,额外的位到查询ID(现在攻击需要几个小时)

B 每个DNS查询请求两次:
攻击者必须正确猜测QueryID两次(32位)

野外DNS投毒攻击

2015年1月,纽约一家大型互联网服务提供商Panix的域名被劫持到澳大利亚的一个网站。

2004年11月,谷歌和亚马逊的用户被送到Med Network Inc.,一家在线药店。

2013年3月,一个名为“自由网络部队民兵”的组织劫持了半岛电视台网站的访问者,并向他们展示了“上帝保佑我们的军队”的信息。

总结

  1. 互联网基础设施检讨
  2. 安全问题
  3. 基本防守技术

Acknowledgements: Jiangtao Wang

发表评论

表情:
评论列表 (有 0 条评论,142人围观)

还没有评论,来说两句吧...

相关阅读