TeleBots sunt din nou în joc: atacuri de tip “supply-chain” împotriva Ucrainei


Cel mai recent atac din familia Petya a captat foarte multă atentie din partea presei. Cu toate acestea, trebuie remarcat faptul că acesta nu a fost un incident izolat: acesta este cel mai recent dintr-o serie de atacuri similare în Ucraina. Acest articol dezvăluie multe detalii despre focarul Diskcoder.C (alias ExPetr, PetrWrap, Petya sau NotPetya) și informații legate de atacurile anterioare nepublicate.

Figura 1 – Cronologia atacurilor de tip supply-chain din Ucraina
TeleBots

În decembrie 2016 au fost publicate două articole detaliate despre atacurile perturbatoare, realizate de către grupul denumit de cercetătorii ESET ca TeleBots, în special despre atacurile împotriva instituțiilor financiare și despre o versiune Linux a malware-ului KillDisk, folosit de acest grup. Grupul a implementat atacuri cibernetice împotriva diferitelor sisteme informatice din Ucraina. Aceste sisteme pot fi definite drept infrastructuri critice. Mai mult, acest grup are legături cu grupul infam BlackEnergy, responsabil pentru întreruperile de alimentare cu energie electrică din decembrie 2015 din Ucraina.

În ultima etapă a atacurilor, grupul TeleBots a folosit întotdeauna malware-ul KillDisk pentru a suprascrie fișierele cu extensii specifice de fișiere pe discurile victimelor. Colectarea banilor de răscumpărare nu a fost niciodată principala prioritate pentru grupul TeleBots. Malware-ul KillDisk folosit în primul atac al atacurilor din decembrie 2016, în loc să cripteze, doar suprascrie fișierele direcționate. Mai mult, nu a furnizat informații de contact pentru a comunica cu atacatorul. A afișat doar o imagine din emisiunea televizată MR. Robot.

Figura 2 – Imaginea afișată de malware-ul KillDisk în cadrul primului val de atacuri din decembrie 2016

În cel de-al doilea val de atacuri, infractorii cibernetici din spatele malware-ului KillDisk au adăugat informații de contact la malware, astfel încât să arate ca un atac tipic de ransomware. Cu toate acestea, atacatorii au cerut un număr extraordinar de bitcoins: 222 BTC (aproximativ 250.000 de dolari la acel moment). Acest lucru ar putea indica faptul că nu erau interesați neapărat de bitcoins, însă scopul lor real era de a provoca pagube companiilor atacate.

Figura 3 – Cererea de răscumpărare afișată de KillDisk în cadrul celui de-al doilea val de atacuri din decembrie 2016

În 2017, grupul TeleBots nu și-a oprit atacurile cibernetice; de fapt, au devenit mai sofisticate. În perioada ianuarie-martie 2017, atacatorii de la TeleBots au compromis o companie de software din Ucraina (fără legătură cu M.E. Doc) și, folosind canalele VPN de acolo, au obținut acces la rețelele interne ale mai multor instituții financiare.

În timpul acelui atac, cei din spatele grupului TeleBots și-au îmbunătățit arsenalul cu două secvențe de ransomware și cu versiuni actualizate ale instrumentelor menționate anterior.

Primul backdoor pe care grupul TeleBots s-a bazat foarte mult a fost Python/TeleBot.A, rescris din Python în limba de programare Rust. Funcționalitatea rămâne aceeași: este un backdoor standard care utilizează telegramul Bot API pentru a primi comenzi de la operatorul malware și pentru a trimite răspunsuri la acesta.

Figura 4 – Codul analizat al troianului Win32/TeleBot.AB

Cel de-al doilea backdoor, scris în VBS și ambalat folosind programul script2exe, a fost puternic disimulat, dar funcționalitatea a rămas la fel ca în atacurile anterioare.

Figura 5 – Versiunea ascunsă a backdoor-ului VBS

De data aceasta, backdoor-ul VBS a folosit serverul C & C la 130.185.250 [.] 171. Pentru a face conexiunile mai puțin suspecte pentru cei care verifică jurnalele de firewall, atacatorii au înregistrat domeniul transfinance.com[.]ua și l-au găzduit pe acea adresă IP. După cum reiese din figura 6, acest server rula și releul Tor denumit severalwdadwajunior.

Figura 6 – Informații despre releul Tor derulat de grupul TeleBots

În plus, atacatorii au utilizat următoarele utilitare:

  • CredRaptor (pentru furtul de parole)
  • Plainpwd (Mimikatz modificat utilizat pentru recuperarea datelor de autentificare Windows din memorie)
  • SysInternals PsExec (utilizat pentru mișcarea laterală)

