Часть кода шифровальщика имеет сходство с используемым во
вредоносной программе «Dridex», что указывает на общее происхождение.
Автор - Эндрю Брандт.
Пара инцидентов в разных организациях, в ходе которых злоумышленники запустили программу-вымогатель под названием «Entropy», предшествовали заражения инструментами, предоставляющими злоумышленникам удаленный доступ - Cobalt Strike и Dridex - на некоторых компьютерах целей.
Аналитики Sophos не сталкивались с Entropy до этих инцидентов. Примечательно, что в обоих случаях имелись существенные различия в методологии, использованной злоумышленниками: способы, с помощью которых злоумышленники закрепились на объектах атаки, время, проведенное атакующими в сети объекта атаки, и вредоносное ПО, использовавшееся для подготовки финальной фазы атаки.
Некоторые аспекты тактики атак также были схожи: в обоих случаях злоумышленники в значительной степени полагались на Cobalt Strike как средство заражения большего количества машин, достигая переменного успеха в зависимости от того, была ли установлена защита на конкретной машине. Злоумышленники также осуществляли избыточное извлечение конфиденциальных данных более чем в одно облачное хранилище. В ходе криминалистического анализа мы обнаружили несколько экземпляров Dridex, известной вредоносной программы общего назначения, которую ее операторы могут использовать для распространения других вредоносов.
В первом кейсе злоумышленники использовали уязвимость ProxyShell в сети, принадлежащей североамериканской медиа-организации, для установки удаленного командного интерпретатора на сервер Exchange, и через него распространили Cobalt Strike на другие компьютеры. В течение четырех месяцев злоумышленники не спеша прощупывали организацию и похищали данные, прежде чем начать атаку шифровальщика в начале декабря. Последующая экспертиза выявила несколько полезных нагрузок Dridex на некоторых из зараженных машин.
Анализ второй атаки Entropy - на этот раз на региональную правительственную организацию - показал, что вредоносное вложение электронной почты заразило компьютер пользователя трояном Dridex, который был использован для доставки дополнительного вредоносного ПО (а также коммерческой утилиты для удаленного доступа ScreenConnect) и латерального перемещения в сети цели. Примечательно, что во время второй атаки прошло всего около 75 часов с момента обнаружения подозрительной попытки входа в систему на одной машине до начала утечки данных с объекта атаки: злоумышленники установили, затем использовали WinRAR для сжатия файлов в архивы, после чего загрузили архивы в различные облачные хранилища, включая privatlab.com, dropmefiles.com и mega.nz.
И хотя не на всех компьютерах в сетях обеих организаций перед атакой была установлена защита конечных точек, на тех, где защита имелась, обнаружилась интригующе совпадающую сигнатуру поведения: код упаковщика, использованный для защиты шифровальщика Entropy, был обнаружен сигнатурой обнаружения (Mal/EncPk-APX), которую аналитики ранее использовали для обнаружения кода упаковщика, использованного Dridex.
При дополнительном изучении методом реверс-инжиниринга аналитики SophosLabs обнаружили, что некоторые подпрограммы, используемые шифровальщиком для обфускации своего поведения (и затруднения изучения аналитиками), напоминают подпрограммы, используемые для аналогичных функций в Dridex - хотя проявляются они и не без значительных усилий по удалению других обфускаций, которые затрудняли процесс сравнения кода.
Поведение атакующих и применение бесплатных и коммерческих инструментов.
Злоумышленники в обоих случаях использовали свободно распространяемые инструменты, такие как Windows-утилиты PsExec и PsKill, а также утилиту AdFind, предназначенную для опроса серверов Active Directory. Они также использовали WinRAR для упаковки коллекций похищенных ими конфиденциальных данных, а затем загружали их на различные облачные хранилища с помощью браузера Chrome.
Такая тактика, к сожалению, довольно распространена среди атак, связанных с требованием выкупа. Средства защиты конечных точек обычно не блокируют использование этих и других служебных программ, поскольку они имеют легальное применение.
В обоих случаях злоумышленники неоднократно (и безуспешно) пытались загрузить и запустить инструменты удаленного управления Cobalt Strike на машинах на заключительном этапе атаки. Во второй атаке, после нескольких неудачных попыток использовать Cobalt Strike, они также попытались установить Meterpreter от Metasploit на некоторые машины, и в итоге решили установить коммерческий инструмент удаленного доступа под названием ScreenConnect. Злоумышленники попытались использовать инструменты обмена файлами в ScreenConnect, чтобы передать Cobalt Strike на защищенные машины, но в итоге потерпели неудачу.
В конце концов, злоумышленники сбросили набор файлов на сервер Active Directory, который в итоге взяли под свой контроль. Хакеры поместили эти файлы в папку C:\share$:
- comps.txt - Список узлов для атаки.
- pdf.dll - полезная нагрузка ширфровальщика.
- PsExec.exe - легитимное приложение от Microsoft.
- COPY.bat – скрипт для копирования pdf.dll на все хосты с помощью PsExec.
- EXE.bat - скрипт для выполнения pdf.dll на всех узлах с помощью PsExec.
Сначала атакующие запускали скрипт COPY, а затем скрипт EXE.
Сравнение подпрограмм в Dridex и Entropy.
Образцы Entropy в обоих случаях поставлялись в виде DLL-файлов, скомпилированных для 32-битной архитектуры. Полезная нагрузка Dridex была извлечена из различных атакованных систем в формате EXE и DLL, скомпилированных для 32-битной и 64-битной архитектур. Для сравнения мы рассмотрели 32-битные компоненты Dridex.
Злоумышленники скомпилировали кастомные версии DLL программы Entropy для каждой целевой организации. Вредонос содержит жестко закодированные ссылки на целевую организацию, включая текст и изображения, которые впоследствии используются в HTML-записке с требованием выкупа, рассылаемой на зараженные компьютеры.
В записке жертву предостерегают от обращения в полицию или ФБР («Они не будут слушать вас, им нет дела до вашего бизнеса»), а также от найма консультантов или фирм по восстановлению данных («Они думают, что хороши в переговорах, но это не так. Они возьмут ваши деньги, немного поболтают с нами по своим жалким сценариям (о да, мы знаем почти все их реплики) и провалятся»), причем слово «провалятся» отсылает к расследованию ProPublica 2019 года, в котором сообщалось, что некоторые компании, утверждающие, что специализируются на восстановлении данных после выкупа, просто платят выкуп.
Злоумышленники выполняли его с помощью командной строки, которая передавала в DLL два параметра: первый - стандартный вызов функции DllRegisterServer, а второй параметр представлял собой случайно выглядящую строку символов, служащую своего рода паролем: без него шифровальщик не будет работать должным образом.
К счастью, нам удалось найти точную команду, которую злоумышленники использовали для запуска вредоноса, поэтому мы смогли изучить образцы в контролируемой среде. Команда выполнения Entropy выглядела следующим образом:
regsvr32 c:\users\public\xyz.dll DllRegisterServer <20 случайных символов>.
Шифровальщик обязательно будет иметь значительные функциональные отличия от более универсального ботнета, такого как Dridex, что усложняет построчное сравнение. Вместо этого мы изучили аспекты кода, который, очевидно, используют обе вредоносные программы, в попытках усложнить анализ: код упаковщика, который препятствует простому статическому анализу основной вредоносной программы; подпрограмму, которую вредоносы используют для сокрытия вызовов API; и подпрограмму, которая расшифровывает текстовые строки, встроенные в вредонос.
Поведение упаковщика Entropy.
Упаковщик, используемый Entropy, работает в два этапа для распаковки программного кода: На первом уровне он выделяет некоторое количество памяти, затем копирует зашифрованные данные в это пространство памяти, и упаковщик передает выполнение на первый уровень. Далее упаковщик расшифровывает код в другой части того же участка памяти, где хранились зашифрованные данные, а затем передает выполнение на этот второй слой.
Инструкции, определяющие, как Entropy выполняет первый слой распаковки, настолько похожи на Dridex, что аналитик, изучивший код упаковщика - в частности, ту его часть, которая ссылается на API под названием LdrLoadDll - и поведение этой подпрограммы, назвал его «очень похожим на загрузчик Dridex v4» и сравнил его с аналогичным загрузчиком, используемым образцом Dridex 2018 года. Поведение, о котором идет речь, было отмечено в исследованиях других производителей о Dridex. В частности, он ищет DLL с именем snxhk.dll, которая является компонентом защиты памяти продукта защиты конечных точек, чтобы саботировать этот механизм.
Примечательно, что Sophos уже некоторое время имеет механизм статического обнаружения упаковщика Dridex в наших продуктах для конечных точек. Имя сигнатуры - Mal/EncPk-APX, что примечательно, поскольку телеметрия показывает, что во время инцидентов машины, защищенные Sophos, обнаруживали этот упаковщик, когда присутствовал Entropy, но не Dridex.
У другого исследователя SophosLabs также были заметки об обнаружении этого кода упаковщика на защищенных Sophos машинах, на которых злоумышленники безуспешно пытались запустить шифровальщик под названием DoppelPaymer. Эта программа-вымогатель, происхождение которой (как и Dridex) приписывают банде, известной как Evil Corp, использовалась примерно с апреля 2019 по май 2021. После того как в декабре 2019 Управление по контролю за иностранными активами Министерства финансов США (OFAC) наложило санкции на Evil Corp за Dridex, группировка быстро сменила название и бренд своего шифровальщика, пройдя через множество имен, включая WastedLocker, Hades, Phoenix, Grief, Macaw, а теперь, возможно, и Entropy.
Подпрограмма обработчика векторных исключений.
После того как вредоносная программа распакована, последний шаг упаковщика - запуск вредоноса в ячейке памяти, известной как точка входа, с которой начинаются первые инструкции, выполняемые вредоносной программой. В случаях Dridex и Entropy код точки входа устанавливает процесс, называемый Vectored Exception Handler (VEH), который представляет собой еще одну форму защиты от анализа, встраиваемую авторами вредоносных программ в конечный продукт. VEH устанавливает альтернативный способ для программы вызывать API в операционной системе, что усложняет аналитику возможность увидеть, что именно делает код на каждом конкретном шаге.
Использование VEH для этой цели - нестандартное поведение для легальных программ, поэтому само их наличие является слабой эвристикой вредоносности и более сильным индикатором Dridex, поскольку он использовал технику VEH в течение некоторого времени. Однако, отмечает аналитик, хотя код VEH определенно одинаков и в Dridex, и в Entropy, «странно, но я не*вижу, чтобы этот код использовался Entropy».
Декодирование строк Entropy и подпрограммы разрешения API.
Мы также рассмотрели два других аспекта поведения этой вымогательской программы и сравнили их с аналогичными подпрограммами, найденными в Dridex. Одна из этих подпрограмм используется для декодирования зашифрованных строк, встроенных в вредоносную программу.
В сравнении выше форма подпрограммы Dridex показана слева, а форма Entropy - справа. Аналитику, рассматривавшему эти примеры, пришлось значительно очистить код, чтобы достигнуть наглядности. исследователь описал логику расшифровки строк как принципиально аналогичный версии Entropy поток кода, но «с небольшой оптимизацией».
Подобным образом аналитик сравнил исходный код подпрограмм, которые Dridex и Entropy используют для вызова API. Несмотря на небольшие различия (Dridex принимает на вход два хэш-значения, а Entropy - только одно), аналитики утверждают, что логика «хождения» (навигации по всем доступным API) с последующим разбором блока окружения процесса (PEB) и списка модулей выглядит удивительно похожей.
В целом, такое поведение, заключающееся в переборе структур для получения имени базовой DLL и, в конечном итоге, адресов их функций - с использованием PEB_LDR_DATA и LDR_DATA_TABLE_ENTRY - является общей поведенческой чертой для Entropy и Dridex.
Еще одна примечательная деталь, почти слишком незначительная для упоминания, заключается в том, что расшифрованные строки шифровальщика содержат строку текста, начинающуюся с названия целевой организации, за которой следует «…falls apart. Entropy Increases.». Этого нет ни в записке о выкупе, ни где-либо еще, только в бинарном файле. Похоже, что это ссылка на строчку из фантастического романа 2005 года «В поисках Аляски» Джона Грина: «Энтропия возрастает. Все рассыпается».
Выявление и советы по снижению риска.
В обоих случаях злоумышленники полагались на недостаток внимательности - обе цели имели уязвимые системы Windows, на которых отсутствовали текущие исправления и обновления. Правильно пропатченные машины, такие как сервер Exchange, заставили бы злоумышленников приложить больше усилий для получения первоначального доступа. Требование об использовании многофакторной аутентификации, если бы оно существовало, создало бы еще большие трудности для неавторизованных пользователей при входе на эти или другие машины.
Заражению Entropy предшествовали обнаружения маячков Cobalt Strike (ATK/Tlaboc-A), вредоносного ПО Dridex (Mal/EncPk-APX, Troj/Dridex-AIZ) и пакетных скриптов (Troj/Agent-BCJY), которые в конечном итоге использовались для распространения вредоноса на другие машины. Компоненты шифровальщика обнаруживаются несколькими способами: в памяти, по поведению, а также с помощью статического обнаружения runtime-упаковщика.
SophosLabs выражает признательность Ананду Аджану, Колину Кови, Абхиджит Гупта, Стивену Лотту, Рахилу Шаху, Викасу Сингху, Феликсу Вейну, Сайеду Заиди и Сяочуань Чжану за их вклад в анализ Dridex и Entropy, а также методологии злоумышленников.
Источник: https://news.sophos.com