Поиск и устранение неисправностей Cuckoo Sandbox

Разделы до устранения неисправностей KVM относятся к стенду на VirtualBox (192.168.56.0/24, InetSim на host-only). Для KVM/libvirt (virbr0, 192.168.122.0/24) — сразу к разделу KVM ниже.

Внимание: Ошибки виртуальной сети! Виртуальная сеть — жизненно важный компонент для Cuckoo, вы должны быть абсолютно уверены, чтобы обеспечить связь между хостом и гостевой системой. Большинство проблем, о которых сообщают пользователи, связаны с неправильной настройкой их сети. Если вы не уверены в этом, проверьте документацию к вашему программному обеспечению для виртуализации и проверьте связь с помощью ping и telnet.

Гостевая Windows 10 и язык образа

В этом руководстве гостевая система — Windows 10 x64. Установочный образ и окружение Windows должны быть с английской локализацией (язык дистрибутива, не только переключатель языка в уже установленной ОС): иначе Cuckoo Sandbox часто ведёт себя нестабильно. Если симптомы непонятны, сначала сверьтесь с установкой VirtualBox (образ и гостевая ВМ) или установкой KVM (этап установки Windows).

Связность и InetSim

Если дваусторонний ping между хостом и гостем не выполняется:

  • проверьте service_bind_address и dns_default_ip в /etc/inetsim/inetsim.conf (совпадают с адресом Host-only, например 192.168.56.1);

  • выполните sudo systemctl status inetsim при необходимости sudo systemctl restart inetsim;

  • повторите настройку адаптера по разделу настройке гостевой сети VirtualBox (для KVM — сеть virbr0 в установке KVM).

Something went wrong в веб-интерфейсе

Если после Analyze отображается ошибка Something went wrong, загляните в терминал с cuckoo -d: если задача там стартовала, это может быть сбой веб-слоя, а не основного процесса.

Логи и Tesseract

Сообщения в логе могут отличаться между установками. В руководстве указано, что ошибочное включение Tesseract без OCR даёт красные записи — при необходимости отключите tesseract в processing.conf.

Выбор InetSim в Network Routing

Маршрутизация должна быть INETSIM. Если недоступна — см. варианты конфигурации и файл routing.conf.

Первый успешный анализ можно проверять по выполненному отчёту по тестовому eicar.zip; возможны ошибки, требующие ручной доработки конкретного стенда.

Устранение неисправностей при установке KVM (Ubuntu 18.04 + libvirt)

Материалы ниже относятся к пошаговой установке Cuckoo Sandbox 2.0.7 с гостевой ВМ в KVM/libvirt (не VirtualBox). Процедура установки — Установка Cuckoo Sandbox (KVM).

pip install m2crypto==0.24.0 падает

Симптом: gcc/SWIG ошибки в _m2crypto_wrap.c.

Решение:

sudo apt-get install -y python-m2crypto
sudo su - cuckoo
mv ~/venv ~/venv.bak
virtualenv --system-site-packages ~/venv
source ~/venv/bin/activate
pip install -U pip setuptools wheel cuckoo==2.0.7

usermod: group 'libvirtd' does not exist

sudo usermod -a -G libvirt,kvm cuckoo

usermod: group 'pcap' does not exist

Симптом: при usermod -a -G libvirt,kvm,pcap cuckoo — group 'pcap' does not exist.

Причина: группа pcap создаётся позже (groupadd), после установки tcpdump.

Решение: сначала только libvirt,kvm; затем блок tcpdump:

sudo groupadd pcap 2>/dev/null || true
sudo usermod -a -G pcap cuckoo
sudo chgrp pcap /usr/sbin/tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

После любого usermod — log out / log in или sudo su - cuckoo.

cuckoo --version — No such command

pip show cuckoo | grep Version
python -c "import cuckoo; print cuckoo.__version__"

virt-manager: UEFI Not found

Достаточно BIOS + i440FX для Win10 LTSC.

virt-manager: ошибка qemu:///system

Ошибка подключения

