[Из песочницы] Cuckoo – собственная автоматизированная лаборатория анализа вредоносных файлов

imageМесяц назад портал на моей новой работе был взломан. Руководство задалось вопросом «Как?». В ходе недолгих поисков и анализу подключений к серверам, был найден ПК сотрудника, с которого устанавливалось подключение примерно в то самое время. Сотрудник ничего о взломе не знал, но в ходе беседы вспомнил один случай, ему незадолго до взлома пришёл документ от «сотрудника фирмы», который не открылся. Файл был в формате exe, с этого и началась вся история.Начальство дирекции поставило задачу проанализировать файл и понять, что он делает и какие данные могли уйти злоумышленнику. С темой анализа вредоносных файлов я раньше не сталкивался, и самым логичным делом было найти немного информации в гугле.За несколько дней я нашёл и прочёл огромное количество мануалов по анализу вредоносного ПО, почти все мануалы предлагали проанализировать ПО вручную, с помощью песочниц и разных утилит, но самым простым и быстрым из всех способов проанализировать вирус оказался malwr.com — сервис автоматического анализа файла в песочнице. Зарегистрировался, загрузил вирус, встал «в очередь» и стал ждать, лишь спустя сутки на главной странице появилась новость:

image

24-го июля днём, сервис прекратил свою работу на неопределённое время в связи с увеличивающейся нагрузкой.

Посмотрев страницы сайта и описание, я наткнулся на упоминание об используемой платформе анализа — Cuckoo Sandbox — и решил узнать о программе побольше.

Что же это за зверь такой «Кукушка»? Cuckoo Sandbox — система для автоматического исследования вредоносного ПО, эксплоитов, вредоносных скриптов, документов, архивов и ссылок. Система способна проверять документы pdf, doc, xls, rtf, скрипты Python, JS, DLL библиотеки, бинарники, jar и многое другое.Как оно работает? В специально подготовленной виртуальной системе устанавливается Python 2.7, добавляется на автозагрузку агент Cuckoo, который будет взаимодействовать с песочницей, специальным образом настраиваются интерфейсы сети, для перехвата и дальнейшего анализа сетевого трафика. После всех манипуляций делается снимок файловой системы, он же Snapshot. Песочница загружает тестируемый файл, определяет его тип и в соответствии с типом файла производит необходимые манипуляции, все изменения внутри песочницы фиксируются в отчёт. После работы система восстанавливает снапшот и виртуальная система возвращается к своему исходному состоянию.Cuckoo Sandbox способна на:

Мониторинг вызовов win32 API функций Дамп сетевой активности Дамп и анализ памяти Создание скриншотов в ходе выполнения анализа Сохранение копий всех созданных файлов и загруженных в процессе проверки Трассировка инструкций, выполняемых вредоносным процессом Создание удобного отчета в json, mmdef, maec, html-форматах Абсолютная изолированность среды, в которой производится запуск вредоносных программ Подогревая интерес публики, выложу небольшой скрин тех сигнатур, что песочница определила у одного файла, приложенного к спам письму: image

Согласитесь, это даёт гораздо больше информации о любом файле, нежели классическое антивирусное срабатывание «Trojan.Gen» (можно считать это «камнем в огород» Symantec).

Cuckoo Sandbox неплохо задокументирована и её установка в том числе, на некоторых сайтах выложены инструкции по её установке, но в данный момент ни одна инструкция не работает ровно так, как написано. В ходе настройки я столкнулся с немалым количеством проблем, после чего решил написать сюда полный и актуальный гайд по установке и настройке, со всеми нюансами, дополнениями и модификациями. Для самых ленивых я подготовил скрипт, который настроит и установит песочницу автоматически, приступим.

Установка и настройка Cuckoo, со всеми тонкостями и дополнительными утилитами. Вся последующая установка проводилась на VPS Digitalocean (2GB Ram/40GB SSD/Ubuntu 14.04×32).Примечание: если вы решили попробовать собрать песочницу на том же хостинге — не стоит выбирать лондонский ДЦ, у вас возникнут проблемы с доступом к некоторым ссылкам.Ubuntu выбран по рекомендации разработчиков, как система, на которой непосредственно и тестировалась песочница.

План установки будет выглядеть следующим образом:

Установка зависимостей и пакетов, необходимых утилитам и песочнице Установка утилит и Cuckoo Sandbox Настройка Cuckoo Sandbox Установка и настройка Virtualbox Установка или загрузка виртуальной системы, её настройка Веб интерфейс Автозагрузка Дополнительные «плюшки» и возможности Cuckoo Готовый скрипт установки и настройки Cuckoo Бонус Установка зависимостей и пакетов, необходимых утилитам и песочнице Если вам лень делать это самостоятельно или читать, переходите сразу к пункту Готовый скрипт. Прошу заметить, скрипт тестировался и собирался только под Ubuntu 14.04 LTS x32, работа на других ОС не гарантирована. Если решили разобраться сами, то следующая глава для вас.Установим все зависимости: cd /tmp apt-get update apt-get install git automake mongodb mingw32 dkms unzip wget python python-sqlalchemy python-bson python-pip python-dpkt python-jinja2 python-magic python-mysqldb python-gridfs python-libvirt python-bottle python-pefile python-chardet -y apt-get install python-dev libxml2-dev libxslt1-dev libevent-dev libpcre3 libpcre3-dev zlib1g-dev libtool libpcre++-dev –y apt-get install mariadb-server -y Следующие установки желательно делать по одному, как я и написал: pip install lxml pip install cybox==2.0.1.4 pip install maec==4.0.1.0 pip install django pip install py3compat pip install pymongo Примечание: Pymongo ставить только через PIP, если установить его через APT — веб интерфейс работать не будет.Установка утилит и Cuckoo Sandbox SSDEEP (ssdeep — инструмент для рекурсивного вычисления и сравнения контекстных частичных хешей, больше известного как нечёткое хеширование) apt-get install ssdeep python-pyrex subversion libfuzzy-dev -y svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep cd pyssdeep python setup.py build python setup.py install pip install pydeep YARA (YARA — инструмент, помогающий вирусным аналитикам опознавать и классифицировать примеры вредоносных программ) cd /tmp wget https://github.com/plusvic/yara/archive/v2.1.0.tar.gz tar xzf v2.1.0.tar.gz cd yara-2.1.0 chmod +x build.sh ./build.sh make install cd yara-python python setup.py build python setup.py install Distorm3 (Distorm3 — дизассемблер) cd /tmp wget http://distorm.googlecode.com/files/distorm3.zip unzip distorm3.zip cd distorm3 python setup.py build python setup.py install Установим Volatility (Volatility — фреймворк на Python, созданный для изучения дампов памяти операционной системы) add-apt-repository ppa: pi-rho/security apt-get update apt-get install volatility Примечание: Не собирайте пакет из исходников (как описано в некоторых мануалах по установке 2012–2013 годов), ставьте из репо как в этой статье, иначе web ui не будет работать, собранный Volatility из любых источников и любой версии ломает выгрузку отчётов в MongoDB (без Mongo новый веб интерфейс не заработает), с версией из репозитория такой проблемы нет.Установим Cuckoo Sandbox Сначала добавим пользователя: useradd cuckoo usermod -a -G vboxusers cuckoo id cuckoo Теперь установим: Стабильная

cd /opt wget http://downloads.cuckoosandbox.org/1.1/cuckoo_1.1.tar.gz tar xzf cuckoo_1.1.tar.gz Dev cd /opt git clone https://github.com/cuckoobox/cuckoo.git Примечание: В примере далее была использована стабильная версия, рекомендую так же использовать стабильную.Настройка Cuckoo Sandbox Настроим сигнатуры Cuckoo community cd /opt/cuckoo ./utils/community.py --signatures --force Теперь настраиваем БД Cuckoo: mysql -u root -p > create database cuckoo; > grant all privileges on cuckoo.* to cuckoo@localhost identified by 'cuck00pass' ; > flush privileges; > quit; Настраиваем cuckooФайл /opt/cuckoo/conf/cuckoo.confВключаем запись дампа памяти: memory_dump = on Настраиваем подключение к бд: connection = mysql://cuckoo: cuck00pass\@localhost/cuckoo Сервер слабый, поэтому увеличиваем временные лимиты: default = 240 critical = 1200 vm_state = 600 Файл /opt/cuckoo/conf/memory.confНа сервере всего 40 гб, поэтому отключаем сохранение дампов памяти: delete_memdump = yes Файл /opt/cuckoo/conf/processing.confВключаем анализ оперативной памяти: memory = yes Примечание: в параметр key можете вписать собственный API ключ сервиса virustotal.com vim /opt/cuckoo/conf/virtualbox.confМеняем режим работы Virtualbox: mode = headless Меняем названия виртуальной машины с cuckoo1 на WindowsXP: machines = WindowsXP [WindowsXP] label = WindowsXP Файл /opt/cuckoo/conf/reporting.confВключим импорт отчётов в MongoDB для работы веб интерфейса [mongodb] enabled = yes На этом настройка Cuckoo закончена, теперь приступим к Virtualbox и гостевой ОС.Установка и настройка Virtualbox Virtualbox и все необходимые компоненты wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add — sh -c 'echo «deb http://download.virtualbox.org/virtualbox/debian trusty contrib» >> /etc/apt/sources.list.d/virtualbox.list' apt-get update apt-get install virtualbox-4.3 cd /tmp VBOX_LATEST_VERSION=$(curl http://download.virtualbox.org/virtualbox/LATEST.TXT) wget http://download.virtualbox.org/virtualbox/${VBOX_LATEST_VERSION}/Oracle_VM_VirtualBox_Extension_Pack-{VBOX_LATEST_VERSION}.vbox-extpack vboxmanage extpack install /tmp/Oracle_VM_VirtualBox_Extension_Pack-${VBOX_LATEST_VERSION}.vbox-extpack cd /opt wget http://dlc.sun.com.edgesuite.net/virtualbox/${VBOX_LATEST_VERSION}/VBoxGuestAdditions_${VBOX_LATEST_VERSION}.iso Установка или загрузка виртуальной системы, её настройка У нас есть 2 варианта установки ОС: Загрузить её с сайта Установить вручную Первый вариант самый быстрый, но так же и не самый стабильный. Использование данной ОС в некоммерческих целях разрешено и не будет проблем с лицензией.Второй вариант более долгий и надёжный, я выбрал последний, но опишу оба по порядку.Загрузка виртуальной ОС с сайта

wget https://az412801.vo.msecnd.net/vhd/VMBuild_20131127/VirtualBox/IE6_WinXP/Linux/IE6.WinXP.For.LinuxVirtualBox.sfx chmod +x IE6.WinXP.For.LinuxVirtualBox.sfx ./IE6.WinXP.For.LinuxVirtualBox.sfx vboxmanage import IE6\ -\ WinXP.ova --vsys 0 --unit 10 --disk=/root/VirtualBox\ VMs/WindowsXP/WindowsXP.vmdk --memory 1024 --vmname WindowsXP Установка ОС вручную

vboxmanage createvm --name «WindowsXP» --ostype WindowsXP --register vboxmanage modifyvm «WindowsXP» --memory 1000 --acpi on --boot1 dvd vboxmanage createhd --filename «WindowsXP.vdi» --size 20000 vboxmanage storagectl «WindowsXP» --name «IDE» --add ide --controller PIIX4 vboxmanage storageattach «WindowsXP» --storagectl «IDE» --port 0 --device 0 --type hdd --medium «WindowsXP.vdi» Примечание: Следующие инструкции одинаково приемлемы к обеим методам.

Настраиваем сеть

vboxmanage hostonlyif create vboxmanage modifyvm «WindowsXP» --nic1 hostonly --hostonlyadapter1 vboxnet0 --nicpromisc1 allow-all --hwvirtex off --vtxvpid off Настраиваем общие папки

mkdir -p /opt/cuckoo/shares/setup mkdir -p /opt/cuckoo/shares/WindowsXP vboxmanage sharedfolder add «WindowsXP» --name «WindowsXP» --hostpath /opt/cuckoo/shares/WindowsXP --automount vboxmanage sharedfolder add «WindowsXP» --name setup --hostpath /opt/cuckoo/shares/setup --automount --readonly vboxmanage modifyvm «WindowsXP» --nictrace1 on --nictracefile1 /opt/cuckoo/shares/WindowsXP/dump.pcap Включаем доступ по RDP

vboxmanage modifyvm «WindowsXP» --vrdeport 5000 --vrde on Порт можете указать любойНа этом конфигурация виртуальных контейнеров полностью закончена, осталось настроить iptables, tcpdump и если вы выбрали установку с нуля — собственно и установить Windows.

Правила iptables и изменение параметра ядра

iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE sysctl -w net.ipv4.ip_forward=1 tcpdump setcap cap_net_raw, cap_net_admin=eip /usr/sbin/tcpdump getcap /usr/sbin/tcpdump Поднимем интерфейс ifconfig vboxnet0 192.168.56.1 Теперь переходим непосредственно на саму гостевую ОС:

