Поиск и устранение неисправностей 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 '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__"
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 / конфигурация.
DROP SCHEMA: must be owner of schema public
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
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 должен проходить.
Решение (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.
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; на скриншотах — окно сэмпла, а не трей.
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: profile 17134 на guest 19044
Volatility master + Win10x64_19041:
cd ~/volatility && git checkout master && git pull
pip uninstall volatility -y && python setup.py install
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).
Проверка: 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
Сводная таблица
| Симптом | Причина | Решение |
|---|---|---|
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 + новый |
inetsim + real IP |
sysctl/dnsmasq |
route_localnet + rooter |
Volatility DTB |
17134 |
master + 19041 |