Știri despre securitate, dezvăluiri și puncte de vedere ale experților ESET

Nemucod își schimbă jocul

2016-06-16

Cu ceva timp în urmă, am detaliat modul în care funcționează procesul ransomware de infectare Locky. De atunci, creatorii “downloader-ului” Nemucod (codul responsabil pentru descărcarea și executarea secvențelor malware, cum ar fi Locky) au muncit din greu și au îmbunătățit codul.

Una dintre cele mai recente versiuni ale Nemucod-ului arată câteva modificări notabile în raport cu versiunile mai vechi. În trecut, procesul era destul de simplu: “Utilizatorul deschidea fișiere rău intenționate → fișierul descărca o sarcină → sarcina era executată”. În versiunile mai recente, procesul este mai simplu.

Să aruncăm o privire asupra modului de acționare al codului. Pentru a fi mai ușor de înțeles, acest cod a fost scris într-o manieră nedisimulată, din cauza formatului original puternic disimulat.

Pasul 1 – Alegerea metodei corecte de conectare

Versiunile anterioare ale Nemucod-ului utilizau doar o singură metodă pentru a se conecta la internet. Totuși, acest lucru putea eșua din cauza configurațiilor diferite ale infrastructurilor (versiunea pentru Windows, servere proxy, etc).

Pentru a oferi o mai mare compatibilitate, autorii Nemucod au creat o funcție care încearcă să se conecteze folosind mai multe metode:

n.1

Prima metodă de lucru este cea mai utilizată.

Pasul 2 – Încercarea mai multor site-uri de descărcare

Până în prezent, Nemucod avea o singură adresă (de obicei, un webserver compromis) care încerca să descarce sarcina utilă. Acesta a fost singurul punct în care eșuau; odată ce sarcină utilă era eliminată, atacul eșua. Probabil, cu speranța de a crește șansele de succes, versiunile recente au inclus mai multe locații de descărcare, așa cum se poate observa în aceste exemple:

n.2

n.3

Ciclurile de cod din lista de site-uri, până în momentul în care unul este de succes:

n.4

Pasul 3 – Prima rundă de eliminare a disimulării

În trecut, sarcinile utile descărcate de Nemucod erau obișnuitele fișiere binare “.exe”. Acestea puteau fi executate în mod direct. Cu toate acestea, descărcarea fișierelor “.exe” înseamna că dispozitive, cum ar fi firewall-uri, stateful IDSes și UTMS să poată intercepta sarcina utilă pentru o scanare de securitate – sau chiar să o respingă.

Pentru a evita astfel de obstacole posibile, cea mai recentă versiune a unui fișier Nemucod descarcă disimulat. În primul rând, se descarcă fișierul în directorul %TEMP% al victimei:

n.5n.6

După salvarea sarcinii utile, această funcție trece conținutul fișierului într-o funcție care efectuează prima rundă de eliminare a disimulării:

n.7

După cum se poate observa, primul pas al eliminării disimulării, are un cifru de substituție simplu. Toate caracterele din fișier sunt convertite la valorile zecimale. Dacă valoarea zecimală are un caracter care este mai mare de 127, caracterul se înlocuiește cu valoarea corespunzătoare dintr-o matrice de caractere predefinite. În cazul în care nu este nevoie, caracterul rămâne neatins:

n.8

Etapa 4 – A doua rundă de eliminare a disimulării

După ce prima rundă de eliminare a disimulării este finalizată, conținutul fișierului este trecut într-o funcție care realizează a doua rundă de eliminare a disimulării. Această rundă constă în trei etape:

  • Îndepărtarea ultimelor patru caractere din conținutul fișierului
  • Efectuarea unei operații XOR fiecărui caracter ce conține caracterul “s” (0x73)
  • Inversarea conținutului fișierului

n.9

Pasul 5 – Verificarea validității

În acest moment se efectuează o verificare rudimentară, iar în cazul în care conținutul fișierului rezultat este o sarcină utilă, aceasta este executată. Aceasta verifică dacă dimensiunea fișierului este între 174,080 și 189,440 bytes și dacă fișierul începe cu “MZ” (0x4D5A), secvența “magic bytes ” a unui fișier portabil executabil (PE). În cazul în care oricare dintre aceste comparații eșuează, acesta revine la pasul doi și încearcă să descarce o sarcină utilă din următorul site de descărcare:

n.10

n.11

Etapa 6 – Runda finală de eliminare a disimulării

În cazul în care trece toate controalele, fișierul este scris în dosarul %TEMP%: al utilizatorului:

n.12

n.13

Funcția numită deobRound3 în timpul procesului de eliminare a disimulării, supune conținutul fișierului într-o altă rundă de substituție a caracterului, similar cu cel de la pasul 3. Aceste runde de substituție ale caracterului sunt cel mai probabil executate pentru a evita problemele legate de  “Wide Caracters”, în a doua rundă de eliminare a disimulării.

În cele din urmă, toate caracterele sunt convertite la valoarea lor zecimală, iar conținutul fișierului ar trebui să fie un fișier executabil valid pentru Windows:

n.14

Etapa 7 – Execuția

Acum, că sarcina utilă este pregătită, ea trebuie să fie executată. În loc de a rula direct fișierul “.exe”, versiunile mai noi ale Nemucod-ului creează un fișier “.bat” care pornește executabilul. Apoi, execută fișierul “.bat”:

n.15

În cazul în care “totul merge bine”, utilizatorul este infectat.

Concluzie

După cum se poate vedea, autorii Nemucod au fost ocupați cu îmbunătățirea downloader-ului lor, pentru a crește probabilitatea ca acesta să poată rula sarcina utilă, rău intenționată, fără a fi detectată. Cu toate aceste noi caracteristici, se poate specula chiar că lucrează din greu pentru a îmbunătăți rata lor de succes în mediile corporatiste, în cazul în care serverele proxy și gateway-urile UTM puteau bloca sarcinile utile în trecut.

Fișiere cercetate:

customers 366.wsf [JS/TrojanDownloader.Nemucod.ABI trojan] MD5: 4DEDF4085E6D2F74CB879AD2E9680AFB
SHA1: EF2A9C6A61E98091A952328592D45214F6E44178

cstomers 9679.js [JS/TrojanDownloader.Nemucod.ABI trojan] MD5: 42D054143A67DE14EE10F7B8C91D8A1A
SHA1: D3DC6E3D066BFA8E1F4408DE471BC95B001D0D25

Yhnpl47OMCLJm.exe [a variant of Win32/Kryptik.EYIB trojan] MD5: C1F95ADBCAF520BF182F9014970D33E5
SHA1: 80B96F0207B9C5D1DAA3A6E6CF646F5AFA7BBA2C

 

Donny Maasland
Head of Cybersecurity Services and Research
ESET Netherlands



Leave a Reply

Your email address will not be published. Required fields are marked *