CERTMIL

Centrul de Răspuns la Incidente de Securitate Cibernetică

Atacuri zero-day asupra sistemelor Windows cu MysterySnail

La sfârșitul lunii august și începutul lunii septembrie 2021, Kaspersky a detectat atacuri în care a fost folosit un exploit de escaladare a privilegiilor pe mai multe servere Microsoft Windows. Exploatarea avea numeroase string-uri de debug de la un exploit mai vechi, cunoscut public ca CVE-2016-3309, dar o analiză mai atentă a arătat că de fapt era un zero-day. Folosea o vulnerabilitate necunoscută anterior în driverul Win32k, iar exploatarea se bazează în mare măsură pe o tehnică de divulgare a adreselor de bază ale modulelor kernelului. Au fost raportate imediat aceste descoperiri către Microsoft. S-a observat că partea de dezvăluire a informațiilor din lanțul de exploatare nu a evitat echipamentele de securitate și, prin urmare, nu a fost remediată. Microsoft a atribuit CVE-2021-40449 vulnerabilității use-after-free din driverul de kernel Win32k și a fost remediată pe 12 octombrie 2021, ca parte a Patch Tuesday din octombrie.
Cei de la Kaspersky au observat exploatarea activă a vulnerabilității și au analizat malware-ul utilizat împreună cu exploit-ul zero-day și au constatat că alte variante ale malware-ului au fost detectate în campanii de spionaj pe scară largă împotriva companiilor IT, a contractorilor militari și a entităților diplomatice.
Au numit aceste activități MysterySnail. Similitudinea codului și reutilizarea infrastructurii C2 pe care le-au descoperit le-au permis să facă legătura între aceste atacuri și atacatorul cunoscut sub numele de IronHusky și activitatea APT-ului chinez care datează din 2012.
Exploit-ul de escaladare a privilegiilor este conceput pentru următoarele produse Windows:

  • Microsoft Windows Vista
  • Microsoft Windows 7
  • Microsoft Windows 8
  • Microsoft Windows 8.1
  • Microsoft Windows Server 2008
  • Microsoft Windows Server 2008 R2
  • Microsoft Windows Server 2012
  • Microsoft Windows Server 2012 R2
  • Microsoft Windows 10 (versiunea 14393)
  • Microsoft Windows Server 2016 (versiunea 14393)
  • Microsoft Windows 10 (versiunea 17763)
  • Microsoft Windows Server 2019 (versiunea 17763)

“Lista produselor și a versiunilor de Windows 10, declararea explicită a sistemelor de operare pentru servere și faptul că exploit-urile au fost descoperite doar în atacuri asupra serverelor, toate acestea ne fac să credem că exploit-ul a fost dezvoltat și promovat ca o soluție pentru escaladarea privilegiilor pe servere”, au declarat cei de la Kaspersky.
CVE-2021-40449 este o vulnerabilitate de tip „use-after-free” în funcția NtGdiResetDC a Win32k. Ca și în cazul multor alte vulnerabilități din Win32k, cauza principală a acestei vulnerabilități constă în capacitatea de a seta callback-uri user-mode și de a executa funcții API neașteptate în timpul executării acestor callback-uri. CVE-2021-40449 este declanșată(inițiată) atunci când funcția ResetDC este executată a doua oară pentru același handle în timpul executării propriului callback.

Procesul de exploatare a acestei vulnerabilități este următorul:
⦁ Un apel user-mode al ResetDC execută syscall NtGdiResetDC și funcția sa internă GreResetDCnternal. Aceasta are un pointer către un obiect PDCc și execută un apel al funcției hdcOpenDCW.
⦁ Funcția hdcOpenDCW efectuează un callback user-mode și poate fi utilizată pentru a executa ResetDC pentru același handle a doua oară.
⦁ În cazul în care un exploit execută ResetDC în timpul unui callback, NtGdiResetDC și GreResetDCInternal sunt executate din nou pentru același DC.
⦁ Dacă un exploit ignoră toate callback-urile în timpul celui de-al doilea apel al GreResetDCInternal, această funcție va fi executată conform scpului pentru care a fost creată. Aceasta va crea un nou DC, iar cel vechi va fi șters (obiectul PDC este șters).
⦁ În callback, după finalizarea celui de-al doilea apel ResetDC, exploit-ul poate recupera memoria eliberată a obiectului PDC și poate finaliza execuția callback-ului.
⦁ După executarea callback-ului, funcția hdcOpenDCW revine la GreResetDCInternal, iar pointerul din pasul 1 va deveni “dangling pointer” (pointează către locația din memorie a obictului PDC care a fost șters).
⦁ În etapa finală a execuției GreResetDCInternal, un obiect PDC corupt poate fi utilizat pentru a efectua un apel la o funcție arbitrară a nucleului cu parametri controlați.

În această exploatare atacatorii ar putea obține orice stare a memoriei cu ajutorul obiectelor GDI și să utilizeze un singur apel la o funcție kernel pentru a construi o primitivă pentru citirea și scrierea memoriei kernel. Acest pas este ușor de realizat, deoarece procesul de exploatare rulează cu Medium IL și, prin urmare, este posibil să se utilizeze tehnici cunoscute public pentru a obține adresele kernel ale driverelor încărcate.
Kaspersky consideră că ar fi de preferat ca procesele Medium IL să aibă acces limitat la funcții precum NtQuerySystemInformation sau EnumDeviceDrivers.

Abordarea familiei MysterySnail RAT a început cu analiza unui remote shell de tip Trojan necunoscut anterior, care urma să fie executat prin intermediul unei vulnerabilități de escaladare a privilegiilor. Eșantionul analizat a fost încărcat pe VirusTotal pe data de 10 august 2021, având o dimensiune de 8,29 MB. Întrucât este compilat static cu biblioteca OpenSSL și conține cod neutilizat și date aparținând bibliotecii respective, nu face altceva decât să irosească puterea de procesare. Aceste funcții folosesc șiruri generate aleatoriu, într-un format binar.

