Автор статьи: Александр Колесников
Вирусный аналитик
В рамках работы в сфере информационной безопасности приходится иметь дело с инцидентами. Событиями, которые могут привести к утечке или уничтожению какой-то части защищаемой информации. Сами инциденты могут происходить по ряду достаточно длинного списка причин, но где-то в этом списке, ближе к топу, находятся приложения, которые получили название "вредоносное программное обеспечение". Как такое приложение отличить от легитимного, которое используется для полезных задач и есть тема данной статьи. Будем изучать приложения на Windows, но ряд аспектов можно использовать и для других операционных систем.
ВПО для статьи и где оно обитает
Зачастую очень тяжело определиться действительно ли приложение является вредоносным. Так как оно может делать достаточно много странных вещей, но это происходит не потому, что разработчик специально хотел пощекотать нервы пользователю, а потому, что он решил сделать алгоритм приложения именно через особенный функционал. Делается это по разным причинам - он хотел сделать так, чтобы никто не смог скопировать его алгоритм, а может быть просто не учитывал, что можно сделать то же самое, но с меньшей подозрительностью.
Поэтому определение Вредоносного Программного обеспечения для нашей статьи будет выглядеть следующим образом. ВПО - это приложение, которое нарушает работу ОС, обеспечивает утечку данных скрытно от пользователя и может нарушать работу механизмов защиты операционной системы. Для тех, кто любит формализм, настоящее определение можно найти в НПА по защите информации.
Где искать приложения для изучения? ВПО в системах может оказываться разными способами, мы будем исследовать те, которые по мнению автора являются наиболее распространенными. Откуда ВПО попадает в систему:
Сетевой ресурс, который хостит ВПО.
Флешка или устройство, которое может иметь собственную постоянную память. Есть примеры доставки ВПО при помощи таких инструментов как Flipper Zer0.
Письмо или аттач электронной почты.
Сообщение мессенджера.
Нелицензионных софт найденный в сети или на неизвестно диске.
Другие пути, обычно появляются если есть нестандартные устройства ввода данных.
Как видно из перечня, способов достаточно много, всё зависит от фантазии злоумышленника и функциональности системы. Однако во всех случаях нужно иметь возможность проанализировать софт. В статье мы будем исследовать способы изучения именно софтварной части, исследование специальных устройств, находится за пределами темы статьи.
Перейдем к этапу анализа.
Анализ приложения
Анализ не может проводиться без предварительных условий и правил, иначе исследование будет нести больше вреда, чем пользы. Чтобы безопасно анализировать софт, нужно:
Обеспечить безопасное хранение анализируемых данных - никаких расширений обезличенный контейнер, архив или файл без идентификации его формата. В операционной системе Windows много механизмов для работы с файлом для предварительного просмотра, поэтому нельзя ОСи дать начать работу с ним. Обычно эту проблему решают удалением расширения файла (это данные после имени файла.)
Настроить виртуальное или изолированное рабочее место, чтобы исключить инфицирование других систем.
Остальное на усмотрение исследователя. Мы будем производить анализ на виртуальной машине, но стоит помнить, что и виртуальные машины не могут быть на 100% безопасны и их уязвимости могут позволить ВПО инфицировать всю систему.
Перечень инструментов и приложений
Для анализа приложений можно использовать уже готовые решения и Sandbox приложения, которые будут самостоятельно заставлять приложение работать, а затем нужно будет только смотреть отчет. К таким системам относят, например, cuckoosandbox. Их настройка это тема отдельной статьи, и безусловно здорово иметь настроенной такую систему, но в нашей статье мы будем анализировать приложения именно поверхностно и пытаться собрать максимально информации о их работе.
Виртуальный стенд будем использовать следующей конфигурации:
Virtual Box в качестве системы виртуализации, можно найти тут.
Операционную систему для тестирования можно взять тут причем она уже будет в виртуальной машине.
Набор инструментов SysInternals.
WireShark (на всякий случай, трафик с большей вероятностью будет зашифрован, в этом случае лучше использовать Fiddler или аналог).
Hiew - для быстрого просмотра формата файла и первичного анализа файла.
Опционально можно заняться тонкой настройкой системы на основании данных, которые покажет вот этот проект. Это проект, который собирает техники для определения среды анализа вредоносного кода из реального ВПО.
Если на момент анализа нет понимания, что ищем, так же рекомендуется поставить вот этот проект.
Так как для исследования нам нужен опытный образец, возьмем вот такой файл: https://www.virustotal.com/gui/file/8f56c89024597db9a07eabb399a4d07e8ff9af74573de80214be3e5f764132fa
Отправим его в наш тестовый стенд, попробуем понять что ему нужно для запуска. В качестве первого теста сделаем исследования формата и структуры файла:
Судя по данным внутри это приложение для OS Windows, для запуска которого нужно будет предоставить .Net окружение.
Стартуем ProcMon, ставим фильтр на имя файла, чтобы можно было отличить данные в большом потоке событий ОС. Пример установки фильтра можно найти на картинке ниже.
Перед запуском приложения необходимо убедиться, что виртуальная машина отключена от общих директорий, сетевых ресурсов. Далее переименовываем файл в 123123.exe и запускаем его. Убеждаемся, что он запустился, по логам ProcMon и через минуту сохраняем файл с логами ProcMon для дальнейшего анализа.
Логи отдаем приложению ProcDot и смотрим что получилось. На графе будут представлены все события, которые были порождены нашим приложением в рамках его работы.
Краткий алгоритм работы приложения:
Запуск потока в ОС.
Обращение к powershell для запуска кодированной команды.
Запуск приложений с наименованием
MsBuild.exe
.Скачивание файла и его запуск.
Набор событий довольно поверхностный, но уже дает представление о поведении файла. Теперь для определения вредоносности нужно пройти полностью цепочку загрузок и запустить каждый файл в системе и построить граф procdot
.
Оставим это упражнение для читателя. В следующей статье проведем анализ и можно будет сверить результаты. Так же во второй части рассмотрим более сложные примеры анализа файлов.
А прямо сейчас хочу порекомендовать бесплатный вебинар от моих коллег из OTUS. На вебинаре вы узнаете о том, что из себя представляют угрозы информационной безопасности в современном мире, как меняется их ландшафт за последнее время. А также поговорим о том, как от этих угроз защититься: какие методологии и практики должны лечь в основу системы защиты и какие семейства продуктов лучше использовать.
Комментарии (3)
WishNight
00.00.0000 00:00ВПО - это приложение, которое нарушает работу ОС, обеспечивает утечку данных скрытно от пользователя и может нарушать работу механизмов защиты операционной системы.
А если обеспечит утечку, но не скрытно, то уже не ВПО?
А если не нарушает работу ОС, не обеспечивает утечку, но шифрует пользовательские файлы - уже не ВПО?
vilgeforce
В заголовке "код", а в статье исследуется поведение...
perfect_genius
Вот-вот, надо звёздочку поставить в заголовке со сноской, что код не в первой части.