Хакер - Ryukами не трогать! Разбираем новую версию шифровальщика Ryuk

Хакер - Ryukами не трогать! Разбираем новую версию шифровальщика Ryuk

hacker_frei

https://t.me/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 и раз­личных приз­наков (фла­гов), нап­ример ProcessDebugFlagsProcessDebugPort и ProcessDebugObjectHandle. С их помощью прог­рамма‑вымога­тель может опре­делить наличие отладчи­ка и при­нуди­тель­но зак­роет его.

Про­цесс зап­роса

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

Про­вер­ка приз­наков отладки про­цес­са

ИСПОЛНЕНИЕ

Ryuk триж­ды копиру­ет себя в текущую пап­ку с раз­личны­ми име­нами и запус­кает эти новые исполня­емые фай­лы с раз­ными парамет­рами коман­дной стро­ки. Каж­дое такое исполне­ние под­держи­вает отдель­ную фун­кцию. Имя фай­ла для пер­вой копии вре­донос­ного ПО генери­рует­ся как кон­троль­ная сум­ма текуще­го име­ни поль­зовате­ля, к которой добав­ляет­ся r.exe.

Ес­ли мал­варь не может получить имя поль­зовате­ля, исполь­зует­ся имя по умол­чанию — rep.exe. При исполне­нии это­го фай­ла вре­донос исполь­зует коман­дную стро­ку 9 REP. Этот про­цесс отве­чает за самореп­ликацию Ryuk на дру­гих машинах сети.

Пер­вое исполне­ние

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

Вто­рое исполне­ние

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

Ис­полне­ние треть­ей копии

СООБЩЕНИЕ О ВЫКУПЕ

Что­бы уве­домить поль­зовате­ля о шиф­ровании фай­лов, Ryuk заг­ружа­ет сооб­щение о выкупе в фор­мате HTML в каж­дую зашиф­рован­ную пап­ку. Это сооб­щение прак­тичес­ки оди­нако­во для всех вари­антов Ryuk. Глав­ное отли­чие в дан­ном при­мере — наличие кноп­ки для свя­зи и инс­трук­ций по уста­нов­ке бра­узе­ра Tor.

Со­обще­ние о выкупе в фор­мате HTML

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

Со­обще­ние бра­узе­ра с инс­трук­циями

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

Пор­тал для свя­зи с хакера­ми, исполь­зующи­ми Ryuk

ИЗМЕНЕНИЕ РАЗРЕШЕНИЙ ДИСКОВ

Тро­ян обна­ружи­вает уста­нов­ленные локаль­ные дис­ки с помощью API-вызова GetLogicalDrives и, исполь­зуя инс­тру­мент Windows icacls, меня­ет раз­решения каж­дого дис­ка для получе­ния пол­ного дос­тупа к ним.

Ис­полне­ние коман­ды 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.

Про­вер­ка фай­лов со стро­кой index в име­ни

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

Внед­рение тек­ста сооб­щения Ryuk о выкупе в фай­лы, содер­жащие в име­ни index

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

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

Ге­нера­ция клю­ча AES-256

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

Про­вер­ка HERMES и 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 о выкупе в фор­мате RTF

Эта фун­кция тоже новая. Она была добав­лена в архи­тек­туру тро­яна, что­бы соз­дать хаос в сис­теме жер­твы и побудить ее вып­латить выкуп за дешиф­ровку фай­лов.

ДИСТАНЦИОННОЕ ВКЛЮЧЕНИЕ ПО СЕТИ

Про­цесс Ryuk с коман­дной стро­кой 8 LAN пред­назна­чен для получе­ния ARP-кешей сис­темы и отправ­ки пакетов Wake on Lan с целью вклю­чения уда­лен­ных компь­юте­ров. Для извле­чения таб­лицы ARP вре­донос исполь­зует API GetIpNetTable из фай­ла iphlpapi.dll. Получив ука­зан­ную таб­лицу, прог­рамма‑вымога­тель начина­ет рас­сылку пакетов, исполь­зуя API sendto из биб­лиоте­ки Winsock.

От­прав­ка пакета Wake on Lan

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

Па­кет Wake on Lan

ПОСЛЕДОВАТЕЛЬНЫЙ ПЕРЕБОР ОБЩИХ СЕТЕВЫХ ПАПОК

Ryuk так­же пыта­ется горизон­таль­но переме­щать­ся на дру­гие хос­ты в сети. Для это­го прог­рамма получа­ет все IP-адре­са, прис­воен­ные сис­теме, и про­веря­ет их при­над­лежность диапа­зону час­тных адре­сов IPv4 (10.x.x.x, 172.16.x.x и 192.168.x.x). Пос­коль­ку такая про­вер­ка про­водит­ся с помощью фун­кции strstr, могут выяв­лять­ся сов­падения с дру­гими пуб­личны­ми под­сетями, нап­ример 151.192.172.1.

Про­вер­ка оши­бок час­тных IP-сетей

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

Эхо‑зап­рос ICMP

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

Шиф­рование фай­лов по UNC

РЕПЛИКАЦИЯ БЛОКА СЕРВЕРНЫХ СООБЩЕНИЙ (SMB)

Про­цесс Ryuk с коман­дной стро­кой 9 REP отве­чает за реп­ликацию вре­доно­са на новые компь­юте­ры, при этом он про­веря­ет, не выпол­няет­ся ли этот про­цесс дваж­ды. Для это­го соз­дает­ся мьютекс‑объ­ект, имя которо­го соот­ветс­тву­ет име­ни поль­зовате­ля машины. Если мьютекс уже сущес­тву­ет, про­цесс будет завер­шен.


Соз­дание мьютек­са

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

Ко­пиро­вание фай­ла Ryuk

За­тем вымога­тель исполь­зует 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



Report Page