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

Cum a modelat criptarea cripto-ransomware-ul

2016-09-15

Ransomware reprezintă o amenințare majoră care continuă să crească de-a lungul timpului.

Potrivit noului raport Cisco de la jumătatea acestui an, cripto-ransomware-ul domină piața malware și este cel mai profitabil tip de malware din istorie.

Până acum, pare puțin probabil ca cititorii obișnuiți ai blogului nostru să nu știe deja câte ceva despre ransomware. În cazul în care nu cunoașteți detalii – sau doriți un bun rezumat – ascultați podcast-ul cu distinsul cercetător ESET, Aryeh Goretsky.

Pe scurt, ransomware-ul utilizează un sortiment de tehnici pentru a bloca accesul la sistem sau fișierele victimei, solicitând de obicei plata unei răscumpărări pentru a se putea redobândi accesul. Recent, am observat o creștere semnificativă a volumului unui tip particular de ransomware, cunoscut sub denumirea de cripto-ransomware.

În acest articol, vom observa modul în care cripto-ransomware-ul folosește criptarea și vom analiza unele dintre greșelile făcute de-a lungul timpului de infractorii cibernetici.

Ransomware-ul și criptarea

Criptarea este elementul cheie pentru cripto-ransomware, deoarece întregul său plan de afaceri depinde de utilizarea cu succes a criptării pentru a bloca fișierele victimelor sau sistemele de fișiere și de faptul că victimele duc lipsă de planuri de recuperare a datelor, precum ar fi copiile de rezervă.

Acest lucru nu înseamnă neapărat că este un lucru rău criptarea. De fapt, aceasta este un instrument puternic și legitim implementat de persoane fizice, companii și guverne pentru a proteja datele împotriva accesului neautorizat. Precum orice alt instrument puternic, criptarea poate fi folosită în mod abuziv, exact așa cum o face cripto-ransomware-ul.

De ce utilizează cripto-ransomware-ul criptarea?

Cripto-ransomware-ul urmărește “răpirea” datelor – de unde și numele. Criptarea garantează confidențialitate pentru date, permițând preluarea sau accesul la conținutul inițial doar acelor care au cheia secretă, ceea ce reprezintă o potrivire perfectă pentru nevoile infractorilor.

Odată ce cripto-ransomware ajunge într-un sistem, începe să schimbe fișiere sau structuri critice ale sistemului de fișiere astfel încât să poată fi citite sau utilizate doar prin readucerea lor la starea originală. Acest lucru presupune folosirea unei chei cunoscute doar de infractorii cibernetici care operează malware-ul.

Folosite astfel în mod abuziv, criptarea datelor și decriptarea sunt analoage ideii de a ține ostatic pe cineva și (posibila) eliberare. În acest fel, criptarea este utilizată ca un mijloc de a captura datele victimelor și de a stoarce o sumă de bani de la acestea, în scopul de a elibera datele confiscate.

Criptarea este, de asemenea, folosită pentru a securiza comunicarea dintre malware și serverul său de comandă și control server (C&C), care va deține în cele din urmă o cheie necesară fie pentru decriptarea datelor, fie pentru recuperarea cheii de decriptare necesară la readucerea fișierelor sau a sistemului de fișiere la forma originală necriptată.

Principalele motive pentru această criptare dublă sunt performanța și confortul. Criptarea simetrică și cea asimetrică sunt combinate în scopul de a obține ce e mai bun de la ambele metode, într-o tehnică ce seamănă cu un plic digital.

La criptarea simetrică, aceeași cheie secretă este utilizată atât la metodele de criptare, cât și la cele de decriptare, în timp ce criptarea asimetrică implică o cheie private, cunoscută doar de proprietar și o cheie publică, ce poate fi cunoscută de oricine, în cazul în care metoda de criptare folosește o cheie publică, iar decriptarea presupune o cheie privată.

Criptarea simetrică este utilă pentru cripto-ransomware deoarece este foarte eficientă din  punct de vedere al performanței, permițând codului malware să fie executat în timp rezonabil. Pe de altă parte, criptarea asimetrică este convenabilă întrucât permite operatorului de malware să (extra-) protejeze doar o cheie privată indiferent de numărul de victime. În caz contrar, operatorul de malware ar trebui să țină o evidență a unei chei secrete (simetrice) pentru fiecare victimă în parte.

Astfel, pentru a obține o performanță ridicată și pentru a păstra beneficiile criptării asimetrice, cripto-ransomware-ul folosește de obicei criptarea simetrică pentru a cripta fișierele victimelor și criptarea asimetrică pentru a proteja cheia simetrică secretă.

ransomware_english-1-1024x736

Figura 1: Schema criptării duble la nivel de cripto-ransomware

Protecția cheii simetrice variază, dar cel mai frecvent, cheia publică de la cripto-ransomware este încorporată în malware sau preluată de pe serverul C&C, apoi utilizată pentru a cripta direct cheia simetrică sau pentru a lua parte la procesul de criptare. După efectuarea criptării, cheia simetrică este adesea retrasă sau stocată pe sistemul afectat.

Comunicarea cu serverele de comandă și control: evaziune și confidențialitate

Putem identifica cel puțin două obiective pentru implementarea criptării în comunicarea dintre sistemul compromise și serverul C&C: evaziune și confidențialitate.

Primele familii și versiuni de crypto-ransomware au prioritizat confidențialitatea pentru comunicarea C&C. Noile familii și variante au evoluat și adoptă standard de criptare de facto, precum TLS.

Acest lucru face ca detectarea proactivă la nivel de rețele să fie mult mai dificilă, deoarece este mai greu să se identifice dacă acea criptare este alocată pentru securizarea comunicărilor legitime, precum banking-ul online sau dacă aceea este folosită pentru a ascunde comunicarea cu serverele C&C.

În momentul în care comunicarea C&C criptată este utilizată, detectarea la nivel de rețea presupune ca rețeaua victimei să dispună de capacități suplimentare pentru a inspecta traficul. Spre exemplu, inspecția TLS poate fi asigurată de IDS/IPS în rețeaua care se află în comunicarea dintre serverele la distanță și host-urile interne. Inspecția TLS este, de asemenea, posibilă la nivel de gazdă, în funcție de capacitățile suitei anti-malware utilizate.

În cazurile în care rețeaua nu are o astfel de abilitate, malware-ul care folosește criptarea pentru a stabili o conexiune cu serverul său C&C va rula nedetectat până când serverele C&C sunt descoperite și adăugate la listele negre cu IP-uri și domenii malițioase. În consecință, acest tip de protecție este, în cea mai mare parte, reactivă.

Erori de criptare în diferite familii de ransomware

ESET a cuprins evoluția cripto-ransomware-ului anterior, arătând răspândirea sa în continua creștere. Numărul de familii, variante și platforme vizate au crescut semnificativ față de anul 2011.

Figura 2: Numărul programelor ransomware de criptare ale fișierelor pentru Windows în perioada 2011-2015

În continuarea acestui articol, vom observa modul în care criptarea a fost utilizată de patru familii de cripto-ransomware în diferite etape ale evoluției lor: CryptoDefense (2014), TorrentLocker (2014), malware-ul cu un succes copleșitor, TeslaCrypt (2015) și Petya (2016).

Cripto-ransomware Criptare dublă
CryptoDefense X
TorrentLocker
TeslaCrypt
Petya

X

CryptoDefense: Obiectivul este de a arăta cum a evoluat cripto-ransomware de-a lungul timpului și de a analiza greșelile făcute de infractorii cibernetici pe parcurs – de la cele mai prostești la cele mai sofisticate.

Atunci când a apărut pentru prima dată CryptoDefense, acesta era izbitor de asemănător cu CryptoLocker, care a făcut parte din primele familii de cripto-ransomware care au avut un impact puternic. În mod notabil, CryptoDefense a avut deficiențe majore în implementarea la nivelul comunicării C&C, precum și la cel al procesului de criptare a fișierelor.

Protocolul C&C al lui CryptoDefense este bazat pe HTTP POST trimis de la malware pe gazda compromisă. Pentru a securiza comunicarea C&C, CryptoDefense folosește disimularea în URL-ul HTTP POST ca o modalitate de a ascunde cheia utilizată pentru a cripta corpul mesajului. Mesajul POST poartă mesajul de protocol C&C criptat cu  RC4 prin folosirea cheii ascunse de la URL-ul POST.

Figura 3: Decriptarea în cazul CryptoDefense C&C protocol