Решение: log out / log in; virsh list --all.

cuckoo: not in sudoers

apt и /etc — ваш_пользователь; Cuckoo — cuckoo.

REST API: 500, AttributeError is_xhr

pip install werkzeug==0.16.1

psql heredoc: invalid command \

Симптом: при sudo -u postgres psql <<'EOF' между CREATE ROLE и CREATE DATABASE — invalid command \.

Причина: в heredoc с кавычками (<<'EOF') символ \ в конце строки не склеивает SQL, а передаётся в psql как отдельная meta-команда.

Решение: CREATE DATABASE одной строкой, без \:

sudo -u postgres psql <<'EOF'
CREATE USER cuckoo WITH PASSWORD 'ваш_пароль';
CREATE DATABASE cuckoo ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0 OWNER cuckoo;
GRANT ALL PRIVILEGES ON DATABASE cuckoo TO cuckoo;
\q
EOF

Если при ошибке уже видели CREATE ROLE, CREATE DATABASE, GRANT — БД, скорее всего, создана. Проверка:

psql -h localhost -U cuckoo -d cuckoo -c 'SELECT version();'
sudo -u postgres psql -c "\l" | grep cuckoo

Повторный CREATE USER / CREATE DATABASE без IF NOT EXISTS даст «already exists» — это нормально, идите дальше по документу.

Cuckoo: Cannot assign requested address (192.168.56.1:2042)

Симптом: после добавления только connection в cuckoo.conf команда cuckoo падает: Unable to bind ResultServer on 192.168.56.1:2042 [Errno 99] Cannot assign requested address.

Причина: после cuckoo init остаются дефолты VirtualBox (192.168.56.1). На KVM нужен 192.168.122.1 (virbr0). Guest Windows на этом шаге не обязателен.

Решение: в ~/.cuckoo/conf/cuckoo.conf:

[cuckoo]
machinery = kvm

[resultserver]
ip = 192.168.122.1
port = 2042

[database]
connection = postgresql://cuckoo:ПАРОЛЬ@localhost/cuckoo
ip addr show virbr0 | grep 192.168.122.1
source ~/venv/bin/activate
cuckoo

403 на updates.json — не критично. Полная настройка — установка KVM, раздел PostgreSQL / конфигурация.

PostgreSQL: psycopg2 2.6.2 + PG 10

psycopg2 2.6.2 fail
pip install psycopg2==2.7.7
2.7.7 OK
import OK

cuckoo migrate на пустой PostgreSQL

migrate error

Запустите cuckoo (daemon), не cuckoo migrate.

DROP SCHEMA: must be owner of schema public

permission denied
sudo -u postgres psql -d cuckoo <<'EOF'
DROP SCHEMA public CASCADE;
CREATE SCHEMA public AUTHORIZATION cuckoo;
GRANT ALL ON SCHEMA public TO cuckoo;
GRANT ALL ON SCHEMA public TO public;
EOF
DROP OK

analyses/1 already exists

mv ~/.cuckoo/storage/analyses ~/.cuckoo/storage/analyses.bak-pre-postgres
mkdir -p ~/.cuckoo/storage/analyses

Permission denied при распаковке ZIP

mkdir -p ~/extracted
7z x archive.zip -p'password' -o/home/cuckoo/extracted/
sudo chown cuckoo:cuckoo /path/to/file.zip

Error 225 (Windows Defender)

Симптом: в Cuckoo Log: WindowsError: [Error 225] … file contains a virus or potentially unwanted software; behavior log пустой.

Решение: полное отключение Defender в guest — установка KVM: реестр + Safe Mode → перезагрузка → новый снапшот clean:

virsh snapshot-delete win10 clean
virsh snapshot-create-as win10 clean --description "Defender off"

Ping: с guest .1 OK, с host guest — 100% loss

Симптом: в guest ping 192.168.122.1 — OK; на host ping 192.168.122.105 — 100% packet loss.

Когда бывает: чаще всего до отключения брандмауэра (этап 6 установки KVM) или если ping с host делали раньше времени. После перезагрузки guest с выключенным firewall ping с host должен проходить.

