您的位置:首页 > 其它

【转载】2010 BlackHat - 即时恶意软件分析和控制方案

2013-05-20 23:19 288 查看
转载自:http://www.leadfrenzy.net/comments.php?y=10&m=08&entry=entry100819-164418

存档之用。

其实我也觉得这个检测不足太多了,限制条件比较苛刻的感觉……

############################

原标题:Goodware
drugs for malware: on-the-fly malware analysis and containment

原作者:Daminano Bolzoni,Christiaan Schade 翻译:Lead Frenzy 2010 Aug

【前言】

每年的BlackHat大会都会有一些关于信息系安全方面的新东西出来,可能是新的攻击手段、发现了新的漏洞、新的防御方法等等。我计划有空的时候能把大部分论文或PPT都拜读一下,比较好的也顺便翻译和总结出自己的想法,以供业内人士一起分享。

现在这个是第一篇,关于如何即使分析恶意软件,并将起控制和隔离起来,无需客户端程序的支持,挺不错的想法。

注:本文的“我们”是指原文作者,“笔者”是指我本人。

【原文】

原文PPT地址:https://media.blackhat.com/bh-us-10/presentations/Bolzoni_Schade/BlackHat-USA-2010-Bolzoni-Schade-Goodware-drugs-for-malware-slides.pdf

作者介绍,Daminano Bolzoni: http://www.blackhat.com/html/bh-us-10/b ... ml#Bolzoni

Christiaan Schade: http://www.blackhat.com/html/bh-us-10/b ... tml#Schade

【摘要】

在本演讲中,我们将会展示一种新的无需在终端主机部署任何客户端的即使恶意软件分析方法,即使对那些未知的新恶意软件也会有效。我们的方法是基于这样的一个事实:恶意软件通常是以很小的代码(孢子)的方式植入目标主机,用来维持恶意软件的持续存在并下载另外的代码(蛋),蛋通常是已可执行程序或DLLs的方式存在,具有比孢子更多的功能(窃听密码,URL重定向等)。

我们的系统名为“Avatar”,实时检测尝试下载“蛋”的不成功操作,然后传回给受怀疑的恶意软件一个我们称之为“红色药丸”(简称红丸)的程序。当红色药丸程序被恶意程序执行时,首先执行一些初步的检查,然后发送父进程可执行程序到一测试用主机(例如沙盒)。在测试环境中,就可以对被怀疑的恶意程序进行实时分析了。如果发现被检测的程序确实存在是恶意程序的危险,告知红色药丸程序中断被监控的进程,这样就能有效地防止恶意软件引起的大规模感染。

原PPT分了好几个部分,以下分部分来做简要介绍。

【恶意软件】

在过去五年间,恶意软件已经发展成为了一种产业(笔者注:这点在国内安全界大家都心知肚明的),主要是用于网络犯罪,这也是目前互联网最紧迫的安全问题。

恶意软件最初是以一种完整的执行程序的方式进入到被感染系统中,有一些不利的方面:很难适应不同配置的操作系统;很容易被杀毒软件发现。现阶段大约有30%的恶意软件都是在运行后再下载额外的程序:“孢子”程序负责“种植”此恶意软件;新下载的程序用于收集用户名、密码、受感染的EXEs等;BOTnets就是一个很经典的例子。

当前分析和防御恶意软件的工具分为动态恶意软件分析(Dynamic malware analysis DMA)和基于特征码的杀毒软件。前者在沙盒中运行让恶意软件的样本,记录其执行的每一个动作;有些工具还支持集群,可以从已知的样本家族库中检测出新的样本;基于这个方法的工具有Anubis,CWSandbox,Malheur,Malnet等。后者也利用了动态恶意软件分析技术,用来构建和更新相应的特征码库。

【DMA工具的缺点】

恶意软件的作者也了解DMA工具,通过一些简单的对策就能避开或减慢DMA工具的分析:1)只在用户有效的登陆后才运行;2)在激活前等待一段时间;3)检测是否实在虚拟化环境中;4)检测已知的注册表健值;5)检测已知的IPs。而DMA工具对于上述这些执行上下文是未知的,无法做到灵活调整。

另外,DMA工具做的一般都是事后分析:用户提交样本,然后得到分析结果。这样就导致了只能提供对内部网络和终端主机的有限保护和监控;当用户提交样本时,用户可能已经中招了此恶意软件,不然用户为什么要提交样本呢,是因为用户安装的杀毒软件没有检测出来。因此,现有的DMA工具是没法做到对恶意软件的破坏做到实时保护,都需要先通过专门的手段来分析才能确认是否是恶意软件。

【主要思想】

因为恶意软件需要下载额外的程序,也就需要连接外部的“内容提供商”(通常是在早些时候被入侵的一些WEB服务器)。对于这些内容提供商(WEB服务器)来说,不见得是一直在线的,因此恶意软件需要执行多次下载尝试,以保证在一定的时间限度内最快的将额外的程序(蛋)下载来并执行。

如果我们可以检测到这些下载尝试,我们就可以给恶意软件提供一个精心制作的可执行程序(也就是我们所说的“红丸”),这个程序将会在终端主机上运行,做一些实时的分析,这也就是我们所谓的实时恶意软件分析;这个程序还能够用于终止其父进程,以达到有效的对恶意软件的控制和隔离。

【AVATAR】

原型AVATAR系统中包含有三个主要组成部分:

1)下载检测引擎(DDE):检测失败的下载尝试;

2)红丸生成器(RPG):将红丸打包并发回目标主机;

3)恶意软件分析引擎(MAE):接收红丸执行后发送来的信息。

下图是AVATAR原型系统的基本架构:



【实现】

在原型系统中,DDE和RPG是在同一Linux系统中实现的。通过iptables规则,外网的HTTP流量被透明的重路由到我们的Apache服务器,此服务器工作在透明代理模式。我们开发了一个Apache模块执行型下面这些动作:

1) 使用基于TWR的算法来检测过多的失败连接尝试;

2) 检测请求的文件名;

3) 检查文件的magic number,以防止文件在多次尝试后成功下载;

4) 当尝试达到门限值时,打包并发送红丸。

当红丸在目标主机上被执行后,其尝试通过以下方式来控制父进程:

1) PROCESS_ALL_ACCESS --> Full Control

2) TERMINAL_PROCESS | QUERY_INFO | READ

3) QUERY_INFO | READ

4) TERMINAL_PROCESS --> Least access right

依赖于所在的访问层次,以及不同的操作系统版本,红丸可以冻结父进程或者是中断父进程。

然后红丸收集父进程的一些信息:

1) 执行文件的路径;

2) 已经加载的模块,及模块的完整路径;

3) 窗口(如果已加载)信息:句柄、大小、标题文本等;

4) 可执行程序的大小。

收集到的信息将会通过加密的方式传回MAE,然后MAE决定是否停止红丸的运行,或者是继续更深的分析;同时,红丸也可以将恶意软件整个执行程序发送给MAE。

MAE将获得恶意程序做一次全面的分析。此分析建议在真正环境中运行,而不是虚拟机或其他模拟环境,以防止恶意软件已经包含有相应的对策;分析难以检测的内核驱动级的恶意软件;可以和其他动态分析引擎配合。

【工作模式】

透明模式:

1) DDE发消息告知RPG失败的连接尝试;

2) 仅仅当文件被成功下载后,红丸才被发送;

3) 如果被请求的文件是可执行的,将会与红丸粘附在一起,在红丸分析完成后将会被执行;

4) 红丸并不会冻结或终止其父进程,只是运行基本的分析,然后基于此分析,决定是否需要发送一份父进程执行程序的拷贝给MAE。

半透明模式:

1) DDE发消息告知RPG失败的连接尝试;

2) RPG等待被请求的文件的下载,检查其是否是可执行的,然后将红丸和原请求文件一起发送给目标主机;

3) 红丸冻结父进程,执行基本的分析,然后基于此分析,决定是否需要发送一份父进程执行程序的拷贝给MAE;

4) 当MAE对此父进程程序做出判断后,红丸依据判断来释放对父进程的冻结或终止此父进程。

非透明模式:

1) DDE发消息告知RPG失败的连接尝试;

2) 如果被请求的文件是指向一个可执行程序,RPG马上发回红丸给目标主机;

3) 红丸执行常规检查,有可能发送父进程执行程序,或者冻结父进程;

4) 当MAE对此父进程程序做出判断后,红丸依据判断来释放对父进程的冻结或终止此父进程。

【限制】

因为我们使用的是基于静态分析的启发式方法侦测失败的连接尝试,恶意软件可能以一个很低的速率发起新的连接尝试,来避开我们的分析引擎。不过,这样也使得恶意软件感染的速率降低了。

恶意软件可能会采用一些校验或加密机制来检查下载的程序,这将是的我们的引擎对下载的程序的修改变得很难,如果下载程序被修改了,很容易被恶意软件发现。

恶意软件的作者可能通过某些方法将可执行程序隐藏为其他文件格式(比如JPEG),这样我们需要为我们引擎增加相应的插件来是否格式和文件内容匹配。

恶意软件也可能利用CreateThread等方法将其代码在另外的进程中运行,这样将会使得我们的红丸收集到错误的父进程可执行程序的信息。

【测试】

我们的Avatar原型已经使用过真是的恶意软件来进行测试,包括CWSandbox提供的数据样本,以及我们日常邮件中收集到的恶意软件。前一个样本库大概包括10个左右的恶意程序组,Malheur网站收集到且公开的样本,大概有75个样本。或一个样本库是我们一个星期内收到的,大概30个样本。

第一个样本的测试结果:



第二个样本的测试结果



【结论】

测试后的一些分析:

1) 目前的恶意软件还没有对下载的文件做校验和检查,恶意软件都按正常的方式执行了;

2) 启发式算法已基本上足够来判断运行的程序是否是恶意程序,有大约50%的恶意程序被启发式算法检测出来;

3) 有些样本没有执行红丸,因为他们表现为假冒的下载服务,最后是由用户来决定是否需要加载此恶意软件。

【笔者观点】

Bolzoni 和Schade 提到的即使恶意软件分析和控制方法,我第一次读到后觉得是个非常不错的想法,主要是这个方案是不需要客户端程序支持,也就是可以脱离目前操作系统的一些限制。因为我们都知道,在现在的Windows系统,还没法做到哪个程序能做到让自己不会被其他程序破坏,本文前面提到的方案虽然不能说完全客服了这个限制,但是也是很大程度减轻了这种限制,对于其他安全分析和防御方案来说,这个思路应该是一个非常值得借鉴的思路。

仔细看过本文的方案或测试结果后,我的直觉还是认为这个方案还是很难走向最后的产品,也就是说方案的想法很好,很有创新性,在客服以目前的一些障碍的情况下,也碰到了一些新的限制和障碍:比如需要通过操作系统的一些系统函数去获取父进程的控制权,这个在实际中可能很容易被父进程限制住不能这样做;另外本文的观点基于的恶意软件的通常行为我觉得不是非常具有说服力,也就是这个通常行为不是一定的,只能说目前的恶意软件大部分是这样做,以后的就难说了,所以即使本文方案做成了最后产品,也只能对符合本文前面总结的通常行为的恶意软件有效而已;还有,下载检测引擎基于的启发式失败下载尝试的算法,其中的门限制是个比较麻烦的地方,如何保证最低的误判率和漏判率是不容易达到的。

关于启发式算法,笔者想到了Intel主动管理技术中的System Defense Heuristic,也是基于启发式算法来实现自动判断是否是蠕虫攻击,然后将系统网络物理隔离起来。根据其相关论文描述的理论基础来看,误判率和漏判率可以接近零,但笔者还是不认为其实际使用过程中能做到很低的误判率和漏判率。因为,这个启发式算法也是基于某种归纳出来的蠕虫行为的共同点,与本文的前提条件有些类似,但实际中我们可以看到,蠕虫或恶意软件的行为改变可能是很快的,而防御方案要改变其启发式算法来适应新的蠕虫或恶意软件的行为,难度却比较大,也就是防御手段跟不上进攻手段,显然防御是会要处于被动地位的。

不过总的来说,这个方案的想法值得借鉴。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: