Stealth Falcon pradă cerul Orientului Mijlociu cu Deadglyph

Stealth Falcon pradă cerul Orientului Mijlociu cu Deadglyph

Nodul sursă: 2899203

De ani de zile, Orientul Mijlociu și-a menținut reputația de teren fertil pentru amenințările persistente avansate (APT). În mijlocul monitorizării de rutină a activităților suspecte pe sistemele clienților de profil, unii cu sediul în această regiune, ESET Research a dat peste o ușă din spate foarte sofisticată și necunoscută pe care am numit-o Deadglyph. Am derivat numele de la artefacte găsite în ușa din spate (cum ar fi 0xDEADB001, afișat și în REF _Ref111452440 h Tabel 1
), cuplată cu prezența unui homoglyph atac. Din câte știm, aceasta este prima analiză publică a acestei uși din spate nedocumentate anterior, folosită de un grup care prezintă un grad notabil de sofisticare și expertiză. Pe baza țintirii și a dovezilor suplimentare, atribuim Deadglyph cu mare încredere grupului Stealth Falcon APT.

Arhitectura lui Deadglyph este neobișnuită deoarece constă din componente care cooperează – una un binar x64 nativ, cealaltă un ansamblu .NET. Această combinație este neobișnuită, deoarece malware-ul utilizează de obicei un singur limbaj de programare pentru componentele sale. Această diferență ar putea indica dezvoltarea separată a acestor două componente, profitând în același timp de caracteristicile unice ale limbajelor de programare distincte pe care le utilizează. Limbajul diferit poate fi, de asemenea, valorificat pentru a împiedica analiza, deoarece codul mixt este mai dificil de navigat și de depanat.

Comenzile tradiționale backdoor nu sunt implementate în binarul backdoor; în schimb, acestea sunt recepționate dinamic de către acesta de la serverul de comandă și control (C&C) sub formă de module suplimentare. Această ușă din spate are, de asemenea, o serie de capabilități pentru a evita detectarea.

În această postare pe blog, aruncăm o privire mai atentă asupra Deadglyph și oferim o analiză tehnică a acestei uși din spate, a scopului său și a unor componente suplimentare pe care le-am obținut. De asemenea, prezentăm descoperirile noastre despre Deadglyph la LABScon 2023 conferinţă.

Puncte cheie ale postării pe blog:

  • ESET Research a descoperit o ușă din spate sofisticată, cu o arhitectură neobișnuită, pe care am numit-o Deadglyph.
  • Componentele principale sunt criptate folosind o cheie specifică mașinii.
  • Comenzile tradiționale backdoor sunt implementate prin module suplimentare primite de la serverul său C&C.
  • Am obținut trei din multe module – creator de procese, cititor de fișiere și colector de informații.
  • Atribuim Deadglyph grupului Stealth Falcon.
  • În plus, am găsit un program de descărcare shellcode asociat; postulăm că ar putea fi utilizat pentru instalarea Deadglyph.

Victima infiltrării analizate este o entitate guvernamentală din Orientul Mijlociu care a fost compromisă în scopuri de spionaj. Un eșantion similar găsit pe VirusTotal a fost încărcat și pe platforma de scanare a fișierelor din această regiune, în special din Qatar. Regiunea vizată este reprezentată pe hartă în REF _Ref143614671 h Figura 1
.

Deadglyph Figura_01
Figura 1. Victimologia Deadglyph; eșantionul aferent a fost încărcat în VirusTotal din Qatar (în culoare mai închisă)

Stealth Falcon (cunoscut și sub numele de Project Raven sau FruityArmor) este un grup de amenințare legat de Emiratele Arabe Unite conform MITRE. Activ din 2012, Stealth Falcon este cunoscut că vizează activiști politici, jurnaliști și dizidenți din Orientul Mijlociu. A fost descoperit și descris pentru prima dată de Laboratorul cetățean, care a publicat an analiză a unei campanii de atacuri spyware în 2016.

În ianuarie 2019, Reuters a publicat un raportul de investigație pe Project Raven, o inițiativă care se presupune că angajează foști agenți NSA și vizează aceleași tipuri de ținte ca și Stealth Falcon. Pe baza acestor două rapoarte care se referă la aceleași ținte și atacuri, Amnesty International a încheiat (prezentat în REF _Ref144978712 h Figura 2
) că Stealth Falcon și Project Raven sunt de fapt același grup.

Deadglyph Figura 2
Figura 2. Claudio Guarnieri a conectat Stealth Falcon cu Project Raven

În septembrie 2019, noi cercetări publicate pe o ușă din spate, atribuită lui Stealth Falcon, care folosea o tehnică neobișnuită, Background Intelligent Transfer Service, pentru comunicarea C&C. Dezvăluim acum rezultatul analizei noastre aprofundate a ceea ce probabil este cea mai nouă adăugare la setul de instrumente de spionaj Stealth Falcon.

Deadglyph ușă din spate

Lanțul de încărcare al lui Deadglyph constă din mai multe componente, așa cum este ilustrat în REF _Ref144978760 h Figura 3
. Componenta inițială este un încărcător de shellcode de registru, care încarcă shellcode din registry. Acest shellcode extras, la rândul său, încarcă partea nativă x64 a ușii din spate - Executor. Executorul încarcă ulterior partea .NET a ușii din spate – Orchestrator. În special, singura componentă de pe discul sistemului ca fișier este componenta inițială, care este sub forma unei biblioteci de legături dinamice (DLL). Componentele rămase sunt criptate și stocate într-o valoare de registru binar.

Deadglyph Figura_02
Figura 3. Componentele lanțului de încărcare Deadglyph

Deși metoda precisă a vectorului de compromis inițial nu este încă determinată, suspiciunea noastră este că o componentă de instalare este implicată în implementarea altor componente și în stabilirea persistenței în cadrul sistemului.

În restul acestei secțiuni, analizăm fiecare componentă.

Încărcător de shellcode de registru

Componenta inițială a lui Deadglyph este un DLL mic cu un singur export, numit 1. Această componentă este continuată folosind Abonament pentru evenimente Windows Management Instrumentation (WMI). și servește ca încărcător de shellcode de registru. Se execută prin linia de comandă rundll32 C:WINDOWSystem32pbrtl.dll, #1.

Încărcătorul shellcode de registry își începe funcționarea prin decriptarea căii către codul shell criptat stocat în registry Windows, folosind RC4. Bănuim că calea este unică pentru fiecare victimă; în cazul analizat aici, calea de registry a fost:

SoftwareClassesCLSID{5abc7f42-1112-5099-b082-ce8d65ba0c47}cAbRGHLg

Cheia de registry rădăcină este fie hklm or HKCU, în funcție de dacă procesul curent rulează cu privilegii ridicate sau nu. Aceeași logică poate fi găsită în alte componente.

După aceasta, încărcătorul obține o cheie RC4 specifică mașinii folosind UUID-ul de sistem preluat de la tabelul de firmware brut SMBIOS. Folosind această cheie, se încarcă, decriptează și apoi execută codul shell. Este important de subliniat faptul că această abordare de derivare a cheilor asigură că decriptarea adecvată nu va avea loc dacă încărcătorul este executat pe un alt computer.

Interesant este că încărcătorul poate fi configurat și printr-un steag în el .date secțiune pentru a utiliza o cheie codificată pentru a decripta codul shell, în loc de cea specifică mașinii.

Am observat un atac homoglif care imită Microsoft Corporation în INFORMAȚII DESPRE VERSIUNE resursa acestei componente și a altor componente PE. Această metodă folosește caractere Unicode distincte care par vizual similare, dar în acest caz nu identice, cu caracterele originale, în special litera greacă mare San (U+03FA, Ϻ) și litera chirilică mică O (U+043E, о) în Ϻicrоsоft Corpоratiоn.

shellcode de registru

Compus din două părți, codul shell de registry constă dintr-o rutină de decriptare și un corp criptat. În primul rând, rutina de decriptare rotește fiecare octet al corpului criptat la stânga cu unul (ROL 0x01). Ulterior, controlul este transferat acestui corp decriptat. Corpul decriptat este format dintr-un încărcător PE și un fișier PE, acesta din urmă fiind Executor, care reprezintă partea nativă a ușii din spate. Acest încărcător este responsabil pentru analizarea și încărcarea fișierului PE asociat.

Executor testamentar

Executor este partea nativă x64 a ușii din spate Deadglyph, care face următoarele:

  • își încarcă configurația,
  • inițializează runtime-ul .NET,
  • încarcă partea .NET încorporată a ușii din spate (Orchestrator) și
  • acționează ca o bibliotecă pentru orchestrator.

În primul rând, două configurații implicite încorporate în .date secțiunea sunt decriptate AES. Configurațiile cuprind diverși parametri, inclusiv chei de criptare, setări de siguranță și evaziune și punctul de intrare al componentei ulterioare.

În timpul execuției inițiale, acele două configurații implicite sunt stocate în registrul Windows, de unde sunt încărcate în rulările ulterioare, permițând implementarea actualizărilor. Calea de registry pentru fiecare configurație este generată cu următorul format:

{HKCU|HKLM}SoftwareClassesCLSID{ }(Mod implicit)

este un GUID generat, care este unic pentru fiecare victimă.

După aceasta, runtime-ul .NET este inițializat, apoi Executor RC4 decriptează partea .NET a ușii din spate cunoscută sub numele de Orchestrator. Orchestratorul este situat în .rsrc sectia Executorului. Configurația specifică metoda de execuție a orchestratorului ca punct de intrare. Mai mult, este prevăzută o structură distinctă pentru a facilita accesibilitatea funcțiilor Executorului de către Orchestrator.

După lansarea Orchestratorului, Executorul acționează ca o bibliotecă suport pentru Orchestrator. Executorul conține multe funcții interesante; Descriem unele dintre ele în secțiunea următoare, în contextul utilizării lor de către Orchestrator și modulele încărcate ulterioare.

orchestrator

Scris în .NET, Orchestrator este componenta principală a backdoor-ului Deadglyph. Rolul principal al acestei componente implică stabilirea comunicării cu serverul C&C și executarea comenzilor, adesea facilitate prin rolul de intermediar al Executorului. Spre deosebire de componentele precedente, Orchestrator este obscurcat, folosind .NET Reactor. În interior, ușa din spate este denumită agent, care este un nume comun pentru partea client în diferite cadre post-exploatare.

Inițializarea

Orchestrator își încarcă mai întâi configurația și două module încorporate, fiecare însoțit de propriul set de configurații, din resurse. Aceste resurse sunt Dezumfla comprimat și AES criptat. Acestea sunt referite printr-un ID care este SHA-1 introdus într-un nume de resursă. O prezentare generală a acestor resurse este oferită în REF _Ref111452440 h Tabel 1
.

Tabelul 1. Resurse orchestrator

 

Numele resursei

ID (zecimal)

ID (hex)

Descriere

43ed9a3ad74ed7ab74c345a876b6be19039d4c8c

2570286865

0x99337711

Configurarea orchestratorului.

3a215912708eab6f56af953d748fbfc38e3bb468

3740250113

0xDEEFB001

Modul de rețea.

42fb165bc9cf614996027a9fcb261d65fd513527

3740250369

0xDEEFB101

Configurarea modulului de rețea.

e204cdcf96d9f94f9c19dbe385e635d00caaf49d

3735924737

0xDEADB001

Modul temporizator.

abd2db754795272c21407efd5080c8a705a7d151

3735924993

0xDEADB101

Configurarea modulului temporizatorului.

Configurația Orchestrator și a modulelor încorporate este stocată în format XML. Un exemplu de configurație Orchestrator este prezentat în REF _Ref111452611 h
Figura 4
.

Deadglyph Figura_04
Figura 4. Configurarea orchestratorului

Descrierea intrărilor de configurare Orchestrator este afișată în REF _Ref111452782 h Tabel 2
.

Tabelul 2. Intrări de configurare a orchestratorului

Cheie

Descriere

k


Cheie AES folosită pentru configurațiile persistente ale modulelor.

a


Numele metodei de inițializare a modulului de rețea.

b


Indicator necunoscut legat de modulul de rețea.

c


Numele metodei de inițializare a modulului temporizator.

d


Marcați care permite utilizarea cheii AES specifice mașinii (UUID de sistem) pentru resurse.

p


ID-ul resursei modulului de rețea.

t


ID-ul resursei modulului temporizatorului.

După ce componentele resurselor sunt încărcate, sunt create mai multe fire pentru a efectua sarcini distincte. Unul dintre aceste fire este responsabil pentru efectuarea verificărilor de mediu, o funcție implementată în cadrul Executor. Un alt fir este dedicat stabilirii unei comunicări periodice cu serverul C&C, permițând preluarea comenzilor. În cele din urmă, un set de trei fire de execuție este folosit în scopul executării comenzilor primite și, ulterior, a transmite orice ieșire generată înapoi către serverul C&C.

Firul de verificare a mediului monitorizează procesele care rulează pentru a le identifica pe cele nedorite. Acest thread operează cu două liste distincte de nume de proces. Dacă este detectat un proces din prima listă, comunicarea C&C și execuția comenzii sunt întrerupte până când procesul nedorit nu mai există. Dacă există o potrivire pentru orice proces din a doua listă, ușa din spate se închide imediat și se dezinstalează.

Nicio listă nu a fost configurată în instanța analizată, așa că nu știm pentru ce procese ar putea fi verificate de obicei; credem că este probabil destinat să evite instrumentele de analiză care ar putea detecta activități suspecte și ar putea duce la descoperirea ușii din spate.

