- PVSM.RU - https://www.pvsm.ru -
Месяц назад портал на моей новой работе был взломан. Руководство задалось вопросом «Как?». В ходе недолгих поисков и анализу подключений к серверам, был найден ПК сотрудника, с которого устанавливалось подключение примерно в то самое время. Сотрудник ничего о взломе не знал, но в ходе беседы вспомнил один случай, ему незадолго до взлома пришёл документ от «сотрудника фирмы», который не открылся. Файл был в формате exe, с этого и началась вся история.
Начальство дирекции поставило задачу проанализировать файл и понять, что он делает и какие данные могли уйти злоумышленнику. С темой анализа вредоносных файлов я раньше не сталкивался, и самым логичным делом было найти немного информации в гугле.
За несколько дней я нашёл и прочёл огромное количество мануалов по анализу вредоносного ПО, почти все мануалы предлагали проанализировать ПО вручную, с помощью песочниц и разных утилит, но самым простым и быстрым из всех способов проанализировать вирус оказался malwr.com [1] – сервис автоматического анализа файла в песочнице. Зарегистрировался, загрузил вирус, встал «в очередь» и стал ждать, лишь спустя сутки на главной странице появилась новость:
24-го июля днём, сервис прекратил свою работу на неопределённое время в связи с увеличивающейся нагрузкой.
Посмотрев страницы сайта и описание, я наткнулся на упоминание об используемой платформе анализа – Cuckoo Sandbox — и решил узнать о программе побольше.
Cuckoo Sandbox [2] — система для автоматического исследования вредоносного ПО, эксплоитов, вредоносных скриптов, документов, архивов и ссылок. Система способна проверять документы pdf, doc, xls, rtf, скрипты Python, JS, DLL библиотеки, бинарники, jar и многое другое.
В специально подготовленной виртуальной системе устанавливается Python 2.7, добавляется на автозагрузку агент Cuckoo, который будет взаимодействовать с песочницей, специальным образом настраиваются интерфейсы сети, для перехвата и дальнейшего анализа сетевого трафика. После всех манипуляций делается снимок файловой системы, он же Snapshot. Песочница загружает тестируемый файл, определяет его тип и в соответствии с типом файла производит необходимые манипуляции, все изменения внутри песочницы фиксируются в отчёт. После работы система восстанавливает снапшот и виртуальная система возвращается к своему исходному состоянию.
Cuckoo Sandbox способна на:
Подогревая интерес публики, выложу небольшой скрин тех сигнатур, что песочница определила у одного файла, приложенного к спам письму:
Согласитесь, это даёт гораздо больше информации о любом файле, нежели классическое антивирусное срабатывание «Trojan.Gen» (можно считать это «камнем в огород» Symantec).
Cuckoo Sandbox неплохо задокументирована [3] и её установка [4] в том числе, на некоторых сайтах выложены инструкции по её установке, но в данный момент ни одна инструкция не работает ровно так, как написано. В ходе настройки я столкнулся с немалым количеством проблем, после чего решил написать сюда полный и актуальный гайд по установке и настройке, со всеми нюансами, дополнениями и модификациями. Для самых ленивых я подготовил скрипт, который настроит и установит песочницу автоматически, приступим.
Вся последующая установка проводилась на
Примечание: если вы решили попробовать собрать песочницу на том же
Ubuntu выбран по рекомендации разработчиков, как система, на которой непосредственно и тестировалась песочница.
План установки будет выглядеть следующим образом:
Если вам лень делать это самостоятельно или читать, переходите сразу к пункту Готовый скрипт [14]. Прошу заметить, скрипт тестировался и собирался только под 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 – веб интерфейс работать не будет.
(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 – инструмент, помогающий вирусным аналитикам опознавать и классифицировать примеры вредоносных программ)
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 — фреймворк на Python, созданный для изучения дампов памяти операционной системы)
add-apt-repository ppa:pi-rho/security
apt-get update
apt-get install volatility
Примечание: Не собирайте пакет из исходников (как описано в некоторых мануалах по установке 2012-2013 годов), ставьте из репо как в этой статье, иначе web ui не будет работать, собранный Volatility из любых источников и любой версии ломает выгрузку отчётов в MongoDB (без Mongo новый веб интерфейс не заработает), с версией из репозитория такой проблемы нет.
Сначала добавим пользователя:
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 community [16]
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
memory_dump = on
Настраиваем подключение к бд:
connection = mysql://cuckoo:cuck00pass@localhost/cuckoo
Сервер слабый, поэтому увеличиваем временные лимиты:
default = 240
critical = 1200
vm_state = 600
delete_memdump = yes
memory = yes
Примечание: в параметр key можете вписать собственный API ключ сервиса virustotal.com [17]
mode = headless
Меняем названия виртуальной машины с cuckoo1 на WindowsXP:
machines = WindowsXP
[WindowsXP]
label = WindowsXP
[mongodb]
enabled = yes
На этом настройка Cuckoo закончена, теперь приступим к 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 необходимо.
После установки перезагружаемся.
Настаиваем гостевую ОС
На этом установка гостевой ОС закончена.
Делаем снапшот (не выключая гостевую ОС)
vboxmanage snapshot "WindowsXP" take "WindowsXPSnap01" --pause
И выключаем:
vboxmanage controlvm "WindowsXP" poweroff
У Cuckoo Sandbox есть 2 веб интерфейса, новый и старый. Тот что постарее менее информативен, имеет меньше возможностей и гораздо менее удобен, чем новый:
Старый интерфейс:
Новый интерфейс:
Старый интерфейс поднимается без БД, без 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 следующего содержания:
<VirtualHost *:80>
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
<Directory /opt/cuckoo/web/web>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /opt/cuckoo/web/static
<Directory /opt/cuckoo/web/static/>
Require all granted
</Directory>
</VirtualHost>
В файле /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
apt-get install iptables-persistent
Готово, теперь после перезагрузки все службы запустятся и всё будет работать.
Установим новую базу сигнатур, в новой базе их в 2 раза больше:
cd /tmp
wget http://research.pandasecurity.com/blogs/images/userdb.txt
mv userdb.txt /opt/cuckoo/data/peutils/UserDB.TXT
Примечание: при попытке загрузки скрипта конвертации правил 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"
Любой вредоносный файл может попытаться перед выполнением проверить наличие отладчиков или виртуальной среды, результат будет неутешителен. Вот что показывает тест Paranoid Fish [24] при загрузке его исполняемого файла на проверку:
Это можно легко поправить с помощью 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
Запустим проверку ещё раз:
Как и обещал, выкладываю готовый скрипт. Он автоматически настроит всё, кроме гостевой ОС. После того, как скрипт отработает, вам нужно будет вернуться на пункт по настройке гостевой ОС [25] и сконфигурировать её.
#!/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 <<DELIM
<VirtualHost *:80>
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
<Directory /opt/cuckoo/web/web>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /opt/cuckoo/web/static
<Directory /opt/cuckoo/web/static/>
Require all granted
</Directory>
</VirtualHost>
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 <<DELIM
import os, sys
sys.path.append('/opt/cuckoo')
sys.path.append('/opt/cuckoo/web')
os.chdir('/opt/cuckoo/web/')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
DELIM
chown -R cuckoo:cuckoo /opt/cuckoo/
#Настраиваем автозагрузку интерфейса vboxnet0
sed -i -e "s@exit 0@@" /etc/rc.local
echo 'VBoxManage list vms > /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 <<DELIM
[program:cuckoo]
command=python cuckoo.py
directory=/opt/cuckoo
[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 <<DELIM
#!/bin/sh
iptables-restore < /etc/firewall.conf
DELIM
iptables-save >/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 <<DELIM
include "signatures/embedded.yar"
include "signatures/vmdetect.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"
DELIM
#Zer0m0n
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/
В качестве бонуса я выложу инструкцию по интеграции Cuckoo Sandbox с программой Maltego [26].
Интегрировать систему мы будем с REST API [27] сервисом песочницы, который запускается у нас на порту 8090.
Я работаю на макинтоше и следующие действия проводил на mac os 10.9.4, но на любой Linux системе всё точно так же должно устанавливаться и работать без проблем:
Для начала загрузим с сайта Maltego и распакуем её в папку приложения.
После откроем программу:
Она предложит войти или зарегистрироваться, регистрируемся, логинимся(с капчей не возитесь, введите что угодно, она не работает), после загружаем и устанавливаем файлы, необходимые для интеграции песочницы с Maltego с репозитория разработчика:
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:
После загрузки вы увидите номер задания:
По завершении сканирования, вы сможете получать любые данные в виде графиков:
Подробнее об этом можете посмотреть в офицальном видео, от разработчика:
Ещё один бонус, книга, которую я нашёл в сети [28], хороший гайд по использованию Cuckoo Sandbox для анализа вредоносных файлов.
И если вы используете на работе антивирус Symantec Endpoint Protection 12.1, то можете воспользоваться консольной утилитой под Windows SEPQuarantineTool.zip [29] которая официально не поддерживается Symantec-ом, но ссылку на неё я нашёл в их саппорте [30]. Этой утилитой можно вытаскивать и восстанавливать файлы с карантина, через curl для Windows [31] выгружать файлы на сервер для сканирования, используя REST API [27] и той же утилитой класть файлы обратно на карантин. Таким образом автоматизировав анализ угроз и составив чёрные списки сайтов и серверов, куда ломятся вирусы.
В заключении хочу сказать, что этот инструмент помог выполнить все поставленные задачи, а логи и вредоносные файлы того хакера, который упоминался в самом начале статьи теперь анализируются буквально в считанные минуты и позволяют понять всю картину работы используемого хакером вредоносного ПО:
Спасибо за внимание.
docs.cuckoosandbox.org [32]
xakep.ru/articles/57409/ [33]
lanswer.blogspot.ru/2012/11/add-cucksandbox-to-ubuntu-service.html [34]
reverselab.info/page/cuckoo-sandbox [35]
www.alienvault.com/blogs/tag/yara [36]
www.securitylab.ru/analytics/441524.php [37]
www.modern.ie/ru-ru/ [38]
www.aldeid.com/wiki/PEiD [39]
blog.prowling.nu/2014/08/cuckoo-sandbox-django-interface-with.html [40]
github.com/conix-security/zer0m0n [41]
github.com/bostonlink/cuckooforcanari [42]
santi-bassett.blogspot.ru/2013/01/installing-cuckoo-sandbox-on-virtualbox.html [43]
Автор: Libert
Источник [44]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/bezopasnost/68249
Ссылки в тексте:
[1] malwr.com: https://malwr.com
[2] Cuckoo Sandbox: http://www.cuckoosandbox.org/
[3] неплохо задокументирована: http://docs.cuckoosandbox.org/en/latest/
[4] её установка: http://docs.cuckoosandbox.org/en/latest/installation/
[5] VPS: https://www.reg.ru/?rlink=reflink-717
[6] Установка зависимостей и пакетов, необходимых утилитам и песочнице: #1
[7] Установка утилит и Cuckoo Sandbox: #2
[8] Настройка Cuckoo Sandbox: #3
[9] Установка и настройка Virtualbox: #4
[10] Установка или загрузка виртуальной системы, её настройка: #5
[11] Веб интерфейс: #6
[12] Автозагрузка: #7
[13] Дополнительные «плюшки» и возможности Cuckoo: #8
[14] Готовый скрипт установки и настройки Cuckoo: #9
[15] Бонус: #10
[16] сигнатуры Cuckoo community: https://github.com/cuckoobox/community
[17] virustotal.com: http://virustotal.com
[18] Загрузить её с сайта: http://www.modern.ie
[19] http://python.org/download/ : http://python.org/download/
[20] http://www.activestate.com/activepython: http://www.activestate.com/activepython
[21] http://www.pythonware.com/products/pil/: http://www.pythonware.com/products/pil/
[22] http://www.oldapps.com : http://www.oldapps.com
[23] APT: http://habrahabr.ru/company/pt/blog/142024/
[24] Paranoid Fish: https://github.com/a0rtega/pafish
[25] пункт по настройке гостевой ОС: #script
[26] Maltego: https://www.paterva.com/web6/products/maltego.php
[27] REST API: http://cuckoo.readthedocs.org/en/latest/usage/api/
[28] книга, которую я нашёл в сети: http://pdf.th7.cn/down/files/1407/Cuckoo%20Malware%20Analysis.pdf
[29] SEPQuarantineTool.zip: http://kbdownload.symantec.com/resources/sites/BUSINESS/content/live/TECHNICAL_SOLUTION/150000/TECH150607/en_US/SEPQuarantineTool.zip?__gda__=1408755280_1fd18f0d7e6e37f1aafa5e67ca8d995c
[30] в их саппорте: http://www.symantec.com/business/support/index?page=content&id=TECH150607
[31] curl для Windows: http://curl.haxx.se/download.html
[32] docs.cuckoosandbox.org: http://docs.cuckoosandbox.org
[33] xakep.ru/articles/57409/: http://xakep.ru/articles/57409/
[34] lanswer.blogspot.ru/2012/11/add-cucksandbox-to-ubuntu-service.html: http://lanswer.blogspot.ru/2012/11/add-cucksandbox-to-ubuntu-service.html
[35] reverselab.info/page/cuckoo-sandbox: http://reverselab.info/page/cuckoo-sandbox
[36] www.alienvault.com/blogs/tag/yara: http://www.alienvault.com/blogs/tag/yara
[37] www.securitylab.ru/analytics/441524.php: http://www.securitylab.ru/analytics/441524.php
[38] www.modern.ie/ru-ru/: https://www.modern.ie/ru-ru/
[39] www.aldeid.com/wiki/PEiD: http://www.aldeid.com/wiki/PEiD
[40] blog.prowling.nu/2014/08/cuckoo-sandbox-django-interface-with.html: http://blog.prowling.nu/2014/08/cuckoo-sandbox-django-interface-with.html
[41] github.com/conix-security/zer0m0n: https://github.com/conix-security/zer0m0n
[42] github.com/bostonlink/cuckooforcanari: https://github.com/bostonlink/cuckooforcanari
[43] santi-bassett.blogspot.ru/2013/01/installing-cuckoo-sandbox-on-virtualbox.html: http://santi-bassett.blogspot.ru/2013/01/installing-cuckoo-sandbox-on-virtualbox.html
[44] Источник: http://habrahabr.ru/post/234467/
Нажмите здесь для печати.