Установка WindowsЗагрузите свой образ на сервер и подключим его к виртуальной машине:

vboxmanage storageattach «WindowsXP» --storagectl «IDE» --port 0 --device 1 --type dvddrive --medium /patch/to/licensed/windows Включаем vboxmanage startvm «WindowsXP» --type headless После этой команды можно подключиться к виртуальной ОС по RDP на порт 5000 и установить её. После установки подключим и установим VBoxGuestAdditions: vboxmanage storageattach «WindowsXP» --storagectl «IDE» --port 0 --device 1 --type dvddrive --medium /opt/VBoxGuestAdditions_4.3.14.iso Примечание: версия ваших аддонов может быть другаяЕсли вы загрузили готовую виртуальную систему, то в любом случае обновить GuestAdditions необходимо.После установки перезагружаемся.Настаиваем гостевую ОС

Следующим образом настрои подключение к сети (dns можете указать любой): image

Установим VboxTools с диска, который подключен к системе. Устанавливаем Pyton 2.7: http://python.org/download/ Устанавливаем http://www.activestate.com/activepython Устанавливаем PIL Python модуль, для создания скриншотов: http://www.pythonware.com/products/pil/ Отключаем автоматическое обновление Windows. Отключаем брандмауэер. Копируем агент из сетевой папки setup в папку C:\Python27, Ставим агент на автозагрузку, для этого добавляем в ветку реестра (пуск→выполнить→regedit) HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run строковый параметрИмя:'Agent’Тип:'REG_SZ’Содержание: «C:\Python27\agent.pyw»image

Включаем IE, в настройках ставим домашней страницей пустую вкладку, по желанию в свойствах обозревателя выключаем все защитные механизмы. Отключаем SSDP: пуск→выполнить→msconfig и в разделе службы отключаем «Служба обнаружения SSDP», чтобы в отчётах не фигурировали сетевые запросы этой службы.image

Перезагружаемся и в появившемся при загрузке окне выбираем «При перезагрузке не выводить это сообщение» и ОК. После перезагрузки гостевой ОС, пуск→выполнить→cmd и в консоли набираем netstat –na и смотрим есть ли агент на 8000-ом портуimage

По желанию устанавливаем различное уязвимое ПО старых версий (браузеры, Flash player, Java, Acrobat Reader…): http://www.oldapps.comПримечание: если у вас имеется лицензия на офис, лучше его установить, да и лучше установить всего побольше, скайп, ICQ, почтовый клиент, так или иначе некоторое вредоносное ПО пытается собрать данные из этих приложений или же эксплуатировать их. Например хакер, взломавший наш сайт, после нескольких неудачных попыток снова попасть в сеть собрал вирус, эксплуатирующий уязвимость CVE2012–0158, без Microsoft Office вычислить бы это не удалось. На этом установка гостевой ОС закончена.Делаем снапшот (не выключая гостевую ОС) vboxmanage snapshot «WindowsXP» take «WindowsXPSnap01» --pause И выключаем: vboxmanage controlvm «WindowsXP» poweroff Веб интерфейс У Cuckoo Sandbox есть 2 веб интерфейса, новый и старый. Тот что постарее менее информативен, имеет меньше возможностей и гораздо менее удобен, чем новый: Старый интерфейс: image

Новый интерфейс:

image

Старый интерфейс поднимается без БД, без Django, просто запуском скрипта web.py из папки utils, поэтому если вам этого достаточно — используйте его, но я рекомендую потратить 5 минут вашего драгоценного времени и поднять новый веб интерфейс.Устанавливаем Apache:

apt-get install apache2 Apache выбрал т.к. лучше его знаю и дольше с ним работал, по желанию можете настроить Nginx или Unicorn.Файл /etc/apache2/sites-enabled/000-default.conf удаляемСоздаём файл /etc/apache2/sites-enabled/cuckoo.conf следующего содержания: ServerName cuckoo.local ServerAdmin webmaster@localhost DocumentRoot /opt/cuckoo/web ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined WSGIScriptAlias / /opt/cuckoo/web/web/wsgi.py Require all granted Alias /static /opt/cuckoo/web/static Require all granted В файле /opt/cuckoo/web/web/wsgi.py находим: import os os.environ.setdefault («DJANGO_SETTINGS_MODULE», «web.settings») И меняем на: import os, sys sys.path.append ('/opt/cckoo') sys.path.append ('/opt/cuckoo/web') os.chdir ('/opt/cuckoo/web/') os.environ.setdefault («DJANGO_SETTINGS_MODULE», «web.settings») поправим права: chown -R cuckoo: cuckoo /opt/cuckoo/ Меняем пользователя, от которого будет запускаться apache в файле /etc/apache2/envvars APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data на APACHE_RUN_USER=cuckoo APACHE_RUN_GROUP=cuckoo Устанавливаем модуль поддержки wsgi: aptitude install libapache2-mod-wsgi -y Автозагрузка ПО Автозагрузка интерфейсов В файл /etc/rc.local до строчки exit 0 вписать: VBoxManage list vms > /dev/null ifconfig vboxnet0 192.168.56.1 Автозагрузка песочницы apt-get install supervisor Создаём файл /etc/supervisor/conf.d/cuckoo.conf следующего содержания: [program: cuckoo] command=python cuckoo.py directory=/opt/cuckoo

[program: cuckoo-api] command=python api.py directory=/opt/cuckoo/utils Выполняем: supervisord -c /etc/supervisor/supervisord.conf supervisorctl -c /etc/supervisor/supervisord.conf reload Автозагрузка правил iptables apt-get install iptables-persistent Готово, теперь после перезагрузки все службы запустятся и всё будет работать.

Дополнительные «плюшки» и возможности Cuckoo Сигнатуры PEID Установим новую базу сигнатур, в новой базе их в 2 раза больше: cd /tmp wget http://research.pandasecurity.com/blogs/images/userdb.txt mv userdb.txt /opt/cuckoo/data/peutils/UserDB.TXT Правила ClamAV в Yara + сигнатуры угроз APT от AlienVault Labs Примечание: при попытке загрузки скрипта конвертации правил ClamAV-Yara с лондонского дц digitalocean возникает ошибка «Request not allowed from your country That«s all we know.» apt-get install clamav -y wget http://db.local.clamav.net/main.cvd wget http://db.local.clamav.net/daily.cvd sigtool -u main.cvd sigtool -u daily.cvd wget http://malwarecookbook.googlecode.com/svn-history/r5/trunk/3/3/clamav_to_yara.py python clamav_to_yara.py -f main.ndb -o main.yar python clamav_to_yara.py -f daily.ndb -o daily.yar mkdir /opt/cuckoo/data/yara/clamav mv *.yar /opt/cuckoo/data/yara/clamav/ Сконвертированная база будет выдавать ошибку, ссылаясь на неверную сигнатуру EOL_0_94_2, удалим её: из файла /opt/cuckoo/data/yara/clamav/main.yar удалить строчки «rule EOL_0_94_2 { strings: $a0 = { This ClamAV version has reached End of Life! Please upgrade to version 0.95 or later. For more information see www.clamav.net/eol-clamav-094 and www.clamav.net/download }^M

condition: $a0 }» Или просто выполнить следующие команды: RM_EOL=$(sed -n '/EOL_0_94_2/{=}' main.yar) for n in {1…8}; do sed -i »${RM_EOL}d» main.yar; done Далее установим правила угроз APT от AlienVaults: git clone https://github.com/AlienVault-Labs/AlienVaultLabs.git mv AlienVaultLabs/malware_analysis/ /opt/cuckoo/data/yara/ И подключим эти правила к Cuckoo: Впишем в файл /opt/cuckoo/data/yara/index_binary.yar строчки: include «clamav/main.yar» include «clamav/daily.yar» include «malware_analysis/CommentCrew/apt1.yara» include «malware_analysis/FPU/fpu.yar» include «malware_analysis/Georbot/GeorBotBinary.yara» include «malware_analysis/Georbot/GeorBotMemory.yara» include «malware_analysis/Hangover/hangover.yar» include «malware_analysis/KINS/kins.yar» include «malware_analysis/OSX_Leverage/leverage.yar» include «malware_analysis/TheMask_Careto/mask.yar» include «malware_analysis/Urausy/urausy_skypedat.yar» Zer0m0n или прячем нашу песочницу Любой вредоносный файл может попытаться перед выполнением проверить наличие отладчиков или виртуальной среды, результат будет неутешителен. Вот что показывает тест Paranoid Fish при загрузке его исполняемого файла на проверку: image

Это можно легко поправить с помощью Zer0m0n.zer0m0n это драйвер для Cuckoo Sandbox, который будет выполнять анализ ядра во время исполнения вредоносного ПО. Он способен практически полностью скрыть «виртуальность» ОС и позволяет обойти обнаружение Cuckoo вредоносными файлами.

Установим его:

cd /tmp git clone https://github.com/conix-security/zer0m0n.git cd zer0m0n/bin cp cuckoo.patch /opt/cuckoo cd /opt/cuckoo patch -p1 < ./cuckoo.patch cp /tmp/zer0m0n/bin/logs_dispatcher.exe /opt/cuckoo/analyzer/windows/dll/ cp /tmp/zer0m0n/bin/zer0m0n.sys /opt/cuckoo/analyzer/windows/dll/ cp -rf /tmp/zer0m0n/signatures/* /opt/cuckoo/modules/signatures/ Поправим права:

chown -R cuckoo: cuckoo /opt/cuckoo/ После этого в веб интерфейсе появится возможность выбора сканирования в дополнительных опциях, по дефолту — Userland или с zer0m0n Kernelland: Если вы запускаете скан через консоль — используйте опцию kernel_analysis=yes

Запустим проверку ещё раз:

Готовый скрипт установки и настройки Cuckoo Как и обещал, выкладываю готовый скрипт. Он автоматически настроит всё, кроме гостевой ОС. После того, как скрипт отработает, вам нужно будет вернуться на пункт по настройке гостевой ОС и сконфигурировать её.setup_cuckoo.sh #!/bin/bash #-------------------------------------------# # Устанавливаем Cuckoo Sandbox # Тестировалось только под Ubuntu 14.04 #-------------------------------------------# #Установим зависимости cd /tmp apt-get update apt-get install git automake mongodb mingw32 dkms unzip wget python python-sqlalchemy python-bson python-pip python-dpkt python-jinja2 python-magic python-gridfs python-mysqldb python-libvirt python-bottle python-pefile python-chardet -y apt-get install python-dev libxml2-dev libxslt1-dev libevent-dev libpcre3 libpcre3-dev zlib1g-dev libtool libpcre++-dev -y debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password password supersecretpassw0rd' debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password_again password supersecretpassw0rd' apt-get install mariadb-server -y #Установим компоненты pip install lxml pip install cybox==2.0.1.4 pip install maec==4.0.1.0 pip install django pip install py3compat pip install pymongo #Установим SSDEEP apt-get install ssdeep python-pyrex subversion libfuzzy-dev -y svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep cd pyssdeep python setup.py build python setup.py install #Установим Yara cd /tmp wget https://github.com/plusvic/yara/archive/v2.1.0.tar.gz tar xzf v2.1.0.tar.gz cd yara-2.1.0 chmod +x build.sh ./build.sh make install cd yara-python python setup.py build python setup.py install #Установим Distorm3 cd /tmp wget http://distorm.googlecode.com/files/distorm3.zip unzip distorm3.zip cd distorm3/ python setup.py build python setup.py install #Устанавливаем Volatility add-apt-repository ppa:pi-rho/security -y apt-get update apt-get install volatility -y #Устанавливаем Cuckoo useradd cuckoo usermod -a -G vboxusers cuckoo cd /opt wget http://downloads.cuckoosandbox.org/1.1/cuckoo_1.1.tar.gz tar xzf cuckoo_1.1.tar.gz #Устанавливаем сигнатуры Cuckoo (https://github.com/cuckoobox/community) cd /opt/cuckoo ./utils/community.py --signatures --force #-------------------------------------------# # Устанавливаем и настраиваем Virtualbox #-------------------------------------------# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian trusty contrib" >> /etc/apt/sources.list.d/virtualbox.list' apt-get update apt-get install virtualbox-4.3 -y cd /tmp VBOX_LATEST_VERSION=$(curl http://download.virtualbox.org/virtualbox/LATEST.TXT) wget http://download.virtualbox.org/virtualbox/${VBOX_LATEST_VERSION}/Oracle_VM_VirtualBox_Extension_Pack-${VBOX_LATEST_VERSION}.vbox-extpack vboxmanage extpack install /tmp/Oracle_VM_VirtualBox_Extension_Pack-${VBOX_LATEST_VERSION}.vbox-extpack cd /opt wget http://dlc.sun.com.edgesuite.net/virtualbox/${VBOX_LATEST_VERSION}/VBoxGuestAdditions_${VBOX_LATEST_VERSION}.iso #конфигурируем Виртуальную машину vboxmanage createvm --name «WindowsXP» --ostype WindowsXP --register vboxmanage modifyvm «WindowsXP» --memory 1000 --acpi on --boot1 dvd vboxmanage createhd --filename «WindowsXP.vdi» --size 20000 vboxmanage storagectl «WindowsXP» --name «IDE» --add ide --controller PIIX4 vboxmanage storageattach «WindowsXP» --storagectl «IDE» --port 0 --device 0 --type hdd --medium «WindowsXP.vdi» vboxmanage hostonlyif create vboxmanage modifyvm «WindowsXP» --nic1 hostonly --hostonlyadapter1 vboxnet0 --nicpromisc1 allow-all --hwvirtex off --vtxvpid off #Настраиваем общие папки mkdir -p /opt/cuckoo/shares/setup mkdir -p /opt/cuckoo/shares/WindowsXP vboxmanage sharedfolder add «WindowsXP» --name «WindowsXP» --hostpath /opt/cuckoo/shares/WindowsXP --automount vboxmanage sharedfolder add «WindowsXP» --name setup --hostpath /opt/cuckoo/shares/setup --automount --readonly vboxmanage modifyvm «WindowsXP» --nictrace1 on --nictracefile1 /opt/cuckoo/shares/WindowsXP/dump.pcap cp /opt/cuckoo/agent/agent.py /opt/cuckoo/shares/setup/agent.pyw #включаем доступ по RDP на 5000 порт vboxmanage modifyvm «WindowsXP» --vrdeport 5000 --vrde on #настраиваем iptables iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE sysctl -w net.ipv4.ip_forward=1 #Настраиваем tcpdump setcap cap_net_raw, cap_net_admin=eip /usr/sbin/tcpdump getcap /usr/sbin/tcpdump #настраиваем БД Cuckoo mysql -uroot -psupersecretpassw0rd -e «create database cuckoo» mysql -uroot -psupersecretpassw0rd -e «grant all privileges on cuckoo.* to cuckoo@localhost identified by 'cuck00pass'» mysql -u root -psupersecretpassw0rd -e «flush privileges» #Настраиваем конфиг Cuckoo sed -i -e «s@connection =@connection = mysql://cuckoo: cuck00pass\@localhost/cuckoo@» /opt/cuckoo/conf/cuckoo.conf sed -i -e «s@memory_dump = off@memory_dump = on@» /opt/cuckoo/conf/cuckoo.conf sed -i -e «s@default = 120@default = 240@» /opt/cuckoo/conf/cuckoo.conf sed -i -e «s@critical = 600@critical = 1200@» /opt/cuckoo/conf/cuckoo.conf sed -i -e «s@vm_state = 300@vm_state = 600@» /opt/cuckoo/conf/cuckoo.conf sed -i -e «s@delete_memdump = no@delete_memdump = yes@» /opt/cuckoo/conf/memory.conf sed -i -e «s@enabled = no@enabled = yes@» /opt/cuckoo/conf/processing.conf sed -i -e «s@enabled = no@enabled = yes@» /opt/cuckoo/conf/reporting.conf sed -i -e «s@enabled = no@enabled = yes@» /opt/cuckoo/conf/processing.conf sed -i -e «s@mode = gui@mode = headless@» /opt/cuckoo/conf/virtualbox.conf sed -i -e «s@cuckoo1@WindowsXP@» /opt/cuckoo/conf/virtualbox.conf #Настраиваем Веб сервер apt-get install apache2 -y mv /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/000-default.conf.bak cat > /etc/apache2/sites-enabled/cuckoo.conf < ServerName cuckoo.local ServerAdmin webmaster@localhost DocumentRoot /opt/cuckoo/web ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2//access.log combined WSGIScriptAlias / /opt/cuckoo/web/web/wsgi.py Require all granted Alias /static /opt/cuckoo/web/static Require all granted DELIM aptitude install libapache2-mod-wsgi -y mv /opt/cuckoo/web/web/wsgi.py /opt/cuckoo/web/web/wsgi.py.bak cat > /opt/cuckoo/web/web/wsgi.py < /dev/null' >> /etc/rc.local echo 'ifconfig vboxnet0 192.168.56.1' >> /etc/rc.local echo 'exit 0' >> /etc/rc.local #Настраиваем автозагрузку Cuckoo apt-get install supervisor -y cat > /etc/supervisor/conf.d/cuckoo.conf <