Odată ce comunicarea C&C este interceptată, criptarea poate fi ușor de descifrat. Cererea conține toate informațiile necesare pentru a recupera cheia de criptare și dezvălui protocolul C&C, ce stă la baza CryptoDefense, permițând crearea unor semnături de rețea care pot preveni sarcina de criptare a fișierelor să aibă succes.

Pentru criptarea fișierelor, eroarea este uimitor de asemănătoare. Pentru a evidenția greșeala la nivelul CryptoDefense, vom reaminti operațiunile de bază ale lui CryptoLocker:

  1. CryptoLocker (client) compromite sistemul victimei și notifică serverul său C&C un ID de campanie și un ID unic de sistem
    Pentru criptarea fișierelor eroarea este uimitor de asemănătoare . Ca un mijloc de a evidenția greșeala CryptoDefense lui , să amintim funcționarea de bază a CryptoLocker : 1. CryptoLocker ( client) compromite sistemul victimei și notifică serverul C & C cu ID-ul de campanie și un sistem unic ID
  2. C&C răspunde cu un OK pentru a înștiința clientul
  3. Clientul trimite o altă cerere cu ID-ul de campanie și cu ID-ul unic de sistem
  4. C&C furnizează nota de răscumpărare și cheia publică pentru RSA-2048, generată în mod unic pentru acel ID de campanie/ combinație de ID de sistem. Cheia privată nu va părăsi niciodată serverul C&C.
  5. Clientului i se aduce la cunoștință că a primit cu succes nota de răscumpărare și cheia publică C&C și că procesul de criptare a fost terminat.

Pentru a remedia deficiențele găsite la CryptoLocker, unde criptarea avea loc numai după o comunicare reușită cu serverul C&C, CryptoDefense generează chei pentru criptarea fișierelor pe host-ul compromis – sărind peste pașii 3 și 4.

Cu toate acestea, un detaliu minor a fost trecut cu vederea de autorii lui CryptoDefense. Cheia de criptare, generate pe host-ul compromis și utilizat pentru criptarea fișierelor, nu a fost niciodată ștearsă. Astfel, decriptarea poate fi realizată cu ușurință prin identificarea cheii private RSA pe sistemul victimei și trimiterea la Windows API pentru decriptarea fișierelor afectate. Prin urmare, CryptoDefense a avut de suferit de două ori din cauza aceleiași greșeli: utilizând criptarea, dar oferind cheia.

TorrentLocker

Versiunile timpurii și defectuoase ale TorrentLocker aleg un algoritm foarte sigur pentru a cripta fișierele victimei: AES în modul CTR. Cu toate acestea, modul în care a fost utilizat algoritmul a condus la slăbiciune remarcabilă în schema generală.

AES este un cifru de blocare, ceea ce înseamnă că este capabil să cripteze blocuri cu o dimensiune fixă (16 biți). Totuși, mesajele pot avea lungimi mai mari de 16 biți. Acest lucru se petrece atunci când modurile de operare intră în scenă.

AES în modul CTR ia o valoare inițială drept parametru, cunoscută ca fiind vectorul de inițializare (IV) și o utilizează pentru a întinde dimensiunea cheii (poate avea 128, 192 sau 256 biți) până la lungimea unui plaintext (conținut necriptat), devenind ceea ce este cunoscut sub denumirea de keystream. Apoi keystream-ul este lucrat cu XOR adăugându-i-se mesajul, mimând conceptul unui cifru de tip stream.

Atacul versiunilor mai vechi de TorrentLocker era destul de simplu: pe sistemul compromis, TorrentLocker a generat un keystream de 2MB și a trecut mai departe la criptarea primului segment de 2MB pentru fiecare fișier prin efectuarea de XOR la nivel de segment prin intermediul keystream-ului. În cazurile în care fișierele au fost mai mici de 2MB, acestea au fost complet criptate cu acea metodă.

Totuși, această utilizare a modului AES-CTR a fost analoagă reutilizării IV și a cheii în cifrul de tip stream, o eroare în criptografie. Luând în considerare un singur fișier criptat și conținutul necriptat original, este ușor să recuperați keystream-ul și să decriptați toate celelalte fișiere criptate. Versiunile mai recente au corectat această eroare prin înlocuirea modului de operare, de la CTR la CBC, care va fi abordat ulterior, la secțiunea TeslaCrypt.

Figura 4: Schema modului CTR de operare

Petya

Petya a avut o abordare diferită de cea a altor variante de cripto-ransomware. În loc de criptarea fișierelor individuale, a țintit sistemul de fișiere. Ținta este master boot record-ul (MBR), responsabil pentru încărcarea sistemului de operare chiar după pornirea sistemului.

Cifrul ales de autorii lui Petya a fost Salsa20, care aparține portofoliului eSTREAM. Portofoliul este rezultatul unui proiect pentru a promova proiectarea de noi cifruri de tip stream pentru a le înlocui pe cele mai vechi, cum ar fi RC4. Faptul că Petya a adoptat metoda Salsa20 denotă evoluția lui cripto-ransomware către algoritmi de criptare mai noi și mai robuști.

Atunci când Petya este executat, începe un atac în două etape, destinat să cripteze MBR-ul. Procesul de criptare al MBR este bine conturat; începe prin modificarea MBR-ului și cauzează un BSOD pentru a obține repornirea sistemului, apoi va afișa un ecran CHKDSK fals în timp ce efectuează criptarea MBR-ului, iar în cele din urmă acesta repornește sistemul încă o dată, afișând un ecran cu aprindere intermitentă a unui craniu și mesajul de răscumpărare.

Figura 5: Ecranul Petya cu un craniu și mesajul de răscumpărare afișat după apăsarea unei taste

În ciuda experienței înfricoșătoare de răscumpărare, sugerată de craniul și mesajul de răscumpărare de la Petya, este posibilă încă anularea prejudiciului cauzat, din cauza mai multor defecte la modul în care Petya se ocupă de criptare.

Cea mai importantă defecțiune, care permite decriptarea MBR-ului după ce atacul este încheiat, provine din modul în care Petya derive cheia de criptare.

Pentru a înțelege defecțiunea la nivelul cheii de derivare, vom lucra în sens invers. Vom începe prin investigarea modului în care cheia de recuperare, oferită victimelor după plata răscumpărării, este utilizată în procesul de decriptare. Apoi vom explica cum un bug în implementare poate fi exploatat astfel încât să se renunțe la necesitatea de a cunoaște întreaga cheie de recuperare pentru a decripta MBR-ul.

Setul de caractere pentru introducerea cheii de recuperare este limitat la 54 de simboluri, iar lungimea sa este stabilită la 16 caractere. Odată ce cheia de recuperare este introdusă în ecranul mesajului de răscumpărare, verificarea se efectuează pentru a revizui dacă acea cheie introdusă este corectă sau nu.

În procesul de verificare, cheia de recuperare introdusă este extinsă la o cheie codificată de 32 de biți, folosind un algoritm personalizat și este comparată cu un tampon de verificare în secvență. În cazul în care cheia codificată se potrivește cu buffer-ul de verificare, aceasta este introdusă în cifrul Salsa20 (cu strictețe, Salsa10), iar sectoarele criptate sunt recuperate.

Deși metoda de expansiune este executată pe cheia de recuperare, care dublează dimensiunea sa, metoda nu adaugă nicio entropie la cheie, deoarece algoritmul de expansiune este determinist. Astfel, securitatea este delimitată la 5416 posibile chei diferite, ceea ce este echivalent cu un nivel de securitate de 92 de biți, spre exemplu capacitatea forței brute de 80 de biți estimată pentru NSA.

Cu toate acestea, mai presus de entropia mărginită, dezvoltatorii Petya au comis o eroare de implementare în nucleul Salsa20, care construiește o matrice de 16 cuvinte care conține constante, instanțe și cheia de la un așa numit table de master pentru a fi utilizată pe parcursul procesului de criptare.

Dezvoltatorii Petya au optimizat o implementare pentru Salsa20 existentă în sprijinul arhitecturii de 16 biți, dar au ratat o parte critică. Motivul pentru care abordează implementarea Salsa20 poate fi atribuită modului de execuție țintă. Petya este proiectată pentru a rula drept un bootloader, care este executat în Real Mode de 16 biți pe toate procesoarele x86.

Pentru a construi matricea, două copii ale tabelului master sunt create în format “little-endian”. Dezvoltatorii Petya au schimbat variabilele uint32_t la uint16_t (figura 6) în scopul de a adresa arhitectura dimensiunii de cuvinte de 16 biți. Cu toate acestea, au neglijat adaptarea noii dimensiuni de cuvinte, astfel că 2 biți sunt citiți, iar diferența pentru următoarea citire este incrementată cu 4 biți.

Figura 6: Eroare de dezvoltare în Petya la reglarea Salsa20 pentru arhitectura de 16 biți

Din acest motiv, doar jumătate din cheie este efectiv aplicată pentru cheia de derivare în Salsa20. Acest lucru reduce nivelul de securitate pentru întreaga criptare de la 92 de biți la 46 biți, care este posibil să fie spartă în câteva secunde folosind forța brută chiar și pentru computerele standard.

TeslaCrypt

Nu este întâmplător că TeslaCrypt a fost una dintre familiile care au cunoscut un succes impresionant până în prezent. Utilizarea criptării este atent manipulate și alegerea de algoritmi indică faptul că dezvoltatorii TeslaCrypt au o oarecare pricepere în ceea ce privește cripto-ransomware-ul.

TeslaCrypt utilizează AES-256 pentru criptarea fișierelor; cu toate acestea, spre deosebire de versiunea defectuoasă a lui TorrentLocker, utilizează CBC ca modalitate de operare.

În modul CBC, fiecare bloc de ciphertext (bucată de dimensiune fixă a mesajului criptat) este alimentat ca vectorul de inițializare în criptarea următorului bloc, iar toate blocurile sunt criptate cu ajutorul aceleiași chei. Prin urmare, nu există nici o analogie cu cifrurile stream sau un keystream, ceea ce face ca procedura utilizată împotriva defecțiunilor de la nivelul lui TorrentLocker să fie inaplicabile aici.

Figura 7: Schema modului CBC de operare

Cheia AES este criptată prin folosirea unui algoritm asemănător cu EC-ElGamal și trimisă înapoi la serverul C&C. Alegerea criptografiei curbe eliptice (ECC) în locul criptării de tip RSA este convenabilă pentru eludarea detecției, deoarece ECC duce la texte de cifru mai scurte și necesită mai puțin timp pentru a fi executată.

Cu toate acestea, dezvoltatorii lui TeslaCrypt v2.2.0 (TeslaCrypt v8) au comis o greșeală mai puțin banală. Precum s-a raportat de către BleepingComputer și s-a analizat de Talos, cheia de recuperare (RK), destinată să protejeze cheia de criptare, utilizată pentru criptarea fișierelor în timpul atacului, este generate ca urmare a multiplicării cheii secrete partajate (C2K), stabilită cu serverul C&C și cheia private folosită pentru criptarea fișierelor (FK).

RK = C2K * FK

Cheia de recuperare este stocată pe sistemul compromis și permite recuperarea pentru FK atunci când se cunoaște C2K. Cu toate acestea, autorii TeslaCrypt v2.2.0 au presupus în mod eronat că vor putea să se folosească de problema grea care stă la baza RSA: factorizarea.

Cercetătorii nu au reușit să descopere un algoritm eficient pentru a calcula factorii principali ai unui anumit număr (la fel de mare ca cele utilizate în RSA). CU toate acestea, acest lucru nu înseamnă că factorizarea nu a putut fi continuată deloc.

Cheia de recuperare nu a fost destul de lungă pentru a face ca un atac de factorizare greu de realizat. Prin urmare atacurile de tip brute-force s-au dovedit a fi o modalitate de a găsi cheia de criptare a fișierelor și, în cele din urmă, de a decripta fișierele pentru a reveni la starea lor originală.

Poate fi criptarea folosită împotriva cripto-ransomware-ului?

S-a pus întrebarea dacă acest tip de malware, crypto-ransomware nu criptează fișierele deja criptate. Răspunsul este “da și nu”.

Este evident posibil să cripteze orice date criptate. De fapt, aceasta este ideea de bază în rutarea de tip “ceapă”. Pe scurt, aceasta este proiectată pentru date confidențiale prin intermediul unui circuit de noduri de rutare. Să spunem că un circuit are trei noduri, astfel încât atunci când utilizatorul dorește să acceseze unele site-uri, cererea va fi criptată cu al treilea nod cheie (nodul de ieșire), se va face o nouă criptare (pentru conținutul deja criptat) cu al doilea nod cheie și încă o data cu primul nod cheie (nodul de intrare) Pe măsură ce cererea trece prin fiecare nod, se decriptează prin intermediul cheii nodului curent, astfel încât numai nodul de ieșire va avea cererea originală. Nodul de ieșire face cererea în locul utilizatorului și trimite răspunsul utilizând un proces de criptare similar, așa cum s-a aplicat în cazul cererii.

Din motive de eficiență și de precizie, cripto-ransomware-ul decide de obicei dacă urmează să cripteze un fișier în funcție de extensia fișierului; spre exemplu, lista pentru TorrentLocker până în 2014 este disponibilă aici. În cazul în care extensia se potrivește cu un set de extensii predefinit, este criptată, altfel nu.

Pe de altă parte, utilitarele de criptare adaugă adesea noi extensii predefinite la numele fișierului atunci când acesta este criptat. Un fapt interesant este acela că nu am observat până acum niciun cripto-ransomware care să vizeze instrumente de criptare.

Ca o consecință, dacă sistemul este compromis de o variantă de cripto-ransomware care nu vizează utilitarul de criptare instalat, acesta nu va fi criptat de malware, pur și simplu din noroc. Ținând cont de aceasta, o funcționalitate folositoare de adăugat în utilitarele de criptare este randomizarea extensiilor, permițând utilizatorului să definească o schema în timpul instalării.

Randomizarea extensiilor nu adaugă nicio performanță în plus și nu necesită modificări mari de design în utilitarele de criptare, dar poate fi într-o oarecare măsură eficientă împotriva cripto-ransomware-ului.

Pentru a viza fișierele criptate, dezvoltatorii cripto-ransomware ar trebui să selecteze / găsească fișierele criptate în momentul rulării sau să abandoneze ideea de selecție bazată pe extensii, evoluând atacurile lor pentru a evita selectarea aplicațiilor critice/ a fișierelor sistemelor de operare pentru criptare, ce ar putea face ca atacul să eșueze înainte de îndeplinirea obiectivelor.

De aceea, folosirea utilitarelor legitime de criptare pentru a cripta fișierele dvs. ar putea diminua semnificativ impactul cripto-ransomware-ului; cu toate acestea, atenuarea riscurilor lui cripto-ransomware nu ar trebui să se bazeze numai pe instrumentele de criptare: backup-ul și alte măsuri proactive sunt chiar mai importante.

Evitați și combateți cripto-ransomware-ul

Am publicat o postare, unde sunt oferite multe sfaturi care vă pot ajuta să evitați cripto-ransomware-ul. Iată câteva dintre aceste sfaturi:

  • Utilizați o suită anti-malware de încredere și activați măsuri proactive precum HIPS sau o protecție anti-phishing
  • Practicați un comportament sigur: afișați extensiile ascunse ale fișierelor și nu deschideți link-uri și mesaje de la surse necunoscute

În cazul în care, în ciuda tuturor măsurilor de protecție, întâmpinați un cripto-ransomware, veți vrea, în avans, să:

  • Aveți o copie de rezervă recentă, validată și offline a fișierelor dvs. și programați executarea frecventă a copiilor de rezervă
  • Evitați conectarea folderelor de backup pe calculator. Cripto-ransomware-ul poate ajunge să cripteze backup-urile în folderele de pe dispozitivele USB, mediile de stocare de tip cloud și orice alte locuri accesate precum foldere în sistem.

În ultimă instanță, puteți încerca să decriptați fișierele cu instrumente puse la dispoziție de către cercetătorii de securitate pentru unele familii specifice de cripto-ransomware. ESET oferă instrumente de decriptare pentru mai multe familii de cripto-ransomware și variante pentru a recupera datele fără a fi nevoie să se facă plata către infractorii cibernetici.

În plus, o inițiativă recentă din partea Centrului European pentru Infracționalitate cibernetică al Europol și a Unității Naționale împotriva infracționalității High Tech din cadrul poliției din Olanda, în colaborare cu companiile de securitate IT, oferă de asemenea, instrumente pentru a ajuta victimele afectate de cripto-ransomware.

 

CASSIUS PUODZIUS

CORESPONDENT INDEPENDENT

 



Leave a Reply

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