Comunicare

Orchestrator utilizează două module încorporate pentru comunicarea C&C – Timer și Network. La fel ca și Orchestrator, aceste module sunt ascunse cu .NET Reactor. Configurația pentru ambele module este furnizată de Orchestrator. În cadrul Orchestrator, este inclusă o configurație prestabilită pentru module; opțional, Orchestrator poate încărca și o versiune de configurare actualizată din registry:

{HKCU|HKLM}SoftwareClassesCLSID{ }

Ușa din spate conține o măsură de siguranță interesantă legată de comunicare. Dacă backdoorul nu poate stabili comunicarea cu serverul C&C pentru o durată care depășește un prag predefinit, configurat în Executor, se declanșează un mecanism de auto-dezinstalare. Acest prag de timp este specificat în ore și a fost stabilit la o oră în cazul examinat.

Această abordare are un dublu scop. Pe de o parte, împiedică generarea de solicitări redundante de rețea către un server inaccesibil. Pe de altă parte, reduce șansele de detectare ulterioară dacă operatorii pierd controlul asupra ușii din spate.

Modul temporizator

Acest mic modul execută apelarea specificată la un interval configurabil. Este folosit de Orchestrator în combinație cu modulul de rețea pentru a comunica periodic cu serverul C&C. Pentru a preveni crearea de modele detectabile în jurnalele de rețea, intervalul de execuție este supus randomizării, pe baza unui procent specificat în configurație. În cazul analizat, intervalul a fost setat la cinci minute, cu o variație de ±20% introdusă pentru aleatorie.

O altă metodă de a evita modelele de rețea detectabile în comunicarea periodică poate fi găsită în generarea cererilor trimise către serverul C&C. Acest mecanism, implementat în Executor, presupune includerea unor padding de lungimi variabile, compuse din octeți aleatori, în cadrul cererilor, rezultând solicitări de diferite dimensiuni.

Modulul de rețea

Modulul de rețea implementează comunicarea cu serverele C&C specificate în configurația sa. Poate trimite date către un server C&C utilizând solicitări HTTP(S) POST. În special, oferă mai multe mecanisme pentru a obține detalii de configurare proxy. Această caracteristică sugerează o atenție potențială asupra mediilor în care accesul direct la internet nu este disponibil.

Un exemplu de configurație decriptată (și înfrumusețată) este afișat în REF _Ref144978805 h Figura 5
.

Deadglyph Figura_06
Figura 5. Configurarea modulului de rețea

Intrările de configurare conțin detalii legate de comunicațiile de rețea – URL-uri C&C, agent de utilizator HTTP și, opțional, o configurație proxy.

Când comunicați cu serverul C&C, sub HTTPS este utilizat un protocol binar personalizat cu conținut criptat.

Comenzi

Orchestratorul primește comenzi de la serverul C&C sub formă de sarcini, care sunt puse în coadă pentru execuție. Există trei tipuri de sarcini procesate:

  • Sarcini de orchestrator,
  • Sarcinile executorului și
  • Încărcați sarcini.

Primele două tipuri sunt primite de la serverul C&C, iar al treilea este creat intern pentru a încărca rezultatul comenzilor și erorilor.

Sarcini de orchestrator

Sarcinile de orchestrator oferă posibilitatea de a gestiona configurația modulelor de rețea și temporizator și, de asemenea, de a anula sarcinile în așteptare. Prezentare generală a sarcinilor Orchestrator este afișată în REF _Ref111101783 h Tabel 3
.

Tabelul 3. Sarcini de orchestrator

Tip

Descriere

0x80


Setați configurația rețelei și a modulelor de temporizator.

0x81


Obțineți configurarea modulelor de rețea și temporizator.

0x82


Anulați sarcina.

0x83


Anulați toate sarcinile.

Sarcini de executant

Sarcinile de executare oferă posibilitatea de a gestiona ușa din spate și de a executa module suplimentare. Este de remarcat faptul că funcționalitatea tradițională backdoor nu este prezentă în mod inerent în sistemul binar în sine. În schimb, aceste funcții sunt obținute de la serverul C&C sub formă de fișiere PE sau shellcode. Întinderea completă a potențialului ușii din spate rămâne necunoscută fără aceste module suplimentare, care deblochează efectiv adevăratele sale capacități. O prezentare generală a sarcinilor modulului este afișată în REF _Ref117677179 h Tabel 4
, care include detalii despre cele câteva module identificate. În mod similar, REF _Ref117677188 h Tabel 5
oferă o privire de ansamblu asupra sarcinilor de management asociate cu Executorul.

