45 views

软件沙箱技术 – 安全分析沙箱Cuckoo Sandbox

image

 

1.Cockoo的功能

Cockoo Sandbox是开源安全沙箱,基于GPLv3。目的是恶意软件(malware analysis)分析。使用的时候将待分析文件丢到沙箱内,分析结束后输出报告。很多安全设备提供商所谓云沙箱是同类技术,一些所谓Anti-APT产品也是这个概念。和传统AV软件的静态分析相比,Cuckoo动态检测。扔到沙箱的可执行文件会被执行,文档会被打开,运行中检测。和不少开源软件学而优则仕一样,Cookoo搞了一个产品,Red Dragon。这种方式也是挺好的一种做开源软件的运营方式,Snort的SourceFire不就是被思科十几亿收购了吗。

 

Cuckoo它可以分析的内容有:

1.Windows可执行文件,DLL文件

2.PDF,MSOffice文档

3.URL和HTML文档

4.PHP脚本,VB脚本

5.CPL文件

6.ZIP文件,Jar文件

7.Python文件

可以看出,只是Windows平台,外加一些脚本和文件。

 

Cuckoo的分析结果包含如下内容:

1.函数以及API调用的Call Trace

2.应用拷贝和删除的文件

3.选定进程的内存镜像

4.分析机的full memory dump

5.恶意软件执行时的截屏

6.分析机产生的网络流量

 

2.部署和使用

 

下图是Cuckoo的部署,其实很简单,分为host和guests。

 

image

 

Host(管理机)

负责

管理guests

启动分析工作

网络流量收集等。

 

host依赖一些开源软件,例如

tcpdump用于Guest网络拦截

Volatility用于内存的dump

 

Guest(虚拟机)

Guest是通用的虚拟机,Xen、VirtualBox等。它运行Cuckoo的Agent,接收Host发过来的任务(文件)运行后获取信息。

Agent是跨平台的(就是Python脚本)可以运行在Windows、Linux和MAC OS上。它实际是是一个XMLRPC server,等待连接。

 

Cuckoo使用

Cuckoo提供了python命令行工具。

1.使用cuckoo.py启动引擎。

2.使用submit.py像cuckoo提交待分析应用。

3.引擎会和虚拟机中的Agent通信,运行应用。

4.分析结束后,结果输出到特定目录。

 

3.Hook引擎

 

cuckoo使用了通用虚拟机做Guest,本身也没有隔离机制和访问控制机制。它特殊的地方就是Hook机制。核心模块cuckoomon(Cuckoo Sandbox Monitor)的源码在这里。它的作用是Hook在可执行程序上,拦截执行流程。 形式上它是一个DLL,会被inject到待分析的恶意软件和它创建的所有进程中。所谓动态分析,就是Hook后的API,在线收集的运行时信息。主要有两个步骤:

 

3.1 DLL注入

注入是使用Python实现的,流程如下:

1.使用CreateProcess(CREATE SUSPENDED)启动应用

2.使用CreateRemoteThread和QueueUserAPC API调用LoadLibrary注入cuckoomon.dll。

3.Resume进程的主线程

 

参照下面代码

 

 

3.2 API Hook

 

1.上一步中主线程恢复后,因为APC callback,Cuckoo Monitor首先被执行。

2.初始化并且安装Hook

Cuckoo对ntdll.dll, kernel32.dll, advapi32.dll,shell32.dll,msvcrt.dll,user32.dll,wininet.dll,ws2_32.dll,mswsock.dll中的170+API进行hook

3.通知分析模块Analyzer(通过命名管道),应用启动。

4.Log将会通过实现配置好的TCP/IP端口发送给Host。

 

下面是添加Hook的代码:

 

 

4.躲避的应对

前面软件加壳技术介绍的时候有部分内容关于躲避。恶意软件会创建自进程,在子进程中做实际工作。对于类似Cuckoo这样的动态分析工具就要处理这种情况,在子进程中启动cuckoomon。下图就是应对流程,Monitor在监控到样本创建进程的时候,也会模拟初始化启动时候cuckoo做的事情,显示suspend,然后通知Analyzer。由后者进行DLL的注入。

image

From 【5】

 

前文也介绍过进程注入,也就是恶意软件利用周知进程,例如IE,运行自己的恶意逻辑,解决的方法类似。只是监控的不是CreateProcess而是OpenProcess。

 

【参考】

1.官方网站,http://www.cuckoosandbox.org/

2.Cuckoo Sandbox Book,http://cuckoo.readthedocs.org/en/latest/

3.Hooking functions with Cuckoobox’s hooking engine,http://living-security.blogspot.com/2014/07/hooking-functions-with-cuckooboxs.html

4.开源软件 cuckoo sandbox学习(二) 核心拦截模块源代码导读, http://sevemal.blog.51cto.com/8627322/1397666

5.Haow Sandbox, Cuckoo Sandbox Internal, http://recon.cx/2013/slides/recon2013-Jurriaan%20Bremer-Haow%20do%20I%20sandbox.pdf

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">