Хакер - Код под надзором. Создаем виртуальную лабораторию для анализа малвари
hacker_frei
Даниил
Содержание статьи
- Необходимое программное обеспечение
- Создание лаборатории
- Установка Inetsim
- Установка необходимого ПО на виртуальную машину Windows
- Настройка изолированной виртуальной сети
- Настройка ПО Inetsim
- Настройка службы DNS
- Настройка службы HTTP
- Настройка службы HTTPS
- Настройка Burp Suite в качестве прозрачного прокси-сервера
- Настройка маршрутизации
- Тестирование работоспособности
- Возможности Inetsim
- Итоги
При расследовании киберинцидентов часто приходится вскрывать вредоносные программы, изучать их взаимодействие с сетью и файловой системой. Результатом исследования обычно становятся сигнатуры вредоноса и индикаторы компрометации (IOCs), а сам анализ проводится в изолированной среде при помощи специального инструментария. О том, как устроена такая лаборатория, мы сегодня и поговорим.
Многие вредоносы взаимодействуют с управляющим сервером, используя протокол HTTPS, который шифрует передаваемые данные. Поэтому в сетевом трафике нельзя обнаружить команды взаимодействия и отправляемую информацию. Когда под рукой нет автоматизированной песочницы, но необходимо проанализировать HTTP- и HTTPS-запросы, вызовы DNS и многое другое, можно собрать подходящий стенд самостоятельно.
WARNING
Не рекомендуется исследовать вредоносные программы на рабочей операционной системе, поскольку это может привести к заражению машины и утере ценных данных.
НЕОБХОДИМОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Для организации исследовательской лаборатории можно использовать разный софт. Мой набор выглядит следующим образом.
- VMware Workstation Pro — это гипервизор для настольных компьютеров, отраслевой стандарт для работы с виртуальными машинами.
- Kali Linux или любая другая операционная система на базе ядра Linux. Я использую Kali, так как в ней по умолчанию установлены необходимые инструменты.
- Windows 10 или другая актуальная версия Windows. Наибольшее количество вредоносных файлов разработано под Windows, поэтому анализировать их лучше именно в этой операционной системе.
- Inetsim — программный продукт, предназначенный для моделирования интернет‑сервисов в лабораторных условиях, например для анализа сетевого поведения неизвестных образцов вредоносных программ.
- FLARE VM — полностью настраиваемый набор инструментов на базе Windows для анализа вредоносных программ, реагирования на инциденты, тестирования на проникновение и так далее.
- Burp Suite используется в качестве прозрачного прокси‑сервера с целью анализа взаимодействия вредоносного файла по протоколу HTTPS.
- Ida Pro — интерактивный дизассемблер, используемый для реверс‑инжиниринга. Одно из преимуществ IDA — встроенный плагин Hex Rays, а также поддержка отладки удаленных приложений, которая необходима при анализе вредоносных файлов под Linux.
СОЗДАНИЕ ЛАБОРАТОРИИ
Наша лаборатория будет работать на двух виртуальных машинах c IP-адресами 10.10.10.1 (Kali Linux с установленным Inetsim) и 10.10.10.2 (Windows 10 с установленным программным обеспечением для реверс‑инжиниринга), находящихся в изолированной сети. На виртуальной машине Kali Linux будут работать различные интернет‑службы, а на виртуальной машине Windows мы будем исследовать вредоносные программы.

Собирать лабораторию будем в шесть этапов:
1. Установка VMware Workstation Pro, создание виртуальной машины из образа Kali Linux и Windows (я использую Kali Linux 2019 и Windows 10).
2. Установка необходимого ПО на виртуальную машину Kali Linux.
3. Установка необходимого ПО на виртуальную машину Windows 10.
4. Настройка изолированной виртуальной сети.
5. Настройка ПО Inetsim.
6. Тестирование работоспособности нашей лаборатории.
УСТАНОВКА INETSIM
По умолчанию в Kali Linux уже установлен Inetsim, но, если ты используешь другую операционную систему на базе ядра Linux, процесс установки очень прост и описан в документации.
Достаточно прочитать инструкцию для загрузки пакета Inetsim при помощи утилиты apt либо dpkg.
УСТАНОВКА НЕОБХОДИМОГО ПО НА ВИРТУАЛЬНУЮ МАШИНУ WINDOWS
При исследовании вредоносных файлов необходимо иметь подходящий инструментарий. Я использую FLARE-VM — набор инструментов для статического и динамического анализа вредоносных программ.
Перед установкой нужно разрешить виртуалке с Windows подключаться к интернету, а сам процесс выполняется в несколько шагов.
- Загружаем файлы из репозитория flare-vm:
git clone https://github.com/mandiant/flare-vm.git. - Открываем PowerShell от имени администратора.
- Разблокируем установочный файл, выполнив команду
Unblock-File .\install.ps1. - Включаем выполнение скрипта с помощью команды
Set-ExecutionPolicy Unrestricted. - Выполняем сценарий установщика:
.\install.ps1.
Более подробно установка описана в репозитории. После ее завершения на рабочем столе должен появиться каталог FLARE, в котором содержится отсортированный по категориям набор утилит.
Так, в папке Debuggers лежит набор отладчиков, в каталоге PE — инструменты для анализа PE-файлов, позволяющие выявлять компиляторы, упаковщики или крипторы, в директории Disassemblers, соответственно, хранятся инструменты для дизассемблирования. В комплекте поставки имеется бесплатная версия IDA, но я советую приобрести лицензионный продукт. Также для разработки YARA-правил рекомендую установить YARA Editor.
Многие вредоносы умеют определять, что их пытаются запустить в виртуальной среде, и сразу же завершают работу. Чтобы противостоять этому, необходимо настроить виртуальную машину соответствующим образом. Малварь использует различные методы идентификации виртуалок: проверку идентификатора CPUID, проверку известных MAC-адресов, перечисление имен процессов для обнаружения виртуальной машины, а также проверку ключей реестра.
Методы защиты от всех этих методов описаны здесь.
НАСТРОЙКА ИЗОЛИРОВАННОЙ ВИРТУАЛЬНОЙ СЕТИ
После настройки виртуальных машин необходимо создать изолированную сеть, которая будет связывать две наших виртуалки. Открываем вкладку каждой виртуальной машины, переходим к разделу VM → Settings → Network Adapter и создаем LAN Segment.

Настраиваем интерфейс на Kali Linux, устанавливаем IP-адрес 10.10.10.1, маска сети 24.

Настраиваем интерфейс для Windows 10: IP-адрес 10.10.10.2, маска 255.255.255.0, основной шлюз 10.10.10.1, предпочитаемый DNS-сервер 10.10.10.1.

Проверяем доступность второй машины в нашей виртуальной сети:
ping 10.10.10.1

НАСТРОЙКА ПО INETSIM
Файл конфигурации Inetsim расположен по пути /etc/inetsim/inetsim.conf. Откроем его, чтобы настроить программу.
По умолчанию Inetsim прослушивает только localhost. Необходимо сделать его доступным для всех машин нашей виртуальной сети. Для этого в конфигурации необходимо найти строку service_bind_address и установить значение 0.0.0.0.

Настройка службы DNS
Устанавливаем DNS-порт 53 и настраиваем DNS таким образом, чтобы любое доменное имя разрешалось в 10.10.10.1.

Также есть возможность настройки статических DNS-записей.

INFO
Если в качестве операционной системы используется Ubuntu, необходимо отключить локальный DNS-сервер, который включен по умолчанию. Для этого используется такая команда:
$ sudo systemctl disable systemd-resolved.service
Настройка службы HTTP
Устанавливаем порт прослушивания 80 и на всякий случай поменяем версию HTTP.

Настройка службы HTTPS
В Inetsim поддержка SSL очень ограниченна и не позволяет генерировать сертификаты для каждого хоста на лету. Она имеет только один сертификат для хоста inetsim.org. Для корректной настройки SSL необходимо использовать Burp Suite на порте 443 в качестве прозрачного прокси. Для этого в конфигурации inetsim.conf устанавливаем порт 8443 для службы HTTPS.

Настройка Burp Suite в качестве прозрачного прокси-сервера
Переходим на вкладку Proxy → Options и устанавливаем порт слушателя 443 для всех интерфейсов.

На вкладке Request handling указываем, на какой хост перенаправлять HTTPS-трафик. Мы будем перекидывать его на 10.10.10.1 (IP-адрес Inetsim) и порт 8443 (порт службы HTTPS, установленный в конфигурации Inetsim) и обязательно установим соответствующий флажок для поддержки прозрачного прокси.

Следующим этапом нужно установить сертификат Burp Suite на Windows-машину. Для этого создадим прокси на порте 8080, чтобы зайти по HTTP и установить сертификат на хост.
Правильные настройки прокси Burp Suite выглядят следующим образом.

