当前位置: 首页 > 科技观察

Cuckoo恶意软件自动化分析平台搭建

时间:2023-03-12 03:43:13 科技观察

0x00Cuckoo概述Cuckoo是一个开源的恶意软件自动化分析系统。目前主要用于分析Windows平台下的恶意软件,但其框架同时支持Linux和MacOS。Cuckoo可以自动获取以下信息:可以跟踪恶意软件进程及其产生的所有进程的win32API调用记录;它可以检测恶意软件的文件创建、删除和下载;它可以获取恶意软件进程的内存映像;它可以获取系统镜像的所有内存,以供其他工具进一步分析;能够抓取pacp格式的网络数据;能够捕获运行的恶意软件的屏幕截图。Cuckoo支持分析各种文件格式,包括Windows可执行文件、DLL文件、PDF文档、Office文档、恶意URL、HTML文件、PHP文件、CPL文件、VBS、ZIP压缩文件、jar文件、python程序等。这些是完全依赖于他的分析模块。下图是cuckoo的架构图,很清晰。Cuckoo依赖底层虚拟机进行实际分析,然后通过虚拟网络将分析结果传输给cuckoo主机。所以布谷鸟的运行至少需要一个虚拟化环境。目前cuckoo可以支持vmware、virtualbox、kvm、qemu、xen、avd等主流虚拟化平台。Cuckoo的架构是高度模块化的。只要我们添加不同的分析模块,布谷鸟就可以完成不同系统平台下的分析工作。0x01环境设置测试环境host:kali2.0x64,guest:windowsxpsp3en。1.1安装getcuckoo,我们从github上获取最新的cuckoo:gitclonehttps://github.com/cuckoobox/cuckoo.git安装cuckoo依赖的python库:$sudoapt-getinstallpythonpython-pip$sudoapt-getinstallmongodb$sudopipinstall-rrequirements.txt这里可能安装有问题,是系统安装的python库和pip安装的库版本不一致导致的,因为python库安装的系统往往比较旧。pip安装的库比较新,pip安装的其他库依赖较新的库,会出现问题。解决办法是卸载系统的python库,但是系统的一些python库是依赖的,需要先使用dpkg--purge--force-all包名强制卸载,然后再使用pip安装。$sudoapt-getinstalltcpdump$sudoapt-getinstalllibcap2-bin如果要进行内存镜像分析,需要安装volatility。$sudoapt-getinstallvolatility启用截图功能,需要PythonImage库$sudopipinstallPIL这里我们使用virtualbox虚拟化平台,所以需要下载安装virtualbox。1.2配置软件安装完成后,需要先创建一个虚拟机,可以使用virtualbox图形界面进行操作。Cuckoo在运行时,需要监听宿主机上的一个地址来获取上报信息,这个地址必须是虚拟机可以访问的。这里使用的网络配置是将虚拟机的网卡调整为host-only模式,相当于在虚拟机和宿主机之间连接了一根网线。这时候宿主机网卡列表中就会多出一个类似于vboxnet0的网卡,这是宿主机和虚拟机之间进行通信所用的网卡。虚拟机的内部ip地址可以自己设置,只要和vboxnet0的地址在同一网段即可。默认情况下vboxnet0是192.168.56.1。虚拟机可以是192.168.56.101。为了虚拟机能正常访问外网,宿主机也需要转发数据,参考官方命令:iptables-AFORWARD-oeth0-ivboxnet0-s192.168.56.0/24-mconntrack--ctstateNEW-jACCEPTiptables-AFORWARD-mconntrack--ctstateESTABLISHED,RELATED-jACCEPTiptables-APOSTROUTING-tnat-jMASQUERADEsysctl-wnet.ipv4.ip_forward=1其中,第一个命令中的eth0为真正的Internet访问您的主机网卡地址,vboxnet0是虚拟网卡。最后一个是启用内核数据转发。安装虚拟机系统后,为了达到最佳的兼容效果,需要关闭windows虚拟机的防火墙和自动更新,然后需要安装python2.7环境。并将cuckoo根目录下的agent/agent.py复制到虚拟机中。agent.py负责虚拟机到宿主机的数据传输。您可以将它添加到启动文件夹中,它会在您开机时自动启动。如果不想出现黑窗,可以将文件名由agent.py修改为agent.pyw。运行agent.pyw后,这时候虚拟机环境就基本搭建好了。当然,如果你需要分析office或者pdf,就需要安装这些软件。现在可以创建干净的系统快照供以后使用。虚拟机配置完成后,就该配置cuckoo了。Cuckoo的配置文件在conf目录下,该目录下有很多配置文件,其中:auxiliary.conf是一个辅助配置模块,用于辅助sniffer、mitm等其他功能。此处无需配置。cuckoo.conf是主要的配置文件,最重要的是用来指定我们使用的虚拟机的配置文件,默认是virtualbox,该文件也位于conf目录下,名字是virtualbox.conf。当然,我们可以定义自己的虚拟机配置文件,放在conf目录下。命名规则是一样的。另一个重要的选项是ip和port,用来指定接收分析结果的服务器。该地址必须可由虚拟机访问。一般设置为虚拟网卡的地址。比如上面配置的vboxnet0的地址是192.168.56.1,默认端口就可以了。memory.conf是内存镜像配置选项,主要用于Volatility分析,这里不用配置。processing.conf是结果处理配置模块,里面的配置选项直接影响到最终报表的内容,这里可以不用配置。.conf是指所有的虚拟化配置文件,包括virtualbox、vmware、kvm等,这些文件属于一类文件。在实际配置中,我们只需要根据自己的虚拟化环境配置其中的一个即可。同时,使用的配置文件也必须在cuckoo.conf的machinery字段中指定。这里的配置选项都是特定于虚拟化平台的,很多选项只适用于特定的平台。我们使用virtualbox.conf,其中mode指定virtualbox的运行模式,path指定VBoxManage的绝对路径,machines指定我们使用的虚拟机的名称,platform指定虚拟机运行的系统平台,ip指定虚拟机的ip地址。reporting.conf用于配置报表的生成方式,此处无需配置。***我们正在配置布谷鸟的网页界面。您需要在reporting.conf中启用mongodb。然后启动mongodb服务:systemctlenablemongodb;systemctl启动mongodb。现在可以启动web服务web/manage.pyrunserver。该服务在127.0.0.1:8000上运行。1.3运行Pythoncuckoo.py运行cuckoo分析系统。如下图所示:启动后,布谷鸟开始等待分析任务。要添加分析任务,请使用根目录中utils/中的submit.py。具体用法可以在帮助中找到,这里主要介绍使用web界面添加任务和查看报表。在浏览器中打开127.0.0.1:8000,点击提交添加任务。还有一些高级选项。如果需要内存分析,请选择FullMemoryDump。提交后cuckoo会开始自动分析,期间virtualbox会启动并运行程序。最终分析结果:最上面是布谷鸟分析的类型,包括静态分析、行为分析、网络分析等。0x02结论本文主要介绍布谷鸟的基本特性、安装和配置方法。使用cuckoo可以快速分析恶意程序的一些行为,提高恶意程序分析的效率。后续文章会继续分析cuckoo的程序结构和模块开发。