cuckoo sandbox之windows恶意文件分析环境搭建

    xiaoxiao2025-08-02  25

    1.前言

     接触cuckoo sandbox沙盒有一段时间了,对host端的处理流程和guest端windows平台的分析都具有了一定的了解。将自己在这个过程中遇到的问题和解决方法总结出来,供大家学习和交流。欢迎大家批评和指正!  这篇文章主要介绍cuckoo sandbox的windows恶意文件分析环境的搭建方法。

    2.cuckoo sandbox简单介绍

     cuckoo sandbox是一个开源的恶意文件自动化分析系统,采用python和c/c++开发,跨越windows、android、linux和darwin四种操作系统平台,支持二进制的PE文件(exe、dll、com)、PDF文档、office文档、URLs、HTML文件、各种脚本(PHP、VB、Python)、jar包、zip文件等等几乎所有的文件格式。能分析恶意文件的静态二进制数据和动态运行后的进程、网络、文件等行为。对于恶意文件的初步分析定性具有很大帮助。

    3.约定条件

     (1). ubuntu版本:16.04TLS  (2). cuckoo sandbox版本:2.0-rc1  (3). python版本:2.7.12

    4. 准备工作

    4.1.下载cuckoo sandbox

     (1). 官方下载:  进入cuckoo sandbox官方网站:https://www.cuckoosandbox.org/download.html  点击”Download Cuckoo”,注意:当前最新文档版本为:2.0-RC1  注意:不要使用git clone git://github.com/cuckoosandbox/cuckoo.git方式下载,这样下载的为开发版,并非releases版  (2).github下载:  进入github上cuckoo sandbox主页:https://github.com/cuckoosandbox  选择cuckoo(monitor、community、cuckoomon也是cuckoo sandbox重要组件,以后会介绍)  选择releases版本发布区域,注意:不要从“Clone or download”处直接下载,此处下载的为开发版,并非releases版  找到2.0-rc1版本,可以选择zip或tar.gz包下载

    4.2.认识cuckoo sandbox文件结构

     - agent:一个跨平台的pythom模块,用于Host和Guest之间交换数据  - analyzer:windows、android、darwin、linux平台下的分析模块  - conf:配置文件目录  - data:html报告模板、yara规则库、monitor库  - distributed:分布式(暂时也不清楚)  - docs:说明文档目录,包含html、pdf、text版本和源码  - lib:cuckoo sandbox核心代码库  - modules:auxiliary辅助模块、machinery机器模块、processing分析模块、reporting报告模块、signatures行为分析模块  - tests:测试模块  - utils:工具集  - web:web模块  - cuckoo.py:启动程序  - requirements.txt:依赖库

    5.cuckoo sandbox工作原理简介

      稍后上传流程图

    6.Host环境搭建

    6.1基本依赖库

      (1).更新linux源

    $ sudo apt-get update

     (2).安装python环境

    $ sudo apt-get install python python-pip python-dev libffi-dev libssl-dev

     (3).安装virtualenv,并新建env_cuckoo2.0_rc1    注: 推荐先使用virtualenv练习安装,如不需要,请跳过此步。以下步骤均在env_cuckoo2.0_rc1下安装

    $ sudo apt-get install virtualenv #安装virtualenv $ virtualenv env_cuckoo2.0_rc1 #新建env_cuckoo2.0_rc1 $ source env_cuckoo2.0_rc1/bin/activate #进入env_cuckoo2.0_rc1环境

     (4).修改requirements.txt文件(#注释行为修改前)

    alembic==0.8.0 beautifulsoup4==4.4.1 cffi==1.2.1 chardet==2.3.0 #cryptography==1.0(1.0版本安装后出错) cryptography==1.4 Django==1.8.4 dpkt==1.8.6.2 ecdsa==0.13 enum34==1.0.4 Flask==0.10.1 HTTPReplay==0.1.5 idna==2.0 ipaddress==1.0.14 itsdangerous==0.24 Jinja2==2.8 jsbeautifier==1.5.10 Mako==1.0.1 MarkupSafe==0.23 ndg-httpsclient==0.4.0 #http://pefile.googlecode.com/files/pefile-1.2.10-139.tar.gz#egg=pefile(此链接要翻墙) pefile==2016.3.28 pyasn1==0.1.8 pycparser==2.14 pymongo==3.0.3 pyOpenSSL==0.15.1 python-dateutil==2.4.2 python-editor==0.3 python-magic==0.4.6 requests==2.7.0 six==1.9.0 SQLAlchemy==1.0.8 tlslite-ng==0.6.0-alpha3 wakeonlan==0.2.2 Werkzeug==0.10.4

     (5).安装requirements.txt    注:https://pypi.mirrors.ustc.edu.cn/simple/为国内镜像,此处使用国内镜像下载速度会快很多,你也可以改为其他镜像源。    注:如有某些依赖库安装出错,可单独安装出错的依赖库

    $ pip install --upgrade pip $ pip install -r requirements.txt --index https://pypi.mirrors.ustc.edu.cn/simple/

      注:安装完成后,运行pip命令,如报以下错误:

    $ pip $ …… AttributeError:'CompileFFI' object has no attribute 'def_extern' ……

       则删除env_cuckoo2.0_rc1/lib/python2.7/site-packages/cryptography文件夹(未使用virtualenv时,删除/usr/local/lib/python2.7/dist-packages/cryptography),然后重新安装requirements.txt即可。

    6.2数据库依赖库

     (1).如要使用cuckoo sandbox自带web程序,需安装mongodb

    $ sudo apt-get install mongodb

     (2).cuckoo sandbox默认使用sqlite数据库,如要使用mysql,需安装mysql和MySQL-python,

    $ sudo apt-get install mysql-server mysql-client libmysqld-dev $ $ unzip MySQL-python-1.2.5.zip #安装MySQL-python $ cd MySQL-python $ python setup.py build $ python setup.py install

    6.3网络数据包捕获

     Host机会使用tcpdump捕获网络数据包  (1).安装tcpdump

    $ sudo apt-get install tcpdump

     (2).启用root账户

    $ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

      注:如未找到setcap命令,使用如下命令安装:

    $ sudo apt-get install libcap2-bin`

     (3).验证启用是否成功

    $ getcap /usr/sbin/tcpdump /usr/sbin/tcpdump=cap_net_admin,cap_net_raw+eip

    6.4虚拟机软件

      cuckoo sandbox支持多种虚拟机,包括vmware、virtualbox、esx、kvm、vsphere、xenserver。选择一种你最熟悉的。此处简单介绍vmware和virtualbox的安装。

     (1).vmware   vmware是商业软件,许多功能都比较强大和完善。到官方下载linux版本,安装成功后,百度上有许多可用的注册码。  (2).virtualbox   virtualbox是开源软件,功能虽没有vmware完善,但满足cuckoo sandbox的使用。下面是安装命令:

    $ sudo apt-get install virtualbox

    6.5其他推荐库

     (1).Yara   yara是一款强大的基于文本或二进制模式匹配的工具。在data/yara目录已经内置了一些文本或二进制匹配规则。需利用软件下载安装。下载链接:https://pypi.python.org/pypi/yara

    $ python setup.py install $ python setup.py test $ yara-ctypes -h

     (2).pydeep   下载链接:https://github.com/kbandla/pydeep/releases

     (3).mitmproxy

    pip install mitmproxy

     (4).Volatility   需要进行内存分析,则需要安装Volatility

    $ sudo apt-get install Volatility

    7.Guest环境搭建

      本文主要讲windows恶意文件分析环境,所以Guest为windows操作系统。   Guest支持winxp和win7,使用win7时,需关闭User Access(用户账户控制)。下面以win7为例,讲述安装过程。

    7.1 win7虚拟机安装

      使用Host中已安装的虚拟机软件,安装win7虚拟机。此步骤很简单,相信用过虚拟机的都会;不会,也没关系,百度上很多资源,一学就会。此处不做过多讲解。   注:win7虚拟机无需打补丁,无需安装杀毒软件、安全卫士

    7.2 python运行环境

      (1).2.7.6以上任何一个稳定的2.7版本都可以,附下载链接:https://www.python.org/downloads/windows/   (2).PIL(Python Image Library)用于恶意文件运行过程中对桌面进行截屏,安装版本需与python库版本一致。附下载链接:http://www.pythonware.com/products/pil/

    7.3 win7环境配置

      (1).关闭windows自动更新   (2).关闭windwos防火墙   (3).关闭用户账户控制

    7.3 win7网络环境配置

      (1).使用Host-Only(仅主机模式)上网方式   注:vmware自带Host-Only模式,virtualbox需手动新建Host-only模式,如下图:            (2).将win7网络地址配置到Host-Only模式网段   (3).保证Host和Guest能正常通信,可使用ping命令测试   (4).现在许多恶意文件都需要网络环境才能运行,所以还需要将win7配置到能访问外部网络环境。cuckoo sandbox使用iptables配置转发规则,假如:eth0为ubuntu连接外部网络的网卡,vboxnet0虚拟机Host-Only的虚拟网卡(virtualbox为vboxnet0,vmware为vmnet0)

    iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE

    7.4 win7伪装环境

      (1).安装基础的运行库,如java、python、.net等   (2).安装2005-2015的vc运行库   (3).安装MS-Office套件(推荐低版本)、PDF阅读器等文档软件   (4).安装生活常用的聊天、听歌软件

    7.5 安装agent.py

      (1).将agent目录下的agent.py拷贝至win7文件系统,位置无严格要求。   (2).运行agent.py,测试是否能够按照如下正常运行:

    [+] Starting agent on 0.0.0.0:8000……

      (3).将agent.py修改成agent.pyw,并添加至开机启动项。agent.pyw为无界面模式。

    7.6 保存win7快照

      (1)在agent.pyw运行的状态下,保存win7快照。记录win7的ip地址和快照名称。   (2)确认agent.pyw:在进程列表查看到进程名为pythonw的进程。

    8.cuckoo sandbox配置文件介绍

    8.1 cuckoo.conf

      cuckoo.conf是cuckoo sandbox基本的配置文件,下面对主要的节做介绍:

    [cuckoo] version_check=on #版本检查 delete_original=off #删除源文件 delete_bin_copy=off #删除源文件备份 machinery=virtualbox #指定使用的虚拟机(vmware\virtualbox\avd\physical等) memory_dump=off #dump虚拟机的内存 terminate_processes=off #超时后,终止进程 reschedule=off #启动cuckoo后,重新分析以前分析失败的文件 max_analysis_count=0 #支持同时分析最大数,0无限制 max_machines_count=0 #支持同时运行虚拟机最大数,0无限制 max_vmstartup_count=10 #支持vm启动最大数 freespace=64 #磁盘剩余最小空间,单位MB tmppath=/tmp #临时目录,存放分析过程中产生的文件 rooter=/tmp/cuckoo-rooter # [routing] route=none # internet=none [resultserver] ip=192.168.56.1 #服务器IP地址 port=2042 #服务器端口 upload_max_size=10485760 [processing] analysis_size_limit=104857600 resolve_dns=on sort_pcap=on [database] connection= #数据库连接 timeout= [timeouts] default=120 critical=600 vm_state=60

    8.2 vmware.conf

      vmware.conf\virtualbox.conf\physical.conf/qumu.conf等格式相似

    [vmware] mode=gui #界面模式,gui(有界面),nogui(无界面),推荐nogui path=/usr/bin/vmrun #vmrun路径,默认即可 machines=cuckoo1 #Guest列表,以“,”间隔,如cuckoo1,cuckoo2,cuckoo3 interface=virbr0 #Guest使用的网卡 [cuckoo1] vmx_path=../cuckoo1/cuckoo1.vmx #vmx文件路径 snapshot=Snapshot1 #建立的快照名称 platform=windows #Guest的平台类型,windows/darwin/linux ip=192.168.54.111 #Guest的IP地址 #如有多个Guest,安装cuckoo1的格式重复即可

    8.3 reporting.conf

    [jsondump] #分析结果导出json文件 enabled=yes indent=4 encoding=latin-1 calls=yes [reporthtml] #是否生成html报告 enabled=no [mongodb] #mongodb的启用,如使用自带的web程序,需开启mongodb enable=no host=127.0.0.1 port=27017 db=cuckoo store_memdumo=yes paginate=100 [moloch] #moloch,将分析结果导入到moloch关联分析 enable=no host=127.0.0.1

    8.4 其他配置文件

      其他配置文件,采用默认即可,在深入定制分析情况下使用。

    转载请注明原文地址: https://ju.6miu.com/read-1301308.html
    最新回复(0)