Se presupune că aceste două funcții sunt utilizate ca tehnică de evitare a Antivirusului. Această teorie este susținută de prezența altor operatori logici redundanți și a unui număr relativ mare de funcții exportate, în timp ce lucrarea reală este efectuată doar de una dintre ele.

Eșantionul are două adrese URL codificate în format simplu www [.] Disktest [.] Com și www [.] Runblerx [.] Com. Acestea sunt puse în variabile specifice, nefiind efectiv utilizate, adresa C2 reală urmând a fi decodificată de un singur octet xor – http [.] ddspadus [.] com.
Programul malware enumeră valorile din cheia de registru Software\Microsoft\Windows\ CurrentVersion\Internet Settings\ProxyServer și le folosește pentru a solicita tunelarea printr-un server proxy în cazul în care nu se conectează direct la C2.
Programul malware în sine nu este foarte sofisticat și are funcționalități similare cu multe alte remote shell-uri. Dar se remarcă, cu un număr relativ mare de comenzi implementate și capabilități suplimentare, cum ar fi monitorizarea unităților de disc introduse și capacitatea de a acționa ca un proxy.
Comenzile de intrare și de ieșire au același format binar, având toate conexiunile criptate cu SSL.


Offset Descriere
0 Dimensiunea datelor suplimentare
4 ID-ul sesiunii
8 ID comandă
0xC Date suplimentare


Înainte de a primi orice comandă, malware-ul colectează și trimite informații generale despre sistemul victimă. Aceste informații includ:
⦁ Numele calculatorului
⦁ Versiunea OEM actuală/identificatorul implicit
⦁ Numele produsului Windows
⦁ Adresa IP locală
⦁ Numele de utilizator conectat
⦁ Numele campaniei (versiunea RAT)

În total, RAT implementează 20 de comenzi. ID-urile lor de descriere și comandă sunt furnizate mai jos:
⦁ 1F4h – Lansează shell interactiv cmd.exe. Înainte de lansare, cmd.exe este copiat în directorul temporar cu un nume diferit;
⦁ 1F5h – Creare de proces;
⦁ 1F6h – Creare de proces (consolă);
⦁ 1F7h – Identifică unitățile de disc existente și tipul acestora. Această funcție lucrează și în background, verificând noi dispozitive;
⦁ 1F8h – Creare (încărcare) fișier nou. Dacă există un fișier, sunt adăugate date la acesta;
⦁ 1FAh – Listare de directoare;
⦁ 1FBh – Închidere proces arbitrar;
⦁ 1FFh – Ștergere fișier;
⦁ 202h – Citire fișier. Dacă fișierul este prea mare, operația de citire asincronă poate fi oprită cu cmd 20Ch;
⦁ 205h – Reconectare;
⦁ 208h – Setare mod repaus (ms.);
⦁ 209h – Deconectare rețea și închidere;
⦁ 20Ah – Închidere;
⦁ 20Bh – Închidere shell interactiv (creat cu cmd 1F4h);
⦁ 20Ch – Încheiere operație cmd 202h;
⦁ 217h – Așteptare comenzi;
⦁ 21Bh – Deschidere conexiune proxy;
⦁ 21Ch – Transmitere date către conexiunea proxy;
⦁ 21Eh – Închidere conexiuni proxy;
⦁ 21Fh – Închidere conexiune proxy solicitată.

Analizarea malware-ului MysterySnail RAT a ajutat la descoperirea campaniei, precum și la studierea și documentarea cu privire la modificările de cod aduse acestui instrument pe o perioadă de șase luni. Sunt oferite mai multe informații despre aceste variante și campanii în raportul privat.
Folosind Kaspersky Threat Attribution Engine (KTAE) și descoperirea variantelor timpurii ale MysterySnail RAT, a putut fi găsit codul direct și funcționalitatea care se potrivește cu malware-ul atribuit atacatorului IronHusky.
Produsul Kaspersky a detectat exploatarea CVE-2021-40449 și malware-ul asociat cu denumiri:
⦁ PDM: Exploit.Win32.Generic
⦁ PDM: Trojan.Win32.Generic
⦁ Trojan.Win64.Agent*

Detectarea acestor atacuri a fost posibilă cu ajutorul motorului de detectare comportamentală și a componentei de prevenire a exploatării. CVE-2021-40449 este cea mai recentă completare la lunga listă de zero day-uri descoperite cu ajutorul acestor tehnologii.
Firma a declarat că va continua să își îmbunătățească apărarea pentru utilizatorii săii, îmbunătățind tehnologiile și lucrând cu diverși furnizori pentru a remedia vulnerabilitățile, făcând internetul mai sigur pentru toată lumea.
Mai multe informații despre aceste atacuri și despre atacatorul din spatele acestora, sunt disponibile clienților serviciului Kaspersky Intelligence Reporting. (Contact: intelreports@kaspersky.com)

IoC-uri
www [.] disktest [.] com
www [.] runblerx [.] com
http [.] ddspadus [.] com
MD5 e2f2d2832da0facbd716d6ad298073ca
SHA1 ecdec44d3ce31532d9831b139ea04bf48cde9090
SHA256 b7fb3623e31fb36fc3d3a4d99829e42910cad4da4fa7429a2d99a838e004366e

Sursa: https://securelist.com/mysterysnail-attacks-with-windows-zero-day/104509/

© Ministerul Apărării Naţionale | Site realizat de Agenția de Apărare Cibernetică