După cum s-a menționat mai sus, în etapa finală a atacurilor, cei de la TeleBots au lansat ransomware-ul, folosind datele de autentificare furate de la Windows și de la SysInternals PsExec. Acest nou ransomware a fost detectat de produsele ESET ca Win32/Filecoder.NKH. Odată executat, acest ransomware criptează toate fișierele (cu excepția fișierelor situate în directorul C:\Windows), utilizând algoritmi AES-128 și RSA-1024. Malware-ul adaugă extensia de fișiere .xcrypted la fișierele deja criptate.

În momentul criptării, malware-ul acestui fișier creează un fișier text !readme.txt cu următorul conținut:

Vă rugăm să ne contactați: openy0urm1nd@protonmail.ch

În plus față de versiunea pentru Windows a malware-ului, grupul TeleBots a folosit ransomware-ul pentru Linux pe serverele non-Windows. Acest program de scanare este detectat de produsele ESET ca Python/Filecoder.R și, în mod previzibil, este scris în limbajul de programare Python. De data aceasta, atacatorii execută utilități terțe, cum ar fi openssl, pentru criptarea fișierelor. Criptarea se face folosind algoritmii RSA-2048 și AES-256.

Figura 7 – Codul Python al programului ransomware Linux, Python/Filecoder.R, utilizat de grupul TeleBots.

În codul scriptului Python, atacatorii au lăsat comentariul cu următorul text

feedback: openy0urm1nd[@]protonmail.ch

Win32/Filecoder.AESNI.C

Pe 18 mai 2017, am observat o nouă activitate din partea altei familii ransomware Win32 / Filecoder.AESNI.C (denumită și XData).

Acest ransomware a fost răspândit mai ales în Ucraina, din cauza unui vector inițial interesant. Conform telemetriei LiveGrid®, malware-ul a fost creat imediat după executarea software-ului M.E.Doc, utilizat la scară largă de către personalul din domeniul financiar din Ucraina.

Ransomware-ul Win32 / Filecoder.AESNI.C a avut un mecanism de răspândire care i-a permis să efectueze automat mișcarea laterală, în interiorul unei rețele LAN compromise a companiei. Mai exact, malware-ul avea un DLL Mimikatz încorporat pe care îl folosea pentru a extrage datele de autentificare ale contului Windows din memoria unui PC compromis. Cu aceste acreditări, malware-ul a început să se răspândească în interiorul rețelei gazdă, utilizând utilitarul SysInternals PsExec.

Se pare că atacatorii nu și-au atins scopul cu acea ocazie sau că acela a fost testul înainte de un atac mai eficient. Atacatorii au postat cheile master de decriptare de pe forumul BleepingComputer, împreună cu afirmația că acest lucru a fost făcut pentru că autorul original a susținut că sursa a fost furată și utilizată în cadrul incidentul din Ucraina.

ESET a publicat un instrument de decriptare pentru ransomware-ul Win32/Filecoder.AESNI ransomware, dar acest eveniment nu a câștigat multă atenție din partea mass-media.

Lansarea Diskcoder.C (alias Petya-like)

Ceea ce a câștigat însă multă atenție din partea mass-media a fost lansarea Petya-like din 27 iunie 2017, deoarece a compromis cu succes o mulțime de sisteme în infrastructurile critice și alte companii din Ucraina și din alte țări.

Malware-ul utilizat în cadrul acestui atac are capacitatea de a înlocui Master Boot Record (MBR) cu propriul său cod malițios. Acest cod a fost împrumutat de la ransomware-ul Win32/Diskcoder.Petya. De aceea, unii cercetători malware au numit această amenințare ca ExPetr, PetrWrap, Petya sau NotPetya. Cu toate acestea, spre deosebire de originalul ransomware Petya , autorii Diskcoder.C au modificat codul MBR astfel încât recuperarea să nu poată fi posibilă. Mai exact, atacatorul nu poate furniza o cheie de decriptare, iar cheia de decriptare nu poate fi tastată în ecranul de răscumpărare, deoarece cheia generată conține caractere inacceptabile.

Din punct de vedere vizual, această componentă MBR a Diskcoder.C arată ca o versiune puțin modificată a lui Petya: la început afișează un mesaj care impersonalizează CHKDSK, utilitatea de verificare a discurilor Microsoft. În timpul scanării false CHKDISK, Diskcoder.C criptează datele.

Figura 8 – Mesajul fals CHKDSK afișat de Diskcoder.C.

