環(huán)境準備
安裝必要模塊
$ 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..
創(chuàng)建鏈接
$ 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;
}
}
創(chuàng)建鏈接
$ 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是默認端口,可以更改,但之前的配置都要與之一致。
啟動方法
初次環(huán)境配置完成后,以后的啟動過程只需三條命令。
$ 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數(shù)據庫中的任務列表,可以選擇指定要返回的條目的限制 |
| GET /tasks/sample/<ID> | 返回存儲在Cuckoo內部數(shù)據庫中給定sampleID的任務列表 |
| GET /tasks/view/<ID> | 返回分配給指定taskID的任務的詳細信息 |
| GET /tasks/reschedule/<ID> | 重新調度分配給指定taskID的任務 |
| GET /tasks/delete/<ID> | 從數(shù)據庫中刪除給定taskID任務并刪除結果 |
| GET /tasks/report/<ID> | 返回與指定taskID關聯(lián)的任務分析報告,可以選擇指定要返回的報告格式,如果沒有指定,則返回JSON報告 |
| GET /tasks/screenshots/<ID> | 檢索與給定taskID關聯(lián)的屏幕截圖 |
| GET /tasks/rereport/<ID> | 重新運行與給定taskID關聯(lián)的任務報告 |
| GET /tasks/reboot/<ID> | 重新啟動給定taskID的分析任務 |
| GET /memory/list/<ID> | 返回與給定taskID關聯(lián)的內存轉儲文件列表 |
| GET /memory/get/<ID> | 檢索與給定taskID關聯(lián)的一個內存轉儲文件 |
| GET /files/view | 使用MD5、SHA256或internal ID搜索分析后的二進制文件 |
| GET /files/get | 返回具有指定SHA256散列的二進制文件的內容 |
| GET /pcap/get/<ID> | 返回與給定taskID關聯(lián)的PCAP的內容 |
| GET /machines/list | 返回Cuckoo可用的分析機器列表 |
| GET /machines/view | 返回與指定名稱關聯(lián)的分析機器的詳細信息 |
| GET /cuckoo/status | 返回Cuckoo狀態(tài),包括版本和任務概述 |
| GET /vpn/status | 返回VPN狀態(tài) |
| GET /exit | 關閉API服務 |
具體python調用法見官方文檔:
https://cuckoo.readthedocs.io/en/latest/usage/api/。