Хакер - Ryukами не трогать! Разбираем новую версию шифровальщика Ryuk
hacker_frei
Сергей Меньшаков
Содержание статьи
- Общая информация
- Антиотладка
- Исполнение
- Сообщение о выкупе
- Изменение разрешений дисков
- Принудительная остановка процессов и служб
- Шифрование файла
- Задание печати
- Дистанционное включение по сети
- Последовательный перебор общих сетевых папок
- Репликация блока серверных сообщений (SMB)
- Заключение
Выступавшие на ИБ‑конференции в ЮАР сотрудники ФБР назвали троян‑шифровальщик Ryuk наиболее прибыльной вымогательской малварью на рынке. Что, впрочем, неудивительно: по данным компаний Advanced Intelligence и HYAS, операторы трояна на сегодняшний день заработали порядка 150 миллионов долларов. В этой статье я расскажу, как устроена и как работает эта малварь.
Ryuk — программа‑вымогатель, которая шифрует файлы и требует у жертвы выкуп в криптовалюте Bitcoin за предоставление ключей для дешифровки. Используется трой исключительно для целевых атак. Впервые этот вымогатель заприметили в августе 2018 года в рамках кампании, которая была нацелена на несколько предприятий. Наши эксперты провели анализ первоначальных версий вредоносного ПО и выявили сходства и общие фрагменты исходного кода с программой‑вымогателем Hermes. Hermes — вымогатель массового распространения, который продается на подпольных форумах и используется несколькими группами хакеров.
Для своей вредоносной деятельности Ryuk использует сочетание симметричного шифрования AES (256 бит) и асимметричного шифрования RSA (2048 или 4096 бит). Симметричный ключ применяется для шифрования содержания файлов, а асимметричный открытый ключ — для шифрования симметричного ключа. После оплаты выкупа злоумышленники предоставляют соответствующий асимметричный закрытый ключ, с помощью которого можно расшифровать файлы.
Поскольку Ryuk применяют для целевых атак, векторы первоначального заражения подбираются с учетом особенностей жертвы. Очень часто этими векторами становятся спирфишинговые электронные письма, удаленный доступ к системам с помощью похищенных учетных записей и применение известного массового вредоносного ПО. В последнем случае для заражения Ryuk часто используется сочетание Emotet и TrickBot; недавно также было зафиксировано применение BazarLoader.
INFO
Спирфишинг (spear phishing) — подвид фишинга, который нацелен на более узкий круг людей (компания, группа ее сотрудников или отдельный человек).
Цепочка заражения Ryuk часто начинается со спирфишингового электронного письма, которое содержит вредоносную ссылку или документ MS Office. С их помощью хакеры получают возможность проникнуть в информационную среду жертвы. В некоторых случаях такой отправной точкой доступа становятся компьютеры со скомпрометированным протоколом RDP.
В первом сценарии в качестве загрузчика вредоносного ПО используется TrickBot или BazarLoader. В результате их исполнения другие хакеры получат возможность приобрести доступ к взломанным машинам. После этого на компьютеры часто загружается «маячок» Cobalt Strike для похищения логинов и паролей пользователей и горизонтального перемещения по сети с захватом контроллеров домена. В итоге посредством этих контроллеров бинарный код Ryuk распространяется на все машины. Как же устроен этот код? Давай разбираться.
ОБЩАЯ ИНФОРМАЦИЯ
Анализируемый файл — образец нераспакованной программы‑вымогателя семейства Ryuk. Идентифицировать этот образец можно с помощью приведенных ниже контрольных сумм (хешей).
HASH TYPEVALUESHA-11EFC175983A17BD6C562FE7B054045D6DCB341E5SHA-2568F368B029A3A5517CB133529274834585D087A2D3A 5875D03EA38E5774019C8AКонечная полезная загрузка Ryuk имеет размер 148 Кбайт и дату компиляции 30 апреля 2021 года.
АНТИОТЛАДКА
Ryuk многократно применяет техники защиты от декомпиляции для затруднения статического анализа кода программы.

Кроме того, вредоносный код поддерживает антиотладочные техники с использованием API ZwQueryInformationProcess и различных признаков (флагов), например ProcessDebugFlags, ProcessDebugPort и ProcessDebugObjectHandle. С их помощью программа‑вымогатель может определить наличие отладчика и принудительно закроет его.

В дополнение к этому вымогатель проверяет наличие признака BeingDebugged в PEB-структуре процесса с той же целью.

ИСПОЛНЕНИЕ
Ryuk трижды копирует себя в текущую папку с различными именами и запускает эти новые исполняемые файлы с разными параметрами командной строки. Каждое такое исполнение поддерживает отдельную функцию. Имя файла для первой копии вредоносного ПО генерируется как контрольная сумма текущего имени пользователя, к которой добавляется r.exe.
Если малварь не может получить имя пользователя, используется имя по умолчанию — rep.exe. При исполнении этого файла вредонос использует командную строку 9 REP. Этот процесс отвечает за саморепликацию Ryuk на других машинах сети.

Имя второй копии трояна генерируется случайным образом, к нему добавляется суффикс lan.exe. Этой копии соответствует командная строка 8 LAN. Данный процесс отвечает за отправку пакетов Wake On Lan на другие компьютеры в сети.

Имя третьей копии создается в точности так же, как для второй, используется та же командная строка.

СООБЩЕНИЕ О ВЫКУПЕ
Чтобы уведомить пользователя о шифровании файлов, Ryuk загружает сообщение о выкупе в формате HTML в каждую зашифрованную папку. Это сообщение практически одинаково для всех вариантов Ryuk. Главное отличие в данном примере — наличие кнопки для связи и инструкций по установке браузера Tor.

При нажатии на кнопку «Связаться» (Connect) появляется всплывающее окно с инструкциями для связи с авторами программы‑вымогателя.

По onion-ссылке, указанной в инструкциях, пользователь попадает на портал для связи. Там расположена специальная форма, в которой необходимо оставить адрес электронной почты, пароль, название организации и сообщение для хакеров (в отдельном поле).

ИЗМЕНЕНИЕ РАЗРЕШЕНИЙ ДИСКОВ
Троян обнаруживает установленные локальные диски с помощью API-вызова GetLogicalDrives и, используя инструмент Windows icacls, меняет разрешения каждого диска для получения полного доступа к ним.

Вот пример команды, которую исполнит Ryuk:
icacls "C:\*" /grant Everyone: F /T /C /Q
ПРИНУДИТЕЛЬНАЯ ОСТАНОВКА ПРОЦЕССОВ И СЛУЖБ
Перед шифрованием файлов троян создает новый поток, чтобы завершить ряд процессов и остановить некоторые службы.

В таком новом потоке Ryuk создает список запущенных процессов и служб и сравнивает его со списком из 41 процесса и 64 служб, который «зашит» в его коде. Некоторые из этих процессов и служб относятся к антивирусам и инструментам для резервного копирования, другие могут использовать файлы, подлежащие шифрованию в рамках атаки.

Для завершения выполнения процесса энкодер использует следующую команду:
C:\Windows\System32\taskkill.exe /IM /F
Команда для остановки служб — мишеней вымогателя:
C:\Windows\System32\net.exe stop /y
Поскольку такие службы и процессы проверяются с помощью функции strstr, которая возвращает частичные соответствия строки, вредонос также завершит другие процессы, которые не являются его целью, например audioendpointbuilder, поскольку он содержит строку endpoint.

ШИФРОВАНИЕ ФАЙЛА
Троян попытается зашифровать локальные и сетевые диски с перебором всех файлов на них и проверкой пути и имени каждого файла. Ryuk не шифрует файлы, полный путь к которым содержит следующие имена:
\Windows\
Windows
boot
WINDOWS\
Chrome
Mozilla
SYSVOL
NTDS
netlogon
sysvol
Вредонос также не шифрует файлы, в имени которых имеются любые из следующих строк:
RyukReadMe.html
boot
dll
ntldr
exe
.ini
.lnk
bootmgr
boot
NTDETECT
Кроме того, Ryuk проверяет имена файлов на наличие элемента index.. Если этот элемент присутствует, программа вызовет функцию RyukDropRansomNoteInIndexFile.

Если файл имеет расширение .php, программа‑вымогатель создаст PHP-код для генерации сообщения о выкупе в формате HTML. В противном случае она перезапишет содержимое файла, используя HTML-код сообщения о выкупе. Таким образом, при попытке доступа к сайту пользователь увидит сообщение Ryuk c требованиями злоумышленников.

Считается, что эта функция была добавлена в новые версии вредоносного ПО, чтобы атаковать веб‑серверы и взломать общедоступные сайты, заменив их главные страницы сообщением о выкупе Ryuk. Данная тактика раньше не применялась в программах‑вымогателях, конечная цель которых — принуждение жертвы к выплате выкупа.
Схема шифрования в новой версии Ryuk осталась прежней. Для каждого файла программа использует случайные ключи AES-256, сгенерированные с помощью API CryptGenKey, а затем шифрует эти ключи с помощью открытого ключа RSA, встроенного в код вредоносного ПО. Благодаря этой схеме киберпреступники обеспечивают надежность шифрования и управления ключами.

Перед обработкой файла троян проверяет, не был ли этот файл зашифрован ранее. Для этого проводится поиск ключевых слов: HERMES для старых версий Ryuk и RYUKTM — для новых. При обнаружении таких ключевых слов операция с файлом прекращается, и он не будет зашифрован.

После этого троян начинает шифровать файл частями заданного размера — по 1 000 000 байт.

Затем Ryuk добавляет ключевое слово RYUKTM, чтобы пометить файл как зашифрованный, экспортирует ключ AES, который зашифрован с помощью открытого ключа RSA с использованием API CryptExportKey, и дописывает его в конец файла.

Ниже представлен пример зашифрованного файла с 274 байтами метаданных, добавленных в конец файла программой Ryuk.

ЗАДАНИЕ ПЕЧАТИ
После шифрования файлов Ryuk создает новую запланированную задачу для распечатки 50 копий сообщения о выкупе в формате RTF на принтере, выбранном в системе по умолчанию. Командная строка для создания такого задания выглядит следующим образом:
SCHTASKS /CREATE /NP /SC DAILY /TN "PrintvE" /TR "C:\Windows\System32\cmd. exe /c for /l %x in (1,1,50) do start wordpad.exe /p C:\users\Public\YTKkI. dll" /ST 10:25 /SD 05/18/2021 /ED 05/25/2021
Задача будет выполнена в заданное время в течение недели. Распечатанные 50 страниц сообщения о выкупе в формате RTF будут содержать пароль, который загружен в общий каталог в виде файла со случайным именем и расширением .dll.

Эта функция тоже новая. Она была добавлена в архитектуру трояна, чтобы создать хаос в системе жертвы и побудить ее выплатить выкуп за дешифровку файлов.
ДИСТАНЦИОННОЕ ВКЛЮЧЕНИЕ ПО СЕТИ
Процесс Ryuk с командной строкой 8 LAN предназначен для получения ARP-кешей системы и отправки пакетов Wake on Lan с целью включения удаленных компьютеров. Для извлечения таблицы ARP вредонос использует API GetIpNetTable из файла iphlpapi.dll. Получив указанную таблицу, программа‑вымогатель начинает рассылку пакетов, используя API sendto из библиотеки Winsock.

Magic-пакеты Wake on Lan включают 6 байт со значением 255 (шестнадцатеричное значение — 0xFF), за которыми следует MAC-адрес целевого компьютера, прописанный 16 раз. Общий размер пакета —102 байта.

ПОСЛЕДОВАТЕЛЬНЫЙ ПЕРЕБОР ОБЩИХ СЕТЕВЫХ ПАПОК
Ryuk также пытается горизонтально перемещаться на другие хосты в сети. Для этого программа получает все IP-адреса, присвоенные системе, и проверяет их принадлежность диапазону частных адресов IPv4 (10.x.x.x, 172.16.x.x и 192.168.x.x). Поскольку такая проверка проводится с помощью функции strstr, могут выявляться совпадения с другими публичными подсетями, например 151.192.172.1.

При обнаружении одной из указанных выше подсетей программа‑вымогатель начнет отправлять эхо‑запросы ICMP Echo с помощью API для обнаружения новых машин в этой подсети. Если машина ответит на запрос, она будет считаться потенциальной жертвой и Ryuk попытается зашифровать файлы на ней.

Ryuk попытается зашифровать файлы на каждом обнаруженном хосте способом, похожим на тот, который применяет для локальных дисков. Вымогатель генерирует путь UNC для всех буквенных обозначений дисков (от A до Z) в формате \\<IP>\<drive letter>$. Затем троян попытается получить доступ и выполнить шифрование по пути \\<IP>. Такая попытка показана на рисунке ниже.

РЕПЛИКАЦИЯ БЛОКА СЕРВЕРНЫХ СООБЩЕНИЙ (SMB)
Процесс Ryuk с командной строкой 9 REP отвечает за репликацию вредоноса на новые компьютеры, при этом он проверяет, не выполняется ли этот процесс дважды. Для этого создается мьютекс‑объект, имя которого соответствует имени пользователя машины. Если мьютекс уже существует, процесс будет завершен.

На следующем этапе Ryuk проверяет наличие своих файлов на удаленном компьютере с помощью API GetFileAttributesW. Параллельно создается файловый путь UNC; после этого программа попытается получить доступ к папке C:\Users\Public на удаленном компьютере. Создается файл с именем, которое представляет собой контрольную сумму текущего имени пользователя с добавлением суффикса r.exe.

Затем вымогатель использует API CopyFileW для копирования файла на удаленный компьютер. Чтобы обеспечить удаленное исполнение этой копии, вредонос создаст запланированную задачу со случайным именем с помощью инструмента schtasks.exe.

Таким образом, для каждой скомпрометированной удаленной машины выполняются две команды:
schtasks.exe /Create /S 192.168.56.2 /TN qdpRGwh /TR "C:\\Users\\Pub- lic\\622r.exe" /sc once /st 00:00 /RL HIGHEST
schtasks.exe /S 192.168.56.2 /Run /TN qdpRGwh
ЗАКЛЮЧЕНИЕ
В этом коротком отчете представлено техническое описание программы‑вымогателя Ryuk и новых функций, которые были включены в ее код для увеличения ущерба, наносимого организациям‑жертвам.
Интересно отметить, что внимание разработчиков Ryuk сместилось в сторону веб‑серверов, поскольку вместо того, чтобы шифровать индексные файлы в папках веб‑сервера, ПО заменяет их сообщением о выкупе. Кроме того, разработчики Ryuk добавили во вредоносную программу возможность распечатать сообщение о выкупе на установленном по умолчанию принтере.
В первом полугодии несколько хакерских групп, которые используют Ryuk, активно проводили кампании и атаковали организации по всему миру. Именно поэтому киберпреступники, которые используют Ryuk, продолжат создавать новые функции и методы работы для максимального увеличения прибыли.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei