本帖最后由 helloman 于 2013-10-5 17:12 编辑 http://labs.alienvault.com/labs/index.php/2012/hardening-cuckoo-sandbox-against-vm-aware-malware/ 1. 环境搭建 ref http://docs.cuckoosandbox.org/en/latest/ ref http://www.behindthefirewalls.com/2013/07/how-to-install-cuckoo-sandbox-on-ubuntu.html 第一部分, 分析机的环境搭建 环境需要一台 linux 的机器作为分析的机器, 即 host, 需要创建虚拟机来模拟恶意软件的运行环境,我们使用一台装有 win7的虚拟机,即guest。虚拟机软件可以使用 virtual box. cuckoo利用在guest机器上运行恶意软件 , 采集软件的的行为, 发给分析的机器, 由分析的机器对采集的信息进行处理,生成报告。 下面我们来分别看 分析机器和guest机器环境的搭建: 分析机器: 1。 os : ubuntu 12.04.1 desktop i386 安装在一台vmware虚拟机上。administrator/password 2。Python libraries 分析的脚本使用的python语言,我们需要python. $ sudo apt-get install python Cuckoo 还需要 SQLAlchemy . $ sudo apt-get install python-sqlalchemy 3. 可选模块 $ sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefile 4. 可选模块 Yara
如果找不到 python.h, 下载开发环境 sudo apt-get install python2.7-dev, 察看你的 python 版本。下载相应的包。 5。 可选模块 Pydeep 需要先 下载 ssdeep http://sourceforge.net/projects/ssdeep/files/ssdeep-2.10/ssdeep-2.10.tar.gz/download
6. Installing Tcpdump $ sudo apt-get install tcpdump 7. 安装 Vitual Box 官网下载 https://www.virtualbox.org/wiki/Linux_Downloads
$ sudo usermod -a -G cdrom username 然后启动虚拟机, 安装guest 机器 的操作系统, 我这里装的是 win7. 8.创建一个用户, 并加入 组vboxusers $ sudo adduser cuckoo $ sudo usermod -a -G vboxusers cuckoo 9. 下载并解压 cuckoo |
本帖最后由 helloman 于 2013-8-16 14:47 编辑 环境搭建第二部分, guest 虚拟机的环境搭建 1. 下载并安装 python 和 python p_w_picpath library 2. 从控制面板关掉 firewall 和 auto update 以及uac 3. 网络设置 win7 我们使用静态ip 192.168.56.101 4.设置共享文件夹, 拷贝agent 到 guest virtual box 菜单 devices -- 〉shared folder, 添加一个共享文件夹,例如取名为 myshare 运行命令 net use e: \\vboxsvr\myshare 你就可以看到 一个新的盘符 e. 我们在 ubuntu 往共享文件夹拷东西, 就可以在 win7的 E盘里看到。我们把 cuckoo/agent/agent.py 拷到里面去并运行它。guest 机器 需要这个文件来和host 通信。 你可以把它放在 startup 目录, 让每次系统启动时自动运行, 或者运行它然后做 snapshot, 这样每次虚拟机一运行, agent 就会运行。 5。 修改host 上 cuckoo/config/virtual box.conf 配置文件 将虚拟机名改成你创建的虚拟机。 6. 到现在已经完成设置,我们创建快照 $ VBoxManage snapshot "<Name of VM>" take "<Name of snapshot>" --pause |
环境搭建第三部分,跑一个试试
1. 命令行切换到 cuckoo目录, 运行 cuckoo
$ python cuckoo.py
2. 再起一个 terminal, 用来提交一个分析
$python ./utils/submit.py /home/..../some.exe
3. 等待分析结束, 察看分析结果
cuckoo/storage/analyses/1/reports/report.html
4. 关闭虚拟机, 恢复到干净状态
vboxmanage controlvm 'gest_win7' poweroff
vboxmanage snapshot 'gest_win7' restorecurrent
自定义特征用于恶意程序的分类
上面介绍了环境的搭建,下面我们介绍一下使用cuckoo根据我们自己的需要来做分析。
比如:
有些木马程序他会在运行时候创建 一个可执行程序。 我们创建一个特征, 来查看待 检测的程序是否生成了 exe文件。
cuckoo 的安装后signatures目录有个 文件, modules/signatures/creates_exe.py, 它就是这个作用。
打开这个文件,修改
enabled = False 为 enabled = True.
from lib.cuckoo.common.abstracts import Signature
class CreatesExe(Signature):
name = "creates_exe"
description = "Creates a Windows executable on the filesystem"
severity = 2
categories = ["generic"]
authors = ["Cuckoo Developers"]
minimum = "0.5"
enabled = False
defrun(self):
match = self.check_file(pattern=".*\\.exe$",
regex=True)
if match:
self.data.append({"file": match})
return True
return False
然后我们提交一个文件, 这个文件会创建一个文件, 其文件名为 some.exe. 我们看看, cuckoo是否捕捉到这个动作。
用vs 创建一个console类型 project,
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR buf[MAX_PATH];
printf("hello, cuckoo, I am bad, trying to copy myself.\n");
// The function gets the current module for you.
:: DeleteFile(L"C:\\some.exe");
GetModuleFileName(0, buf, MAX_PATH);
::CopyFile(buf,L"C:\\some.exe",FALSE);
return 0;
}
提交后,察看report.html, 我们看到在signatures 下面显示
Creates a Windows executable on the filesystem
Behavior Summery:
Files
c:\some.exe
说明cuckoo成功的捕获到了这个特征。
建议参考下 https://github.com/cuckoobox/community/tree/master/modules/signatures, 这里有别人写的一些特征匹配