Skip to content

Instantly share code, notes, and snippets.

@ESGuardian
Last active May 8, 2017 04:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ESGuardian/2f11f265eaf27eca8471 to your computer and use it in GitHub Desktop.
Save ESGuardian/2f11f265eaf27eca8471 to your computer and use it in GitHub Desktop.

Ку-ку, товарищи! И еще раз ку-ку!
-----------------------------------------
Кое-какие изменения
Я добавил скрипт для установки модифицированной cuckoo от Брэда Шпенглера (Brad Spengler)
https://github.com/brad-accuvant/cuckoo-modified
Компания Accuvant теперь называется Optiv. Поэтму модифицированную Кукушку теперь будем называть cuckoo-1.3-optiv. Разница между "стабильной" Кукушкой и версией Брэда, как между жигулями и тоётой. В том числе в стабильности.
В своем новом скрипте я тоже кое-что поменял. Функциональная разница в том, что теперь после импорта и настройки виртуалки, скрипт ее запускает и становится в позу ожидания нажатия Enter. Это сделано для того, чтобы можно было спокойно подключиться к виртуалке по rdp (порт 7001) и убедиться, что всё с ней в порядке и она нормально работает, а также настроить что-нибудь на машине дополнительно или установить еще какие-нибудь компоненты. Это полезно когда вы переносите виртуалку с одного типа хадваре на другой (например, другие процессоры), ей может понадобиться устновка драйверов и перезагрузка.
Соответственно секция настройки iptables в скрипте перенесена повыше, до запуска виртуалки, чтобы виртуалка могла нормально выйти в Интернет и скачать что-нибудь нужное.
А еще я прямо в скрипте теперь правлю ошибку в модуле mashinery.py о которой написано ниже.
-----------------------------------------
Как понятно, речь пойдет о Cuckoo, известной как "бесплатная песочница". Написано о ней много. Ну, и я свои пять копеек вставлю. Собственно эту статью можно считать свежим руководством по установке Cuckoo. И она сопровождается скриптом для автоматической установки и конфигурации песочницы, после запуска которого она точно будет работать.
Опять же это не первая такая статья. Лично я пользовался руководством размещенным на Хабре http://habrahabr.ru/post/234467/ пользователем Libert, за что ему РЕСПЕКТ и УВАЖУХА. Я не знаю является ли он первоначальным автором этого текста. Я встречал в сети английский текст (http://iteamdevelopers.org/cuckoo-sandbox-automated-analysis-laboratory-for-malicious-files-2/), принадлежащий некоему Muhammad Abdullah и совпадающий с текстом Libert практически дословно (с точностью перевода английский-русский). Этот текст является подмножеством статьи Libert, но опубликован позже. Никаких ссылок и указаний на чье-либо авторство публикаторы не делали, хотя тексты, ну очень сильно совпадают (может это один автор под разными никами). Возможно есть какой-то неизвестный мне автор, которому следует высказать благодарность. Всем спасибо.
Прежде чем устанавливать Кукушку, нужно кое что понять. Кукушка - это автоматический анализатор, который мало что находит и выдает кучу мусорной информации. Пользуясь таким анализатором вы будете иметь множество ложных сигналов и запросто не заметите что-то действительно опасное. Верить ей нельзя, как и нормальной кукушке в лесу. Так зачем она нужна? Затем, что это еще один способ визуализации зловредов и способ довольно простой и бесплатный. "Стабильная" версия Кукушки вовсе таковой не является, в ней куча багов. Я бы сказал, что это основа, на которой вы можете начать строить свою собственную версию Кукушки. Вы также можете "присоединиться" к кому-нибудь из существующих разработчиков и пользоваться его версией. Например, я читал хорошие отзывы о версии, которую ведет Brad Spengler здесь https://github.com/brad-accuvant/cuckoo-modified. Эта версия известна как Cuckoo 1.3-Accuvant. Accuvant - это компания, которая специализируется на информационной безопасности.
Я пока не занимался доработками Кукушки, но займусь непременно. Штука полезная. Пока я просто модифицировал и отладил установочный скрипт, который предложил Libert. В этой статье я описываю, какие сделаны изменения и зачем.
Начнем с вопроса о виртуализации. Изначально Кукушка сделана для установки на физической машине в среде Linux. Создатели проекта рекомендуют Ubuntu. Я ее почему-то терпеть не могу. Мой скрипт написан для Debian и отлажен на Debian 8 (Jessie). Сама операционная система должна быть установлена в минимальной конфигурации + системные утилиты + SSH сервер. Больше ничего не надо. Я использовал "сетевую установку".
Для работы машин, внутри которых будут запускаться вирусы, требуется работающая в Linux среда виртуализации. Кукушка поддерживает разные. Нужна такая, которая поддерживает снапшоты с машин в running state. Бесплатный выбор сразу сокращается. Я остановился на Oracle Virtualbox. KVM работает быстрее, но кажется единственный формат виртуального диска, с которым поддерживаются снапшоты, это qcow2. Хреновый формат. В нем под машину с диском 20ГБ выделяется именно 20ГБ. Так безумно расходовать маленький SSD своего ноутбука я не хочу. KVM отпала. Итак, выбор "внутренней виртуализации" ограничился Virtualbox.
Почему я назвал эту виртуализацию "внутренней"? Потому что я ставлю саму Кукушку на виртуальную машину, а не на физическую. В наше время физические машины - редкость. Дома я использую свой ноутбук Acer Aspire E15 с процессором AMD E2-6110 (дешевле не найдете), замечательный четырех-ядерный 64-х разрядный процессор а-ля celeron с поддержкой виртуализаии. Операционка Windows 10 (ранее 8.1). На работе полностью виртуальный ЦОД на гипервизорах ESXi. Там "чистого" железа просто нет. Что касается "внешней" виртуализации, ее следует выбирать, исходя из двух соображений. Во-первых скорости совместной работы "внутренней" и "внешней" виртуальных систем. Во-вторых, способности "внешней" системы передать "внутренней" параметры "хардверной" виртуализации от физического хоста.
Последний вопрос очень важен. Если вы посмотрите исходный текст, предложенный Libert, в нем специально отключается поддержка харверной виртуализации при настройке "внутренней" виртуальной машины:

vboxmanage modifyvm "WindowsXP" --nic1 hostonly --hostonlyadapter1 vboxnet0 --nicpromisc1 allow-all --hwvirtex off --vtxvpid off

В своем скрипте я поступаю ровно наоборот:

vboxmanage modifyvm "Windows7" --nic1 hostonly --hostonlyadapter1 vboxnet0 --nicpromisc1 allow-all --hwvirtex on --vtxvpid on

И это очень важно. Различие WindowsXP и Windows7 здесь как раз не имеет никакого значения. Дело в том, что если не включена поддержка хардверной виртуализации, то virtualbox не может запустить машину восстановленную из снапшота, сделанного в running state. То есть вы можете запустить виртуалку, и она будет нормально работать. Вы можете сделать снапшот с работающей машины, и он прекрасно сделается без ошибок, но если вы восстановите состояние машины из снапшота, она больше не запустится. Это известный баг virtualbox, который кочует из версии в версию, и его постоянно обещают как-нибудь поправить. Но, поскольку ему уже много лет, правильнее считать его не багом, а фичей.
Что касается скорости работы машин, следует понимать, что виртуалка внутри виртуалки - это тормоза. Но, в некоторых случаях, это мощные тормоза. Например, если в качестве "внешней" виртуализации выбрать тот же Virtualbox, работать вы просто не сможете. А вот если взять VMware player, все будет почти как на физическом хосте. Я использовал его для внешней машины на своем ноутбуке. На работе у меня ESXi. С ним тоже не все просто.
Не всякий ESX умеет прокидывать внутрь параметры хардверной виртуализации. В терминах ESX это называется VHV (Virtualized Hardware Virtualization). Для этого нужен ESX с поддержкой Virtual Hardware Version 9 или более поздней. В моей версии скрипта установки предварительно проверяется наличие в системе минимум двух виртуальных процессоров для которых установлены флаги vmx или svm (это виртуализация Intel и AMD соответственно). Если их нет, установка не производится.
Внимательные читатели, особенно те, кто читает не для праздного любопытства, могут обратить внимание на то, что я использую более новые версии практически всех необходимых приложений, чем использовал Libert, у которого я содрал исходный скрипт. Но вот версии cybox и maec те же самые. Новые версии существуют, но "стабильная" Кукушка об этом не знает. Она будет искать именно эти версии и, если их нет maec работать не будет.
Еще одно важное отличие оригинального скрипта от моего. Libert создает пустую заготовку для WindowsXP, в которую предлагает потом залить систему с дистрибутива и настроить ее. Я импортирую готовую виртуальную машину из файла win7-cuck.ova, которую я создал и настроил отдельно, в среде Virtualbox на своем ноутбуке. Всё необходимое для работы Кукушки с этой машиной я устанавливаю и настраиваю заранее, включая агент Кукушки agent.py, который вы можете извлечь из архива Кукушки (в скрипте есть адрес, с которого он грузится). Что именно необходимо прекрасно описано в статье Libert. Перед тем, как закончить подготовку машины и экспортировать ее в файл win7-cuck.ova, обязательно проверьте что агент запускается при старте машины, что сетевой адаптер настроен на фиксированные адреса 192.168.56.101, mask 255.255.255.0, gateway 192.168.56.1 dns лучше указать гугловский 8.8.8.8 для универсальности конфигурации, отключите от машины все использовавшиеся при установке внешние диски и общие папки. Обязательно убедитесь, что отключены уведомления UAC и автообновления не только системы, но и приложений вроде Flash, Acrobat Reader, Java, Office, Chrome и всего, что вы туда понаставили. Это не критично, но Кукушка будет регистрировать и включать в свои отчеты в том числе действия этих обновлялок. Люшний мусор вам не нужен.
Используйте старую версию java-машины или вам придется вручную править тот фрагмент кода Кукушки, в котором она ищет java-машину. Я остановился на версии 6.45.
Перед запуском скрипта убедитесь, что у вас есть:
Экспортированный образ виртуальной машины win7-cuck.ova
Установлены программы Putty и WinSCP, вы знаете зачем они нужны и умеете ими пользоваться.
Во время установки Debian вы должны выбрать создание пользователя cuckoo, чтобы создался его домашний каталог /home/cuckoo. Вы должны выбрать в качестве дополнительных пакетов "системные утилиты" и "SSH сервер". Остальное не нужно, но графику тоже можно включить, это ни чему не противоречит. Машина Dedian должна иметь не менее 2ГБ оперативной памяти, не менее 2-х процессоров и не менее 30ГБ на виртуальном диске. Должен быть включен "проброс" гипервизором хардверной виртуализации внутрь гостя.
После установки Debian необходими зайти на консоль и разрешить удаленное подключение рутом по SSH.
Для этого найти в /etc/ssh/sshd_config строчку

