0. 布谷鸟沙箱介绍
布谷鸟沙箱是一款自动化恶意软件分析工具。可以分析许多恶意文件,包括可执行文件、pdf文档、邮件、恶意网站等。
1.安装过程
1.1 下载cuckoo2.0 docker镜像
docker pull blacktop/cuckoo:2.0
1.2 下载mongo5.0镜像,由于cuckoo2.0的docker镜像已经不维护了,github仓代码显示是在2017年,如果下载最新的mongo6.0,会导致后续web界面服务起不起来。web界面的数据是从mongodb数据库中读取的,最新的mongodb语法已经不适应docker-cuckoo2.0了。
docker pull mongo:5.0
1.3 下载elasticsearch:5.6镜像,web界面服务会用到。
docker pull blacktop/elasticsearch:5.6
1.4 下载postgres:14镜像,cuckoo的API服务会使用到。
docker pull postgres:14
1.5 使用mango docker镜像起一个容器。
docker run -d --name mongo mongo:5.0
1.6 使用elasticsearch:5.6镜像起一个容器。
docker run -d --name elasticsearch blacktop/elasticsearch:5.6
1.7 使用postgres:14镜像起一个容器。
docker run -d --name postgres -e POSTGRES_PASSWORD=cuckoo postgres
1.8 启动cuckoo的api服务,方便代码中调用沙箱接口。
–link postgres表明api这个服务依赖容器postgres.
-p 8000:1337 表示把容器中api服务的端口1337映射到本地的8000端口,这样我们在浏览器里或代码中对http://{ip}:8000发送请求就可以查看api返回值了。
如果本地的8000端口被其他应用程序占用了,可以更换其他空闲端口。
docker run -d --name cuckoo-api --link postgres -p 8000:1337 blacktop/cuckoo:2.0 api
1.9 启动cuckoo的web服务,方便在浏览器中直接观察沙箱中运行了哪些任务,也可以直接上传文件或者url进行恶意行为检测。
–link mongo --link elasticsearch表明web服务依赖mongo和elasticsearch两个容器。
-p 80:31337表示将容器中的web服务端口31337映射到本地80端口。我们在浏览器里输入http://{ip}:80直接就可以进行界面操作了。
如果本地80端口被其他应用程序占用了,可以更换其他空闲端口。
docker run -d --name cuckoo-web --link mongo --link elasticsearch -p 80:31337 blacktop/cuckoo:2.0 web
1.10 镜像下载之后如下:
1.11 容器启动之后如下:
1.12 检测web页面是否正常
浏览器中输入:http://127.0.0.1:80或者http://{本机IP}:80就可以访问,效果如下图所示:
1.13 检测api服务是否正常
浏览器中输入:http://127.0.0.1:8000/cuckoo/status,如果API服务正常,效果如下图所示,会把系统信息打印出来。cuckoo其他api自行调测。
2. 安装过程中遇到的问题
2.1 elasticsearch容器启动失败
问题定位:
查看容器启动日志:
# 方法一:查看容器最近30分钟的日志
docker logs --since 30m bb5fcde7b723
# 方法二:找到容器日志文件查看
docker inspect --format '{{.LogPath}}' 容器id
报错情况如下:
根据报错描述可知:虚拟机最大内存区域设置的是65530,太小了,期望最小存储为262144。把虚拟机最大内存区域设置到262144就可以了。这一步是在宿主机上做的操作。
# 设置虚拟机内存区域为262144
sudo sysctl -w vm.max_map_count=262144
# 查看是否设置成功
sudo sysctl -a|grep vm.max_map_count
重新启动elasticsearch容器:
3. 参考资料
docker仓库cuckoo镜像:https://hub.docker.com/r/blacktop/cuckoo#installation
cuckoo官方文档:https://docs.cuckoosandbox.org/en/latest/faq/#can-i-analyze-urls-with-cuckoo
cuckoo官网主页:https://cuckoosandbox.org/about
git仓库docker-cuckoo: https://github.com/blacktop/docker-cuckoo