Вступление
В последние пару лет, говоря о киберугрозах, чаще всего имеют в виду атаки вымогателей, а именно шифровальщиков. В 2020–2021 годах с началом пандемии и появлением ряда крупных группировок (Maze, REvil, Conti, DarkSide, Avaddon) сформировалась целая преступная экосистема. Это привело к лавинообразному росту числа атак на крупные организации по всему миру, способные заплатить выкуп в сотни тысяч и даже миллионы долларов США.
В этом году после ряда серьезных инцидентов с шифровальщиками, таких как атаки на Colonial Pipeline (оператор крупнейшего топливного трубопровода в США), JBS и Kaseya, и последовавшего за ними повышенного внимания со стороны властей США и других стран, рынок киберпреступников-вымогателей претерпел серьезные изменения: некоторые группировки закрылись, другие провели «ребрендинг».
Большинство известных группировок, о которых можно услышать в новостях в последнее время, как правило, активно за пределами стран СНГ. В этом регионе, однако, организации тоже не могут чувствовать себя в безопасности, поскольку являются целью десятков менее известных групп киберпреступников-вымогателей.
В этом обзоре мы расскажем об основных семействах троянцев-шифровальщиков, наиболее активно атаковавших бизнес на территории СНГ в первой половине 2021 года, и их технических особенностях.
Статистика
Число бизнес-пользователей в СНГ, столкнувшихся с шифровальщиками, январь — июль 2021 г.(скачать)
Краткий обзор семейств шифровальщиков
BigBobRoss/TheDMR
Этот шифровальщик начал свою активность в самом конце 2018 года и остается актуальным до сих пор. По нашим сведениям, основной вектор его распространения — подбор паролей к RDP.
При запуске BigBobRoss показывает оператору техническую информацию, содержащую среди прочего ключ, необходимый для последующей расшифровки файлов. Также шифровальщик отправляет сообщение с этой информацией через Telegram.
Технический файл, созданный BigBobRoss
Содержимое папок после шифрования выглядит следующим образом: в начало каждого файла добавляется электронный адрес злоумышленников и ID жертвы, затем идут оригинальные имя и расширение, а после расширение, добавляемое шифровальщиком.
Зашифрованные файлы и записка
Помимо этого, в каждую папку добавляется записка с контактами злоумышленников.
Записка, оставленная шифровальщиком
Для шифрования программа использует симметричный алгоритм AES с ключом размером 128 бит в режиме ECB (режим простой замены) из криптографической библиотеки CryptoPP.
В PDB осталась информация о названии проекта. Существует вероятность, что разработчик владеет русским языком, однако с уверенностью этого утверждать нельзя, поскольку название может быть лишь попыткой запутать следы.
PDB исполняемого файла
Crysis/Dharma
Crysis — это старый шифровальщик, известный еще с 2016 года. За свою историю он успел прекратить активность и возродиться снова, и на сегодняшний день продолжает действовать. Код троянца не менялся уже несколько лет, однако он активно распространяется по схеме партнерской программы (RaaS, Ransomware-as-a-Service).
Crysis написан на C/C++ и скомпилирован в MS Visual Studio. Зловред шифрует файлы алгоритмом AES-256 в режиме CBC. При запуске троянца генерируется 256-битный ключ AES, который шифруется по алгоритму RSA-1024 с публичным ключом злоумышленника, содержащимся в теле троянца.
При шифровании каждого файла используется вышеуказанный ключ AES, а также сгенерированный 128-битный вектор инициализации (IV). В обработанный зловредом файл помимо зашифрованного содержимого сохраняется IV, зашифрованный алгоритмом RSA ключ AES, а также вспомогательная информация, в том числе строковая метка злоумышленника, хэш SHA1 от использованного публичного ключа RSA, оригинальное имя файла, тип шифрования (для малых и больших файлов по-разному выбирается часть файла для шифрования) и контрольная сумма.
Требования Crysis
Типичный вектор атаки Crysis — через несанкционированный доступ по RDP. Злоумышленник подбирает учетные данные (атака по словарю, полный перебор, покупка готовых списков учетных данных у других злоумышленников), подключается по удаленному соединению к компьютеру жертвы и запускает троянец вручную.
Phobos/Eking
Этот шифровальщик известен с 2017 года. На концептуальном уровне (организация кода, использованные разработчиками подходы) Phobos во многом близок к Crysis. Сходства позволяют предположить, что либо у этих троянцев общий разработчик, либо разработчик Phobos хорошо знаком с принципом работы Crysis. Однако прямых заимствований кода не обнаружено, то есть это все-таки разные семейства троянцев, собранные из разных исходников.
Как и большинство современных шифровальщиков, Phobos распространяется через партнерскую программу (RaaS). Основной вектор заражения — несанкционированный доступ к RDP.
Phobos написан на C/C++ и собран в MS Visual Studio. Для шифрования файлов жертвы он использует алгоритм AES-256-CBC, а ключ AES шифрует с помощью публичного ключа RSA-1024, содержащегося в теле зловреда.
Требования Phobos
Cryakl/CryLock
Cryakl — это, наверное, самый древний из описываемых в данной статье шифровальщиков. Его первая версия была обнаружена еще в апреле 2014 года. Впрочем, в современных версиях троянца, похоже, не осталось ни единой строчки кода с тех времен. Cryakl множество раз переписывался, зачастую со значительными изменениями.
Распространяется Cryakl через партнерскую программу. Самый частый вектор атаки на сегодняшний день — через RDP. Для удобства оператора-злоумышленника троянец собран с поддержкой графического интерфейса. Необходимые настройки оператор выставляет вручную в окне программы.
Окно с настройками для оператора Cryakl
Cryakl написан на Delphi. Для шифрования файлов жертвы современная версия Cryakl использует самописный симметричный шифр, а для шифрования ключа — алгоритм RSA.
Интересная особенность актуальных версий Cryakl, не встречавшаяся в других шифровальщиках — продвинутая обработка архивных форматов файлов.
Так как архивы могут быть крупными по размеру, то шифровать их целиком долго, а при шифровании произвольного фрагмента остается шанс, что часть содержимого удастся восстаносить без расшифровки.
В Cryakl реализованы специализированные процедуры для обработки форматов ZIP, 7z, TAR, CAB и RAR (как старых версий, так и RAR5). Он разбирает каждый из указанных форматов и шифрует лишь критичные части архива, в результате добиваясь высокой скорости работы и предотвращая восстановление данных без расшифровки.
Часть процедуры для разбора формата ZIP
Требования Cryakl
CryptConsole
CryptConsole впервые был замечен в январе 2017 года и встречается до сих пор. Он написан на C# и использует .NET-библиотеки для шифрования. Основным вектором распространения является подбор паролей к RDP.
Записка CryptConsole
Для шифрования генерируются две пары из ключа и IV. Они записываются в текстовый файл вместе с параметром size, указывающим, какая часть пользовательского файла будет зашифрована. Текстовый файл размещается на рабочем столе. Его имя представляет собой строку в 40 символов, которая совпадает с уникальным идентификатором пользователя (Personal ID в записке с требованиями). Предполагается, что злоумышленник, получив доступ по RDP, запускает шифровальщик и сохраняет этот файл себе, а затем удаляет его с устройства жертвы. Существует вероятность, что удастся восстановить этот файл, однако гарантий нет. Довольно интересно то, что размер шифруемой части файла (size) является, по сути, случайным значением в интервале [5485760, 10485760].
Файл с ключами, оставляемый шифровальщиком
Схема шифрования тоже интересна. Как мы упомянули выше, шифровальщик генерирует две случайные пары: key и IV, key2 и IV2. Затем размер файла сравнивается с ранее сгенерированным случайным значением size. Если файл больше size, то шифруется только часть файла, которая меньше или равна этому значению, при этом в файл предварительно записывается буфер со случайными данными размера size.
Генерация пар key и IV, ID и размера
Шифрование осуществляется по симметричному алгоритму AES. Сначала c помощью key и IV шифруется кусок файла размером size, затем зашифрованный буфер переворачивается и снова шифруется, но уже с использованием key2 и IV2. Таким образом реализуется двойная схема шифрования.
Двойная схема шифрования для малых файлов
Большие файлы, как было сказано ранее, сначала заполняются произвольными данными (размером size), и только после этого в них записываются зашифрованные данные.
Двойная схема шифрования с записью произвольных данных
Fonix/XINOF
Шифровальщик Fonix появился летом 2020 года. В январе 2021 года его создатели объявили о закрытии проекта и даже опубликовали мастер-ключ, с помощью которого мы выпустили декриптор для всех пострадавших от данного троянца.
Однако на этом история Fonix не завершилась. Через несколько месяцев (в июне 2021 года) мы обнаружили атаки новой версии Fonix, к которым старый мастер-ключ уже не подходит.
Кроме того, новая версия Fonix мимикрирует под троянцы семейств Crysis и Phobos: использует такие же расширения и схему именования шифрованных файлов.
Если файлы, пострадавшие от ранних версий Fonix, получали имена вида picture.jpg.Email=[actor@mail.tld]ID=[B49D8EF5].XINOF, то теперь по названию их не отличить от Crysis (picture.jpg.id-523E8573.[actor@mail.tld].harma) или Phobos (picture.jpg.ID-70AB2875.[actor@mail.tld].eking).
Об умышленной маскировке говорит и путь к PDB проекта, сохранившийся в образце троянца: строка «DharmaVersion» однозначно указывает на семейство Dharma (другое название шифровальщика Crysis).
Путь PDB
Fonix написан на C++ с применением библиотеки CryptoPP и скомпилирован в MS Visual Studio в 64-битный исполняемый файл. Он распространяется по схеме RaaS. Основной метод его доставки в систему жертвы — через спам с вредоносным вложением.
При каждом заражении шифровальщик отправляет оператору уведомление через Telegram, что, впрочем, не новшество и встречалось уже несколько лет назад.
Отправка нотификации в Telegram
Также при заражении Fonix проверяет геолокацию жертвы по IP и в случае запуска в Иране прекращает активность без шифрования.
Проверка геолокации в Fonix
Для шифрования файлов пользователя Fonix использует алгоритмы ChaCha или Salsa (в зависимости от размера файла). Для шифрования ключей ChaCha/Salsa применяется RSA с сессионным публичным ключом, сгенерированным при запуске троянца. Сессионный приватный ключ шифруется по тому же алгоритму RSA с помощью публичного мастер-ключа, содержащегося в теле зловреда.
Ранние версии Fonix имели свой собственный дизайн требований.
Требования Fonix (ранняя версия)
Современные образцы копируют оформление из некоторых версий Crysis и Phobos.
Требования Fonix (современная версия)
Limbozar/VoidCrypt
Этот шифровальщик появился в середине 2019 года. Некоторые его версии также известны под именами Limbo, Legion, Odveta, Ouroboros. Limbozar распространяется по схеме партнерской программы (RaaS). Основной вектор распространения на сегодняшний день — через несанкционированный доступ по RDP. Limbozar написан на C++, скомпилирован в MS Visual Studio, а реализацию криптографических функций использует из библиотеки CryptoPP.
На протяжении истории семейства криптографическая схема несколько раз менялась. Современные версии Limbozar при запуске генерируют пару сессионных ключей RSA-2048, затем 256-битный ключ и 96-битный вектор инициализации для алгоритма AES в режиме GCM. Приватный сессионный ключ RSA шифруется алгоритмом AES и сохраняется на диск. Затем пара из ключа и IV для AES шифруется одним из нескольких публичных мастер-ключей RSA, содержащихся в теле троянца, и также сохраняется на диск.
После этой подготовительной фазы Limbozar ищет файлы жертвы и шифрует их алгоритмом AES-GCM, генерируя для каждого файла уникальную пару из ключп и IV, которые, в свою очередь, шифрует сессионным публичным ключом RSA.
После шифрования зловред оставляет требования злоумышленников в файлах Decrypt-info.txt.
Требования Limbozar
Кроме того, по завершении шифрования Limbozar отправляет на свой командный сервер уведомление о новой жертве с помощью POST-запроса. Для реализации сетевой коммуникации использована библиотека SFML (libsfml-network).
Нотификация о новом заражении Limbozar
Thanos/Hakbit
Активность Thanos началась в конце апреля 2020 года, хотя информация о нем появилась еще в январе, когда он был представлен как RaaS на хакерском форуме. Шифровальщик написан на C#. По нашим сведениям, основным вектором его распространения является подбор паролей от RDP.
Обои рабочего стола зараженной машины
Так как моделью распространения является RaaS, то шифровальщик распространяется посредством конструктора (builder), который позволяет создать как конфигурацию самого шифровальщика, так и декриптор под него.
В конструкторе немало различных настроек: — базовых (расширение зашифрованных файлов, содержимое и имя записки, адрес для оплаты), так и более продвинутых (обфускация кода; самоудаление; отключение Windows Defender; обход Antimalware Scan Interface (AMSI); освобождение файлов, занятых другими процессами; защита процесса шифровальщика; предотвращение сна; задержка исполнения; быстрый режим шифрования для больших файлов; установка расширений для шифрования; выбор способа уведомления жертвы). В сети можно найти утекший конструктор. Скорее всего, его выложил один из купивших его операторов. В качестве защиты в конструктор встроена проверка HWID — это говорит о том, что его собирают под конкретное устройство оператора.
Декриптор позволяет расшифровать файлы за счет идентификатора пользователя, который представляет собой зашифрованный по RSA ключ для симметричного алгоритма шифрования (в разных версиях применяются разные симметричные алгоритмы).
Декриптор для Thanos
В различных образцах шифровальщика нам попадались разные схемы шифрования:
- один ключ для всех файлов, шифрование по Salsa20;
- разные ключи для всех файлов, шифрование по Salsa20;
- один ключ для всех файлов, пропущенный через функцию преобразования ключа PBKDF2, и шифрование по AES-256 CBC;
- один ключ для всех файлов, пропущенный через PBKDF2 с 1000 итераций для малых файлов и 50 000 итераций для больших (>15 МБ), затем шифрование по AES-256 CBC.
Наглядный пример одной из схем шифрования (статичный ключ + PBKDF2 + AES-256 CBC) и способа обфускации кода приведен ниже. Обфускация довольно слабая, что позволяет восстановить исходный код шифровальщика.
Один из блоков кода, используемый для шифрования
Записка с требованием выкупа особенных отличий не имеет. Как и везде, ее цель — оставить контакты, объяснить происходящее пользователю и запугать его.
Текстовая записка Thanos с требованием выкупа
Таким образом, Thanos реализует довольно гибкий процесс атаки на жертву, который позволяет оператору самостоятельно принимать решения о необходимых функциях и генерировать шифровальщик под свои конкретные нужды.
XMRLocker
XMRLocker впервые был замечен в начале августа 2020 года. Он написан на C# и использует .NET-библиотеки для шифрования.
Шифрование осуществляется по заранее сгенерированному паролю, который имеет случайную длину от 65 до 101 символа. Для создания пароля используется фиксированный алфавит, включающий в себя английские буквы верхнего и нижнего регистров, а также некоторые специальные символы.
Генерация пароля в XMRLocker
Для шифрования используется алгоритм AES с длиной ключа 256 бит в режиме CFB и с дополнением по PKCS7. Ранее сгенерированный пароль проходит через функцию PBKDF2 с 50 000 итераций, а результат преобразуется в ключ и IV для дальнейшего шифрования. Для PBKDF2 используется рандомная соль в 32 байта, которая записывается в начало каждого файла. Сгенерированный ключ для всех файлов один. Он сохраняется в текстовом файле с именем HWID, который отправляется на командный сервер в сети Tor и затем удаляется.
Функция шифрования в XMRLocker
После шифрования работа машины завершается. При ее включении пользователя встречает издевательская надпись с описанием случившегося и контактами злоумышленников.
Надпись после включения
Записка этого вымогателя ничем не отличается от других записок, она содержит контакты для связи и ID. Единственное, что удивляет, — это надпись «файлы зашифрованы алгоритмом Base-64», так как это не алгоритм шифрования и в работе данного зловреда вообще не используется.
Записка, оставленная шифровальщиком
Выводы
На территории СНГ действуют как давно известные, так и сравнительно новые шифровальщики, ориентированные на бизнес. Многие из них активно развиваются, а некоторые с момента первого обнаружения успели прекратить активность и вновь вернуться на рынок. Злоумышленники используют различные техники шифрования, в том числе довольно интересные, такие как двойное шифрование в CryptConsole и обработка архивов в Cryakl.
Хотя существуют разные векторы распространения зловредов, большинство актуальных на сегодня шифровальщиков, атакующих организации в СНГ, проникают в сеть жертвы через RDP. Для противодействия этому важно использовать стойкие пароли для доменных учетных записей и регулярно их менять. Также рекомендуется не открывать доступ по RDP из интернета, а для подключения к корпоративной сети использовать VPN.
IoC
Fonix:
78c2e00d02a4ebd7924b91d70172cb18
4a02e768265eb3dc9fdafa8ece81b468
36339f59f433e35a9f52928bc90d6892
Cryakl:
23755a33694adc76023dd0b7607bc03d
Crysis:
8e156f89489cfb4094a0e662b64a2fb8
Limbozar:
91332f289d3e577b57d878b55c5cf18a
Phobos:
1fd2cad966f90f5a434c80aa9c2e987b
CryptoConsole:
94291aaa1134e8f404778adc46cb4700
BigBobRoss:
8080443b933790f6d26935da7460671c
XMRLocker:
f0959600e81b2fbdcb7bb43948466bf8
Thanos:
177b612600f7e9c2be2dbda96718ffc4
d5128657902961b2b02447b84ff6345f
4096e6730b117ae60dc3e5d4fd31acda
Шифровальщики, действующие в СНГ
safety
Возможно ли уточнить некоторые детали по Dharma и Phobos версии FONIX? Насколько они были распространены в период своей активности? Судя по последнему варианту RYUK, FONIX бывает достаточно активен на территории СНГ.
Securelist
Здравствуйте, Safety!
Мы не собирали данные по каждой версии в отдельности, поэтому, к сожалению, не можем ответить на ваш вопрос.
safety
Спасибо за ответ. Вообще их активность приходится на разное время. Fonix (harma, phobos) , был активен в 2021 году, FONIX(RYUK) — совсем недавно, примерно в этом интервале (4 квартал 2022 года — 1 квартал 2023 года), в последнее время активность спала. (Судя по техфорумам). По Phobos версии известны файлы, которые, в которых хранится информация о ключе — Data000.Phobos, Data001.Phobos, (в RYUK версии — это hrmlog1, hrmlog2), по harma версии, к сожалению, ничего не известно, а по указанным в статье хэшам нет доступа к детальной информации.
safety
вопрос по CryptConsole3:
Возможно ли расшифровка файлов после CryptConsole3, если сохранился файл с информацией по ключам? Key: kvwAb802IO9xg39Hc84gg4N3twcX3M9O | Vector: ji6Qs4Vf9WkBG2RD | Key2: 8EUc2StbjBuvjqz5Du0Dj2Sc11uzEInR | Vector2: hPRnaMvdtBCsz4rx | size: 7507406
Securelist
Здравствуйте, Safety!
Просим прощения за медленный ответ. Если ключи рабочие, то расшифровка должна быть возможна.