«Рыбка в аквариуме» или как повысить устойчивость песочницы к детектированию вредоносным ПО
Приветствую вас, уважаемые читатели. В данной статье будет рассмотрен один из способов выявления недостатков вашей песочницы и повышения её устойчивости к детектированию вредоносным программным обеспечением (ВПО) с помощью утилиты Pafish, а также мы ответим на вопрос : «Как проверить свою песочницу на предмет обнаружения виртуализации?»
Дисклеймер: в статье не будут рассматриваться реальные примеры рабочих решений в области анализа ВПО, а также не будут приводиться сравнения готовых open-source или коммерческих продуктов, поскольку подобный материал невозможно уместить в рамках одной статьи.
ВПО, использующее тактики и техники обнаружения и обхода виртуализации
В наше время существует большое разнообразие видов вредоносного кода, при этом присутствуют некоторые столь «умные» экземпляры, которые способны сопротивляться их обнаружению. Несколько семейств ВПО, такие как:
Шпионское ВПО (Spyware)
Вирусы-загрузчики (Downloader)
Программы-вымогатели (Ransomware)
ВПО для удаленного управления (RAT)
чаще всего используются по схожим мотивам, таким как шпионаж и получение финансовой выгоды, поэтому им важно как можно надежнее закрепиться в системе жертвы, оставаясь при этом незамеченными.
Первоначально, большое количество подобного ВПО пытается собрать как можно больше информации о системе и сети, в которую они попадают, чтобы помочь злоумышленникам оценить обстановку и убедиться в том, что данная среда является для них ценной. На данном этапе цикла компьютерной атаки киберпреступник пытается понять, что он получил доступ к реальной рабочей среде жертвы.
В большинстве случаев процесс развертки в системе и проверки её окружения автоматизирован при помощи механизмов, уже имеющихся в ВПО. Поэтому при получении злоумышленником доступа к виртуальной среде, такой как отладчик (debugger) или песочница (sandbox), запускаются встроенные в ВПО функции обнаружения и обхода средств виртуализации.
Отладчик (Debugger) — это программное приложение, которое записывает выполнение программы и создает журнал событий, таких как системные вызовы, вызовы библиотек, сетевые операции и исключения. Подобные анализаторы кода полезны для анализа вредоносов, поскольку они предоставляют полный обзор активности ВПО.
Песочница (Malware sandbox) — это виртуальная среда, в которой вредоносное ПО может безопасно запускаться и анализироваться, не причиняя вреда хост-системе. Иными словами песочница запускает файл в изолированной виртуальной среде, анализирует действия, которые он совершает в системе, и выдает вердикт о том, безопасен этот файл или нет.
Часто, при срабатывании механизмов защиты от отладки и анализа, загруженный malware откажет в запуске или попробует стереть себя с дискового пространства, заметая следы, что очень сильно мешает специалистам по информационной безопасности проводить анализ подобного вида ВПО.
Немного о практике…
Представим ситуацию, что специалист отдела по реагированию на инциденты (Incident Response Specialist) во время проведения криминалистики компьютерной памяти одного из зараженных хостов взломанной системы находит в ОЗУ запущенный процесс WINWORD.exe
, вытаскивает из него файл формата .docx
, который содержит вредоносный код, запускающий через VBA-макросы шпионское ВПО. Чтобы не подвергать заражению host-систему, эксперты по кибербезопасности анализируют подозрительные файлы в специальном виртуальном пространстве — песочнице. Такое программно-аппаратное решение позволяет производить запуск ВПО в изолированной среде, что исключает вредоносное воздействие на внешнюю систему.
Принцип работы песочницы достаточно прост: после запуска файла в виртуальной машине, она производит комплексное динамическое исследование действий объекта: анализ трафика, дампов памяти, изменений в ресстре, журналов выполнения приложений, применяет различные средства поведенческого анализа и выводит решение о степени безопасности данного файла.
Как упоминалось выше, современные ВПО пытаются обнаружить песочницу и избежать подобного анализа. В основном такие виды вредоносных программ используют похожие друг на друга методы и техники:
Анализ список запущенных процессов (Применяется в PlugX, Remcos, RogueRobin, EvilBunny, FinFisher)
Обращение к процессам, сервисам, сетевым интерфейсам и устройства с использованием WMI-запросов (Применяется в GravityRAT, OopsIE, Pony, RogueRobin, BadPatch, Fin7)
Проверка значений ключей реестра (Применяется в FinFisher, GravityRAT, ROKRAT, CozyCar, Smoke Loader)
Другие тестирования среды (Проверки существования файлов и каталогов с именованиями известных песочниц, либо различных гипервизоров virtual_machine, VM, virtualbox, vmware, kvm/qemu и тд.)
Чтобы что-то спрятать — нужно положить на самое видное место
Решение проблемы сокрытия виртуализации от детектирования ВПО имеет комплексный подход и является достаточно сложной задачей. Данная статья предполагает рассмотрение метода, позволяющего на программно-аппаратном уровне приблизить вашу песочницу (домашнюю лабораторию для исследований вредоносных программ) к системе, которая по внешним и внутренним признакам будет похожа на реальное рабочее место, что однозначно повысит устойчивость к обнаружению виртуализации и снизит процент исследуемых ВПО, сопротивляющихся анализу.
Прежде всего, стоит сказать, что до сих пор не существует идеальных песочниц, способных избегать детектирования, а также каждый специалист в сфере кибербезопасности использует разные коммерческие или open-source продукты в целях, которые в любом случае будут отличаться
Повторюсь , что в статье не будут сравниваться песочницы, а также останется нерассмотренным процесс их установки. Все действия желательно производить уже над готовой к работе системой.
Первоначально, отталкиваясь от механизмов обнаружения ВПО, будет достаточно сделать банальные действия:
Выделить больше 64 Гб (желательно >=100 Гб) дискового пространства под виртаульную машину (это необходимо для большего приближения системы, используемой для анализа, к реальной рабочей среде, поскольку ВПО проверяют данный параметр при их развертывании)
Создать множество папок в разных каталогах системы
Скачать дополнительное ПО (к примеру пакет Microsoft Office, Torrent, Discord)
Добавить в созданные ранее папки файлы различных форматов, фото, аудио и видео-файлы.
Воссоздать правдоподобную историю в браузере (к примеру, провести немного времени в интернете за серфингом любимых сайтов и форумов)
Знакомство с параноидальной рыбой (Pafish)
В дальнейших своих действиях предлагаю использовать одну незаменимую для аналитика ВПО программу:
Paranoid Fish (pafish) — это инструмент для обнаружения сред анализа вредоносного ПО, повторяющий действия вредоносного ПО в реальных условиях, чтобы определить, анализируется ли оно.
Он включает в себя ряд общих и специальных проверок на наличие определенных продуктов безопасности. Это позволяет разработчикам и пользователям таких инструментов анализа выявлять и, если возможно, устранять их слабые места с точки зрения детектирования.
Для установки этого инструмента необходимо скачать по ссылке репозиторий с GitHub в удобный нам каталог на виртуальной машине. Если в гостевой системе отсутствует подключение к сети (hostonly), можно скачать утилиту на хост и открыть простой python-server для загрузки файла через браузер :
# python3 -m http.server
Pafish создан с использованием mingw-w64 и make. Поэтому для компиляции в виртуальной машине на ОС Windows рекомендуется использовать Cygwin
Cygwin — это большая коллекция GNU и Open Source инструментов, обеспечивающих функциональность похожую на дистрибутив Linux в Windows.
Простыми словами: терминал Cygwin помогает пересобирать приложение из исходного кода, чтобы оно работало в Windows.
Сначала займемся его установкой, после перейдем к компиляции и запуску самого pafish:
Все действия осуществляются в виртуальной машине!
Скачиваем установщик по ссылке и запускаем его и нажимаем Далее
Удалить
Выбираем способ установки через Интернет (опять же, необходимо подключение к сети)
Выбираем необходимые каталоги установки и загрузки пакетов, затем параметры скачивания (если имеется подключение через proxy)
Указываем сайт или зеркало для загрузки (выбираем на свой вкус, подойдет практически любой)
Во время установки необходимо будет выбрать следующие пакеты для скачивания: make, mingw64-i686-gcc-core и mingw64-x86_64-gcc-core
После завершения установки запускаем терминал Cygwin, переходим в каталог, в котором находится наш репозиторий
cd /cygdrive/c/.../pafish-master/pafish
и компилируем его
В конце компиляции в каталоге .../pafish/Output/MingW/
создаться исполняемый файл pafish.exe. Запускаем и проверяем его работу, также, при работе утилиты, в этом же каталоге появится лог-файл pafish.log, в котором сохраняется результат тестирования.
Примечание: Чтобы скомпилировать дистрибутив на основе Debian (Ubuntu, Mint, …), установите необходимые пакеты, выполнив:
sudo apt-get install make mingw-w64
Чтобы скомпилировать дистрибутив типа Red Hat (Fedora, CentOS, …):
sudo yum install make mingw32-gcc mingw64-gcc
Для компиляции в Arch Linux:
pacman -S make mingw-w64-gcc
Затем скомпилируйте, используя следующие команды:
$ cd pafish/
$ make -f Makefile.linux
[...]
$ ls Output/MingW/
pafish.exe
«Как рыба в воде»
Утилита была запущена не в активном состоянии песочницы, а лишь в обычной виртуальной машине, поэтому её вывод не является корректным, для получения реального результата проверки нашей системы необходимо проводить её тестирование во время работы песочницы, что позволит активировать все необходимые инструменты анализа и механизмы сокрытия виртуализации, которые большинство производителей встраивают в свои проекты.
Для этого добавим файл pafish.exe в автозапуск:
Переходим в планировщик заданий (OC Windows) и создаем простую задачу, даем ей название
В разделе Триггер выбираем пункт При входе в Windows
Далее ставим пункт Запустить программу
В завершении указываем путь к файлу pafish.exe
В свойствах созданной задачи необходимо поставить галочку Выполнить с наивысшими правами
Начинаем анализ любого файла (неважно будет ли он вредоносным или нет). Песочница запускает виртуальную машину из состояния заранее созданного снимка (snapshot) и производит анализ выбранного объекта, в это время с запуском операционной системы активируется триггер, запланированная задача открывает файл pafish.exe. Наблюдаем корректный вывод утилиты и, исходя из его результата, делаем вывод об устойчивости песочницы к детектированию вредоносным ПО.
Рассмотрим вывод утилиты во время её работы:
Простая проверка на отладчик
Проверяет временные метки 2 раза и вычисляет разницу
Измеряет время выполнения инструкций CPU ID и проверяет наличие гипервизора (KVM, Hyper-V, VMWare, Xen)
Отслеживание действий мыши
Простой просмотр имени пользователя, пути файла и корневого каталога
Проверка ресурсов железа: размер диска, размер свободного пространства, количество процессоров
Тест на наличие хуков и агентов песочницы
Проверки на популярные гипервизоры (Sandboxie, Wine, WMWare, VirtualBox)
При выводе pafish OK по пункту тестирования можно считать, что конфигурация и работа виртуальной машины не будет обнаружена механизмами детектирования ВПО, что дает возможность проводить анализ вредоносного кода в песочнице.
Если же по некоторым пунктам тестирования утилита выводит traced, значит ВПО сможет распознать признаки виртуализации и избежать анализа.
Остается лишь исправить упущения производителя гипервизора или песочницы, возникающие при их работе и позволяющие обнаружить наличие виртуализации.
В заключении необходимо сказать о том, что разные продукты для анализа ВПО имеют разную степень устойчивости к детектированию виртуализации, также каждый гипервизор имеет свои преимущества и недостатки при их эксплуатации песочницами. Следует подбирать варианты хостов, виртуальных машин, песочниц и их настроек, либо коммерческих решений, исходя из поставленных задач, и регулировать параметры используемых систем для достижения необходимого результата.