现在的位置: 首页 > 综合 > 正文

BitBlaze(五) – 应用及相关工作

2018年02月18日 ⁄ 综合 ⁄ 共 3029字 ⁄ 字号 评论关闭

5  Rudder:混合执行组件

(由于目前还未提供Rudder,因此此部分省略)

6  安全应用

本节将介绍BitBlaze平台支持的各种不同安全应用,包括自动的漏洞检测,分析和防范,自动的恶意软件分析和防范,自动的模型提取和逆向工程。对于每种应用,我们基于相关程序的本质原因给出了一个新的阐释。进而我们将说明这种阐释将引导我们从本质上找到解决安全问题的新方法。最终我们将看到BitBlaze平台的高效性以及它的前景—在BitBlaze平台上建立不同的应用更加简便而且其效率更高。

6.1  漏洞检测、分析及防范

Sting:一种针对0day攻击的自动防御系统。诸如CodeRed和SQL Slammer之类的蠕虫利用软件漏洞进行传播。它们可以在数小时甚至数分钟之内感染数百万台主机并造成数十亿美元损失。我们如何才能设计和开发一种应对这种快速且影响范围很广的蠕虫攻击的高效防御机制?

    我们已经设计和开发了Sting,一种新式的端到端的自动防御系统,该系统的目的是防范漏洞利用(甚至是0day漏洞),并保护含有漏洞的主机和网络免受快速的蠕虫攻击。Sting利用动态污点分析技术来检测对未知漏洞的利用,并自动生成过滤器来保护有漏洞的主机。

自动生成漏洞签名。基于输入的过滤器(a.k.a.签名)在漏洞主机打上补丁之前对其提供了重要的保护。因此,及时自动生成高效的基于输入的过滤器是一项重要的任务。我们已经设计和开发了基于漏洞而非漏洞利用代码自动生成基于输入的过滤器的新技术,因此它可以高效的防范各种漏洞利用程序的变体。

自动的基于补丁的漏洞利用程序生成。补丁不仅修复了安全漏洞,它们可能同时也携带了能被攻击者利用的相关敏感信息并造成严重后果。我们已经证实了这个观点是正确的—我们已经开发出了通过给出打补丁后的程序和含有漏洞的程序生成相应漏洞利用程序的新技术(通常几分钟内完成)。这也开启了一个新的研究方向,即怎样发布补丁以使攻击者无法从中获取敏感信息。

6.2  恶意软件分析和防御

Panorama:捕获整个系统的信息流以进行恶意软件检测和分析。大量的诸如键盘记录器、浏览器辅助对象(BHO)、间谍软件、rootkits、后门等恶意软件访问和泄露用户的敏感信息并违背用户隐私。我们是否能找到一种解决这种隐私泄露恶意软件的通用方法而不必关心各种不同恶意软件的外在区别?我们为此设计和开发了Panorama,它利用了全系统动态污点分析技术。

Renovo:从加壳的可执行文件中进行隐藏代码抽取。代码加壳是阻碍代码分析的常用方法。尽管这个问题之前已被研究过,但是现有的解决方案要么无法处理新壳,要么对众多的隐藏技术无能为力。因此,设计和开发了Renovo作为一种动态的隐藏代码抽取方法,它能够捕获隐藏代码执行的内在特征。

HookFinder:分析恶意软件钩子的行为。恶意软件攻击的一个重要导向是它们的钩子机制。恶意程序注入钩子以实现多种目的。间谍软件注入钩子以获知新的敏感数据的到达。Rootkits通过注入钩子来窃听和篡改相关系统信息以达到隐藏自身的目的。一个隐藏的后门可能在网络栈中设置钩子以建立一个隐藏的通信通道与远程攻击者通信。HookFinder自动检测和分析恶意软件的钩子行为。由于这项技术捕获钩子行为的内在本质,因此它能适应新的钩子机制。

