Истории из жизни вредоносов: знакомимся с Remnux
Представим следующую ситуацию, у нас имеется файл, который скорее всего содержит вредоносный код. Варианты с отправкой этого файла сазу на virustotal.com мы пока рассматривать не будем, так как это слишком просто не спортивно.
Можно конечно, поднять виртуалку/контейнер с Windows/Linux и в нем с помощью специальных инструментов анализировать работу данного файла. Естественно, использовать свою рабочую машину для анализа вредоносов идея, мягко говоря, не очень хорошая. Рано или поздно (скорее рано) вы не уследите при анализе в отладчике, и вредонос выполнится полностью и захватит контроль над машиной.
Поэтому, изоляция его работы внутри контейнера или виртуальной машины будет наилучшим решением. Можно, конечно, самостоятельно подготовить образ с нужным набором инструментов, но гораздо удобнее использовать уже готовый образ, содержащий основной набор инструментов, который, при необходимости уже можно дополнить своими средствами анализа.
Знакомьтесь, REMnux
Мы будем использовать REMnux в качестве нашего инструментария для анализа вредоносных программ. Данный образ доступен для загрузки на сайте REMnux.org. Он включает в себя сотни предварительно настроенных инструментов и поэтому очень популярен среди специалистов по анализу вредоносных программ.
Получить REMnux можно несколькими способами. Прежде всего можно загрузить готовую виртуальную машину в виде виртуального устройства (OVA). Удобно при использовании VirtualBox или VMware. В готовом образе создан пользователь remnux с паролем malware.
Установка REMnux
Также, можно установить с нуля в выделенной системе под управлением ОС Ubuntu. Для этого сначала загрузим установочный файл:
wget https://REMnux.org/remnux-cli
Проверьте, что хэш SHA256 загруженного файла соответствует ожидаемому значению. Сделать это можно с помощью следующей команды:
sha256sum remnux-cli
Настройте установщик REMnux, выполнив следующие команды:
mv remnux-cli remnux
chmod +x remnux
sudo mv remnux /usr/local/bin
Стоит отметить, что минимальная версия Ubuntu включает в себя очень мало компонентов. Поэтому установите GnuPG, чтобы установщик REMnux мог автоматически проверять подпись файлов конфигурации REMnux, которые он загрузит в процессе установки. Чтобы установить GnuPG, запустите:
sudo apt install -y gnupg
Теперь вы готовы к установке дистрибутива REMnux. Если вы планируете запустить REMnux локально, запустите установку, выполнив команду:
sudo remnux install
Как только установка REMnux завершится, перезагрузите вашу новую систему REMnux, набрав:
sudo reboot
Вариант из контейнера
Еще одним достаточно удобным вариантом использования REMnux является его запуск как контейнер Docker. Общий вид команды для запуска такого контейнера:
docker --rm -it -u remnux remnux/remnux-дистрибутив bash
Если у вас установлен Docker, вы можете запустить контейнер дистрибутива REMnux в интерактивном режиме, как описано ниже. Следующая команда автоматически загрузит образ дистрибутива (приблизительно 4 ГБ), если в вашей системе его еще нет.
Чтобы запустить версию REMnux, созданную поверх Ubuntu 20.04 (Focal):
docker run --rm -it -u remnux remnux/remnux-distro:focal bash
Чтобы сопоставить локальный каталог с каталогом контейнера /home/remnux/files, вы могли бы использовать команду, подобную этой, указав соответствующее имя каталога следующим образом:
docker run --rm -it -u remnux -v
Для того, чтобы получить доступ к контейнеру дистрибутива REMnux с помощью SSH, вы можете вызвать его, сопоставив TCP-порт 22 вашей системы с внутренним TCP-портом 22 контейнера. Один из способов сделать это — использовать следующую команду, которая откроет прослушивание SSH и запустит контейнер в фоновом режиме.
Чтобы запустить версию REMnux, созданную поверх Ubuntu 20.04 (Focal):
docker run -d -p 22:22 remnux/remnux-distro:focal
Общие действия по анализу подозрительного файла
Полагаю, читатель уже развернул Remnux удобным для себя способом. И теперь самое время посмотреть этот инструмент на практике.
Какие основные действия мы должны выполнить при анализе подозрительного файла:
1. Прежде всего необходимо изучить статические свойства данного файла для первоначальной оценки и формирования идей для дальнейшего исследования.
2. Статически проанализируйте код для выявления его вредоносных возможностей.
3. Изучите сетевые взаимодействия, чтобы начать понимать вредоносное поведение.
Как видно, после статического анализа нам все равно потребуется запустить подозрительный файл, для того, чтобы понять к каким ресурсам он будет обращаться.
В рамках данной статьи мы поговорим об инструментах REMnux для статического анализа артефактов. Артефактом будем называть выполнимый двоичный файл.
Начинаем анализ
В качестве тестового примера мы будем исследовать артефакт Spyeye, взятый из виртуального зоопарка (https://github.com/ytisf/theZoo/tree/master/malware/). Несмотря на то, что авторы этого серпентария постарались защититься от случайного запуска, запаролив архивы, не лишним будет напомнить:
Все действия, представленные далее приводятся исключительно с ознакомительной целью. Автор снимает с себя всякую ответственность за неправомерное использование представленных в статье материалов.
Перед тем, как делать что-либо с артефактами, ознакомьтесь со статьей 273 УК РФ.
Итак, загрузив в Remnux одну из версий артефакта я первым делом предлагаю провести статический анализ данного файла. В нашей специальной ОС для этого есть несколько инструментов. Традиционно мы не должны доверять результатам работы одного из них, поэтому посмотрим, что нам покажут несколько утилит.
О том, как устроены выполнимые файлы в ОС Windows на том же Хабре написана не одна статья, поэтому я не буду подробно останавливаться на структуре PE, MZ и прочих Dan/Rich заголовках и разделах. Желающие могут самостоятельно ознакомиться с данным интересным материалом.
Начнем наш анализ с использования утилиты peframe. Ее синтаксис до безобразия прост:
peframe имя_артефакта
Данная утилита сообщает нам базовую информацию о данном файле: размер, хэш, адрес точки входа, разделы памяти. Из интересного, нам сообщают о некоторых фичах — антиотладке, упаковке кода и шифровании.
Далее нам рассказывается о возможных алгоритмах шифрования, упаковки и антиотладки.
Каждый из представленных здесь методов заслуживает отдельной статьи, поэтому сейчас мы не будем подробно на них останавливаться. Но согласитесь, определенная полезная информация к размышлению у нас уже есть.
Далее следует список используемых артефактом API функций ОС, dll библиотек, и в самом конце скромно притаилось упоминание о некоем выполнимом файле dropper.exe.
Так что, отчет получился довольно информативный.
Еще одна полезная утилита это readpe.
readpe имя_артефакта
Здесь в целом отчет получился аналогичный предыдущему, но, вызываемые функции разложены по библиотекам, что немного упрощает анализ. И кроме того, отдельно представлены функции вызываемые крайне подозрительным файлом dropper.exe.
И в завершении темы анализаторов упомяну pescan.
pescan -v имя_артефакта
Здесь отчет будет достаточно лаконичен даже с ключом verbose.
Однако и здесь нам сказали, что файл возможно упакован и указали секцию, которая сама себя модифицирует.
Это далеко не исчерпывающий список статических анализаторов в составе REMnux, поэтому при необходимости можно воспользоваться другими инструментами.
Стереть нельзя отправить
Одним из параметров, присутствующим в отчетах анализаторов является хэш. Например, peframe посчитал нам SHA256 хэш нашего артефакта. Что можно дальше делать с этой информацией? Например, можно воспользоваться уже упоминавшимся ресурсом Virustotal.com. Наверное многие слышали, что отправлять непосредственно файл на анализ это не очень хорошая идея. Так, если мы играем за плохих парней, то нам конечно интересно, какие антивири обнаружат наш свеженаписанный вредонос. А если мы играем за хороших парней, то нам может быть интересно, есть вредонос в подозрительном файле, который наш штатный антивирь считает чистым.
В первом случае, даже если свежий артефакт окажется чистым, есть вероятность, что загруженный артефакт впоследствии будет подвергнут глубокому, возможно ручному анализу и в итоге будет выведен на чистую воду.
Во втором случае, если мы отправим подозрительный файл, например офисный документ на проверку, то содержимое этого файла станет известно «неопределенному кругу лиц»©Регуляторы. Дело в том, что Virustotal официально предлагает сторонним компаниям доступ за деньги к своей статистике по анализируемым файлам. И если в вашем загруженном файле будет какая-то конфиденциальная информация, то может получиться не очень хорошо.
Что же делать, неужели Virustotal совсем бесполезен? Это не так, мы можем передать этому сайту хеш нашего артефакта и посмотреть, что он найдет.
Как видно, по хэшу SpyEye тоже прекрасно находится. Плохим парням это вряд ли поможет, так как запрос по хэшу тоже сохранится в статистике и впоследствии, файл с таким хэшем может вызвать пристальный интерес средств защиты.
Заключение
В этой статье мы рассмотрели установку и работу с некоторыми инструментами, входящими в состав REMnux. На самом деле возможности этого дистрибутива намного больше и его можно назвать аналогом Kali Linux только для реверсинга.
Пишите в комментах, насколько не/интересна тема REMnux, стоит ли дальше рассказывать про работу с данным дистрибутивом.
Статья подготовлена в преддверии старта курса Информационная безопасность.Professional, На странице курса вы можете подробно ознакомиться с программой, а также зарегистрироваться на бесплатные вебинары: