Automated Malware Analysis
What is Cuckoo?
Cuckoo Sandbox is the leading open source automated malware analysis system. You can throw any suspicious file at it and in a matter of minutes Cuckoo will provide a detailed report outlining the behavior of the file when executed inside a realistic but isolated environment.
Malware is the swiss-army knife of cybercriminals and any other adversary to your corporation or organization.
In these evolving times, detecting and removing malware artifacts is not enough: it’s vitally important to understand how they operate in order to understand the context, the motivations, and the goals of a breach.
Cuckoo Sandbox is free software that automated the task of analyzing any malicious file under Windows, macOS, Linux, and Android.
What can it do?
Cuckoo Sandbox is an advanced, extremely modular, and 100% open source automated malware analysis system with infinite application opportunities. By default it is able to:
- Analyze many different malicious files (executables, office documents, pdf files, emails, etc) as well as malicious websites under Windows, Linux, macOS, and Android virtualized environments.
- Trace API calls and general behavior of the file and distill this into high level information and signatures comprehensible by anyone.
- Dump and analyze network traffic, even when encrypted with SSL/TLS. With native network routing support to drop all traffic or route it through InetSIM, a network interface, or a VPN.
- Perform advanced memory analysis of the infected virtualized system through Volatility as well as on a process memory granularity using YARA.
Due to Cuckoo’s open source nature and extensive modular design one may customize any aspect of the analysis environment, analysis results processing, and reporting stage. Cuckoo provides you all the requirements to easily integrate the sandbox into your existing framework and backend in the way you want, with the format you want, and all of that without licensing requirements.
Read now:
Cuckoo Sandbox 2.0.7 Posted on June 19, 2019
How to deploy Cuckoo Sandbox
Marc Rivero López — @seifreed
Oct 7, 2018 · 7 min read
Cuckoo Sandbox is the best open source alternative to have a malware sandbox system.
That’s the architecture for Cuckoo Sandbox:
For this article, this will be our hardware and software configuration, choose whatever you feel comfortable:
Remember, enable VT-x flag in the BIOS, to run virtualization in the host
- 8 cores
- 16 GB of RAM
- 250 HD
- KVM as a hypervisor
With this hardware configuration, we will be capable to run some VMs in parallel and process enough samples to have a good test of Cuckoo Sandbox.
Single Server or a Distributed setup:
Cuckoo Sandbox allows to configure the sandbox system in two ways:
Depending on your needs, you will have to choose one of both available options to deploy the system.
Preparing the host:
To deploy the host we will have to do the following steps:
- Deploy a naked Ubuntu Server 18.04 LTS, only with SSH installed.
- Update the system
- Create a dedicated user for Cuckoo Sandbox
- Deploy Cuckoo Sandbox
- Configure Guest VMs
- Configure Cuckoo Sandbox
- VMs fine tuning to fight with evasive samples
- Run our first sample
Updating the system:
To deploy the latest packages on your Ubuntu system we will have to run the following one-liner:
sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y && sudo apt autoremove -y
Create a user for Cuckoo Sandbox
As a best practice is better to have a dedicated user for the sandbox, so let’s go to create our user:
We will add the user cuckoo into the sudo group:
Deploy Cuckoo Sandbox
To deploy the sandbox, we will have to install packages in the system.
We will have to add trepositories to our system to deploy all the required packages.
Adding support to MongoDB:
sudo apt-key adv -keyserver keyserver.ubuntu.com -recv-keys 68818C72E52529D4
Adding the repository
echo “deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/development multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
Before installing them, we have to enable the universe and multiverse repository:
We have to add universe multiverse, save the file, and update the system again:
Ubuntu source list after running that operation, we have to install those packages:
sudo apt install git mongodb-org-unstable python python-dev python-pip python-m2crypto libmagic1 swig libvirt-dev upx-ucl libssl-dev wget unzip p7zip-full geoip-database libgeoip-dev libjpeg-dev mono-utils ssdeep libfuzzy-dev exiftool curl openjdk-11-jre-headless xfce4 xfce4-goodies postgresql postgresql-contrib libpq-dev wkhtmltopdf xvfb xfonts-100dpi tcpdump libcap2-bin clamav clamav-daemon clamav-freshclam python-pil suricata libboost-all-dev qemu-kvm libvirt-clients libvirt-daemon virt-manager htop tmux gdebi-core tor privoxy libssl-dev libjansson-dev libmagic-dev automake apparmor-utils -y
We will install using pip, some required packages too:
sudo -H pip install psycopg2 distorm3 pycrypto openpyxl
sudo -H pip install pyopenssl -U
With the dependencies, we will install XFCE as a Desktop system too :-)!
After install all the dependencies is necessary to add our user to the KVM and libvirt group:
sudo usermod -a -G kvm $USER && sudo usermod -a -G libvirt $USER
To enable packet capture in our VMs, we have to apply some changes in our system:
sudo groupadd pcap
sudo usermod -a -G pcap cuckoo
sudo chgrp pcap /usr/sbin/tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
We have all the dependencies in place, so we can install Cuckoo Sandbox with a single pip command:
Note: To check the latest version, we can visit this link
Yeah! Cuckoo is installed in our system!
Creating a database for Cuckoo Sandbox
We installed PostgreSQL during our deploy, so now we will create a database for our Cuckoo Node.
To enter into the psql shell:
Create a user into the DB:
CREATE USER cuckoo WITH PASSWORD ‘somePassword’;
Create the database cuckoo:
Grant privileges on the database for the user cuckoo:
GRANT ALL PRIVILEGES ON DATABASE cuckoo to cuckoo;
Adding YARA support:
With the Cuckoo install we already deploy yara-python, but let’s go to add YARA support to the system, we have to follow these steps to deploy the latest yara stable package:
wget https://github.com/VirusTotal/yara/archive/v3.8.1.zip && unzip v* && cd yara* && ./bootstrap.sh && ./configure — enable-cuckoo — enable-magic — enable-dotnet && make && sudo make install
Cuckoo Sandbox first run
We have to create the default files for Cuckoo, so in our terminal we have to type:
Cuckoo will create the cuckoo folder structure under our user
Before start to configure the Guest VMs, let’s go to download the cuckoo signatures:
We have now all the signatures in place!
Configure Guest VMs
Let’s go to configure our first guest virtual machine.
The most used OS for malware sandboxing is Windows 7, so let’s go to configure a Windows 7 virtual machine with KVM.
On Ubuntu, we have to open the Virtual machine manager. We have an alternative to do the same stuff with virsh
These are the steps to create a virtual machine with the Virtual Machine Manager:
The red box is the action button to create a new Guest VM.
As we have an ISO file, we select the first option
We click on Browse:
As we don’t have an ISO DataStore or similar, we have to click on “Browse Local” and search for the Windows ISO in our system:
The next step is to configure the RAM and vCPU for this Guest VM:
The recommended values here are:
Let’s go to configure now the Hard Drive Space:
The recommended value is 80 GB, don’t worry if it’s too much assigned because the space used in the system will be only the space used in the Guest VM.
We have to do that due some malware samples are checking the space assigned in the system.
We have to choose a name for the Guest VM and create it!
After creating the Guest VM with the Virtual Machine Manager, we can deploy Windows on it.
Install the basic software into the Guest VM:
In order to deploy the basic software in the Guest VM, we can use one of both software executables:
In my case, I will use Ninite to deploy certain software in the Guest VM:
Basic changes to apply in the Guest VM:
We have to make some basic changes in the Windows Guest VM to use it with Cuckoo Sandbox.
These are the minimal changes to apply:
- Disable UAC
- Disable Windows Firewall
- Disable Windows Defender
- Install Python 2.7 x86 (Note: Add Python to the Windows PATH during the install)
- Install Python Image Library
- Reduce security in certain applications (We will cover that in future updates.)
Connecting the Guest VM with the Cuckoo Sandbox system:
In order to connect the Guest VM with Cuckoo, we have to let running the Cuckoo Agent in the system.
The agent is located in:
We have to copy the agent.py into the Windows Guest VM and copy the file in the Windows Startup folder.
Note: Instead to save the file as:
Change the file name to:
Changing the extension to pyw, will avoid the agent windows during the analysis.
After reboot the Guest VM. Cuckoo Sandbox and the virtual machine will be connected.
This guide highlighted how to install Cuckoo Sandbox and prepare one basic Guest VM.
I will be updating the guide including extra stuff.
Troubleshooting
This section will contain certain troubleshooting for some stuff regarding Cuckoo:
To check if YARA works, we can execute:
If the YARA help appears on your terminal all is ok 😉 !
Note: If you get an error like:
Cuckoo 2.0. Собираем лучшую open source платформу анализа вредоносных файлов
Приветствую Хабр!
4 года назад я публиковал инструкцию по сборке платформы динамического анализа вредоносных файлов Cuckoo Sandbox 1.2. За это время проект успел обрасти внушительным функционалом и огромным комьюнити, недавно обновившись до версии 2.0, которая больше полутора лет висела в стадии Release Candidate.
Я наконец-то подготовил для вас полнейший мануал по сборке Cuckoo Sandbox 2.0.5 со всеми плюшками, какие есть в проекте на данный момент, с упаковкой Cuckoo в venv и без использования root, добавив более 12-ти security утилит в песочницу! По совокупности собранного материала, не побоюсь сказать: «Это самый полный и выверенный шаг в шаг гайд из всех опубликованных в интернете на данный момент». Тем кто, осилит статью до конца — дам маленький совет, что делать, когда песочница собрана и как получить максимальный профит с автоматизации процессов ИБ своими сиилами с помощью опенсорса. Всем гикам, вирусным аналитикам, безопасникам, ребятам из SOC, CERT, CSIRT и просто любителям потыкать кнопки в терминале — добро пожаловать под кат!
За последние несколько лет в проекте Cuckoo произошло немало, добавились новые инструменты, появилась поддержка дополнительного ПО, количество сигнатур увеличилось в разы, появилась система рейтинга вредоносности проверяемого файла, был переписан весь UI и теперь можно настроить приятную глазу тёмную тему.
Позитивные изменения в проекте очевидны — песочница начала обновляться микро релизами, которые оперативно закрывают выявленные и подтверждённые баги. Обо всех небольших изменениях разработчики начали писать в блог, там можно найти и roadmap проекта. К сожалению, изменений произошло настолько много, что сводную таблицу «до» и «после» проблематично составить, сейчас это 2 платформы разных эпох, лучше сами посмотрите блог, вам понравится!
Советую почаще заглядывать в блог, разработчики уже который релиз обещают включить в маcтер ветку драйвер антидетекта ВМ zer0mon, однако теперь сроки сдвинудись до релиза 2.1.0, следите за новостями, вещь реально нужная!
Сам же код Cuckoo перебрался в пакетный менеджер PIP и кукушка обновляется буквально в одну команду.
Позитивной стала и новость о запуске коммерческой поддержки, для клиентов, которым необходима стабильность в работе, поскольку стабильность — главный недостаток Cuckoo с первых релизов. Очень надеюсь, что привлечённые в проект деньги помогут разработчикам добиться качественной работы приложения.
Однако проблема с установкой неизменна с начала проекта — Cuckoo Sandbox документирован хорошо, а с модулями, в которых всегда происходят баги — беда. Некоторые приложения не документированы вовсе и чтобы понять как и что работает — нужно смотреть код, некоторые почти не обновляются и не поддерживаются, как HoneyD. Потратив немалое количество времени, я смог собрать кукушку со всеми рекомендациями разработчиков — обернуть кукушку в Venv и настроить всё с нуля не используя root привелегий для работы Cuckoo! Каждый этап выверен шаг в шаг многократным откатом бекапов в тестовой среде, пока инструкция не стала полностью рабочей.
Особенности сборки
Согласно рекомендациям разработчиков, Cuckoo Sandbox 2.0.5 собрана на ОС Ubuntu 16.04.03 установленной в ESXi кластере. В качестве гипервизора Cuckoo будет использован VirtualBox 5.2. Установка ВМ будет производиться через скрипт автоустановки VMcloak. С VMcloak больше не нужно искать уязвимое старое ПО для гостевой ОС, не надо настраивать сеть и Python, в одну команду терминала VMcloak установит всё необходимое, в том числе Cuckoo Agent и настроит. С VMcloak клонировать, администрировать и донастраивать ВМ теперь одно удовольствие. В качестве ОС виртуальной среды я использую Windows 7 SP1 X64, хотя Cuckoo Sandbox поддерживает все версии Windows, начиная с XP.
Пол года назад разработчики Cuckoo включили возможность проксировать трафик с ВМ через VPN или Tor. В данной настройке я остановился на простом методе — давать доступ в интернет напрямую или через Tor.
Дополнительно к Cuckoo Sandbox будут установлены следующее ПО:
- Suricata — IDS.
- Snort — IDS.
- HoneyD — Honeypot.
- InetSim — Эмулятор сети.
- Tor — onion маршрутизация трафика гостевой ВМ.
- Teserract — Распознавание текста на скриншотах.
- MitMproxy — Анализ SSL трафика через «man-in-the-middle».
- Moloch — IDS (очень удобная и крутая утилита для анализа трафика).
- SSDeep — Fuzzy-Hashing.
- Volatility — Фреймворк для исследования RAM.
- Distorm3 — Дизассемблер.
- Yara — Утилита, для распознавания и классификации вредоносного ПО.
Тринадцатым пунктом должна была стать программа потокового антивирусного анализа файлов IRMA, однако при включении IRMA в Cuckoo, выгрузка отчёта в Elastic ломалась, разработчики так и не дали ответ по этой баге, а анализировать Index эластика не было времени. Поэтому в данной инструкции будет пункт про сборку IRMA, но интеграция с Cuckoo включена не будет. Возможно найдётся гуру ELK стека, готовый доблестно побороть баг и дополнить мою статью. Найти IRMA и воспользоваться ею можно будет на порте 8080.
В качестве недостатка могу отметить некорректные ссылки на Moloch в веб интерфейсе песочницы, поправить, наверное, можно, но для меня это не критично, сам сервис Moloch будет висеть на порту 8005 и этого достаточно.
Cuckoo будет хранить данные скаинрований в БД MongoDB, системные данные в Postgresql и индексы в Elasticsearch для быстрого поиска и выборки, экспортировать в Json, HTML и PDF, работать через веб сервер Nginx с настроенным по всем канонам SSL (не считая self-signed cert) и в связке с UWSGI.
Данная сборка настроена только на анализ в Windows песочнице. Android, OS X и Linux не настроены. Если будут вопросы по этой части — пишите в ЛС, теоретически я знаю, как это сделать, но этот функционал выходит за области моих интересов и моей работы в данный момент.
Особенности мануала
В текущей статье, не будет предоставлен скрипт автоустановки. Мне, конечно не лень его написать, но в нём нет смысла, чтобы песочница работала корректно — лучше собирать вручную и внимательно смотреть что и как собирается, анализировать каждую ошибку. Вы всё-таки собираете приложение, которое взаимодействует с десятком внешних программ, которые постоянно обновляются. Баги — неизбежны, поэтому лучше найти их самому, чем потом разобраться что в скрипте пошло не так.
В эту статью я не стал выносить все зависимости устанавливаемых программ в самое начало одной строчкой, как в прошлой статье. К каждому конкретному ПО, подключаемому к Cuckoo зависимости указаны в разделе установки данного ПО.
4 года анализа вредоносного ПО с использованием Cuckoo показали мне вполне очевидную линейную зависимость — чем больше ты подключишь к песочнице сервисов, тем хуже она работает. Поэтому нет смысла ставить все зависимости сразу, ведь айтишники постарше и поопытней могут отказаться в проде от тех компонентов, которые работают нестабильно, а информация от них будет избыточна. Лучшее — враг хорошего, как говорится.
В данной статье не задействован REST API, сделать это достаточно просто, но мне он на текущем этапе не нужен.
Описывать каждую утилиту подробно не стану, помечу только важное, тем более существенная часть утилит описана в моей прошлой статье, там же есть и инфа по включению REST API.
И самое главное — статья выходит в свет на несколько месяцев после инструкции по сборке, что-то уже может поменяться, что-то не работать. Если встретили баг — напишите в ЛС.
А теперь ответим на самый популярный вопрос и приступим к установке!
А что если я не силён в этих ваших Linux, а песочница очень нужна
Ответ на этот вопрос прост — используй онлайн песочницы или возись с Windows Sysinternals.
- Сервис номер 1, «Эстонская Cuckoo». Очень грамотно собранный Cuckoo Sandbox последней версии от Эстонского CERT (Computer Emergency Response Team). Лучшая реализация песочницы из тех, что я находил в сети. Пользуясь сервисом помним, что загруженные данные могут быть разобраны на индикаторы компетенции (IoC) и с помощью ПО типа MISP переданы в другие национальные CERT в соответствии с установленными правилами передачи TLP. Поэтому внимательно подумайте, заливать вам или нет туда конфиденциальную софтину.
- Сервис номер 2, «Hybrid Analysis». Популярная в узких кругах (или уже не в узких) онлайн песочница, стабильность и качество которой на высоте, из минусов — функционал немного ограничен, семплы вредоносов выгружать нельзя.
- Сервис номер 3, «Вечно мёртвый Malwr» — самая популярная песочница, поддержкой которой занимаются авторы Cuckoo Sandbox, нынче снова пала под нагрузкой и пол года не поднимается. Единственный сайт, откуда можно было грузить семплы вирусного ПО на анализ бесплатно, не считая этой подборки. Надеюсь на оживление, но прогноз пока не утешительный.
- Вариант 4, «Поищу самостоятельно» — для тех кто знаком с принципами OSINT и языком поисковых запросов. Берём кусок статического текста с платформы:
И гуглим в кавычках, находя все попавшие в индекс песочницы исключая github:
Сборка
Итак, теоретическая часть позади, приступаем к практике!
Обновление ОС
Обновляем системные пакеты.
Зависимости Cuckoo
Устанавливаем зависимости Cuckoo.
Virtualbox
Устанавливаем Virtualbox вместе с extpack.
Cuckoo Sandbox
Устанавливаем Venv, активируем и ставим Cuckoo через PIP.
Java для Elasticsearch
Elastic написан на Java, поэтому нам нужно установить Java.
Тут устанавливаем и настраиваем все БД, обратите внимание, переменная «db_passwd» генерирует рандомный пароль к базе Postgres, если хотите задать свой — не забудьте установить его.
Cuckoo использует морально устаревший Elastic 2-й версии, обратите на это внимание и не установите случайно 5.x+ версию.
Yara + rules
Установим последнюю версию Yara и добавим правила Yara в Cuckoo.
SSDeep
Volatility
Установить Volatility просто, но заставить Cuckoo из venv его увидеть — не очень, ставить — же в venv вместе с Cuckoo — тоже не вариант, он зависимостями меняет версии библиотек Cuckoo. С третей строчки костыль, решающий эту проблему, если у кого есть идея, как это подружить более верным способом — напишите.
TCPDump
Teserract
Ставится просто, подключается тоже, однако прелести в работе OCR я не заметил.
Fonts for PDF
Без этой магии PDF отчёты генерироваться не будут.
MitMproxy
Очень полезная библиотека, позволяющая подглядывать в SSL трафик. Обратите внимание, Cuckoo понимает только пакет версии 0.18.2.
Тут всё достаточно просто.
Suricata
Изначально я хотел написать что и где в конфиге надо править, но к моменту, когда я смог побороть Suricata и убрать все огрехи работы, правок в конфиг было внесено немало, а задокументировано — 0, поэтому публикую конфиг целиком. Тем более оригинальный файл с правилами останется нетронутым.
И напоследок, поправим права.
ETupdate
Настраиваем автообновление Community сигнатур Suricata.
Snort
Добавлять правила в него не стал, так как больше доверяю Suricata.
При конфигурации указываем дефолтный интерфейс и подсеть 192.168.0.0/16.
VMcloak и Windows 7 SP1 X64
Удобнейшая программа для автоматического развёртывания ВМ Cuckoo. Существенно сокрашает время, однако автор переписывал её логику работы и конечно-же не обновил документацию. Советую посмотреть либо код утилиты на GitHub, либо почитать старую документацию, чтобы понять все прелести работы с VMcloak и разобраться с тем, что мы будем делать дальше.
Самый внимательный хабражитель заметит, что официальный репозиторий проекта https://github.com/jbremer/vmcloak отличается от того, что использован ниже в скрипте https://github.com/tweemeterjop/vmcloak. По отношению к форку, оригинал не умел включать vRDE — реализацию RDP протокола в настраиваемой гостевой ВМ.
Наверное правильным будет вариант — взять оригинальный код и допилить в него vRDE, однако если форк не так далеко ушёл от отригинала — можно использовать форк, как делаю я ниже. На момент настройки репозиторий и его форк практически не имели отличий.
По опыту своему скажу — vRDE нужен, бывают use cases, когда документ целевой атаки защищён паролем Word и пароль надо ввести, чтобы вирус отработал в песочнице, либо вирус склеен с установщиком, который надо проинсталлить. Без vRDE это сделать проблематично. Да и для дальнейшей настройки ОС vRDE нам тоже понадобится.
Настройка Windows 7
запустится ВМ, подключиться к ней можно по RDP. Если вы работаете с Win10 — не используйте плиточное приложение удалённого рабочего стола, оно впадает в ступор и транс, когда подключение идёт к ВМ без логина и пароля, используйте классическое приложение, там всё ОК.
Следующие пункты моего списка не обязательны, однако, чтобы сократить количество ложных срабатываний и упростить работу вредоносному ПО — рекомендуется отключить (или включить) всё ниже перечисленное. Не лишним будет и установка в гостевую ВМ софта, который используется на работе всеми сотрудниками.
Пример лишних данных в отчёте:
Замечу! Всё нижеперечисленное нужно проделать только для Windows 7 SP1 x64, на других ОС действия, возможно, будут другими.
Спустя некоторое время работы с новой песочницей, мой список стал включать следующие пункты:
Отключаем Windows Messenger broadcasts on UDP port 1900
HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlayNATHelp\DPNHUPnP ключ Name: UPnPMode Type: REG_DWORD Value: 2
Отключаем проверку драйверов x64, чтобы Cuckoo нормально работала с x64
cmd — bcdedit.exe /set nointegritychecks ON
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet ключ EnableActiveProbing Type: REG_DWORD Value: 0
cmd — netsh interface teredo set state disabled
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ добавлыяем ключ DWORDDisabled DisabledComponents 8
Последовательность составления собственной инструкции под собственную ОС:
- Проверяем легитимный исполняемый файл в песочнице;
- Смотрим, где и в каких вкладках появилась лишняя инфа, например, обращение к time.microsoft.com;
- Открываем Google и смотрим, как нам это отключать;
- Записываем, отключаем.
Добавление VM в Cuckoo
Создаём снапшот свежесконфигурированной гостевой ОС и добавляем в Cuckoo заодно удалив предустановленную ВМ cuckoo1 из конфига.
Moloch
Наикрутейший инструмент для работы с сетевым трафиком. В отличии от других сетевых анализаторов — ставка в Moloch сделана на инструментарий для аналитика с кучей возможностей, временными шкалами, графами и прочим. Очень сожалею, что узнал о нём так недавно и пользовался до этого менее удобным MalCom. Одно из ключевых преимуществ Moloch — возможность объединить и проанализировать одним разом все сетевые пакеты всех сканирований из Cuckoo. Ну а работа в связке с Elasticsearch позволяет Moloch обрабатывать огромное количество данных.
Вот так выглядит эта красота (скрин из официального репозитория):
Ну и его тоже проинсталлим.
Далее необходимо указать интерфейс vboxnet0, логин и пароль Moloch, IP адрес Elasticsearch.
InetSim
Устанавливаем виртуальную локальную сеть, чтобы вирусу не было одиноко в песочнице. Настройки эмулируемых сервисов оставил дефолтные, 18 эмулированных служб получилось, не считая веба.
В конфиге /etc/inetsim/inetsim.conf нужно закомментировать сервисы веба HTTP и HHTPS, чтобы не конфликтовали с Cuckoo:
C песочницей IRMA не интегрирована из-за проблемы выгрузки отчётов в Elasticsearch. Но это не мешает нам развернуть и протестировать утилиту. IRMA собрана в Vagrant и деплоится автоматически через Ansible строго версии 2.2.1.0.
Добавим переадресацию из VM на порт 8080 добавив в файл /opt/irma/ansible/Vagrantfile
строчку 19:
HoneyD
HoneyD — старейший и крайне функциональный ханипот. Минус его только в одном — он перестал обновляться несколько лет назад. Навыки поиска годных форков были применены успешно, после чего был найден относительно свежий вариант установки HoneyD через Ansible, которым я и поспешил воспользоваться. В ханипоте я настрил всего один хост, можете сконфигурировать хоть целую подсеть, воспользовавшись официальным мануалом.
Веб сервер
Установим Nginx, сгенерируем сертификат и даже включим поддержку http2.
Далее добавим конфиг UWSGI.
И конфиг nginx, поменяв IP и название сайта:
Теперь добавим пользователя www-data в группу cuckoo и симлинком включим наш конфиг.
Конфиги cuckoo
И, наконец, самое главное — объединяем всё собранное в песочницу. Объяснять что тут к чему долго, бессмысленно и 85% параметров интуитивно понятны, предлагаю воспользоваться официальной документацией начиная с 96 страницы, если есть сложности с пониманием некоторых параметров. Либо основное подглядеть в моей прошлой статье. Не самым плохим будет и вариант скопировать и использовать мои файлы приведённые ниже, но на свой страх и риск.
Автозагрузка Cuckoo и сервисов
Теперь сделаем так, чтобы наш сервис после каждого перебоя в питании вставал самостоятельно и без лишней помощи.
Установим supervisor и добавим в него конфигурацию автозапуска Cuckoo.
Cоздаём файлы supervisor:
Создаём скрипт для запуска остальных сервисов (можно было и через supervisor настроить, но была какая-то бага, не давшая мне применить то элегантное решение):
И добавляем в крон:
Есть ли жизнь после кукушки? или «Собрал кукушку! А дальше что делать?»
Собрали с нуля на работе новый ИБ сервис и не знаете что делать?
Самый простой ответ, когда кукушка собрана — надо ручками анализировать найденное подозрительное ПО и быть молодцом.
Для небольшой конторы это вполне приемлемое решение, для студента ИБ ВУЗа — очень приемлемое. А вот для компаний побольше, увы, нет. И скорее всего данным вопросом задаются люди из компаний побольше.
Мой вам совет — выстраивайте с нуля или модернизируйте бизнес-процесс мониторинга и реагирования на инциденты информационной безопасности доводя обработку инцидентов до полного автоматизма. Это самый прямой путь к улучшению скорости и качества работы департамента ИБ или групп ИБ, следовательно и к сокращению издержек, снижению рисков.
Вот самый минимум для старта — всего 3 класса ПО и почти всё можно найти с открытым кодом:
- ИБ системы. То, что генерирует или собирает данные, например, Cuckoo Sandbox, IDS, UEBA, USM, SIEM и так далее;
- Системы реагирования на инциденты (Incident Response Platform, IRP);
- Системы киберразведки. (Threat intelligense Platform, TIP).
Одна из лучших систем ИБ с открытым кодом, которая поражает меня своей простотой, удобством и функциональными возможностями — IRP стек TheHive Project. Сам стек состоит из нескольких элементов, нас интересуют 2.
- TheHive — платформа реагирования на инциденты.
- Cortex — система обогащения данных по инцидентам.
TheHive Project stack.
TheHive — платформа реагирования на инциденты, имеющая под капотом внушительную архитектуру и поразительную гибкость, позволяющую подстроить процесс реагирования на инциденты под любой уже устоявшийся бизнес-процесс в компании. TheHive создана для управления инцидентами на всём жизненном цикле. Каждый инцидент (case) делится на таски, например, кейс «DDoS сайта» делится на таски:
- «Определить уровень, L7 или канал забивают?»
- «Сменить IP приложения»
- «Маршрутизация в blackhole»
По каждому таску пишется отчёт, каждый таск назначен персонально на ответственного, а когда таск закрыт — директор подразделения ИБ решает, можно или нельзя этой информацией делиться с другим офисом компании, согласно правилам TLP или ещё с кем.
TheHive UI.
В TheHive поступают данные, из любых систем, посредством API TheHive4Py, например, из SIEM, либо вбиваются безопасником вручную. У каждого инцидента есть важная составляющая — индикаторы компрометации. Это ссылки, IP, домены, семплы вредоносных файлов, хэши, названия процессов и так далее. По сути то, что безопасник счёл угрозой. И вот тут появляется второй элемент стека — Cortex. Он, используя API десятков сервисов (коммерческих и не очень) обогащает данные инцидента.
Вот примерный кейс — антивирус на рабочем компьютере находит подозрительный файл, безопасник вносит файл в TheHive и регистрирует инцидент (Case). Инцидент делится на задачи (Tasks), например, «Отключить АРМ от сети», «Проверить рабочую почту Петрова» и так далее. И вот пока этими задачами занимается сотрудник ИТ, аналитик ИБ с помощью Cortex определит количество антивирусов обнаруживших файл на VirusTotal, вредоносную кампанию, в которой файл учувствовала и попал в пульс AlienVault OTX, точную дату вредоносной компании, метаданные файла, отправит файл в Cuckoo Sandbox и осуществит ещё 8-10 проверок. Нажав при этом одну кнопку. Да-да, всего одну кнопку. А Cortex сделает всё остальное и сам добавит данные в TheHive.
MISP
Данные по закрытым подтверждённым инцидентам из TheHive и Cuckoo попадают в MISP и сразу отправляются в территориально удалённые подразделения компании, где происходит превентивная блокировка индикаторов компрометации в системах защиты информации: на Firewall IP адрес управляющего сервера вируса, на рабочей станции — блокировка файла по хешу антивирусом.
Кроме того, у вас остаётся структурированная база всех инцидентов, семплы всех вредоносных файлов, и в разы более подробная информация об инциденте, собранная моментально. А встроенные в TheHive механизмы метрик позволят анализировать работу групп мониторинга и реагирования на инциденты обозначив им в последствии справедливый KPI.
MISP, ко всему прочему, имеет 47 предустановленных фидов, включение которых позволяет получать индикаторы компрометаций от других CERT, эти индикаторы можно проверять в логах уже имеющихся систем ИБ и ИТ. Например в MISP попал домен, а скрипт, который сделал сисадмин компании — проверяет все ссылки с корпоративного Proxy в MISP, и в случае совпадения — отключает от сети пользователя и угроза может быть предотвращена даже до заражения пользователя.
И вишенка на торте: всё перечисленное выше ПО — open source, который дружит друг с другом, хорошо документирован и умеет работать с Cuckoo Sandbox. Красота, не правда-ли?
Спасибо за внимание!
Полезные ссылки
В этом разделе далеко не все полезные ссылки, выписывал в этот список то, что пригодилось в работе, большую часть я знал по памяти или из опыта, поэтому если есть чем дополнить — пишите в ЛС.