guest OK

Решение (lab): в guest отключить firewall — этап 6 в установке KVM.

Решение (точечно): wf.msc → Inbound Rules → File and Printer Sharing (Echo Request - ICMPv4-In) → Enable (профиль Private).

Проверка: с host ping -c 3 192.168.122.105 → 0% loss. Для Cuckoo важнее nc -zv 192.168.122.105 8000 после установки Agent.

eicar.com — 16-bit

На Win10 x64 не запускается. Тест: notepad / mspaint + human=0.

calc.exe — crash

UWP-stub Win10. Тест: notepad / mspaint.

human=0 и Action Center

Модуль human кликает по подстроке new в «No new notifications». Отключение Action Center в guest — этап 9 в установке KVM.

Submit с human=0 (host) — для notepad, mspaint и других GUI-сэмплов (→ cuckoo, venv):

cuckoo submit --options human=0 /tmp/notepad.exe
cuckoo submit --options human=0 /tmp/mspaint.exe

В Web → Analyzer log: нет повторов Action Center … clicking it; на скриншотах — окно сэмпла, а не трей.

Один скриншот, окна нет

Screenshots шлёт кадр только при смене экрана. human=0, попробуйте mspaint.

Лог mspaint

mspaint: Unable to create new document

Ограничение mspaint в Temp, не баг Cuckoo.

Firefox в guest (не ставить в базовую установку)

В установке KVM Firefox не входит в эталонный guest. На Win10 LTSC в lab он часто нестабилен (падения, конфликты с Python 2.7 / старыми зависимостями) и для Cuckoo не нужен.

URL-анализ — пакет ie (Internet Explorer встроен в Windows):

cuckoo submit --package ie \
  --options "human=0,route=inetsim,enforce_timeout=yes,free=yes" \
  http://example.com

Если Firefox уже установлен и мешает — удалите из guest или не включайте в снапшот clean. Для скачивания agent.py с host достаточно Edge (закрыть промо на этапе 4 установки).

Volatility: memory dump not found

dump not found

memory_dump = yes в cuckoo.conf.

Volatility: profile 17134 на guest 19044

17134 fail
AddrSpaceError

Volatility master + Win10x64_19041:

cd ~/volatility && git checkout master && git pull
pip uninstall volatility -y && python setup.py install
19041 OK

route=inetsim, но реальные Microsoft IP

/etc/inetsim/inetsim.conf:

service_bind_address 127.0.0.1
dns_bind_port        53
dns_default_ip       192.168.122.1

routing.conf: server = 127.0.0.1, ports = (пусто).

99-cuckoo-bridge.conf: br_netfilter, route_localnet=1, ip_forward=1.

T0: sudo /home/cuckoo/venv/bin/cuckoo rooter -g cuckoo (не ~/venv — при sudo это home ваш_пользователь, не cuckoo).

INetSim version
bind 127.0.0.1:53

Проверка: dig @127.0.0.1 example.com → 192.168.122.1 (не dig @192.168.122.1 — там dnsmasq).

/status timeout :8000

Часто после snapshot. Если анализ завершился — не fatal. nc -zv 192.168.122.105 8000.

ZIP с паролем в Web UI

CLI:

cuckoo submit --package zip --options "password=ПАРОЛЬ,file=inside.exe" sample.zip

chown для submit

sudo chown cuckoo:cuckoo /path/to/sample.exe

Сводная таблица

Симптом Причина Решение

m2crypto pip fail

SWIG 3.x

apt + venv --system-site-packages

libvirtd

bionic

группа libvirt

API 500

Werkzeug 1.0

werkzeug==0.16.1

psycopg2

pin 2.6.2

psycopg2==2.7.7

migrate

пустая PG

cuckoo, не migrate

Error 225

Defender

реестр + Safe Mode + новый clean

inetsim + real IP

sysctl/dnsmasq

route_localnet + rooter

Volatility DTB

17134

master + 19041