Детальная архитектура Cuckoo Sandbox

Компоненты решения в типовом сценарии

В типовой схеме, описанной в этом руководстве, можно выделить:

  • Хост: Linux Ubuntu 16.04 с установленными VirtualBox, Cuckoo (в виртуальном окружении Python 2), cuckoo rooter, веб-интерфейсом, службами MongoDB/InetSim, перехватом трафика (tcpdump) и конфигурацией Host-only сети.

  • Гостевая аналитическая ВМ: Windows 10 x64 (английская локаль) с установленным софтом-средой анализа и агентом agent.py, подключающимся к хосту.

  • Изоляция трафика: Host-only адаптер vboxnet0, статические IPv4 без DHCP; при маршрутизации через InetSim трафик направляется к эмуляции служб без выхода в реальный Интернет.

Рабочий каталог Cuckoo (CWD)

Cuckoo working directory. Новая концепция — это рабочий каталог Cuckoo. С этого момента все настраиваемые компоненты, сгенерированные данные и результаты Cuckoo будут храниться в этом каталоге. Эти файлы включают, помимо прочего, следующее:

  • Конфигурация

  • Сигнатуры Cuckoo

  • Анализатор Cuckoo

  • Агент Cuckoo

  • Правила Yara

  • Хранилище Cuckoo (куда попадают результаты анализа)

  • И многое другое…

Рабочий каталог Cuckoo имеет ряд преимуществ перед устаревшим подходом, который использовал Cuckoo. Далее мы рассмотрим, как рабочий каталог Cuckoo (далее CWD) преодолевает различные повседневные препятствия.

Данный документ описывает только процесс установки CWD; для получения информации о его фактическом использовании, пожалуйста, обратитесь к документу «Использование рабочего каталога Cuckoo».

При первом запуске Cuckoo автоматически будет создан репозиторий CWD, это происходит примерно так:

(cuckoovenv) nikolaik@nikolaik-virtual-machine:~$ cuckoo -d

 _       _                   _             _              _            _
/\ \     /\_\               /\ \           /\_\           /\ \         /\ \
/  \ \   / / /         _    /  \ \         / / /  _       /  \ \       /  \ \
/ /\ \ \  \ \ \__      /\_\ / /\ \ \       / / /  /\_\    / /\ \ \     / /\ \ \
/ / /\ \ \  \ \___\    / / // / /\ \ \     / / /__/ / /   / / /\ \ \   / / /\ \ \
/ / /  \ \_\  \__  /   / / // / /  \ \_\   / /\_____/ /   / / /  \ \_\ / / /  \ \_\
/ / /    \/_/  / / /   / / // / /    \/_/  / /\_______/   / / /   / / // / /   / / /
/ / /          / / /   / / // / /          / / /\ \ \     / / /   / / // / /   / / /
/ / /________  / / /___/ / // / /________  / / /  \ \ \   / / /___/ / // / /___/ / /
/ / /_________\/ / /____\/ // / /_________\/ / /    \ \ \ / / /____\/ // / /____\/ /
\/____________/\/_________/ \/____________/\/_/      \_\_\\/_________/ \/_________/

Cuckoo Sandbox 2.0.0

www.cuckoosandbox.org

Copyright (c) 2010-2017

======================================================================

Welcome to Cuckoo Sandbox, this appears to be your first run!

We will now set you up with our default configuration.

You will be able to modify the configuration to your likings

by exploring the /home/nikolaik/.cuckoo directory.

Among other configurable things of most interest is the

new location for your Cuckoo configuration:

/home/nikolaik/.cuckoo/conf

======================================================================

Cuckoo has finished setting up the default configuration.

Please modify the default settings where required and

start Cuckoo again (by running `cuckoo` or `cuckoo -d`).

Как указано в информационных сообщениях, теперь вы сможете найти свой текущий рабочий каталог (CWD) по адресу /home/cuckoo/.cuckoo, поскольку по умолчанию он находится в ~/.cuckoo. Все известные вам конфигурационные файлы можно найти в каталоге $CWD/conf. Например, $CWD/conf/cuckoo.conf, $CWD/conf/virtualbox.conf и т. д.

Поскольку текущий рабочий каталог (CWD) не является частью самого Cuckoo, то есть репозитория Git или одной из последних версий, обновление Cuckoo можно будет выполнить без необходимости изменения CWD. (Конечно, если будет установлено обновление, требующее обновления конфигурации, Cuckoo проведет пользователя через этот процесс, вместо того чтобы перезаписывать файлы конфигурации самостоятельно).

CWD Path. Хотя текущий рабочий каталог (CWD) по умолчанию установлен на ~/.cuckoo, этот путь полностью настраиваемый. Ниже приведен порядок приоритета определения текущего рабочего каталога в Cuckoo.

  • С помощью параметра командной строки --cwd (например, --cwd ~/.cuckoo).

  • С помощью переменной среды CUCKOO (например, export CUCKOO=~/.cuckoo).

  • С помощью переменной среды CUCKOO_CWD.

  • Если текущий каталог является текущим рабочим каталогом (например, cd ~/.cuckoo, предполагая, что в этом каталоге создан текущий рабочий каталог).

  • По умолчанию используется ~/.cuckoo.

Имейте в виду, что если вы через File Manager перейдете в ~/ директорию — вы не увидите каталог .cuckoo. Причина тому, что .cuckoo относится к скрытым файлам; включите их отображение через ViewShow Hidden Files.

Связность хоста и гостя

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

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

Пошаговая настройка адаптера и проверки ping описаны в Конфигурации и сценариях настройки.

Гостевой агент

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