[program: cuckoo-api] command=python api.py directory=/opt/cuckoo/utils DELIM supervisord -c /etc/supervisor/supervisord.conf supervisorctl -c /etc/supervisor/supervisord.conf reload #Автозагрузка правил Iptables cat > /etc/network/if-up.d/00-iptables </etc/firewall.conf #Дополнительные сигнатуры PEiD cd /tmp wget http://research.pandasecurity.com/blogs/images/userdb.txt mv userdb.txt /opt/cuckoo/data/peutils/UserDB.TXT #ClamAV сигнатуры для Yara cd /tmp apt-get install clamav -y wget http://db.local.clamav.net/main.cvd wget http://db.local.clamav.net/daily.cvd sigtool -u main.cvd sigtool -u daily.cvd wget https://malwarecookbook.googlecode.com/svn-history/r5/trunk/3/3/clamav_to_yara.py python clamav_to_yara.py -f main.ndb -o main.yar python clamav_to_yara.py -f daily.ndb -o daily.yar #фикс, в ClamAV есть сигнатура EOL_0_94_2, которая конвертируется, но не валидна для Yara RM_EOL=$(sed -n '/EOL_0_94_2/{=}' main.yar) for n in {1…8}; do sed -i »${RM_EOL}d» main.yar; done mkdir /opt/cuckoo/data/yara/clamav mv *.yar /opt/cuckoo/data/yara/clamav/ git clone https://github.com/AlienVault-Labs/AlienVaultLabs.git mv AlienVaultLabs/malware_analysis/ /opt/cuckoo/data/yara/ mv /opt/cuckoo/data/yara/index_binary.yar /opt/cuckoo/data/yara/index_binary.yar.bak cat > /opt/cuckoo/data/yara/index_binary.yar <

sudo -s git clone https://github.com/bostonlink/cuckooforcanari.git cd cuckooforcanari python setup.py install canari create-profile cuckooforcanari Теперь необходимо импортировать в Matlego конфиг cuckoo: Кликаем на значок программы в левом верхнем углу → import → Import Configuration и выбираем из папки, загруженной с github-а конфигурацию: Ипортируем всё:

Готово, теперь открываем конфигурационный файл, вписываем хост, порт и папку, куда вы будете складывать вредоносное ПО:

vim ~/.canari/cuckooforcanari.conf Готово, теперь в программе создаём новый график, перетаскиваем на график иконку Cuckoo Malware Sample, переименовываем файл в название вашего вируса и загружаем его через Submit File For Analisys: После загрузки вы увидите номер задания:

По завершении сканирования, вы сможете получать любые данные в виде графиков:

Подробнее об этом можете посмотреть в офицальном видео, от разработчика:

[embedded content]

Ещё один бонус, книга, которую я нашёл в сети, хороший гайд по использованию Cuckoo Sandbox для анализа вредоносных файлов.

И если вы используете на работе антивирус Symantec Endpoint Protection 12.1, то можете воспользоваться консольной утилитой под Windows SEPQuarantineTool.zip которая официально не поддерживается Symantec-ом, но ссылку на неё я нашёл в их саппорте. Этой утилитой можно вытаскивать и восстанавливать файлы с карантина, через curl для Windows выгружать файлы на сервер для сканирования, используя REST API и той же утилитой класть файлы обратно на карантин. Таким образом автоматизировав анализ угроз и составив чёрные списки сайтов и серверов, куда ломятся вирусы.

В заключении хочу сказать, что этот инструмент помог выполнить все поставленные задачи, а логи и вредоносные файлы того хакера, который упоминался в самом начале статьи теперь анализируются буквально в считанные минуты и позволяют понять всю картину работы используемого хакером вредоносного ПО:

Спасибо за внимание.

Список использованных источников docs.cuckoosandbox.orgxakep.ru/articles/57409/lanswer.blogspot.ru/2012/11/add-cucksandbox-to-ubuntu-service.htmlreverselab.info/page/cuckoo-sandboxwww.alienvault.com/blogs/tag/yarawww.securitylab.ru/analytics/441524.phpwww.modern.ie/ru-ru/www.aldeid.com/wiki/PEiDblog.prowling.nu/2014/08/cuckoo-sandbox-django-interface-with.htmlgithub.com/conix-security/zer0m0ngithub.com/bostonlink/cuckooforcanarisanti-bassett.blogspot.ru/2013/01/installing-cuckoo-sandbox-on-virtualbox.html

© Habrahabr.ru