环境准备
安装必要模块
$ sudo apt-get install uwsgi uwsgi-plugin-python nginx
uwsgi设置
在venv中运行$ cuckoo api --uwsgi
,将结果保存到/etc/uwsgi/apps-available/cuckoo-api.ini
文件里
plugins = python
virtualenv = /home/cuckoo/cuckoo
module = cuckoo.apps.api
callable = app
uid = cuckoo
gid = cuckoo
env = CUCKOO_APP=api
env = CUCKOO_CWD=/home/..somepath..
创建链接
$ sudo ln -s /etc/uwsgi/apps-available/cuckoo-api.ini /etc/uwsgi/apps-enabled/
启动uwsgi
$ sudo service uwsgi start cuckoo-api
nginx设置
在venv中运行$ cuckoo api --nginx
,将结果保存到/etc/nginx/sites-available/cuckoo-api
文件里
upstream _uwsgi_cuckoo_api {
server unix:/run/uwsgi/app/cuckoo-api/socket;
}
server {
listen localhost:8090;
# REST API app
location / {
client_max_body_size 1G;
uwsgi_pass _uwsgi_cuckoo_api;
include uwsgi_params;
}
}
创建链接
$ sudo ln -s /etc/nginx/sites-available/cuckoo-api /etc/nginx/sites-enabled/
启动nginx
$ sudo service nginx start
启动cuckoo api
$ cuckoo api -H 0.0.0.0 -p 8090
8090是默认端口,可以更改,但之前的配置都要与之一致。
启动方法
初次环境配置完成后,以后的启动过程只需三条命令。
$ sudo service uwsgi start cuckoo-api
$ sudo service nginx start
(venv)$ cuckoo api -H 0.0.0.0 -p 8090
API使用方法
资源 | 描述 |
---|---|
POST /tasks/create/file | 提交一个文件任务 |
POST /tasks/create/url | 提交一个url任务 |
POST /tasks/create/submit | 提交多个文件任务 |
GET /tasks/list | 返回存储在内部Cuckoo数据库中的任务列表,可以选择指定要返回的条目的限制 |
GET /tasks/sample/<ID> | 返回存储在Cuckoo内部数据库中给定sampleID的任务列表 |
GET /tasks/view/<ID> | 返回分配给指定taskID的任务的详细信息 |
GET /tasks/reschedule/<ID> | 重新调度分配给指定taskID的任务 |
GET /tasks/delete/<ID> | 从数据库中删除给定taskID任务并删除结果 |
GET /tasks/report/<ID> | 返回与指定taskID关联的任务分析报告,可以选择指定要返回的报告格式,如果没有指定,则返回JSON报告 |
GET /tasks/screenshots/<ID> | 检索与给定taskID关联的屏幕截图 |
GET /tasks/rereport/<ID> | 重新运行与给定taskID关联的任务报告 |
GET /tasks/reboot/<ID> | 重新启动给定taskID的分析任务 |
GET /memory/list/<ID> | 返回与给定taskID关联的内存转储文件列表 |
GET /memory/get/<ID> | 检索与给定taskID关联的一个内存转储文件 |
GET /files/view | 使用MD5、SHA256或internal ID搜索分析后的二进制文件 |
GET /files/get | 返回具有指定SHA256散列的二进制文件的内容 |
GET /pcap/get/<ID> | 返回与给定taskID关联的PCAP的内容 |
GET /machines/list | 返回Cuckoo可用的分析机器列表 |
GET /machines/view | 返回与指定名称关联的分析机器的详细信息 |
GET /cuckoo/status | 返回Cuckoo状态,包括版本和任务概述 |
GET /vpn/status | 返回VPN状态 |
GET /exit | 关闭API服务 |
具体python调用法见官方文档:
https://cuckoo.readthedocs.io/en/latest/usage/api/。
网友评论