Leveraging State Information for Automated Attack Discovery in Transport Protocol Implementations
摘要
使用协议状态机规范在未修改的传输协议实现中查找攻击的新方法,以减少可能攻击的搜索空间。
这种减少是通过将恶意操作应用于在相同状态下观察到的所有相同类型的数据包而不是将它们应用于单个数据包来获得的。
该方法需要了解数据包格式和协议状态机。通过开发 SNAKE 来展示方法,该工具可以自动发现对未修改的传输协议实现的性能和资源耗尽攻击。
SNAKE 利用虚拟化在其预期环境中运行未经修改的实现,并利用网络仿真来创建网络拓扑。SNAKE 能够找到对 2 个传输协议的 9 次攻击。
系统和攻击模型
部署在客户端-服务器设置中
攻击目标
- 连接相关的攻击(防止连接建立攻击,终端主机资源耗尽攻击,)
- 与性能相关的攻击(吞吐量降级攻击,公平攻击)
攻击者
- 被入侵的客户端
- 第三方攻击者
设计
snake设计
将虚拟化与网络仿真相结合的环境。虚拟化能够独立于语言、操作系统或对源代码的访问来测试各种实现。网络仿真提供了检测与性能相关的攻击所需的可重复测量和攻击隔离。
【方法依赖于拦截、修改或注入网络流量。】攻击方式:一种基于状态的搜索策略,利用协议状态机的几个特征来减少攻击搜索空间。
- 协议状态感知攻击注入:使用数据包监控来推断状态。通过状态跟踪组件完成的。状态机提供有关哪些数据包确定从一种状态转换到另一种状态的信息。在运行时,状态机跟踪器通过观察交换的数据包并将它们与状态转换规则匹配来推断每个端点的状态机的变化。状态跟踪组件还跟踪有关每个观察到的状态的一些基本信息,包括在该状态下观察到的数据包类型。
攻击策略生成:
根据数据包类型和状态机信息,自动生成攻击策略。
- 恶意客户端攻击(干扰数据包传递或数据包内容。丢弃、重复、延迟和批处理)
- 数据包内容操纵攻击(攻击代理拦截数据包并将其发送回其原始主机、攻击代理拦截数据包并在发送之前修改指定字段)
- 路径外攻击(第三方,inject(向网络中注入一个新数据包) 、hitseqwindow(注入一系列数据包,其序列号跨越整个可能的序列范围。))
执行
以上左边服务器,右边客户端,攻击代理配置为位于其中一个客户端和瓶颈链路之间。
SNAKE 的功能分为两个组件
- 一个生成攻击策略的控制器【控制器根据从用户提供的协议规范中获得的数据包格式和状态机转换来生成和选择攻击策略。】执行器控制由一组四个虚拟机组成的测试场景的执行,每个虚拟机运行一个未修改的被测协议实例。这些虚拟机使用网络模拟器和分接设备以哑铃拓扑连接。使用 KVM 作为虚拟化环境,使用 NS-3 进行网络仿真。
- 一个或多个测试策略的执行器【执行器首先运行非攻击测试,然后针对每个策略运行攻击场景并将性能信息报告给控制器,控制器确定是否发生了攻击。】
攻击代理:(需要协议数据包头格式的描述)
攻击代理拦截了 NS-3 中入口和出口路径上的所有数据包。修改 NS-3 以允许指定恶意节点,并且只拦截进出这些节点的数据包。拦截是在 NS-3 的 tap-bridge 模块中完成的,该模块将 NS-3 连接到为虚拟机服务的外部 tap-devices。
只针对目标协议的数据包,并从状态跟踪系统中识别发送者的协议状态。如果有匹配策略,则对数据包进行基本攻击。
状态追踪
状态机跟踪器监视通过代理的数据包,并使用状态机转换规则来推断客户端和服务器当前处于什么状态。