Андрей Жданов
Специалист по проактивному поиску киберугроз Group-IB
Лето 2021 года выдалось жарким не только из-за погоды, но и новостей из мира Ransomware. В конце мая группа DoppelPaymer произвела, пользуясь маркетинговым термином, "ребрендинг", переименовав свои новые программы-вымогатели в Grief (Pay OR Grief). А в июне-июле группы DarkSide и REvil друг за другом последовательно исчезли из публичного пространства после громких атак на компании Colonial Pipeline и Kaseya соответственно. Под конец июля на рынок групп, зарабатывающих вымогательством, вышел новой игрок – BlackMatter. Но вот новый ли?
Встречайте BlackMatter
Деятельность группы BlackMatter, согласно данным их сайта, ведется с 28 июля 2021 года. Вот что они сообщают о себе:
Первой жертвой BlackMatter стало архитектурное бюро в США.
В общении с жертвой злоумышленники проявляют жесткость и бескомпромиссность, увеличивая выкуп по истечении срока ультиматума.
К нам в Лабораторию компьютерной криминалистики Group-IB руки попал образец BlackMatter для Windows, использовавшийся для этой атаки. Вообще же группой BlackMatter разработаны версии программ-вымогателей не только для Windows, но и для Linux, что потенциально позволит злоумышленникам атаковать также сервера под управлением Linux, в том числе и ESXi.
BlackMatter — преемник DarkSide?
В первые минуты анализа образца BlackMatter возникает непреодолимое чувство дежавю: где-то мы это уже видели. Тот же концептуальный подход к обфускации, зашифрованные конфигурационные данные в отдельной секции, шифрование строк и обфускация вызовов функций API… Ну конечно! Весь этот набор техник обфускации мы уже встречали у REvil и DarkSide. Но надо отметить, что реализация техник все же разная, даже можно сказать, что подчеркнуто разная, чтобы избежать ненужных сравнений. Программы BlackMatter, REvil и DarkSide при сравнительно небольших размерах своих исполняемых файлов достаточно функциональны по характеристикам, в них реализованы очень быстрые многопоточные алгоритмы шифрования файлов с использованием I/O (input/output) completion port. Ничего лишнего, только то, что нужно для дела. Очевидно, что образцы программ-вымогателей этих семейств разработаны высококвалифицированными программистами, имеющими глубокие познания в системном программировании под Windows.
Дальнейшее исследование образца BlackMatter показало, что аналогично DarkSide файлы жертвы шифруются с использованием алгоритма шифрования Salsa20, а сгенерированные для каждого файла ключи – уже с использованием открытого ключа RSA-1024. Сравнительный анализ реализации кода шифрования с образцами DarkSide также показал их большую схожесть.
Не стоит забывать и тот незначительный факт, что уже в марте авторы REvil стали использовать политическую подоплеку в своих программах. Так, в образцах REvil использовался ключ реестра "SOFTWARE\BlackLivesMatter", для названий параметров реестра - строки "*AstraZeneca" и "*franceisshit". А своими последними дерзкими атаками группировки DarkSide и REvil вызвали гнев "небожителей", за что получили свою порцию молний от громовержцев и были "низвергнуты в Тартар". Вопрос, который интересовал всех, начиная от коммьюнити по кибербезопасности и заканчивая медиа: надолго ли они исчезли? И в каком качестве они вернутся обратно? А вот и ответы. Под вызывающим названием BlackMatter новый проект, имеющий множество пересечений с предшественниками, заявил о себе спустя 2 недели после того, как сайты REvil прекратили работу. Началом пути для шифровальщика можно считать первую жертву. И, как мы уже описали выше, она уже есть на счету BlackMatter.
Результаты анализа образца BlackMatter
В представленной программе BlackMatter авторы указали номер версии программы-вымогатели – 1.2. Очевидно, существовали и более ранние версии, которые тестировались и проходили обкатку. Примечательно, что при запуске программа BlackMatter не проверяет принадлежность жертвы к стране постсоветского пространства, как это, например, реализовано в REvil и DarkSide. И это неудивительно при таком контексте, авторы BlackMatter не хотят, чтобы их как прежде ассоциировали с русскоязычными преступными группировками.
При запуске BlackMatter проверяет права текущего пользователя, и в случае необходимости пытается обойти контроль учетных записей UAC (User Account Control) путем повышения привилегий с помощью COM-интерфейса ICMLuaUtil. Также при запуске, если установлен соответствующий флаг в конфигурации, осуществляет попытки аутентификации с использованием учетных записей, содержащихся в конфигурационных данных.
В зависимости от параметров командной строки программа может функционировать в 5 режимах.
Нами были подобраны по хешам параметры командной строки.
-path <PATH> – шифрование указанного объекта (каталога, файла, сетевого ресурса);
-safe – регистрация себя в ключе автозапуска системного реестра RunOnce, перезагрузка в безопасном режиме для шифрования файлов в безопасном режиме;
-wall – создание изображения BMP с текстом о шифровании файлов и установка его в качестве обоев рабочего стола.
<PATH> – шифрование указанного каталога/файла.
При иных параметрах или их отсутствии осуществляется шифрование файлов на дисках и доступных сетевых ресурсах. По завершении шифрования программа создает изображение BMP с текстом о шифровании файлов, которое устанавливает в качестве обоев рабочего стола.
Перед шифрованием BlackMatter удаляет теневые копии разделов с использованием запросов WQL (WMI Query Language).
Как уже сказано, для шифрования файлов в BlackMatter используется наиболее производительная реализация многопоточности на основе использования I/O (input/output) completion port. Для потоков перечисления и шифрования файлов программой устанавливается также наибольший приоритет (THREAD_PRIORITY_HIGHEST). Шифрование содержимого файлов по умолчанию осуществляется в пределах только первого мегабайта. Блок данных с зашифрованным ключом шифрования дописывается к концу файла. Имена зашифрованных файлов имеют следующий вид:
<FILENAME>. <VICTIM_ID>
FILENAME – оригинальное имя файла;
VICTIM_ID – идентификатор жертвы, формируемый на основе строки, содержащейся в параметре MachineGuid раздела реестра HKLM\SOFTWARE\Microsoft\Cryptography.
В каждом обработанном каталоге вымогатель создает текстовые файлы, содержащие требование о выкупе:
< VICTIM_ID>.README.txt.
Пропускаемые в процессе шифрования имена каталогов:
windows, system volume information, intel, $windows.~ws, application data, $recycle.bin, mozilla, program files (x86), program files, $windows.~bt, public, msocache, default, all users, tor browser, programdata, boot, config.msi, google, perflogs, appdata, windows.old
Имена файлов-исключений:
desktop.ini, autorun.inf, ntldr, bootsect.bak, thumbs.db, boot.ini, ntuser.dat, iconcache.db, bootfont.bin, ntuser.ini, ntuser.dat.log
Расширения файлов, которые не шифруются BlackMatter:
themepack, nls, diagpkg, msi, lnk, exe, cab, scr, bat, drv, rtp, msp, prf, msc, ico, key, ocx, diagcab, diagcfg, pdb, wpx, hlp, icns, rom, dll, msstyles, mod, ps1, ics, hta, bin, cmd, ani, 386, lock, cur, idx, sys, com, deskthemepack, shs, ldf, theme, mpa, nomedia, spl, cpl, adv, icl, msu
Списки исключений содержатся в конфигурации BlackMatter в виде хешей соответствующих строк. Они за одним исключением совершенно идентичны таким же спискам в DarkSide. Как видим, состав списков достаточно специфичен, чтобы говорить о случайном совпадении.
Конфигурация
Конфигурационные данные BlackMatter содержатся в секции, замаскированной под секцию ресурсов ".rsrс", при этом ресурсы в программе как таковые отсутствуют.
Самое первое 32-битное число (0FFCAA1EAh) в секции представляет начальное значение для генератора псевдослучайной последовательности (random seed), используемого для шифрования данных программы. Второе 32-битное значение представляет собственно размер конфигурационных данных, следующих далее за ним. До шифрования конфигурационные данные были предварительно сжаты с использованием популярного у авторов шифровальщиков алгоритма сжатия aPLib. Ранее этот алгоритм встречался, к примеру, в таких семействах программ-вымогателей DarkSide, DoppelPaymer, Clop и других.
В расшифрованных и распакованных конфигурационных данных содержатся соответственно открытый ключ RSA-1024, идентификатор, названный авторами "bot_company", ключ AES-128 ECB для шифрования данных, передаваемых злоумышленникам.
Далее следуют 8 логических флагов, определяющих настройки программы-вымогателя (в скобках указано текущее значение в конфигурации представленного образца):
Шифровать в больших файлах нечетные мегабайты (нумерация с 1) (0);
Осуществлять попытки аутентификации с использованием содержащихся в конфигурации следующих учетных данных (1):
aheisler@hhcp.com:120Heisler
dsmith@hhcp.com:Tesla2019
administrator@hhcp.com:iteam8**
Монтировать разделы и шифровать на них файлы (1).
Шифровать файлы на доступных сетевых ресурсах (1). При этом программа также перечисляет компьютеры Active Directory с помощью запросов LDAP.
Завершать процессы, содержащие в имени следующие подстроки (1):
encsvc, thebat, mydesktopqos, xfssvccon, firefox, infopath,winword, steam, synctime, notepad, ocomm, onenote, mspub, thunderbird, agntsvc, sql, excel, powerpnt, outlook, wordpad, dbeng50, isqlplussvc, sqbcoreservice, oracle, ocautoupds, dbsnmp, msaccess, tbirdconfig, ocssd, mydesktopservice, visio
Останавливать и удалять службы (1):
mepocs, memtas, veeam, svc$, backup, sql, vss
Создавать и проверять мьютекс (1):
Global\<MUTEX_NAME>
MUTEX_NAME – имя мьютекса, формируемое также на основе строки из параметра реестра MachineGuid.
Передавать злоумышленникам информацию о скомпрометированной системе и результатах шифрования (1). Информация в зашифрованном виде (AES-128 ECB) направляется в виде HTTP-запросов POST на один из следующих адресов:
https://paymenthacks[.]com
http://paymenthacks[.]com
https://mojobiden[.]com
http://mojobiden[.]com
Остальные конфигурационные данные содержатся в виде строк Base64. В этих строках находятся списки хешей пропускаемых имен каталогов/файлов и расширений файлов, список подстрок в названиях завершаемых процессов, имена удаляемых служб, ссылки на ресурсы злоумышленников для передачи идентификационной информации, зашифрованный список учетных данных пользователей для попыток аутентификации, зашифрованный текст для файлов с требованиями выкупа.
Обфускация
Для сравнения строк в программе используются хеши, чтобы таким образом скрыть используемые строки, и тем самым дополнительно усложнить анализ программы. Уже упоминалось, что проверка исключаемых имен каталогов и файлов, а также файловых расширений осуществляется путем сравнения хешей строк. Параметры командной строки программы идентифицируются также по их хешам.
В программе используются две функции расчета хеша: соответственно для Unicode-строк и ANSI-строк.
Как видно, в функции для Unicode-строк для вычисления хеша используются латинские буквы в нижнем регистре. В функции для ANSI-строк алгоритм вычисления аналогичен, но регистр символов учитывается.
Эти функции имеют сходство с аналогичными в Metasploit / Cobalt Strike. Они также используются и в обфускации вызовов функций API. Для идентификации функции API используется общий хеш от имени DLL и имени функции. Для получения адресов необходимых для программы функций API производится перечисление DLL (Dynamic Link Library) и экспортируемых ими функций через PEB (Process Environment Block). При совпадении хеша с указанным в коде программы извлекается адрес найденной функции и сохраняется в таблицу. При этом в таблицу сохраняется не непосредственный адрес функции, а адрес на выделенный блок памяти со следующим кодом дополнительной обфускации вызова функции API:
mov eax, <ENC_FUNC_ADDR>
xor eax, 22065FEDh
jmp eax
ENC_FUNC_ADDR представляет собой результат сложения по модуля 2 (XOR) полученного адреса функции API и значения 22065FEDh. Такой способ вызова функции маскирует ее фактический адрес, что дополнительно усложняет анализ программы.
Конфигурационные данные, строки и данные в секции данных зашифрованы с помощью генератора псевдослучайной последовательности 32-битных значений и операции XOR с этими значениями. Начальное значение генератора (random seed) 0FFCAA1EAh содержится в начале конфигурационных данных.
Строки и данные, формируемые в стеке, а также номер версии программы и некоторые хеши строк в программе шифруются с помощью циклической операции XOR с 32-битным значением 022065FEDh.
В процессе работы программа также использует антиотладочный прием, заключающийся в скрытии потоков от отладчика, путем недокументированного вызова функции NtSetInformationThread с параметром ThreadHideFromDebugger (11h).
Заключение
В результате анализа выявлены явные взаимосвязи BlackMatter с образцами DarkSide и REvil, особенно с DarkSide.
На данный момент невозможно с полной уверенностью сказать, что за созданием всех трех программ-вымогателей стоит одна и та же команда разработчиков. Однако очевидно, что освободившееся место долго не пустовало: на смену DarkSide и REvil пришел не менее изощренный BlackMatter. По заявлениям представителя группы, высказанных на русском языке в интервью Recorded Future (перевод доступен здесь), работа над программой-вымогателем шла около полугода, для ее создания были использованы "лучшие решения" из программ LockBit, REvil и DarkSide. Мы считаем, что представитель немного лукавит. Сомнительно, чтобы несвязанные с BlackMatter группы LockBit, REvil и DarkSide стали бы делиться своими дорогостоящими исходными кодами с конкурентом. А заниматься реверс-инжинирингом для разработки программы-вымогателя — дело трудозатратное и лишенное всякого смысла.
Теневая экономика, созданная теми, кто стоит за программами-вымогателями, привлекает все новых и новых игроков, а старые либо меняют маску, либо объединяются в новые партнерские программы, создавая спинн-офф проекты. Ransomware — это наиболее прибыльный киберкриминальный бизнес сегодня, процветающий за счет взаимовыгодной модели бизнеса, объединяющей киберпреступников с различной специализацией, а также недостаточного понимания со стороны бизнеса, что шифровальщики — это проблема #1 для любой компании, любой отрасли в глобальном масштабе. Это приводит к тому, что жертвы шифровальщиков халатно относятся к информационной безопасности и экономят на построении эффективной защиты от таких угроз. Как результат — простой бизнеса, падение капитализации, рост расходов, переплата злоумышленникам, что делает их жертв фактически спонсорами дальнейшей преступной деятельности вымогателей.
Что делать, если данные вашей компании зашифровали?
Подробный мануал от экспертов Group-IB. Жми сюда!
Что дает профессиональное реагирование на инцидент?
Подробный мануал от экспертов Group-IB. Жми сюда!
Рекомендации для защиты сети от шифровальщиков
Обезопасьте используемые средства удаленного доступа. Используйте мультифакторную аутентификацию или, как минимум, сложные и регулярно сменяемые пароли.
Незамедлительно устраняйте уязвимости в публично доступных приложениях, особенно те, которые могут позволить атакующим преодолеть внешний периметр.
Внедрите комплексную защиту электронной почты, которая позволит обнаруживать и блокировать самые сложные угрозы. Подробнее тут.
Контролируйте работу подрядчиков в вашей сети. Удаленный доступ с их стороны должен быть строго регламентирован.
Убедитесь, что учетные записи имеют минимальные привилегии в системах. В случае компрометации это затруднит атакующим продвижение по сети.
Незамедлительно устраняйте уязвимости на узлах внутренней сети, которые могут позволить атакующим повысить привилегии или продвинуться по сети.
Осуществляйте мониторинг использования инструментов двойного назначения, которые могут помочь атакующим провести сетевую разведку, получить аутентификационные данные и пр.
Ограничьте доступ к облачным хранилищам. Это может затруднить атакующим выгрузку данных из корпоративной сети.
Используйте отдельные учетные записи с мультифакторной аутентификацией для доступа к серверам, содержащим резервные копии. Кроме этого, убедитесь, что у вас также есть офлайн-копии.
Внедрите современное средство мониторинга и блокирования угроз, которое позволяет локализовать и нейтрализовать атаку на любом этапе ее жизненного цикла. Подробнее тут.
Более подробную информацию об атаках с использованием программ-вымогателей, управляемых вручную, можно получить в отчете Group-IB "Программы-вымогатели 2020/2021".