Установка Cuckoo Sandbox (VirtualBox)

Подготовка хоста Linux

В первую очередь установите зависимости для Cuckoo Sandbox. В терминале выполните:

$ sudo apt-get install python python-pip python-dev libffi-dev libssl-dev

$ sudo apt-get install python-virtualenv python-setuptools

$ sudo apt-get install libjpeg-dev zlib1g-dev swig

Для корректной работы веб-интерфейса Cuckoo Sandbox необходимо установить mongodb:

sudo apt-get install mongodb

Для работы с БД разработчик рекомендует использовать PostgreSQL:

sudo apt-get install postgresql libpq-dev

Pydeep — необязательный плагин, который можно установить вручную. Исходный код и инструкции: pydeep на GitHub. Для сборки нужен пакет libfuzzy-dev.

Установка Pydeep. Сначала установите пакет libfuzzy-dev:

sudo apt install libfuzzy-dev

Теперь необходимо установить ssdeep. Это утилита для использования алгоритма нечёткого хеширования. Для этого в терминале выполните:

sudo apt install ssdeep

Обновите кэш общих библиотек при помощи команды:

sudo ldconfig

Чтобы установить pydeep – его нужно загрузить и разархивировать:

Скачайте исходники pydeep и соберите пакет:

cd ~/Downloads
wget https://github.com/kbandla/pydeep/archive/refs/heads/master.tar.gz
tar -xvf master.tar.gz
cd pydeep-master/
python setup.py build
python setup.py test
sudo python setup.py install

После python setup.py test в терминале должно появиться Test successful. Команда sudo python setup.py install завершает установку pydeep.

Чтобы убедиться, что pydeep установлен корректно, выполните в терминале команду вне каталога с исходниками pydeep:

python -c "import pydeep; print(pydeep)"

Вы увидите в терминале строку вида:

<module 'pydeep' from '/usr/local/lib/python2.7/dist-packages/pydeep.so'>

Теперь необходимо установить ПО для виртуализации (virtualbox). Cuckoo Sandbox поддерживает VirtualBox 4.3, 5.0, 5.1 и 5.2:

echo deb http://download.virtualbox.org/virtualbox/debian xenial contrib | sudo tee -a /etc/apt/sources.list.d/virtualbox.list

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

sudo apt-get update

sudo apt-get install virtualbox-5.2

Разработчики Cuckoo Sandbox рекомендуют выделить отдельного пользователя ОС для запуска песочницы. Это необходимо для минимальной безопасности, если, например, машина Cuckoo Sandbox создана не только для песочницы. Если вы хотите создать отдельного пользователя – ознакомьтесь с официальной документацией.

Для того чтобы получить доступ к сетевой активности, выполняемой вредоносным ПО во время его запуска, вам потребуется правильно настроенный сетевой анализатор, способный перехватывать трафик и сохранять его в файл. Tcpdump – утилита для захвата и анализа пакетов в компьютерных сетях. Cuckoo Sandbox использует tcpdump по умолчанию. Для установки в терминале выполните:

sudo apt-get install tcpdump apparmor-utils

sudo aa-disable /usr/sbin/tcpdump

Так как отдельный пользователь не создаётся, для tcpdump включите бит setuid:

sudo chmod +s /usr/sbin/tcpdump

Установка m2crypto. В настоящее время библиотека M2Crypto поддерживается только при установленном SWIG. В системах типа Ubuntu/Debian это можно сделать следующим образом:

sudo apt-get install swig

Если в системе установлен SWIG, M2Crypto можно установить следующим образом:

sudo pip install m2crypto==0.24.0

Установка guacd. guacd — это необязательная служба, которая обеспечивает слой трансляции для RDP, VNC и SSH для функций удаленного управления в веб-интерфейсе Cuckoo. Если вы используете Ubuntu версии 16.04.7 используйте следующие команды для установки:

sudo apt -y install libcairo2-dev libjpeg-turbo8-dev libpng-dev libossp-uuid-dev libfreerdp-dev
mkdir /tmp/guac-build && cd /tmp/guac-build
wget https://archive.apache.org/dist/guacamole/0.9.14/source/guacamole-server-0.9.14.tar.gz
tar xvf guacamole-server-0.9.14.tar.gz && cd guacamole-server-0.9.14
./configure --with-init-dir=/etc/init.d
make && sudo make install && cd ..
sudo ldconfig
sudo /etc/init.d/guacd start

В журнале запуска должны появиться строки вида:

Starting guacd: guacd [3603]: INFO: Guacamole proxy daemon (guacd) version 0.9.14 started
SUCCESS

При установке из исходного кода убедитесь, что из менеджера пакетов не установлена другая версия библиотек libguac*: иначе возможны конфликты и сбои guacd.

Проверка установленных пакетов с libguac в имени:

apt list --installed | grep libguac

Если в выводе что-то есть — удалите конфликтующие пакеты вручную, например: sudo apt remove имя_пакета.

Обратите внимание, что для использования функциональности Cuckoo Control, предоставляемой Guacamole, также необходимо установить VirtualBox Extension Pack. Проверьте версию установленной Oracle VirtualBox:

vboxmanage --version

Ожидаемый формат вывода — строка с номером сборки, например 5.2.44r139111 (у вас может отличаться).

Загрузите extension pack в папку ~/Downloads при помощи:

wget -P ~/Downloads https://download.virtualbox.org/virtualbox/5.2.44/Oracle_VM_VirtualBox_Extension_Pack-5.2.44.vbox-extpack

Затем запустите VirtualBox графически. В верхнем меню выберите: Файл → Настройки → Расширения. Нажмите + и выберите скачанный .vbox-extpack. Нажмите Install. Согласитесь с условиями и введите пароль root.

Установка Cuckoo Sandbox. Установка последней версии Cuckoo очень проста и выполняется следующим образом. Обратите внимание, что рекомендуется сначала обновить библиотеки pip и setuptools, поскольку они часто устаревают, что приводит к проблемам при попытке установить Cuckoo (см. также DistributionNotFound / No distribution matching the version..). Вполне вероятно, что у вас могут отсутствовать один или несколько системных пакетов, необходимых для сборки различных зависимостей Python. Пожалуйста, прочтите и перечитайте раздел «Требования», чтобы решить подобные проблемы.

Настоятельно рекомендуется устанавливать Cuckoo в виртуальном окружении Python 2. Работайте из домашнего каталога (~), а не из корня файловой системы (/).

virtualenv cuckoovenv
. cuckoovenv/bin/activate
pip install -U pip setuptools
pip install -U cuckoo

В зависимости от настроек вашей среды (virtualenvs и т. д.) вам может потребоваться указать версию pip для использования. Просто замените pip в приведенных выше командах на pip2.

INetSim

Установка INetSim. Последовательно выполните в терминале (запись в /etc и установка пакетов требуют прав суперпользователя):

sudo sh -c 'echo "deb http://www.inetsim.org/debian/ binary/" > /etc/apt/sources.list.d/inetsim.list'
sudo sh -c 'echo "deb-src http://www.inetsim.org/debian/ source/" >> /etc/apt/sources.list.d/inetsim.list'
wget -O - https://www.inetsim.org/inetsim-archive-signing-key.asc | sudo apt-key add -
sudo apt update
sudo apt install -y inetsim

(Не пропустите завершающее тире в конце команды с wget и apt-key.)

Проверка версии и службы:

inetsim --version
sudo systemctl status inetsim
curl http://127.0.0.1
Снимок экрана 1

Подготовка гостевой машины

После установки гипервизора можно создавать виртуальные машины для анализа. Cuckoo не диктует жёсткие требования к шаблону ВМ — ориентируйтесь на свои задачи и рекомендации по проектированию песочницы в остальной документации.

Образ Windows 10 и создание виртуальной машины [#guest-vm-os]

Используйте установочный образ ОС с английской локализацией: иначе Cuckoo Sandbox может работать некорректно. Образы с другой локализацией устанавливать не рекомендуется (речь о языке дистрибутива, а не только о языке интерфейса после установки). В примере ниже — образ Windows_10_x64; дальнейшие шаги описаны для него.

Создайте виртуальную машину Windows 10 64-bit с именем cuckoo1, объёмом ОЗУ 2048 МБ, диском VDI 32 ГБ и подключите ISO установки (Windows_10_x64). На этапе OOBE по возможности отключите лишние пункты (геолокация, персонализированная реклама и т.п.).

Host-only интерфейс в VirtualBox

Пока Windows 10 устанавливается, перейдем к созданию host-only интерфейса. Для этого в GUI VirtualBox перейдите в Global Tools (стрелочка на этой кнопке) → Host Network Manager. У вас откроется новое окно.

Нажмите Create слева: появится интерфейс vboxnet0 с адресом по умолчанию 192.168.56.1/24. Тот же адрес укажите в cuckoo.conf в параметре сервера результатов (resultserver). Снимите флажок DHCP Server (Enable), если он включён.

Снимок экрана 2
Снимок экрана 3

Завершение установки Windows и Guest Additions

Возвращаемся к установке Windows 10. Когда просят авторизоваться нажмите Domain Instead. Name указываем cuckoo. Password оставляем пустым и нажимаем Next. Privacy settings отключаем все. После появления рабочего стола установите VirtualBox Guest Additions. Когда у вас откроется Microsoft Edge браузер - нажмите Start without your data. Уберите галочку Bring over your data…​ и нажмите confirm and continue. Затем continue without Google data. Уберите галочку Make your Microsoft experience more useful to you и нажмите Confirm and start browsing. Браузером для анализа будет использоваться Firefox в любом случае. Как только вы увидите рабочий стол - начните установку дополнительных зависимостей для работы с Cuckoo Sandbox.

Передача установщиков на гостевую ВМ

Есть 2 варианта как загружать все установщики дополнительных зависимостей. 1. Использовать Shared Folder между host и guest машиной. 2. Загружать на гостевой виртуальной машине все вручную при помощи Microsoft Edge браузера (в настройках сетевых адаптеров виртуальной машины должен быть выбран NAT в таком случае). Загрузите установщик python-2.7.10.amd64.msi с официального сайта https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi (прямая ссылка на скачивание). Выполните установку с базовыми настройками без изменений. Чтобы передать файл через Shared Folder - в окне виртуальной машины перейдите в Machine → Settings → Shared Folders. Справа нажмите на знак + и укажите папку Downloads на хостовой машине. Нажмите OK. Теперь нужно установить Guest Additions CD Image VirtualBox. Для этого в окне виртуальной машины сверху откройте Devices → Insert Guest Additions CD image…​ В Computer на VM вы увидите CD Drive. Откройте его и запустите файл VBoxWindowsAdditions. Оставьте все настройки по умолчанию и завершите установку. Разрешите создать ПО, когда появится окно. В конце установки выберите Reboot Now и нажмите Finish. После перезагрузки перейдите в Computer и для VirtualBox Guest Storage выполните Eject. На гостевой машине в This Computer вы увидите Network locations (1) Downloads (\\vboxsrv) VBoxSharedFolderFS. Открыв его, вы увидите папку downloads с машины хоста и сможете запускать установщики прямо оттуда. Если таковой нет – перейдите в Network и вы увидите папку там.

Снимок экрана 4

Установка вспомогательного ПО на гостевую систему

Затем установите на гостевую Windows 10 x64 следующее ПО:

  • Adobe Acrobat Reader X — установка с параметрами по умолчанию. После установки включите режим Always Open with Protected Mode disabled.

  • .NET Framework 4.5 — на Windows 10 часто уже установлена более новая версия; при сомнениях проверьте состав компонентов через regedit.

  • Пакеты Microsoft Visual C++ Redistributable для x86 и x64 (для каждой годовой ветки нужны оба разряда): 2005, 2008, 2010, 2012, 2013, 2015.

  • Pillow 2.9.0 для Python 2.7 — установщик Python Pillow 2.9.0.win-amd64-py2.7.exe.

  • По желанию: Microsoft Office 2010 x64; после установки отключите встроенные защиты в каждом приложении пакета.

  • Firefox (актуальная версия для Windows 10) с интерфейсом на английском языке. В мастере установки откажитесь от Maintenance Service. Назначение Firefox браузером по умолчанию на работу Cuckoo не влияет. На первом запуске пропустите мастер настройки и нажмите Start browsing.

Важно: в этом Firefox не используйте расширения, вход в учётные записи, синхронизацию и «боевой» интернет — браузер на гостевой ВМ предназначен только для сценариев анализа.

Настройка Firefox на госте

Настройте Firefox. В меню Settings → Privacy & Security → Security снимите флажки Block dangerous and deceptive content, Block dangerous downloads, Warn about unwanted software. Для Enhanced Tracking Protection выберите Standard, не Strict. Снимите Block pop-ups and third-party redirects и Warn when websites try to install extensions. В разделе Firefox data collection and use отключите все пункты сбора данных. Отключите HTTPS-Only Mode и DNS over HTTPS. На вкладке General в блоке Firefox Updates отключите автообновления.

Откройте about:config (без пробела в адресе). Снимите флажок Warn me when I attempt to access these preferences, нажмите Accept the Risk and Continue и задайте параметры:

  • browser.safebrowsing.enabled — тип String, значение false (создайте вручную, если параметра нет).

  • browser.safebrowsing.malware.enabled — false.

  • browser.safebrowsing.downloads.enabled — false.

  • browser.download.useDownloadDir — true.

  • browser.helperApps.neverAsk.saveToDisk — application/octet-stream (при необходимости нажмите значок карандаша и введите значение вручную).

  • security.enterprise_roots.enabled — true.

По желанию: security.sandbox.content.level = 0 ослабляет изоляцию контента и может понадобиться для отдельных сценариев анализа.

Настройка Adobe Acrobat Reader

Также необходимо настроить Adobe Acrobat Reader. Откройте его и перейдите в Edit → Preferences → Updater → Check for updates поставить Do not download or install updates automatically. Затем перейдите в Trust Manager → Internet Access from PDF files outside the web browser - Change Settings → Allow PDF files to access all web sites → OK. Затем вкладка Security - Verify signatures when the document is opened уберите галочку. Вкладка Internet - Connection Speed - укажите LAN. Затем нажмите OK → Yes, когда появится запрос Adobe Reader Updater (разрешение на смену параметров обновления). Закройте Acrobat.

Перед снимком состояния ВМ запустите каждое установленное приложение хотя бы один раз и завершите первичные мастера настройки, чтобы они не мешали автоматическому анализу.

Перезагрузите виртуальную машину после проделанных шагов.

После перезагрузки откройте Windows Security → Virus & threat protection → Manage settings. Выключите все пункты. Вернитесь в Windows Security и откройте Firewall & network protection → Firewall notification settings → Manage notifications → выключите все пункты.

Откройте Control Panel → User Accounts → User Accounts → Change User Account Control Settings → опустите ползунок в самый низ Never Notify → OK.

Вернитесь в Control Panel → System and Security → Windows Defender Firewall → Turn Windows Defender Firewall on or off → Поставьте везде Turn off → OK.

Откройте Settings → Windows Update → Advanced Options → убедитесь, что все выключено.

Нажмите ПКМ по Пуск → Run → gpedit.msc → Computer configuration → Administrative Templates → Windows Components → Microsoft Defender Antivirus. Справа в меню выберите Turn off Microsoft Defender Antivirus и нажмите дважды. Укажите Enabled → Apply → OK.

Затем перейдите в Computer Configuration → Administrative Templates → Windows Components → Windows Update. Справа в меню найдите параметр Configure Automatic Updates и нажмите дважды. Укажите Disabled → Apply → OK. Перезагрузите систему.

Статический IP и проверка связи гостя с хостом [#guest-network]

Виртуальные сети. Для корректной работы вам потребуется настроить сеть вашей машины таким образом, чтобы хост и гостевая система могли общаться. Рекомендуется проверить доступ к сети, отправив ping на гостевую систему, чтобы убедиться, что виртуальная сеть была настроена правильно. Используйте только статические IP-адреса для вашей гостевой системы, поскольку Cuckoo не поддерживает DHCP, и его использование нарушит вашу настройку. Этот этап во многом зависит от ваших собственных требований и характеристик вашего программного обеспечения для виртуализации.

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

Нажмите в окне виртуальной машины сверху Machine → Settings. Перейдите в вкладку Network. Adapter 1 укажите Attached to Host-only adapter и укажите vboxnet0. Перезапустите виртуальную машину. После перезагрузки, внутри виртуальной машины перейдите в Network & Internet Settings (ПКМ по значку интернета на панели быстрого доступа). Перейдите в Change adapter settings внизу этого окна. У интерфейса Local Area Connection (у вас он может называться по-другому, например, Ethernet) нажмите ПКМ → Properties. Уберите галочку с Internet Protocol Version 6. Выберите Internet Protocol Version 4 и нажмите properties. Выберите Use the following IP address и укажите адрес 192.168.56.101 (или ваш другой; в типовой конфигурации из этой документации используется 192.168.56.101), mask 255.255.255.0, default gateway 192.168.56.1, Preferred DNS server укажите 192.168.56.1. Alternate указывать не нужно. Поставьте галочку Validate Settings upon exit → OK. Если появится окно проверки с предупреждением, его можно закрыть без изменений. Проверьте настройки, используя ipconfig в cmd.

Снимок экрана 5

Проверьте доступность хоста с гостевой системы: при адресе хоста в host-only сети 192.168.56.1 в командной строке Windows выполните:

ping 192.168.56.1
Снимок экрана 6

Если ответы есть, проверьте обратное направление — с хоста на гостевую ВМ (в примере адрес гостя 192.168.56.101):

ping 192.168.56.101
Снимок экрана 7

Если обмен ICMP проходит в обе стороны, сеть настроена верно. Установите агент Cuckoo Sandbox. Если ICMP не проходит, проверьте /etc/inetsim/inetsim.conf и состояние службы: sudo systemctl status inetsim.

Агент Cuckoo на гостевой Windows

Начиная с версии 0.4, Cuckoo использует собственный агент, работающий внутри гостевой системы и обрабатывающий связь и обмен данными с хостом. Этот агент разработан как кроссплатформенный, поэтому вы сможете использовать его на Windows, Android, Linux и macOS. Для корректной работы Cuckoo необходимо установить и запустить этот агент. Это довольно просто. В каталоге $CWD/agent/ лежит файл agent.py. Скопируйте этот файл в гостевую операционную систему (во временную общую папку) и запустите его. Агент запустит небольшой API-сервер, с которым сможет взаимодействовать хост.

Переместите agent.py на рабочий стол гостевой Windows и переименуйте в agent.pyw. Если расширения не отображаются: This PC → меню View → Options → вкладка View → снимите флажок Hide extensions for known file types.

Запустите Command Prompt от имени администратора и перейдите в каталог Python 2.7 (типичный путь — C:\Python27):

cd \
cd Python27

Запуск агента (подставьте путь к своему рабочему столу):

python.exe C:\Users\ваш_пользователь\Desktop\agent.pyw

для запуска агента. Окно командной строки оставьте открытым: агент работает в фоне, пока сессия активна.

Снимок экрана 8

Снимок состояния гостевой ВМ

Сохранение состояния виртуальной машины. Теперь вы готовы сохранить виртуальную машину в состояние снапшота. Перед этим убедитесь, что вы выполнили перезагрузку и что она запущена, агент Cuckoo запущен, и Windows полностью загружена. Теперь вы можете приступить к сохранению машины. Способ сохранения, очевидно, зависит от используемого вами программного обеспечения для виртуализации. Если вы правильно выполните все описанные ниже шаги, ваша виртуальная машина будет готова к использованию Cuckoo.

Если вы используете VirtualBox, вы можете сделать снимок через графический пользовательский интерфейс или из командной строки хост-машины:

VBoxManage snapshot "cuckoo1" take "Snapshot1" --pause

cuckoo1 - название VM, Snapshot1 - название снапшота (оно нужно для конфигурации virtualbox.conf). После завершения создания снапшота вы можете выключить машину и восстановить ее:

VBoxManage controlvm "cuckoo1" poweroff

VBoxManage snapshot "cuckoo1" restorecurrent

Все эти команды выполняются в терминале хост-машины.

Запуск Cuckoo, rooter и веб-интерфейса

Использование Cuckoo Sandbox. Перейдите в cuckoovenv окружение при помощи команды в терминале хост-машины:

. cuckoovenv/bin/activate

Выполните команду загрузки сигнатур сообщества (cuckoo community):

Снимок экрана 9
cuckoo community

Далее — запуск Cuckoo. Здесь описан вариант на одной машине без отдельного API-сервера. Cuckoo Rooter (только Linux: Ubuntu и Debian-подобные дистрибутивы) — процесс с правами root для сетевой маршрутизации; основной демон Cuckoo обычно работает без root. Cuckoo и rooter обмениваются данными через сокет UNIX. Подробнее: маршрутизация для каждого анализа.

Откройте отдельное окно терминала. Выполните команду для запуска rooter:

sudo ~/cuckoovenv/bin/cuckoo rooter -g ваш_пользователь

Параметр -g задаёт группу для rooter; обычно это основная группа учётной записи, под которой выполнялась установка (узнать: id -gn или whoami). Это окно терминала будет открыто, пока работает rooter. Если закрыть это окно, маршрутизация для Cuckoo перестанет работать. В нём отображается журнал сетевых команд, выполняемых с правами root.

Запуск Cuckoo Sandbox. Откройте отдельное окно в терминале. Выполните команду:

. cuckoovenv/bin/activate
cuckoo -d

Вы увидите большой debug log, в котором множество информации о том, какие сигнатуры были загружены и состояние Cuckoo Sandbox. Если в последней строке вы видите:

INFO: Waiting for analysis tasks.
Снимок экрана 10

Значит, основной процесс Cuckoo запущен и ожидает задачи анализа. Далее запустите веб-интерфейс. Для этого в отдельном окне терминала используйте команды:

. cuckoovenv/bin/activate
cuckoo web --host 0.0.0.0 --port 8080

Чтобы открыть веб-интерфейс, откройте Firefox на хост-машине и в URL строке введите http://localhost:8080.

Снимок экрана 11

Следующая страница: Установка Cuckoo Sandbox (KVM).