Tabel 4. Sarcini de executant – module

Tip

Descriere

0x??–0x63


Necunoscut

0x64


Cititor de fișiere

0x65


Necunoscut

0x66


Necunoscut

0x67


Necunoscut

0x68


Necunoscut

0x69


Creator de proces

0x6A


Necunoscut

0x6B


Necunoscut

0x6C


Colector de informații

0x6D


Necunoscut

0x6E


Necunoscut

Tabelul 5. Sarcinile executorului – management

Tip

Descriere

0x6F-0x76

Neimplementat

0x77

Setați configurația Executor

0x78

Obțineți configurația Executor

0x79-0x7C

Neimplementat

0x7D

Actualizează

0x7E

Părăsi

0x7F

Dezinstalarea

Comanda care setează configurația Executor poate schimba:

  • liste de procese nedorite,
  • pragul de timp al eșecului comunicației C&C și
  • limită de timp pentru execuția modulelor suplimentare.
Module

Am reușit să obținem trei module unice de la serverul C&C, fiecare corespunzând unui tip de sarcină Executor diferit, așa cum se arată în REF _Ref117677179 h Tabel 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F005200650066003100310037003600370037003100370039000000
. Pe baza informațiilor disponibile, estimăm că există nouă până la paisprezece module în total. Deoarece modulele sunt de fapt comenzi backdoor, ele au o operație de bază de executat și apoi returnează opțional rezultatul. Modulele pe care le-am obținut sunt DLL-uri cu un export fără nume (ordinal 1), în care rezolvă funcțiile API necesare și apelează funcția principală.

Când sunt executate, modulele sunt prevăzute cu o funcție de rezoluție API, care poate rezolva API-urile Windows și API-urile Executor personalizate. API-urile Windows sunt referite printr-un hash DWORD, calculat din numele API-ului și DLL-ul acestuia. Valorile hash mici (<41) sunt tratate special, făcând referire la funcția Executor API. API-ul Executor cuprinde un total de 39 de funcții care sunt accesibile modulelor. Aceste funcții se referă la o varietate de operațiuni, inclusiv:

  • operațiuni cu fișiere,
  • criptare și hashing,
  • comprimare,
  • încărcare PE,
  • acces Token Uzurpare și
  • utilitate.

În restul acestei secțiuni, descriem modulele pe care le-am obținut.

Creator de proces

Module 0x69 execută linia de comandă specificată ca un proces nou și oferă rezultatul rezultat înapoi către Orchestrator. Procesul poate fi creat sub alt utilizator, iar timpul de execuție al acestuia poate fi limitat. În special, un neobișnuit Job API este utilizat în funcționalitatea acestui modul.

Acest modul a fost servit cu linia de comandă cmd.exe /c listă de activități /v.

Presupunem că servește ca o comandă inactivă emisă automat, în timp ce operatorii așteaptă să se întâmple ceva interesant pe computerul compromis.

Colector de informații

Module 0x6C colectează informații extinse despre computer prin interogări WMI și le transmite înapoi orchestratorului. Sunt colectate informații despre următoarele:

  • sistem de operare,
  • adaptoare de rețea,
  • software instalat,
  • unități,
  • Servicii,
  • drivere,
  • procese,
  • utilizatori,
  • variabilele de mediu și
  • software de securitate.
Cititor de fișiere

Module 0x64 citește fișierul specificat și transmite conținutul înapoi orchestratorului. Opțional, poate șterge fișierul după citire.

Am văzut acest modul folosit pentru a prelua fișierul de date Outlook al victimei

c: Utilizatori AppDataLocalMicrosoftOutlookoutlook.ost.

Lanț cu descărcare shellcode

În procesul de investigare a Deadglyph, am întâlnit un fișier CPL dubios semnat cu un certificat expirat și nicio contrasemnare cu o marca temporală, care fusese încărcat în VirusTotal din Qatar. La o examinare mai atentă, a devenit evident că acest fișier CPL a funcționat ca un descărcator de coduri shell în mai multe etape, împărtășind anumite asemănări de cod cu Deadglyph. Lanțul de încărcare este ilustrat în REF _Ref143693067 h Figura 6
.

Deadglyph Figura_03
Figura 6. Lanțul de încărcare a descărcatorului Shellcode

În forma sa inițială, care servește ca primă etapă, acest fișier anticipează să aibă un .cpl extensia (fișierul Panoului de control) și este menit să fie executat printr-o acțiune de dublu clic. La execuție în acest mod, codul shell încorporat este supus decriptării XOR, iar procesele care rulează sunt verificate pentru a identifica un proces gazdă adecvat pentru injectarea ulterioară.

If avp.exe (un proces de securitate Kaspersky endpoint) rulează, %windir%system32UserAccountBroker.exe este folosit. În caz contrar, se folosește browserul implicit. Apoi, creează procesul gazdă într-o stare suspendată, injectează codul shell prin deturnarea firului său principal și reia firul.

A doua etapă, codul shell, constă din două părți. Prima parte a codului shell rezolvă hashurile API, folosind aceeași tehnică unică de calcul hash folosită în Deadglyph și decriptează șirurile cu nume de proces. Pornește un fir de auto-ștergere însărcinat cu suprascrierea și, ulterior, ștergerea fișierului din prima etapă. După aceasta, shellcode-ul continuă să inspecteze procesele active în prezent, vizând o soluție de securitate.

Dacă este detectat oricare dintre procesele specificate, codul shell creează un fir de execuție dormitor cu cea mai mică prioritate (THREAD_PRIORITY_IDLE) și îi permite să rămână activ pentru o durată de 60 de secunde înainte de a-și termina funcționarea. Acest interval este probabil implementat ca măsură de precauție pentru a evita anumite mecanisme de detectare utilizate de soluțiile de securitate. În cele din urmă, shellcode continuă să invoce execuția celei de-a doua părți a codului său.

A doua parte a codului shell încarcă un fișier PE încorporat cu etapa a treia și apelează exportul acestuia cu un număr ordinal 1.

A treia etapă, un DLL, servește ca încărcător .NET și conține încărcătura utilă .rsrc secţiune.

Pentru a încărca sarcina utilă, este inițializat runtime-ul .NET. În timpul inițializării .NET, sunt efectuate două tehnici interesante, aparent menite să evite Windows Scanarea interfeței de scanare antimalware (AMSI).:

  • Încărcătorul .NET conectează temporar GetModuleHandleW import în încărcat clr.dll, în timp ce sunați ICorRuntimeHost::Start. Cârligul modifică valoarea returnată când GetModuleHandleW este numit cu NULL. Returnează un pointer către un PE inactiv fără secțiuni.
  • Apoi se peticește subtil AmsiInitialize importați șirul de nume în fișierul .rdata secţiunea încărcată clr.dll la amsiinitializare.

A patra etapă este un ansamblu .NET, ofucat cu ConfuserEx, care servește ca un descărcator de shellcode. În primul rând, XOR-și decriptează configurația în format XML din resursele sale. O versiune înfrumusețată a configurației extrase este prezentată în REF _Ref143695453 h Figura 7
. Intrările de configurare conțin detalii legate de comunicarea în rețea și procesele blocate.

Deadglyph Figura_05
Figura 7. Configurația de descărcare Shellcode

Înainte de a continua, verifică procesele care rulează cu o listă de procese blocate din configurație. Dacă este detectată o potrivire, execuția se oprește. Este important de reținut că, în cazul analizat, această listă de blocare nu a fost configurată.

Apoi, trimite o solicitare HTTP GET către serverul C&C pentru a prelua un cod shell, utilizând parametrii specificați în configurație (URL, User-Agent și opțional Proxy). Din păcate, în timpul investigației noastre nu am reușit să obținem niciun cod shell de la serverul C&C. Cu toate acestea, emitem ipoteza că conținutul care este preluat ar putea servi ca program de instalare pentru Deadglyph.

După aceasta, codul shell recuperat este executat într-un fir nou creat. După ce ați așteptat până când firul de shellcode termină execuția, programul de descărcare shellcode șterge toate fișierele aflate în director %WINDIR%ServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV.

În cele din urmă, face o încercare de a se șterge după un interval de 20 de secunde, utilizând comanda ulterioară, înainte de a încheia operarea și a ieși din:

cmd.exe alegere /CY /N /DY /T 20 & Del /f /q

Această auto-ștergere nu are sens în acest lanț. Acest lucru se datorează faptului că descărcatorul shellcode este executat în cadrul unui browser sau al unui proces de sistem după ce a fost injectat, mai degrabă decât să funcționeze ca un executabil independent. Mai mult, fișierul inițial a fost deja șters în a doua etapă. Această observație sugerează că descărcatorul de cod shell ar putea să nu fie o sarcină utilă exclusivă a acestui lanț și poate fi, de asemenea, utilizat separat în alte operațiuni.

Concluzie

Am descoperit și analizat o ușă din spate sofisticată folosită de grupul Stealth Falcon pe care am numit-o Deadglyph. Are o arhitectură neobișnuită, iar capacitățile sale din spate sunt furnizate de C&C sub formă de module suplimentare. Am reușit să obținem trei dintre aceste module, descoperind o fracțiune din capacitățile complete ale lui Deadglyph.

În special, Deadglyph se mândrește cu o serie de mecanisme de contra-detecție, inclusiv monitorizarea continuă a proceselor de sistem și implementarea modelelor de rețea randomizate. În plus, ușa din spate este capabilă să se dezinstaleze singură pentru a minimiza probabilitatea detectării acesteia în anumite cazuri.

În plus, investigația noastră ne-a condus la descoperirea unui lanț convingător de descărcare shellcode în mai multe etape pe VirusTotal. Bănuim că acest lanț de descărcare este probabil folosit în procesul de instalare a Deadglyph.

Pentru orice întrebări despre cercetarea noastră publicată pe WeLiveSecurity, vă rugăm să ne contactați la threatintel@eset.com.
ESET Research oferă rapoarte private de informații APT și fluxuri de date. Pentru orice întrebări despre acest serviciu, vizitați ESET Threat Intelligence .

IoC-uri

Fişiere

SHA-1

Filename

Detectare

Descriere

C40F1F46D230A85F702DAA38CFA18D60481EA6C2

pbrtl.dll

Win64/Deadglyph.A

Registry Shellcode Loader.

740D308565E215EB9B235CC5B720142428F540DB

-

Win64/Deadglyph.A

Deadglyph Backdoor – Executor.

1805568D8362A379AF09FD70D3406C6B654F189F

-

MSIL/Deadglyph.A

Deadglyph Backdoor – Orchestrator.

9CB373B2643C2B7F93862D2682A0D2150C7AEC7E

-

MSIL/Deadglyph.A

Modulul Orchestrator Network.

F47CB40F6C2B303308D9D705F8CAD707B9C39FA5

-

MSIL/Deadglyph.A

Modulul Orchestrator Timer.

3D4D9C9F2A5ACEFF9E45538F5EBE723ACAF83E32

-

Win64/Deadglyph.A.gen

Modul de creare a proceselor.

3D2ACCEA98DBDF95F0543B7C1E8A055020E74960

-

Win64/Deadglyph.A

Modulul cititor de fișiere.

4E3018E4FD27587BD1C566930AE24442769D16F0

-

Win64/Deadglyph.A

Modul colector de informații.

7F728D490ED6EA64A7644049914A7F2A0E563969

-

Win64/Injector.MD

Prima etapă a lanțului de descărcare shellcode.

certificate

Număr de serie

00F0FB1390F5340CD2572451D95DB1D92D

Amprentă

DB3614DAF58D041F96A5B916281EA0DC97AA0C29

Subiectul CN

RHM LIMITED

Subiectul O

RHM LIMITED

Subiectul L

Sf. Albans

Subiectul S

Hertfordshire

Subiectul C

GB

E-mail

rhm@rhmlimited[.]co.uk

Valabil din

2021-03-16 00:00:00

Valabil pana la

2022-03-16 23:59:59

Servere C&C

IP

domeniu

Prima dată văzut

Comentariu

185.25.50[.]60

chessandlinkss[.]com

2021-08-25

Server Deadglyph C&C.

135.125.78[.]187

easymathpath[.]com

2021-09-11

Server Deadglyph C&C.

45.14.227[.]55

joinushealth[.]com

2022-05-29

Server C&C de descărcare Shellcode.

Tehnici MITRE ATT&CK

Acest tabel a fost construit folosind Versiunea 13 din cadrul MITRE ATT&CK.

tactică

ID

Nume si Prenume

Descriere

Dezvoltarea resurselor

T1583.001

Achiziționați infrastructură: Domenii

Stealth Falcon a înregistrat domenii pentru serverele C&C și pentru a obține un certificat de semnare de cod.

T1583.003

Achiziționați infrastructură: server privat virtual

Stealth Falcon a folosit furnizori de găzduire VPS pentru serverele C&C.

T1587.001

Dezvoltarea capacităților: Malware

Stealth Falcon a dezvoltat malware personalizat, inclusiv încărcătoare personalizate și backdoor Deadglyph.

T1588.003

Obține capabilități: certificate de semnare a codului

Stealth Falcon a obținut un certificat de semnare a codului.

Execuție

T1047

Windows Management Instrumentation

Deadglyph folosește WMI pentru a-și executa lanțul de încărcare.

T1059.003

Interpret de comandă și scripting: Windows Command Shell

Folosește aplicația de descărcare Shellcode cmd.exe pentru a se șterge singur.

T1106

API nativ

Un modul Deadglyph folosește CreateProcessW și CreateProcessAsUserW Funcții API pentru execuție.

T1204.002

Execuție utilizator: fișier rău intenționat

Lanțul de descărcare shellcode necesită utilizatorului să facă dublu clic și să-l execute.

Persistență

T1546.003

Execuție declanșată de eveniment: Abonament pentru evenimente Windows Management Instrumentation

Încărcătorul inițial Deadglyph este persistent utilizând abonamentul la eveniment WMI.

Evaziunea apărării

T1027

Fișiere sau informații ofucate

Componentele Deadglyph sunt criptate. Deadglyph Orchestrator și modulele încorporate sunt ascunse cu .NET Reactor.

Descărcătorul de shellcode este obscurcat cu ConfuserEx.

T1070.004

Eliminarea indicatorului: ștergerea fișierului

Deadglyph se poate dezinstala singur.

Lanțul de descărcare shellcode se șterge singur și șterge fișierele din memoria cache WebDAV.

T1112

Modificați registrul

Deadglyph își stochează configurația și sarcina utilă criptată în registru.

T1134

Acces Token Manipulare

Deadglyph poate uzurpa identitatea unui alt utilizator.

T1140

Deofuscați/Decodificați fișierele sau informațiile

Deadglyph decriptează șirurile criptate.

Lanțul de descărcare shellcode își decriptează componentele și configurațiile.

T1218.011

Execuție proxy binar de sistem: Rundll32

Încărcătorul inițial Deadglyph este executat folosind rundll32.exe.

T1480.001

Balustrade de execuție: cheie de mediu

Deadglyph este criptat folosind o cheie specifică mașinii derivată din UUID-ul sistemului.

T1562.001

Deteriorarea apărărilor: dezactivați sau modificați instrumentele

Descărcătorul shellcode evită scanarea AMSI prin corecție clr.dll in memoria .

T1620

Încărcarea codului reflectorizant

Deadglyph își încarcă modulele în mod reflectorizant folosind un încărcător PE personalizat.

Descoperire

T1007

Descoperirea serviciului de sistem

A Modulul Deadglyph descoperă servicii folosind interogarea WMI SELECTAȚI * DIN Win32_Service.

T1012

Registrul de interogări

Lanțul de descărcare shellcode interogă registrul pentru browserul implicit.

T1016

Descoperirea configurației rețelei sistemului

Un modul Deadglyph descoperă adaptoarele de rețea folosind interogări WMI SELECTAȚI * DIN Win32_NetworkAdapter și SELECT * FROM Win32_NetworkAdapterConfiguration unde InterfaceIndex=%d.

T1033

Descoperire proprietar/utilizator de sistem

Un modul Deadglyph descoperă utilizatorii cu interogarea WMI SELECTAȚI * DIN Win32_UserAccount.

T1057

Descoperirea proceselor

Un modul Deadglyph descoperă procese folosind interogarea WMI SELECTAȚI * DIN Win32_Process.

T1082

Descoperirea informațiilor de sistem

Un modul Deadglyph descoperă informații despre sistem, cum ar fi versiunea sistemului de operare, unitățile, variabilele de mediu și driverele folosind interogări WMI.

T1518

Descoperire software

Un modul Deadglyph descoperă software-ul instalat folosind interogarea WMI SELECTAȚI * DIN Win32_Product.

T1518.001

Descoperire software: Descoperire software de securitate

Un modul Deadglyph descoperă software de securitate folosind interogări WMI SELECTAȚI * DIN AntiVirusProduct, SELECTAȚI * DIN AntiSpywareProduct și SELECTAȚI * FROM FirewallProduct.

Lanțul de descărcare shellcode verifică procesele care rulează pentru o soluție de securitate.

Colectie

T1005

Date din sistemul local

Deadglyph are un modul pentru citirea fișierelor.

Comandă și Control

T1071.001

Protocolul stratului de aplicație: protocoale web

Deadglyph și descărcatorul shellcode comunică cu serverul C&C prin protocolul HTTP.

T1090

Împuternicire

Deadglyph și programul de descărcare shellcode pot folosi proxy HTTP pentru comunicarea C&C.

T1573.001

Canal criptat: Criptografie simetrică

Deadglyph folosește AES pentru a cripta comunicațiile C&C.

Exfiltrarea

T1041

Exfiltrare peste canalul C2

Deadglyph folosește canalul C&C pentru exfiltrare.

Timestamp-ul:

Mai mult de la Traim Securitate