PermitRootLogin without-password
и заменить на
PermitRootLogin yes
После чего сделать /etc/init.d/ssh restart.
Затем надо пользуя WinSCP перенести в /home/cuckoo файлы win7-cuck.ova и debian_install_cuckoo.sh, на последний файл дать права execute.
Теперь можно подключиться Putty к консоли рутом и сделать:

cd /home/cuckoo
./debian_install_cuckoo.sh

Всё. Ждем завершения скрипта. Перегружаем машину и цепляемся на http://адрес_внешней_виртуалки

И кое-что еще... Есть маленький баг в cuckoo/modules/machinery/virtualbox.py

def dump_memory(self, label, path):
        """Takes a memory dump.
        @param path: path to where to store the memory dump.
        """
        try:
            subprocess.call([self.options.virtualbox.path, "debugvm",
                             label, "dumpguestcore", "--filename", path],
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
            log.info("Successfully generated memory dump for virtual machine "
                     "with label %s to path %s", label, path)
        except OSError as e:
            raise CuckooMachineError("VBoxManage failed to take a memory "
                                     "dump of the machine with label %s: %s" %
                                     (label, e))
  

Нет такой подкоманды dumpguestcore в команде vboxmanage debugvm. Есть команда dumpvmcore. Эту строчку надо поправить, иначе дамп для Volatility создаваться не будет. Но при этом в лог будет записываться Successfully generated memory dump for virtual machine ... И вы будете в недоумении. Это потому, что перцы не анализируют ответ от vboxmanage, а смотрят только наличие OSError, которого нету, ведь команда не выполнялась :)

#!/bin/bash
# esguardian@outlook.com
# install cuckoo-1.3-optiv on debian jessie_amd64
#
s=$(egrep -c '(vmx|svm)' /proc/cpuinfo)
if [ $s -lt 2 ];
then
echo "You must have at least 2 processors with hardware virtualization support\nI found $s\nFirst you must check your BIOS or hypervisor config.\nNow I stop.\nSee you later..."
return;
else
echo "Found $s processors with hardware virtualization.\nContinue\n"
fi
echo "End of test. Now starting ..."
#-------------------------------------------#
# Устанавливаем Cuckoo Sandbox
# Тестировалось на Debian 8 (jessie_amd64)
#-------------------------------------------#
#Установим зависимости
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-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 MySeCRretpaSSw0rd'
debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password_again password MySeCRretpaSSw0rd'
apt-get install mariadb-server -y
apt-get install python-mysqldb -y
apt-get install swig libssl-dev -y
apt-get install clamav-daemon python-geoip geoip-database -y
pip install django
pip install py3compat
pip install pygal
pip install m2crypto
pip install dnspython
#pip install clamd
pip install django-ratelimit
pip install pycrypto
pip install rarfile
pip install jsbeautifier
apt-get install wkhtmltopdf xvfb xfonts-100dpi -y
pip install lxml
pip install cybox==2.1.0.9
pip install maec==4.1.0.11
pip install pymongo
pip install --pre pype32
#
#Установим 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/v3.4.0.tar.gz
tar xzf v3.4.0.tar.gz
cd yara-3.4.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
#
#
cd /opt
mkdir -p /opt/cuckoo/
cd /opt/cuckoo
git clone https://github.com/brad-accuvant/cuckoo-modified .
#Устанавливаем сигнатуры для модифицированной Cuckoo
cd /opt/cuckoo
./utils/community.py --signatures --force
#Ставим Zer0m0n
cd /tmp
git clone https://github.com/zer0box/zer0m0n
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/
#-------------------------------------------#
# Устанавливаем и настраиваем Virtualbox
#-------------------------------------------#
cd /tmp
wget http://download.virtualbox.org/virtualbox/5.0.0/virtualbox-5.0_5.0.0-101573~Debian~jessie_amd64.deb
dpkg -i virtualbox-5.0_5.0.0-101573~Debian~jessie_amd64.deb
apt-get update
apt-get install -f -y
wget http://download.virtualbox.org/virtualbox/5.0.0/Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack
vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack
cd /home/cuckoo
wget http://download.virtualbox.org/virtualbox/5.0.0/VBoxGuestAdditions_5.0.0.iso
#конфигурируем Виртуальную машину
cd /tmp
vboxmanage hostonlyif create
vboxmanage import /home/cuckoo/win7-cuck.ova --vsys 0 --vmname Windows7
vboxmanage modifyvm "Windows7" --nic1 hostonly --hostonlyadapter1 vboxnet0 --nicpromisc1 allow-all --hwvirtex on --vtxvpid on
#Настраиваем общие папки
mkdir -p /opt/cuckoo/shares/setup
mkdir -p /opt/cuckoo/shares/Windows7
vboxmanage sharedfolder remove "Windows7" --name "Windows7"
vboxmanage sharedfolder remove "Windows7" --name setup
vboxmanage sharedfolder add "Windows7" --name "Windows7" --hostpath /opt/cuckoo/shares/Windows7 --automount
vboxmanage sharedfolder add "Windows7" --name setup --hostpath /opt/cuckoo/shares/setup --automount --readonly
vboxmanage modifyvm "Windows7" --nictrace1 on --nictracefile1 /opt/cuckoo/shares/Windows7/dump.pcap
cp /opt/cuckoo/agent/agent.py /opt/cuckoo/shares/setup/agent.pyw
#включаем доступ по RDP
vboxmanage modifyvm "Windows7" --vrde on --vrdeport 7001
vboxmanage startvm "Windows7" --type headless
#настраиваем 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
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
#Автозагрузка правил Iptables
mkdir -p /etc/iptables/
iptables-save > /etc/iptables/rules.v4
echo 'post-up /sbin/iptables-restore < /etc/iptables/rules.v4' >> /etc/network/interfaces
#
#Делаем паузу для проверки и настройки виртуальной машины
#
read -p "Use RDP:7001 to connect VM and check configuration (may be update and reboot needed) Than press [ENTER] to continue,...: "
vboxmanage snapshot "Windows7" take "Windows7Snap01" --pause
vboxmanage controlvm "Windows7" poweroff
#
#
#Настраиваем tcpdump
apt-get install libcap2-bin -y
apt-get install tcpdump -y
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
getcap /usr/sbin/tcpdump
#настраиваем БД Cuckoo
mysql -uroot -pMySeCRretpaSSw0rd -e "create database cuckoo"
mysql -uroot -pMySeCRretpaSSw0rd -e "grant all privileges on cuckoo.* to cuckoo@localhost identified by 'cuck00pass'"
mysql -u root -pMySeCRretpaSSw0rd -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@delete_memdump = no@delete_memdump = yes@" /opt/cuckoo/conf/memory.conf
# У меня Win7SP1x86. Если у вас по другому укажите правильный профиль для Volatility
sed -i -e "s@guest_profile = WinXPSP2x86@guest_profile = Win7SP1x86@" /opt/cuckoo/conf/memory.conf
# Настраиваем процессинг и репортинг
sed -i -e "1,/suricata/ s@enabled = no@enabled = yes@" /opt/cuckoo/conf/processing.conf
sed -i -e "1,/reportpdf/ s@enabled = no@enabled = yes@" /opt/cuckoo/conf/reporting.conf
sed -i -e "/maec41/,/elasticsearchdb/ s@enabled = no@enabled = yes@" /opt/cuckoo/conf/reporting.conf
# Настраиваем Virtualbox
sed -i -e "s@mode = gui@mode = headless@" /opt/cuckoo/conf/virtualbox.conf
sed -i -e "s@cuckoo1@Windows7@" /opt/cuckoo/conf/virtualbox.conf
sed -i -e "s@# snapshot = Snapshot1@snapshot = Windows7Snap01@" /opt/cuckoo/conf/virtualbox.conf
# Вносим изменения в mashinery.py там баг с неправильной командой для vboxmanage
sed -i -e "s@dumpguestcore@dumpvmcore@" /opt/cuckoo/modules/machinery/virtualbox.py
#Настраиваем Веб сервер
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-optiv.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
apt-get 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
#Настраиваем автозагрузку интерфейса 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
chmod -R 777 /opt/cuckoo/web
#!/bin/bash
# ESguardian@outlook.com
# Это мой вариант скрипта изначально созданного пользователем Хабра Libert
# и опубликованного здесь: http://habrahabr.ru/post/234467/
#
# и возможно вам стоит поменять MySeCRretpaSSw0rd на свой собственный.
#
s=$(egrep -c '(vmx|svm)' /proc/cpuinfo)
if [ $s -lt 2 ];
then
echo "You must have at least 2 processors with hardware virtualization support\nI found $s\nFirst you must check your BIOS or hypervisor config.\nNow I stop.\nSee you later..."
return;
else
echo "Found $s processors with hardware virtualization.\nContinue\n"
fi
echo "End of test. Now starting ..."
#-------------------------------------------#
# Устанавливаем Cuckoo Sandbox
# Тестировалось на Debian 8 (jessie_amd64)
#-------------------------------------------#
#Установим зависимости
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-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 MySeCRretpaSSw0rd'
debconf-set-selections <<< 'mariadb-server-5.5 mysql-server/root_password_again password MySeCRretpaSSw0rd'
apt-get install mariadb-server -y
apt-get install python-mysqldb
#Установим компоненты
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
pip install pydeep
#Установим Yara
cd /tmp
wget https://github.com/plusvic/yara/archive/v3.4.0.tar.gz
tar xzf v3.4.0.tar.gz
cd yara-3.4.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
cd /home
wget http://downloads.cuckoosandbox.org/1.2/cuckoo_1.2.tar.gz
tar xzf cuckoo_1.2.tar.gz
#Устанавливаем сигнатуры Cuckoo (https://github.com/cuckoobox/community)
cd /home/cuckoo
./utils/community.py --signatures --force
#Ставим Zer0m0n
cd /tmp
git clone https://github.com/zer0box/zer0m0n
cd zer0m0n/bin
cp cuckoo.patch /home/cuckoo
cd /home/cuckoo
patch -p1 < ./cuckoo.patch
cp /tmp/zer0m0n/bin/logs_dispatcher.exe /home/cuckoo/analyzer/windows/dll/
cp /tmp/zer0m0n/bin/zer0m0n.sys /home/cuckoo/analyzer/windows/dll/
cp -rf /tmp/zer0m0n/signatures/* /home/cuckoo/modules/signatures/
#Дополнительные сигнатуры PEiD
cd /tmp
wget http://research.pandasecurity.com/blogs/images/userdb.txt
mv userdb.txt /home/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/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 /home/cuckoo/data/yara/clamav
mv *.yar /home/cuckoo/data/yara/clamav/
git clone https://github.com/AlienVault-Labs/AlienVaultLabs.git
mv AlienVaultLabs/malware_analysis/ /home/cuckoo/data/yara/
mv /home/cuckoo/data/yara/index_binary.yar /home/cuckoo/data/yara/index_binary.yar.bak
cat > /home/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
#-------------------------------------------#
# Устанавливаем и настраиваем Virtualbox
#-------------------------------------------#
cd /tmp
wget http://download.virtualbox.org/virtualbox/5.0.0/virtualbox-5.0_5.0.0-101573~Debian~jessie_amd64.deb
dpkg -i virtualbox-5.0_5.0.0-101573~Debian~jessie_amd64.deb
apt-get update
apt-get install -f -y
wget http://download.virtualbox.org/virtualbox/5.0.0/Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack
vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack
cd /home/cuckoo
wget http://download.virtualbox.org/virtualbox/5.0.0/VBoxGuestAdditions_5.0.0.iso
#конфигурируем Виртуальную машину
cd /tmp
vboxmanage hostonlyif create
vboxmanage import /home/cuckoo/win7-cuck.ova --vsys 0 --vmname Windows7
vboxmanage modifyvm "Windows7" --nic1 hostonly --hostonlyadapter1 vboxnet0 --nicpromisc1 allow-all --hwvirtex on --vtxvpid on
#Настраиваем общие папки
mkdir -p /home/cuckoo/shares/setup
mkdir -p /home/cuckoo/shares/Windows7
vboxmanage sharedfolder add "Windows7" --name "Windows7" --hostpath /home/cuckoo/shares/Windows7 --automount
vboxmanage sharedfolder add "Windows7" --name setup --hostpath /home/cuckoo/shares/setup --automount --readonly
vboxmanage modifyvm "Windows7" --nictrace1 on --nictracefile1 /home/cuckoo/shares/Windows7/dump.pcap
cp /home/cuckoo/agent/agent.py /home/cuckoo/shares/setup/agent.pyw
#включаем доступ по RDP
vboxmanage modifyvm "Windows7" --vrde on --vrdeport 7001
vboxmanage startvm "Windows7" --type headless
#делаем паузу, чтобы машина запустилась и приработалась
sleep 180
vboxmanage snapshot "Windows7" take "Windows7Snap01" --pause
vboxmanage controlvm "Windows7" poweroff
#настраиваем 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
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
#Автозагрузка правил Iptables
mkdir -p /etc/iptables/
iptables-save > /etc/iptables/rules.v4
echo 'post-up /sbin/iptables-restore < /etc/iptables/rules.v4' >> /etc/network/interfaces
#Настраиваем tcpdump
apt-get install tcpdump
setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
getcap /usr/sbin/tcpdump
#настраиваем БД Cuckoo
mysql -uroot -pMySeCRretpaSSw0rd -e "create database cuckoo"
mysql -uroot -pMySeCRretpaSSw0rd -e "grant all privileges on cuckoo.* to cuckoo@localhost identified by 'cuck00pass'"
mysql -u root -pMySeCRretpaSSw0rd -e "flush privileges"
#Настраиваем конфиг Cuckoo
sed -i -e "s@connection =@connection = mysql://cuckoo:cuck00pass\@localhost/cuckoo@" /home/cuckoo/conf/cuckoo.conf
sed -i -e "s@memory_dump = off@memory_dump = on@" /home/cuckoo/conf/cuckoo.conf
sed -i -e "s@default = 120@default = 240@" /home/cuckoo/conf/cuckoo.conf
sed -i -e "s@critical = 600@critical = 1200@" /home/cuckoo/conf/cuckoo.conf
sed -i -e "s@vm_state = 300@vm_state = 600@" /home/cuckoo/conf/cuckoo.conf
sed -i -e "s@delete_memdump = no@delete_memdump = yes@" /home/cuckoo/conf/memory.conf
sed -i -e "s@enabled = no@enabled = yes@" /home/cuckoo/conf/processing.conf
sed -i -e "s@enabled = no@enabled = yes@" /home/cuckoo/conf/reporting.conf
sed -i -e "s@enabled = no@enabled = yes@" /home/cuckoo/conf/processing.conf
sed -i -e "s@mode = gui@mode = headless@" /home/cuckoo/conf/virtualbox.conf
sed -i -e "s@cuckoo1@Windows7@" /home/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 /home/cuckoo/web
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2//access.log combined
WSGIScriptAlias / /home/cuckoo/web/web/wsgi.py
<Directory /home/cuckoo/web/web>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static /home/cuckoo/web/static
<Directory /home/cuckoo/web/static/>
Require all granted
</Directory>
</VirtualHost>
DELIM
aptitude install libapache2-mod-wsgi -y
mv /home/cuckoo/web/web/wsgi.py /home/cuckoo/web/web/wsgi.py.bak
cat > /home/cuckoo/web/web/wsgi.py <<DELIM
import os, sys
sys.path.append('/home/cuckoo')
sys.path.append('/home/cuckoo/web')
os.chdir('/home/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 /home/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=/home/cuckoo
[program:cuckoo-api]
command=python api.py
directory=/home/cuckoo/utils
DELIM
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl -c /etc/supervisor/supervisord.conf reload
#Дополнительные сигнатуры PEiD
cd /tmp
wget http://research.pandasecurity.com/blogs/images/userdb.txt
mv userdb.txt /home/cuckoo/data/peutils/UserDB.TXT
usermod -a -G vboxusers cuckoo
chown -R cuckoo:cuckoo /home/cuckoo/
chmod -R 777 /home/cuckoo/web
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment