Počas nedávneho veľkého ransomvérového útoku útočníci kompromitovali do 1500 spoločností. Tento útok bol jeden z najväčších zaznamenaných kybernetických útokov. Obete boli infikované ransomvérom známym ako REvil, ktorý je podobný rasnomvéru DarkSide použitému pri útoku na Colonial Pipeline. No na rozdiel od prípadov zaznamenaných na začiatku roka 2021, tentokrát bola použitá vzorka REvil ransomvéru oveľa viac obfuskovaná. V tomto článku sa venujeme obfuskačným technikám, ktoré sme videli počas analýzy vzorky REvil ransomvéru použitej pri útoku na spoločnosť Kaseya a jej klientov.
Najskôr útočníci žiadali po útoku výkupné vo výške 70 miliónov dolárov, za ktoré by poskytli univerzálny dešifrovací nástroj pre všetky obete tohto útoku. Neskôr znížili požadované výkupne “len” na 50 miliónov dolárov. Taktiež FBI vydala vyhlásenie o ransomvérovom útoku na Kaseya a spustili vlastné vyšetrovanie tohto incidentu.
Dropper
Útočníci použili falošnú aktualizáciu softvéru Kaseya VSA, súčasťou ktorej bol aj program nazvaný agent.exe
(VirusTotal, Any.Run). Tento program po spustení vytvorí dva súbory v adresári %TEMP%
; MsMpEng.exe a mpsvc.exe. Následne agent.exe spustí program MsMpEng.exe, ktorý je legitímnym programom Microsoft Malware Protection Antimalware Service, resp. Windows Defender. Toto je však staršia verzia, hoci stále funkčná a navyše je aj digitálne podpísaná Microsoftom.
Daný program MsMpEng.exe je zraniteľný na tzv. DLL hijacking. Znamená to, že útočníci môžu spustiť ich škodlivý kód prostredníctvom techniky zvanej DLL side-loading. Program MsMpEng.exe načíta namiesto legitímneho DLL škodlivé z rovnakého adresára, z ktorého je spustený - v tomto prípade %TEMP%
. Toto správanie môžeme vidieť v analýze v sandboxe Any.Run spomínanej vyššie.
Pri bližšom pohľade je však program agent.exe veľmi jednoduchý. Obsahuje v sebe dva zdroje (resources) nazvané MODLIS and SOFTIS. Tieto obsahujú dáta, ktoré sú po spustení agent.exe uložené na disk ako súbory mpsvc.dll a MsMpEng.exe. Po ich uložení agent.exe spustí MsMpEng.exe a ten načíta škodlivý DLL súbor.
Poznámka: vytvorený súbor mpsvc.dll je trocha väčší (808328 B) ako jeho zdroj MODLIS (807816 B). Program agent.exe zapisuje viac dát do súbora mpsvc.dll. Hoci sú tieto navyše zapísané dáta iba nulové byty, tak ovplyvňujú výsledný hash DLL súbora. Z tohto dôvodu sa vyskytujú v analýzach dva rôzne hashe pre súbor mpsvc.dll
Škodlivé DLL
Škodlivý DLL súbor mpsvc.dll obsahuje obfuskovanú podobu REvil ransomvéru. Najskôr, exportovaná funkcia ServiceCrtMain
vytvorí nové vlákno v ktorom spustí tzv. “loader” funkciu.
Loader funkcia dešifruje blok dát (payload), ktoré sú šifrované šifrou RC2 v CFB móde. Na kryptografické operácie je použitá knižnica OpenSSL, ktorá je staticky zlinkovaná v DLL súbore mpsvc.dll.
Zašifrované dáta spolu s obfuskovaným kľúčom na ich dešifrovanie sú uložené v sekcii .data
. Pred samotným dešifrovaním loader deobfuskuje dešifrovací kľúč. Použitá metóda obfuskácie je jednoduchá, i-ty znak kľúča je xorovaný číslom i a číslom odvodeným z obfuskovanej podoby kľúča.
Po dešifrovaní tohto bloku dát (130048 bytov) ich loader namapuje do pamäte (CreateFileMapping
) s prístupovými právami PAGE_EXECUTE_READWRITE
, takže ich môže čítať, modifikovať aj vykonávať ako kód. Tieto dešifrované dáta obsahujú validný (shell)kód, ktorý je následne vykonaný. Ešte predtým však loader posunie shellkódu v parametroch ukazovatele na Win32 API volaniaLoadLibrary
a GetProcAddress
.
Dešifrovaný blok dát (payload)
Dešifrovaný blok dát predstavuje dalšiu vrstvu obfuskácie. Obsahuje zabalenú (packovanú) verziu REvil ransomvéru. Stojí za povšimnutie, že napriek svojej škodlivej povahe, tento dešifrovaný blok dát nie je detegovaný žiadnym antivírom v službe VirusTotal. Dokonca aj po uplynutí niekoľkých dní od útoku na klientov spoločnosti Kaseya, obfuskovaný artefakt obsahujúci REvil ransomvér použitý pri útoku je stále nedetegovaný ako škodlivý.
Rozbaľovacia rutina, ktorej úlohou je rozbaliť a spustiť v pamäti danú zabalenú verziu ransomvéru (unpacker stub), alokuje ďalšiu pamäť a nastaví jej ochranu na možnosť čítania, zápisu aj vykonávania kódu (ERW atribúty na Obr. 13). To znamená, že v tejto fáze sú v pamäti prítomné dve pamätové oblasti s ochranou ERW - v prvej je prítomná aktuálny stupeň so shellkódom a rozbaľovacou rutinou, druhá je určená pre rozbalený obsah s REvil ransomvérom.
Následne po rozbalení sa v pamäti spustí už samotný REvil ransomvér.
Rozbalený REvil ransomvér
Rozbalený REvil ransomvér je vo formáte PE (portable executable), avšak s čiastočne odstránenou DOS aj NT hlavičkou. Klasické MZ aj PE signatúry sú odstránené rovnako ako názvy sekcií. Na druhej strane, väčšina polí a hodnôt DOS aj NT hlavičiek je stále prítomna, napríklad minimálna požadovaná verzia operačného systému - Major a Minor OS Version, v tomto prípade NT 5.1, čo predstavuje Windows XP. Taktiež je prítomná aj adresa začiatku vykonávania programu (entry point, 0x4883), čo je aj miesto, ktoré je zavolané na konci rozbaľovacej rutiny.
Opäť je zaujímavé, že aj táto rozbalená verzia REvil ransomvéru extrahovaná z pamäte bežiaceho procesu má minimálnu detekciu antivírmi - iba 2 z 59 antivírov zo služby VirusTotal ju označujú ako škodlivú. Dokonca aj jeden týždeň po útoku.
Pri rýchlom pohľade na rozbalený REvil ransomvér vidíme, že je to vlastne štandardná vzorka, akú sme mali možnosť často vidieť pred niekoľkými mesiacmi. Jednoduchý štart s dvoma volaniami, dešifrovanie konfigurácie, kontrola, či nebeží ešte nejaká ďalšia inštancia, atď.
Konfigurácia REvil ransomvéru
Konfigurácia REvil ransomvéru je zašifrovaná šifrou RC4 a jej zašifrovaná podoba je uložená v špecifickej sekcii PE súboru (často je pomenovaná ako .cfg
). V tejto sekcii je taktiež uložený aj kľúč na dešifrovanie konfigurácie,
Po dešifrovaní je táto konfigurácia vo formáte JSON a obsahuje rôzne nastavenia a parametre danej vzorky REvil ransomvéru. Podrobnejšie sme sa venovali konfigurácii REvil ransomvéru a jej podobnostiam s ransomvérom DarkSide v našej predchádzajúcej analýze.
Konfigurácia obsahuje okrem iného aj šablónu pre odkaz obetiam (tzv. ransom note). Táto šablóna je zakódovaná pomocou kódovania Base64 a používa značky, ktoré sú následne nahradené hodnotami a textom relevantným pre danú obeť.
Zaujímavosti z analýzy REvil ransomvéru
REvil používa kombináciu symetrického a asymetrického šifrovania s niekoľkými verejnými a súkromnými kľúčmi. Použitie viacerých kľúčov vyplýva z podstaty obchodného modelu REvilu, do ktorého sú zapojení okrem samotnej REvil skupiny aj rôzni partneri. Takže jednotlivé kľúče sú pre operátorov, partnerov aj pre samotné infikované systémy. Pre viac informácii o tejto téme odporúčame pozrieť zaujímavú sériu twítov od Fabiana Wosara. V tejto sérii je aj príklad dát, ktoré sú zakódované v texte, ktorý obete posielajú na stránky útočníkov, keď chcú dešifrovať ich systémy - v šablóne na Obr. 21 označené ako {KEY}.
Po spustení REvil mení heslo používateľa, resp. zariadenia a nastaví automatické prihlásenie. V analyzovanej vzorke je toto heslo “DTrump4ever”, ako možno vidieť na Obr. 22.
V analyzovanej vzorke však táto zmena nemá veľmi efekt, pretože REvil zašifruje aj zavádzač systému a súbory potrebné pre boot. Po reštartovaní zariadenia sa teda zobrazí iba chybová hláška a zariadenie nie je schopné naštartovať.
Záver
Zanalyzovali sme vzorku ransomvéru REvil, ktorá bola použitá pri nedávnych útokoch v súvislosti so spoločnosťou Kaseya, počas ktorých boli zašifrované stovky obetí. Analyzovaná vzorka ransomvéru je chránená viacerými vrstvami obfuskácie a šifrovania. Dokonca aj týždeň po útoku sú niektoré z použitých techník obfuskácie a vyhýbaniu sa detekcie bezpečnostnými produktmi natoľko úspešné, že posledný stupeň ransomvéru rozbalený a spustený v pamäti, ako aj jeho zabalená verzia, sú takmer nedetegované antivírmi.
Úspešne sme prekonali jednotlivé ochranné vrstvy REvil ransomvéru a extrahovali sme jeho konfiguráciu a šablónu pre ransomnote. Tieto artefaktu sú dostupné na našom GitHube.
Referencie
- Článok na CNN o ransomvér útoku na Kaseya
- Útočníci požadovali 50 miliónov dolárov
- Vyhlásenie FBI o ransomvérovom útoku na Kaseya
- Technika ATT&CK MITRE T1574.002: Hijack Execution Flow: DLL Side-Loading
- Podobnosti DarkSide a Revil/Sodinokibi ransomvéru
- Séria twítov Fabiana Wosara o kryptografii v REvile
- GitHub repozitár IstroSec s extrahovanými konfiguráciami REvilu a šablónami pre ransomnote
Vzorky a IOC
- agent.exe dropper
- Any.Run analýza
- veľkosť: 912264 bytov
- MD5: 561cffbaba71a6e8cc1cdceda990ead4
- SHA256: d55f983c994caa160ec63a59f6b4250fe67fb3e8c43a388aec60a4a6978e9f1e
- MsMpEng.exe
- legitímny program Microsoft Malware Protection Antimalware Service (Windows Defender)
- podpísaný Microsoftom
- vytvorený súbor na disku programom agent.exe:
- pozor na planý poplach, nasledovné hashe patria staršiemu legitímnemu programu, ktorý bol zneužitý na škodlivé účely
- veľkosť: 22224 bytov
- MD5: 8cc83221870dd07144e63df594c391d9
- SHA256: 33bc14d231a4afaa18f06513766d5f69d8b88f1e697cd127d24fb4b72ad44c7a
- mpsvc.dll
- škodlivý payload s obfuskovaným REvil ransomvérom vytvorený programom agent.exe
- vytvorený súbor na disku:
- veľkosť: 808328 bytov
- MD5: a47cf00aedf769d60d58bfe00c0b5421
- SHA256: 8dd620d9aeb35960bb766458c8890ede987c33d239cf730f93fe49d90ae759dd
- extrahovaný súbor z dát programu agent.exe:
- veľkosť: 807816 bytov
- MD5: 7ea501911850a077cf0f9fe6a7518859
- SHA256: e2a24ab94f865caeacdf2c3ad015f31f23008ac6db8312c2cbfb32e4a5466ea2
- dešifrovaný payload z mpsvc.dll (shellkód)
- obsahuje zabalený REvil ransomvér
- veľkosť: 131072 bytov
- MD5: 3ad14947002e57887b82643d729c21ae
- SHA256: c8768d4a4979d4b5ab4e841fc29523d8d80c52d6e89f345a0a44e75973f3d3af
- rozbalený REvil ransomvér
- veľkosť: 139264 bytov
- MD5: f356f999ccc35d972453ffc15cb18440
- SHA256: 67bd95b17fa052ce6bb6f0e4536a083d83a095059cd728e4fedc7cda9c502dc8