Atunci când criptarea este completă, codul MBR afișează următorul mesaj cu instrucțiuni de plată, dar, după cum s-a menționat anterior, această informație este inutilă.

Figura 9 – Mesajul cu instrucțiunile de plată de la Diskcoder.C

Restul codului, altul decât MBR-ul împrumutat, a fost pus în aplicare chiar de autori. Acesta include criptarea fișierelor care poate fi folosită ca o completare a MBR-ului de criptare a discurilor. Pentru criptarea fișierelor, malware-ul folosește algoritmii AES-128 și RSA-2048. Trebuie remarcat faptul că autorii au făcut greșeli care fac mai puțin posibilă decriptarea fișierelor. În mod specific, malware-ul criptează numai primul 1MB de date și nu scrie niciun antet sau subsol, doar date criptate, brute și nu redenumește fișiere criptate, deci este greu de spus ce fișiere sunt criptate și care nu sunt. În plus, fișierele mai mari de 1 MB după criptare nu conțin padding, deci nu există nicio modalitate de a verifica cheia.

Interesant este faptul că lista extensiilor de fișiere țintă nu este identică, dar este foarte asemănătoare cu lista extensiilor de fișiere din malware-ul KillDisk folosit în atacurile din decembrie 2016.

Figura 10 – Lista extensiilor vizate de la Diskcoder.C.

Odată ce malware-ul este executat, acesta încearcă să se răspândească folosind exploit-ul EternalBlue, prin intermediul backdoor-ului de tip Kernel DoublePulsar. Exact aceeași metodă a fost utilizată în ransomware-ul WannaCryptor.D. Diskcoder.C a adoptat, de asemenea, metoda din ransomware-ul Win32/Filecoder.AESNI.C (alias XData): folosește o versiune ușoară a Mimikatz pentru a obține acreditări și apoi execută malware-ul folosind SysInternals PsExec pe alte mașini din rețeaua LAN. În plus, atacatorii au implementat o a treia metodă de răspândire, folosind un mecanism WMI.

Toate cele trei metode au fost folosite pentru a răspândi malware-ul în interiorul LAN-urilor. Spre deosebire de infamul malware WannaCryptor, exploatarea EternalBlue este folosită de Diskcoder.C numai împotriva computerelor din spațiul de adrese al rețelei locale.

De ce există infecții în alte țări, în afară de Ucraina? Ancheta cercetătorilor de la ESET a arătat că firmele afectate din alte țări au avut conexiuni VPN la sucursalele lor sau la partenerii de afaceri din Ucraina.

Vectorul inițial de infectare

Atât Diskcoder.C cât și Win32/Filecoder.AESNI.C au folosit un atac de tip supply-chain ca vector inițial de infectare. Aceste familii malware au fost răspândite utilizând software-ul de contabilitate ucrainean numit M.E.Doc.

Există mai multe opțiuni pentru modul în care acest atac poate fi implementat. M.E.Doc are un sistem de mesagerie internă și de schimb de documente, astfel încât atacatorii au putut trimite mesaje victimelor. Interacțiunea cu utilizatorul este necesară pentru a executa ceva rău intenționat în acest fel. Astfel, ar fi implicate tehnici de inginerie socială. Din moment ce Win32/Filecoder.AESNI.C nu s-a răspândit atât de mult, s-a presupus în mod eronat că aceste tehnici au fost folosite în acest caz.

Cu toate acestea, lansarea ulterioară a Diskcoder.C sugerează că atacatorii au avut acces la serverul de actualizare al software-ului legitim. Utilizând accesul la acest server, atacatorii au lansat o actualizare malițioasă care a fost aplicată automat fără interacțiunea cu utilizatorul. De aceea, atât de multe sisteme din Ucraina au fost afectate de acest atac. Totodată, se pare că autorii malware-ului au subestimat capacitățile de răspândire ale Diskcoder.C.

Cercetătorii ESET au găsit dovezi care susțin această teorie. Mai precis, am identificat un backdoor malițios PHP care a fost implementat sub forma medoc_online.php într-unul din directoarele FTP de pe serverul lui M.E.Doc. Acest backdoor era accesibil din HTTP; cu toate acestea, a fost criptat, astfel încât atacatorul ar fi trebuit să aibă parola pentru a-l putea folosi.

Figura 11 –  Afișarea directorului FTP care conține backdoor-ul PHP

Ar trebui să spunem că există semne care sugerează că Diskcoder.C și Win32 / Filecoder.AESNI.C nu au fost singurele familii malware implementate folosind vectorul de infectare. Putem specula că aceste actualizări malițioase au fost implementate pe ascuns la rețelele de calculatoare ce aparțin unor obiective cu o valoare ridicată.

Un astfel de malware implementat prin intermediul acestui mecanism de server de actualizare compromis, M.E.Doc, a fost backdoor-ul VBS, utilizat de grupul TeleBots. De data aceasta, atacatorul a folosit din nou un nume de domeniu cu tematică financiară: bankstat.kiev[.]ua.

În ziua lansării Diskcoder.C, înregistrarea A a acestui domeniu a fost modificată la 10.0.0.1.

Concluzii

Grupul TeleBots continuă să evolueze pentru a efectua atacuri distrugătoare împotriva Ucrainei. În loc să trimită e-mailuri cu documente conținând macrocomenzi malware, au folosit o schemă mai sofisticată cunoscută sub numele de atac de tip supply-chain. Înainte de izbucnire, grupul Telebots a vizat, în principal, sectorul financiar. Ultimul atac a fost îndreptat împotriva companiilor din Ucraina, dar se pare că au subestimat capacitățile de răspândire ale malware-ului. De aceea, malware-ul a scăpat de sub control.

Indicatori de Compromis (IoC)

Nume de detecție ESET:

Win32/TeleBot trojan
VBS/Agent.BB trojan
VBS/Agent.BD trojan
VBS/Agent.BE trojan
Win32/PSW.Agent.ODE trojan
Win64/PSW.Agent.K trojan
Python/Filecoder.R trojan
Win32/Filecoder.AESNI.C trojan
Win32/Filecoder.NKH trojan
Win32/Diskcoder.C trojan
Win64/Riskware.Mimikatz application
Win32/RiskWare.Mimikatz application

Servere C&C:

transfinance.com[.]ua (IP: 130.185.250.171)
bankstat.kiev[.]ua (IP: 82.221.128.27)
www.capital-investing.com[.]ua (IP: 82.221.131.52)

Servere legitime utilizate în mod abuziv de autorii de malware:

api.telegram.org (IP: 149.154.167.200, 149.154.167.197, 149.154.167.198, 149.154.167.199)

Backdoor VBS:

1557E59985FAAB8EE3630641378D232541A8F6F9
31098779CE95235FED873FF32BB547FFF02AC2F5
CF7B558726527551CDD94D71F7F21E2757ECD109

Mimikatz:

91D955D6AC6264FBD4324DB2202F68D097DEB241
DCF47141069AECF6291746D4CDF10A6482F2EE2B
4CEA7E552C82FA986A8D99F9DF0EA04802C5AB5D
4134AE8F447659B465B294C131842009173A786B
698474A332580464D04162E6A75B89DE030AA768
00141A5F0B269CE182B7C4AC06C10DEA93C91664
271023936A084F52FEC50130755A41CD17D6B3B1
D7FB7927E19E483CD0F58A8AD4277686B2669831
56C03D8E43F50568741704AEE482704A4F5005AD
38E2855E11E353CEDF9A8A4F2F2747F1C5C07FCF
4EAAC7CFBAADE00BB526E6B52C43A45AA13FD82B
F4068E3528D7232CCC016975C89937B3C54AD0D1

Win32/TeleBot:

A4F2FF043693828A46321CCB11C5513F73444E34
5251EDD77D46511100FEF7EBAE10F633C1C5FC53

Win32/PSW.Agent.ODE (CredRaptor):

759DCDDDA26CF2CC61628611CF14CFABE4C27423
77C1C31AD4B9EBF5DB77CC8B9FE9782350294D70
EAEDC201D83328AF6A77AF3B1E7C4CAC65C05A88
EE275908790F63AFCD58E6963DC255A54FD7512A
EE9DC32621F52EDC857394E4F509C7D2559DA26B
FC68089D1A7DFB2EB4644576810068F7F451D5AA

Win32/Filecoder.NKH:

1C69F2F7DEE471B1369BF2036B94FDC8E4EDA03E

Python/Filecoder.R:

AF07AB5950D35424B1ECCC3DD0EEBC05AE7DDB5E

Win32/Filecoder.AESNI.C:

BDD2ECF290406B8A09EB01016C7658A283C407C3
9C694094BCBEB6E87CD8DD03B80B48AC1041ADC9
D2C8D76B1B97AE4CB57D0D8BE739586F82043DBD

Win32/Diskcoder.C:

34F917AABA5684FBE56D3C57D48EF2A1AA7CF06D

PHP shell:

D297281C2BF03CE2DE2359F0CE68F16317BF0A86

Anton Cherepanov June 30, 2017

Lasa un comentariu