BitScope:自动分析恶意软件。自动分析恶意软件的二进制文件并从中提取信息的能力是系统安全分析和系统防御的重要基石。恶意软件,包括拒绝访问攻击工具,垃圾邮件,蠕虫和僵尸程序。通过广泛部署的蜜罐,我们每天都能发现新的恶意软件样本。鉴于恶意软件的快速发展,自动的恶意程序分析对于高效的防御是必需的。

    我们设计和开发了BitScope—一个系统的查询恶意软件可能隐藏的功能的系统。BitScope以恶意软件为输入,输出其执行路径的相关信息。这些信息可用于解决具体的问题,例如,恶意软件的行为,什么输入产生了特定行为,输入输出之间的依赖。

6.3  自动模型抽取和分析

Polyglot:协议信息格式的自动抽取。协议逆向工程对于许多网络安全应用是很重要的。目前,协议逆向工程大都是手动的。例如,Samba开源项目耗时10年逆向分析SMB—微软Windows系统用于共享文件和打印机的协议。

    我们认为二进制程序分析有助于自动的协议逆向工程。直觉是二进制代码编码了协议,因此二进制代码分析在从二进制文件中提取协议方面应该是有很大帮助的。

自动偏差检测。许多网络协议和服务有多种实现。由于编码错误和协议说明书的歧义,这些实现可能存在偏差,如,检查和处理输入的差异。自动识别偏差可以支持自动检测实现错误,自动生成用于区别相同网络服务的实现指纹。这个项目的难点在于自动发现偏差(不依靠源代码)。我们已经实现了用于自动生成造成相同协议的两种二进制实现产生偏差的输入的技术。

Replayer:应用程序对话的重演。精确地重演应用程序协议对话在许多面向安全的应用中是很有用的,例如,重演漏洞利用已进行分析或向第三方演示漏洞利用。应用程序对话重演的难点在于对话不太会被无修改的接收到。例如,对话可能包含或依靠原始主机的相关信息,如主机名或一个已知的cookie。这样,直接在另一台不同状态(如,不同的主机名)的主机上逐个字节的重演很可能失败。这些状态相关的协议域必须更新为不同主机的不同状态以保证成功重演。

7  相关工作

本节,我们将简要介绍其他静态和动态二进制分析平台的一些相关工作。

静态二进制分析平台。现有多个静态二进制分析平台,但它们不满足我们的目的,这主要是因为它们是基于不同的应用开发的,因而不不需要满足相同的需求。

    Phoenix是Microsoft开发的一款编译器程序分析环境。一款Phoenix工具可以使代码转换为一种寄存器转换语言(RTL)。RTL是一种低级的中间语言,类似一种架构无关的汇编语言。Phoenix与Vine存在以下几点不同。第一,Phoenix只能处理Microsoft编译器产生的代码。第二,Phoenix需要调试信息,因而它不是一个真正的二进制分析平台。第三,Phoenix把汇编语言转换为一种不剖析复杂指令语义的低级中间语言。第四,中间语言的语义是不确定的,因而不适合我们的研究。

    CodeSurfer/x86平台只能用于分析x86程序。然而,它主要是为其他应用目的开发的,并不能提供我们所需要的一些功能。

动态二进制分析平台。DynamoRIO,Pin和Valgrind等工具支持对用户级程序的细粒度分析。它们都为用户实现自己的插件提供了良好的接口。然而,它们都只能分析单用户级进程,不适合分析操作系统内核和涉及多进程的应用。另外,这些工具与待分析程序驻留在相同的执行环境中。其中有一些甚至共享相同的内存空间,并改变了程序的内存布局。结果是分析结果可能受到影响。相比之下,TEMU提供了整个系统的视图,支持操作系统内核和多个进程的分析。而且,TEMU驻留在分析的执行环境之外,TEMU能产生更真实的分析结果。

8  总结

本篇论文介绍了BitBlaze项目,包括它的二进制分析平台和在多种不同安全问题中的应用。通过这篇论文,我们论证了我们的二进制分析平台提供了一个强大的工具集以支持我们采取一种强原则性的、基于根源的方法来解决多种安全问题。我们希望BitBlaze架构使大家更易于开发自己的插件并为其他应用提供新的解决方案。

抱歉!评论已关闭.