Postul următor de pe blog prezintă conceptul de Alternate Data Stream și modul în care acesta a fost folosit în sălbăticie, atât în trecut, cât și în aceste zile: ca o tehnică folosită pentru a ascunde o sarcină utilă malițioasă în sistemul de fișiere. Deși ar putea fi considerată o tehnică veche, este încă relevantă în prezent și comună în sălbăticie.
Ce este un Alternate Data Stream?
Alternate Data Stream (ADS) este capacitatea unui sistem de fișiere NTFS (formatul principal al sistemului de fișiere din Windows) de a stoca diferite fluxuri de date, în plus față de fluxul implicit care este utilizat în mod normal pentru un fișier. Când a fost creată această caracteristică, scopul său principal a fost acela de a oferi suport pentru sistemul de fișiere ierarhice (HFS) din macOS.
Sistemul de fișiere NTFS conține fișiere cu atribute. Atributul relevant pentru domeniul nostru de aplicare este atributul $DATA, care este utilizat pentru a stoca fluxurile de date ale unui fișier.
În trecut, era obișnuit să se stocheze o sarcină utilă malițioasă în cadrul unui ADS al unui fișier legitim. Dar astăzi, multe soluții de securitate vor detecta și scana ADS-urile’. Cu toate acestea, vă vom arăta în acest articol, un ADS poate fi folosit în continuare pentru a rula sarcini utile, fiind în același timp ascuns de utilizator, precum și de diverse produse de securitate.
Pentru a simplifica conceptele care sunt prezentate în acest articol, toate exemplele se bazează pe instrumente native din Windows.
Cum se utilizează ADS
În vremurile bune ale Windows Vista, Alternate Data Streams (ADS) era o metodă comună pentru dezvoltatorii de malware de a-și ascunde codul malițios. Un flux de date alternativ era utilizat în mod eficient pentru a sa prezența fișierelor malițioase de corupție, prin stoarcerea acestora în interiorul unui fișier legitim. Prin introducerea unui malware în fluxul de date alternativ, fișierul Windows conținea informații și indicații pentru fișierele legitime, dar și pentru fișierul malițios. Pentru a rula codul malițios pe care hackerul l-a depus în Alternate Data Stream, acesta ar dori să creeze un symlink cu ajutorul comenzii mklink. Dar pentru a face acest lucru este necesar să aibă drepturi administrative pe mașină. Având în vedere că comportamentul normal al unui utilizator nu necesită să ruleze operând ca administrator, hackerii tind să se apropie de țintele lor presupunând că aterizează pe o cutie fără drepturi de administrator.
Enumerare – Elementul principal de sub $DATA este șirul gol (deci: „”, numit și fluxul fără nume). Acest flux este utilizat pentru a conține fluxul obișnuit al unui fișier.
Cel de mai jos este un exemplu de enumerare a fluxurilor de date ale unui fișier cu PowerShell:
Puteți utiliza, de asemenea, dir /R, sau SysInternals\streams.exe pentru a enumera un ADS al unui fișier / recursiv pe un director
După cum puteți vedea mai sus, fișierul conține doar fluxul fără nume.
Cu toate acestea, uneori puteți găsi un ADS în cadrul unui fișier legitim, deoarece există mai multe utilizări legitime pentru această tehnică.
Mai jos este un exemplu de enumerare a fluxurilor de date ale unui fișier cu un ADS cu PowerShell:
Acesta este, de asemenea, un exemplu de utilizare legitimă a ADS: Zona. Identificator. Acest câmp prezintă nivelul de încredere al sursei fișierului. Aceasta este o utilizare a browserelor pentru a stoca „bitul de carantină”
Crearea – În timp ce pot exista utilizări legitime pentru ADS, ADS poate fi, de asemenea, utilizat pentru a stoca o sarcină utilă malițioasă. Atacatorii ar putea prefera această metodă în locul salvării încărcăturii utile în fluxul fără nume, deoarece prezența acesteia va fi ascunsă utilizatorului – nu este accesibilă din explorer.exe (iar dimensiunea afișată a unui fișier nu include dimensiunea ADS-ului). În plus, nu este afișat în mod implicit cu comanda „dir” (totuși, steagul /R afișează ADS și este aplicat din Windows Vista).
Crearea unui ADS este destul de simplă.
Un exemplu de creare a unui ADS cu comanda tip:
Până la Windows XP, a fost posibilă rularea unui ADS cu comanda start. Cu toate acestea, începând cu versiunile ulterioare de Windows, acest lucru nu mai este posibil.
Accesul la date – Abuzul de ADS este încă o amenințare relevantă, deoarece există mai multe moduri de a citi și executa un ADS.
Prima utilizare este accesul la date. Conținutul ADS-ului poate fi accesat cu ușurință. Următorul este un exemplu cu PowerShell:
Execuție – Pe lângă citirea datelor, este posibilă și executarea acestora. Deși nu este posibilă executarea unui ADS cu comanda „start”, acesta poate fi totuși executat din alte programe. De exemplu, cu WMI:
„wmic process call creates” – execută un proces cu WMI. Acesta poate, de asemenea, să execute un ADS. Exemplu:
Există instrumente native legitime suplimentare ale Windows care pot fi utilizate pentru a rula direct un ADS. De exemplu, un DLL poate fi salvat în interiorul unui ADS și apelat de DllMain prin rundll32.exe; de asemenea, un HTA poate fi salvat în interiorul unui ADS și apelat prin mshta.exe; și așa mai departe.
Campanii malițioase care abuzează de ADS
Se poate părea că Windows a reușit să gestioneze amenințările care rezidă în ADS. Cu toate acestea, există multe familii de malware în sălbăticie care încă abuzează de ADS-uri.
Un alt exemplu din 2017 este BitPaymer, ransomware care a folosit două ADS-uri în secvența de atac, pentru a adăuga furtivitate acțiunilor și a ascunde activitatea malițioasă. Primul ADS a fost creat cu scopul de a rula comanda „net view” pentru a obține partajările de rețea, apoi al doilea ADS bruiază datele de pe disc și de pe partajările de rețea.
În concluzie, utilizarea abuzivă a ADS este o tehnică care este încă relevantă în zilele noastre. Într-adevăr, versiunile recente de Windows au limitat și întărit funcționalitatea ADS. Cu toate acestea, o comandă de bază a instrumentelor native Windows, cum ar fi Power-Shell și WMI, sau o anumită cunoaștere a liniei de comandă Windows permite actorilor de amenințare să continue și să valorifice ADS în atacurile lor. În mod interesant, campaniile recente care utilizează ADS sunt considerate destul de sofisticate și tind să minimizeze utilizarea fișierelor persistente pe disc.
.