Ryuk е една от най-известните опции за ransomware през последните няколко години. Откакто се появи за първи път през лятото на 2018 г., той се събра
1. Обща информация
Този документ съдържа анализ на варианта на рансъмуер Ryuk, както и товарача, отговорен за зареждането на зловреден софтуер в системата.
Рансъмуерът Ryuk се появи за първи път през лятото на 2018 г. Една от разликите между Ryuk и други ransomware е, че е насочен към атакуване на корпоративни среди.
В средата на 2019 г. киберпрестъпни групи атакуваха огромен брой испански компании, използвайки този рансъмуер.
Ориз. 1: Извадка от El Confidencial относно атаката с рансъмуер Ryuk [1]
Ориз. 2: Откъс от El País за атака, извършена с помощта на рансъмуера Ryuk [2]
Тази година Ryuk атакува голям брой компании в различни страни. Както можете да видите на фигурите по-долу, Германия, Китай, Алжир и Индия бяха най-силно засегнати.
Сравнявайки броя на кибератаките, можем да видим, че Ryuk е засегнал милиони потребители и е компрометирал огромно количество данни, което води до сериозни икономически загуби.
Ориз. 3: Илюстрация на глобалната дейност на Ryuk.
Ориз. 4: 16 държави, най-засегнати от Ryuk
Ориз. 5: Брой потребители, атакувани от рансъмуер Ryuk (в милиони)
Според обичайния принцип на действие на подобни заплахи, този ransomware, след като криптирането приключи, показва на жертвата известие за откуп, който трябва да бъде платен в биткойни на посочения адрес, за да възстанови достъпа до криптираните файлове.
Този зловреден софтуер се е променил, откакто е бил представен за първи път.
Вариантът на тази заплаха, анализиран в този документ, е открит по време на опит за атака през януари 2020 г.
Поради своята сложност, този зловреден софтуер често се приписва на организирани киберпрестъпни групи, известни също като APT групи.
Част от кода на Ryuk има забележимо сходство с кода и структурата на друг добре известен ransomware, Hermes, с който споделят редица идентични функции. Ето защо Ryuk първоначално беше свързан със севернокорейската група Lazarus, която по това време беше заподозряна, че стои зад рансъмуера Hermes.
Услугата Falcon X на CrowdStrike впоследствие отбеляза, че Ryuk всъщност е създаден от групата WIZARD SPIDER [4].
Има някои доказателства в подкрепа на това предположение. Първо, този ransomware беше рекламиран на уебсайта exploit.in, който е добре известен руски пазар за злонамерен софтуер и преди това е бил свързван с някои руски APT групи.
Този факт изключва теорията, че Ryuk може да е разработен от групата Lazarus APT, т.к не се вписва в начина, по който работи групата.
Освен това Ryuk беше рекламиран като рансъмуер, който няма да работи на руски, украински и беларуски системи. Това поведение се определя от функция, открита в някои версии на Ryuk, където проверява езика на системата, на която се изпълнява рансъмуерът, и го спира да работи, ако системата има руски, украински или беларуски език. И накрая, експертен анализ на машината, която беше хакната от екипа на WIZARD SPIDER, разкри няколко „артефакта“, за които се твърди, че са били използвани при разработването на Ryuk като вариант на рансъмуера Hermes.
От друга страна, експертите Габриела Николао и Лучано Мартинс предполагат, че рансъмуерът може да е разработен от APT групата CryptoTech [5].
Това следва от факта, че няколко месеца преди появата на Ryuk, тази група публикува информация във форума на същия сайт, че е разработила нова версия на Hermes ransomware.
Няколко потребители на форума се запитаха дали CryptoTech наистина е създал Ryuk. Тогава групата се защити и заяви, че има доказателства, че са разработили 100% от рансъмуера.
2. Характеристики
Започваме с буутлоудъра, чиято работа е да идентифицира системата, на която се намира, така че да може да се стартира „правилната“ версия на рансъмуера Ryuk.
Хешът на буутлоудъра е както следва:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Една от характеристиките на този инструмент за изтегляне е, че той не съдържа никакви метаданни, т.е. Създателите на този зловреден софтуер не са включили никаква информация в него.
Понякога те включват грешни данни, за да подмамят потребителя да мисли, че изпълнява легитимно приложение. Въпреки това, както ще видим по-късно, ако инфекцията не включва потребителско взаимодействие (какъвто е случаят с този ransomware), тогава нападателите не смятат за необходимо да използват метаданни.
Ориз. 6: Примерни метаданни
Примерът е компилиран в 32-битов формат, така че да може да работи както на 32-битови, така и на 64-битови системи.
3. Вектор на проникване
Пробата, която изтегля и изпълнява Ryuk, влезе в нашата система чрез отдалечена връзка и параметрите за достъп бяха получени чрез предварителна RDP атака.
Ориз. 7: Регистър за атака
Нападателят успя да влезе в системата дистанционно. След това той създаде изпълним файл с нашата извадка.
Този изпълним файл беше блокиран от антивирусно решение, преди да бъде стартиран.
Ориз. 8: Заключване на шаблон
Ориз. 9: Заключване на шаблон
Когато злонамереният файл беше блокиран, нападателят се опита да изтегли криптирана версия на изпълнимия файл, който също беше блокиран.
Ориз. 10: Набор от проби, които нападателят се опита да изпълни
Накрая той се опита да изтегли друг злонамерен файл през криптираната конзола
PowerShell за заобикаляне на антивирусната защита. Но и той беше блокиран.
Ориз. 11: Блокиран PowerShell със злонамерено съдържание
Ориз. 12: Блокиран PowerShell със злонамерено съдържание
4. Товарач
Когато се изпълни, той записва файл ReadMe в папката % Temp%, което е характерно за Ryuk. Този файл е бележка за откуп, съдържаща имейл адрес в домейна protonmail, който е доста често срещан в това семейство зловреден софтуер: [имейл защитен]
Ориз. 13: Искане за откуп
Докато буутлоудърът работи, можете да видите, че той стартира няколко изпълними файла с произволни имена. Те се съхраняват в скрита папка PUBLIC, но ако опцията не е активна в операционната система „Показване на скрити файлове и папки“, тогава те ще останат скрити. Освен това тези файлове са 64-битови, за разлика от родителския файл, който е 32-битов.
Ориз. 14: Изпълними файлове, стартирани от пробата
Както можете да видите на изображението по-горе, Ryuk стартира icacls.exe, който ще се използва за модифициране на всички ACL (списъци за контрол на достъпа), като по този начин гарантира достъп и модифициране на флагове.
Получава пълен достъп под всички потребители до всички файлове на устройството (/T) независимо от грешки (/C) и без да показва никакви съобщения (/Q).
Ориз. 15: Параметри за изпълнение на icacls.exe, стартиран от примера
Важно е да се отбележи, че Ryuk проверява коя версия на Windows използвате. За това той
извършва проверка на версията с помощта на GetVersionExW, в който проверява стойността на флага lpVersionInformationпоказва дали текущата версия на Windows е по-нова от Windows XP.
В зависимост от това дали използвате версия по-нова от Windows XP, зареждащото устройство ще пише в папката на локалния потребител - в този случай в папката %Публичен%.
Ориз. 17: Проверка на версията на операционната система
Файлът, който се записва, е Ryuk. След това го изпълнява, като предава собствения си адрес като параметър.
Ориз. 18: Изпълнете Ryuk чрез ShellExecute
Първото нещо, което Ryuk прави, е да получи входните параметри. Този път има два входни параметъра (самият изпълним файл и адресът на капка), които се използват за премахване на собствените му следи.
Ориз. 19: Създаване на процес
Можете също така да видите, че след като изпълни своите изпълними файлове, той се изтрива, като по този начин не оставя следа от собственото си присъствие в папката, в която е бил изпълнен.
Ориз. 20: Изтриване на файл
5. РЮК
5.1 Присъствие
Ryuk, подобно на друг зловреден софтуер, се опитва да остане в системата възможно най-дълго. Както е показано по-горе, един от начините за постигане на тази цел е тайното създаване и стартиране на изпълними файлове. За да направите това, най-честата практика е да промените ключа на системния регистър CurrentVersionRun.
В този случай можете да видите, че за тази цел се стартира първият файл VWjRF.exe
(името на файла се генерира на случаен принцип) стартира cmd.exe.
Ориз. 21: Изпълнение на VWjRF.exe
След това въведете командата RUN с име "svchos". По този начин, ако искате да проверите ключовете на системния регистър по всяко време, лесно можете да пропуснете тази промяна, като се има предвид сходството на това име със svchost. Благодарение на този ключ Ryuk гарантира присъствието си в системата. Ако системата не е все още е бил заразен, тогава, когато рестартирате системата, изпълнимият файл ще опита отново.
Ориз. 22: Пробата гарантира присъствие в ключа на системния регистър
Можем също да видим, че този изпълним файл спира две услуги:
"audioendpointbuilder", което, както подсказва името му, съответства на системното аудио,
Ориз. 23: Примерът спира системната аудио услуга
и Samss, която е услуга за управление на акаунти. Спирането на тези две услуги е характеристика на Ryuk. В този случай, ако системата е свързана към SIEM система, рансъмуерът се опитва да спре изпращането до
Ориз. 24: Пробата спира услугата Samss
5.2 Привилегии
Най-общо казано, Ryuk започва, като се движи странично в мрежата или се стартира от друг зловреден софтуер, като напр
Преди това, като прелюдия към процеса на изпълнение, ние го виждаме да изпълнява процеса Имитирайте себе си, което означава, че защитното съдържание на токена за достъп ще бъде предадено на потока, откъдето ще бъде незабавно извлечено чрез GetCurrentThread.
Ориз. 25: Обадете се на ImpersonateSelf
След това виждаме, че ще асоциира токен за достъп с нишка. Виждаме също, че едно от знамената е Желан достъп, който може да се използва за контрол на достъпа, който нишката ще има. В този случай стойността, която edx ще получи, трябва да бъде TOKEN_ALL_ACESS или иначе - TOKEN_WRITE.
Ориз. 26: Създаване на Flow Token
Тогава той ще използва SeDebugPrivilege и ще направи повикване за получаване на разрешения за отстраняване на грешки в нишката, което води до PROCESS_ALL_ACCESS, той ще има достъп до всеки необходим процес. Сега, като се има предвид, че криптаторът вече има подготвен поток, остава само да преминете към последния етап.
Ориз. 27: Извикване на SeDebugPrivilege и функция за ескалиране на привилегии
От една страна имаме LookupPrivilegeValueW, който ни предоставя необходимата информация за привилегиите, които искаме да увеличим.
Ориз. 28: Изискване на информация за привилегии за ескалация на привилегии
От друга страна имаме AdjustTokenPrivileges, което ни позволява да получим необходимите права за нашия поток. В случая най-важното е NewState, чийто флаг ще дава привилегии.
Ориз. 29: Настройване на разрешения за токен
5.3 Изпълнение
В този раздел ще покажем как извадката изпълнява процеса на внедряване, споменат по-рано в този доклад.
Основната цел на процеса на внедряване, както и на ескалацията, е да се получи достъп до сенчести копия. За да направи това, той трябва да работи с нишка с права, по-високи от тези на локалния потребител. След като получи такива повишени права, той ще изтрие копия и ще направи промени в други процеси, за да направи невъзможно връщането към по-ранна точка за възстановяване в операционната система.
Както е типично за този тип зловреден софтуер, той използва CreateToolHelp32Snapshotтака че прави моментна снимка на текущо изпълняваните процеси и се опитва да получи достъп до тези процеси с помощта на OpenProcess. След като получи достъп до процеса, той също отваря токен със своята информация, за да получи параметрите на процеса.
Ориз. 30: Извличане на процеси от компютър
Можем динамично да видим как получава списъка с изпълнявани процеси в рутина 140002D9C с помощта на CreateToolhelp32Snapshot. След като ги получи, той преминава през списъка, опитвайки се да отвори процеси един по един с помощта на OpenProcess, докато успее. В този случай първият процес, който успя да отвори, беше "taskhost.exe".
Ориз. 31: Динамично изпълнение на процедура за получаване на процес
Можем да видим, че впоследствие той чете информацията за токена на процеса, така че извиква OpenProcessToken с параметър "20008"
Ориз. 32: Прочетете информацията за токена на процеса
Той също така проверява дали процесът, в който ще бъде инжектиран, не е такъв csrss.exe, explorer.exe, lsaas.exe или че има набор от права NT авторитет.
Ориз. 33: Изключени процеси
Можем динамично да видим как първо извършва проверката, като използва информацията за токена на процеса 140002D9C за да разберете дали акаунтът, чиито права се използват за изпълнение на процес, е акаунт NT АВТОРИТЕТ.
Ориз. 34: Проверка на NT АВТОРИТЕТ
И по-късно, извън процедурата, той проверява, че това не е така csrss.exe, explorer.exe или lsaas.exe.
Ориз. 35: Проверка на NT АВТОРИТЕТ
След като направи моментна снимка на процесите, отвори процесите и провери, че никой от тях не е изключен, той е готов да запише в паметта процесите, които ще бъдат инжектирани.
За да направи това, той първо запазва област в паметта (VirtualAllocEx), пише в него (WriteProcessmemory) и създава нишка (Създаване на отдалечена нишка). За да работи с тези функции, той използва PID на избраните процеси, които е получил преди това CreateToolhelp32Snapshot.
Ориз. 36: Код за вграждане
Тук можем динамично да наблюдаваме как той използва PID на процеса, за да извика функцията VirtualAllocEx.
Ориз. 37: Обадете се на VirtualAllocEx
5.4 Криптиране
В този раздел ще разгледаме частта за криптиране на този пример. На следващата снимка можете да видите две подпрограми, наречени "LoadLibrary_EncodeString" и "Encode_Func“, които отговарят за извършването на процедурата по криптиране.
Ориз. 38: Процедури за криптиране
В началото можем да видим как зарежда низ, който по-късно ще бъде използван за деобфускация на всичко, което е необходимо: импортирания, DLL файлове, команди, файлове и CSP.
Ориз. 39: Верига за деобфускация
Следващата фигура показва първото импортиране, което деобфускара в регистър R4. Зареди библиотека. Това ще се използва по-късно за зареждане на необходимите DLL файлове. Можем също да видим друг ред в регистър R12, който се използва заедно с предишния ред за извършване на деобфускация.
Ориз. 40: Динамично деобфускация
Той продължава да изтегля команди, които ще изпълни по-късно, за да деактивира архивирането, точките за възстановяване и режимите на безопасно зареждане.
Ориз. 41: Зареждане на команди
След това зарежда местоположението, където ще пусне 3 файла: Windows.bat, run.sct и start.bat.
Ориз. 42: Местоположения на файлове
Тези 3 файла се използват за проверка на привилегиите, които има всяко местоположение. Ако необходимите привилегии не са налични, Ryuk спира изпълнението.
Той продължава да зарежда редовете, съответстващи на трите файла. първо, DECRYPT_INFORMATION.html, съдържа информация, необходима за възстановяване на файлове. Второ, PUBLIC, съдържа публичния ключ RSA.
Ориз. 43: Ред DECRYPT INFORMATION.html
Трето, UNIQUE_ID_DO_NOT_REMOVE, съдържа шифрования ключ, който ще бъде използван в следващата рутина за извършване на шифроването.
Ориз. 44: Ред УНИКАЛЕН ИД НЕ ПРЕМАХВАЙТЕ
Накрая изтегля необходимите библиотеки заедно с необходимите импортирания и CSP (Microsoft Enhanced RSA и Криптографски доставчик на AES).
Ориз. 45: Зареждане на библиотеки
След като приключи цялото деобфускация, той продължава да извършва действията, необходими за криптиране: изброяване на всички логически устройства, изпълнение на това, което е заредено в предишната рутина, укрепване на присъствието в системата, хвърляне на файла RyukReadMe.html, криптиране, изброяване на всички мрежови устройства , преход към открити устройства и тяхното криптиране.
Всичко започва със зареждане"cmd.exe" и RSA записи с публичен ключ.
Ориз. 46: Подготовка за криптиране
След това използва всички логически устройства GetLogicalDrives и деактивира всички архиви, точки за възстановяване и безопасни режими на зареждане.
Ориз. 47: Деактивиране на инструменти за възстановяване
След това засилва присъствието си в системата, както видяхме по-горе, и записва първия файл RyukReadMe.html в TEMP.
Ориз. 48: Публикуване на известие за откуп
На следващата снимка можете да видите как създава файл, изтегля съдържанието и го записва:
Ориз. 49: Зареждане и запис на съдържанието на файла
За да може да извършва едни и същи действия на всички устройства, които използва
"icacls.exe“, както показахме по-горе.
Ориз. 50: Използване на icalcls.exe
И накрая, той започва да криптира файлове, с изключение на „*.exe“, „*.dll“ файлове, системни файлове и други местоположения, посочени под формата на криптиран бял списък. За да направи това, той използва импортиране: CryptAcquireContextW (където е указано използването на AES и RSA), CryptDeriveKey, CryptGenKey, CryptDestroyKey и т.н. Той също така се опитва да разшири обхвата си до открити мрежови устройства с помощта на WNetEnumResourceW и след това да ги шифрова.
Ориз. 51: Шифроване на системни файлове
6. Импорти и съответните флагове
По-долу е дадена таблица, в която са изброени най-подходящите импортирания и флагове, използвани от извадката:
7. МОК
Позоваването
- usersPublicrun.sct
- Start MenuProgramsStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramsStartupstart.bat
Технически доклад за рансъмуера Ryuk е съставен от експерти от антивирусната лаборатория PandaLabs.
8. Връзки
1. „Everis y Prisa Radio sufren un grave ciberataque que secuestra sus sistemas.“https://www. elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, публикация на 04/11/2019.
2. „Un virus de origen ruso ataca a importantes empresas españolas.“ https: //elpais.com/tecnologia/2019/11/04/actualidad/1572897654_ 251312.html, Publicada el 04/11/2019.
3. „VB2019 paper: Shinigami's revenge: the long tail of the Ryuk malware.“ https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publicada el 11 /12/2019 г
4. „Лов на едър дивеч с Ryuk: Друг доходоносенb насочен рансъмуер.“ https://www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicada el 10/01/2019.
5. „Документ VB2019: Отмъщението на Шинигами: дългата опашка на зловреден софтуер Ryuk.“ https://www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r
Източник: www.habr.com