На Windows 10 запускаем Internet Explorer от имени администратора и переходим по адресу http://10.10.10.1:8080. Нажимаем надпись CA Certificate и загружаем сертификат.
Устанавливаем сертификат для текущего пользователя и локального компьютера в хранилище доверенных корневых сертификатов.


НАСТРОЙКА МАРШРУТИЗАЦИИ
На виртуальной машине с Windows необходимо создать маршрут, который будет направлять весь сетевой трафик на IP-адрес Inetsim (10.10.10.1). Запустим PowerShell от имени администратора и выполним следующую команду:
PS C:\Windows\System32> route ADD 0.0.0.0 MASK 255.255.255.255 10.10.10.1
На Kali Linux с установленным Inetsim перенаправим поступающий трафик на интерфейс eth0 (10.10.10.1):
root@kali:~# iptables -t nat -A PREROUTING -i eth0 -j REDIRECT
ТЕСТИРОВАНИЕ РАБОТОСПОСОБНОСТИ
Запускаем Inetsim с помощью команды root@kali:~# inetsim.

Теперь пропингуем любой адрес.

Проверяем работоспособность по протоколу HTTPS: для этого переходим на любой сайт, поддерживающий этот протокол, например https://yandex.ru.

В ответе видим заглушку Inetsim. Проверим, какие данные получены в Burp Suite.

На рисунке выше виден заголовок запроса, в котором обнаружен GET-запрос к хосту yandex.ru с идентификационной строкой клиентского приложения (User-Agent) Mozilla/5.0. В случае POST-запроса ниже заголовка можно увидеть полезную нагрузку.
ВОЗМОЖНОСТИ INETSIM
Необходимо сказать несколько слов о файлах‑заглушках Inetsim. Как видно из рисунка выше, ответом от Inetsim служит страничка по умолчанию. Эти странички‑заглушки рассортированы по протоколам и хранятся в папке /var/lib/inetsim/.

В файле конфигурации inetsim.conf список файлов‑заглушек выглядит следующим образом.

Многие вредоносные файлы, прежде чем начать сетевое взаимодействие с управляющим сервером, проверяют подключение к интернету. Данная проверка основывается на уровне операционной системы. Для этих целей в Windows присутствует компонент NCSI, который сигнализирует пользователю и службам о доступности выхода в интернет.
Алгоритмы проверки немного различаются в зависимости от версии операционной системы. В Windows 7 компонент посылает HTTP-запрос по адресу http://www.msftncsi.com/ncsi.txt. Расположенный по этому адресу текстовый файл содержит строку Microsoft NCSI. Далее проверяется работоспособность службы DNS, для чего NCSI пытается разрешить в IP-адрес 131.107.255.255 имя dns.msftncsi.com.
Для Windows 10 на запрос http://www.msftconnecttest.com/connecttest.txt должен поступить ответ, содержащий строку Microsoft Connect Test. Тогда операционная система считает, что доступ в интернет присутствует. Для успешного прохождения этого теста необходимо в файл /var/lib/inetsim/http/fakefiles/sample.txt добавить строку Microsoft NCSI либо Microsoft Connect Test, а в параметре dns_static файла inetsim.conf указать следующую строку:
dns.msftncsi.com 131.107.255.255
Также в Inetsim имеется собственный веб‑сервер, файлы которого расположены в каталоге /var/lib/inetsim/http/wwroot. Но прежде, чем работать с веб‑сервером, необходимо в файле конфигурации inetsim.conf установить параметр http_fakemode no или https_fakemode no.

Inetsim сохраняет файлы отчетов — это текстовые файлы, содержащие информацию о попытках сетевого взаимодействия. Все отчеты записываются в папку /var/log/inetsim, данные post — в /var/lib/inetsim.
INFO
А как в такой лаборатории исследовать малварь, разработанную под Linux? Можно добавить еще одну виртуальную Linux-машину и туда установить дополнительный софт, но правильный подход — использовать Ida Pro и удаленно отлаживать вредоносный файл.
ИТОГИ
Мы собрали лабораторию для исследования вредоносных файлов, в которой настроили эмуляцию интернет‑ресурсов и установили необходимое программное обеспечение для статического и динамического анализа малвари. В следующей статье я расскажу, как, используя эту лабораторию, исследовать вредоносные файлы, выявлять сетевое взаимодействие и создавать собственные сигнатуры для обнаружения модуля в сетевом трафике и в файловой системе.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei