Puncte:0

Comparație hash pentru a detecta criptarea fișierelor ransomware

drapel br

După cum este detaliat în o întrebare separată, am crezut că am o modalitate de a detecta tipul de ransomware care criptează fișierele în tăcere și apoi le decriptează din mers, astfel încât să împiedic utilizatorul să realizeze că fișierele au fost criptate.M-am gândit că o comparație a hashurilor de fișiere prezente cu cele din trecut ar detecta modificări ale fișierelor: dacă multe fișiere au fost modificate în mod neașteptat, poate că acele modificări s-au datorat criptării ransomware.

Un comentariu la această întrebare pare să spună că conceptul meu nu reușește, deoarece un fișier trebuie citit pentru a fi hashing. Ransomware-ul ar face conținutul fișierului disponibil instrumentului de hashing; acel instrument ar descoperi că conținutul a apărut neschimbat; prin urmare, aș obține aceeași valoare hash ca înainte.

Nu înțeleg asta. Se pare că trebuie să o abordez în această întrebare separată. Dacă hashingul ține cont doar de conținutul fișierului, nu ar fi imposibil să ștergeți, să zicem, un fișier pe care utilizatorul l-a criptat în siguranță?

O discuție despre criptografie pare să spună că valorile hash, pentru un fișier, pot varia în funcție de momentul criptării cu o cheie publică. Interpretez asta în sensul că variațiile în procesul de criptare pot produce variații ale valorilor hash. Acest lucru pare incompatibil cu afirmația generală că hashingul nu ar detecta nicio diferență între un fișier criptat (chiar dacă este decriptat din mers) și forma sa necriptată anterior.

Ce îmi lipsește aici?

DannyNiu avatar
drapel vu
În orice caz, PUoSU. Demonstrează-ți ideea/găsirea prin implementarea acesteia.
drapel br
Am facut. Cealaltă întrebare este legată de redacție.
Puncte:3
drapel kr

Nu înțeleg asta

Dacă sistemul dumneavoastră este infectat, nu există nicio garanție că citiți conținutul real al fișierului, deoarece acesta este stocat pe disc. Este posibil ca fișierul să fie criptat de ransomware. Când solicitați unei aplicații să o citească, aceasta apelează sistemul de operare. Dacă ransomware-ul a infectat sistemul, acesta va citi conținutul criptat, îl va decripta și va furniza sistemului de operare și, prin urmare, aplicației dvs. Atâta timp cât folosești un sistem infectat, nu poți ști care este conținutul real de pe disc.

Singura modalitate fiabilă de a detecta criptarea este să citiți fișierele folosind alt sistem. Porniți de pe un stick USB, creați hashuri ale fișierelor, repetați-l din când în când, de ex. zilnic sau săptămânal. Desigur, diferă de dorința ta de a detecta schimbările imediat.

nu ar fi imposibil să ștergeți, să zicem, un fișier pe care îl are utilizatorul criptat în siguranță?

Puteți hash orice fișier. Doar tu știi dacă ai criptat fișierul sau nu. Pentru operare și pentru ransomware nu există nicio diferență: orice fișier este doar un set de octeți. Dacă criptați fișierul, calculați hash, scrieți fișierul pe disc, apoi îl citiți înapoi, veți obține exact ceea ce ați scris (fișierul dvs. criptat). Dar nu veți ști dacă înainte de a salva pe disc a fost criptat de ransomware și după citire a fost decriptat.

că valorile hash, pentru un fișier, pot varia în funcție de momentul criptare cu o cheie publică

  1. Nu hash a dosarului simplu, dar cel rezultatul criptării poate varia. În consecință, pentru fișiere diferite veți obține hashuri diferite.
  2. Rezultatele de criptare ale aceluiași fișier pot varia, dar nu din cauza timpului. De exemplu, puteți lansa criptarea AES GCM a la fel dosar cu la fel parola pe 100 de fire paralele pe la fel computer la la fel timp, toate vor produce diferit rezultate. Dar atunci când sunt decriptate, toate vor produce la fel dosarul original.
drapel br
Întrebarea mea anterioară se leagă de procedura mea de comparare a hash-urilor de fișiere de pe unitatea sursă Windows cu hash-uri de fișiere dintr-o copie de rezervă anterioară, calculată pe un sistem Linux. Comentariul care m-a trimis aici, răspunzând la acea întrebare anterioară, părea să spună că această comparație de hashes ar fi inutilă. Se pare că ești de acord cu abordarea mea inițială. Întrebare anterioară: https://security.stackexchange.com/questions/259716/hash-based-technique-to-detect-ransomware-corruption-on-the-fly?noredirect=1. Postare originală: https://raywoodcockslatest.wordpress.com/2021/12/08/ransomware-hash/
drapel kr
@RayWoodcock: Nu, nu sunt de acord cu tine. Îmi pare rău, răspunsul meu nu a fost clar. Mai întâi calculezi un hash într-un sistem curat și îl salvezi undeva în exterior. Apoi sistemul dvs. este infectat cu ransomware. A criptat unele dintre fișierele dvs. Când le citiți pentru a calcula un hash, ransomware-ul îl va decripta și veți obține același hash ca înainte. Veți obține același hash ca înainte. Dar nu se poate ști dacă există un „strat între” care criptează și decriptează datele în mod transparent. Astfel, atunci când lucrați într-un sistem infectat, calculând hashuri nu puteți detecta dacă sunt criptate pe disc.
drapel br
Mulțumesc pentru urmărire. Da, înțelegi întrebarea mea. Partea care mă deranjează este cazul fișierelor criptate de utilizator. Instrumentul de hashing „le citește pentru a calcula un hash”? Cred că răspunsul este că instrumentul le citește aspectul extern: primește caractere aleatorii și calculează un hash pe baza acelor caractere. De ce nu ar fi (sau poate întrebarea ar trebui să fie, de ce nu ar putea) instrumentul de hashing, de asemenea, să observe că un fișier criptat cu ransomware diferă de ceea ce a fost înainte?
drapel kr
1) *„Instrumentul de hashing „le citește pentru a calcula un hash”?”* - Da. Hash nu este ceva care este calculat automat. Fără a citi fișierul, nu există nicio modalitate de a calcula un hash. Nu există **the** hash. Poate exista un număr infinit de algoritmi pentru a calcula un hash. Tu decizi ce fel de hash vrei: MD5, SHA-256, SHA-512, BLAKE etc.
drapel kr
2) *"De ce... nu a putut... instrumentul de hashing de asemenea observa...?"* - Pentru că pentru a observa o diferență, instrumentul trebuie să calculeze hash-ul. Pentru aceasta, instrumentul trebuie să citească fișierul. Instrumentul nu poate accesa direct spațiul de stocare. Acest lucru se poate face doar indirect, prin sistemul de operare. Sistemul de operare este infectat. Ransomware-ul interceptează toate solicitările către stocare. De aceea, instrumentul de hashing obține ceea ce furnizează ransomware-ul. Ransomware-ul decriptează fișierul după ce îl citește din stocare și înainte de a-l da sistemului de operare. Astfel, instrumentul de hashing nu are cum să știe ce este cu adevărat stocat pe HDD sau SSD.
drapel br
BINE. Vă mulțumesc pentru răbdarea dvs. Cred ca inteleg. Se pare că (acest tip de) ransomware corupe sistemul de operare (Windows, în configurația mea), făcând suspecte hashurile fișierelor sale.Dar dacă fișierele au fost criptate prin ransomware, acest lucru ar trebui să fie evident într-o comparație a hashurilor Windows cu hash-urile acelorași fișiere, calculate pe o mașină Linux probabil curată. Dacă este adevărat, atunci schema prezentată în cealaltă postare (link furnizat la începutul întrebării mele, mai sus) pare legitimă.
drapel kr
@RayWoodcock: Mă tem că încă înțelegi greșit cum funcționează sistemul de operare și ransomware. Menționați powershell care detectează modificările fișierelor. Dar există o mulțime de instrumente care detectează din mers modificările fișierelor. Windows oferă clasa *FileSystemWatcher* pe care o puteți folosi pentru a face asta. Sau puteți compara doar dimensiunile fișierelor și marcajele de timp. Toate aceste instrumente observă modificări *reale* ale conținutului fișierului. Dar niciuna dintre aceste abordări nu observă criptarea/decriptarea efectuată de ransomware.
drapel br
În ceea ce privește PowerShell: mulțumesc, văd asta. Cealaltă postare o precede pe aceasta, la fel ca și postarea mea de pe blog. Îl voi actualiza pe acesta din urmă. Dar ultimul meu comentariu (mai sus) este incorect? Scenariu: un instrument de hashing Windows este păcălit să raporteze nicio modificare a unui fișier. Dar un instrument de hashing pe un sistem Linux neinfectat, care examinează același fișier, nu este păcălit: evaluează fișierul ca fiind modificat de ransomware și calculează un hash diferit. (S-ar spera la un ransomware care nu este multiplatform.) Apoi, o comparație a hashurilor Windows și Linux detectează o inconsecvență. Nu?
drapel kr
@RayWoodcock: *„Atunci o comparație a hashurilor Windows și Linux detectează o inconsecvență”* - Corect. Dar este prea complicat. Ar fi suficient doar să compari hashurile în sistemul extern (numiți-l Linux): Comparați hashurile din starea curentă cu hashurile din starea anterioară.
drapel br
Atâta timp cât sunt sigur că sistemul Windows este cel infectat.
Puncte:2
drapel ng

Hashing detectează (cu o probabilitate copleșitoare) orice diferența dintre două date, inclusiv una fiind o versiune criptată a celeilalte. Astfel, principiul comparării hashurilor de fișiere pentru a detecta că multe s-au schimbat este sunet.

Există totuși câteva moduri în care un program care criptează sistematic fișierele de pe disc ar putea evita detectarea de către un program care verifică că hashe-urile fișierelor de pe disc nu se modifică. Ei includ:

  • Dezactivarea verificării prin confiscarea tuturor resurselor CPU în timpul criptării.
  • Conectarea la codul citit al tuturor programelor (inclusiv al celui care efectuează verificarea hash) pentru a le prezenta date nemodificate până când toate fișierele au fost criptate, chiar dacă datele au fost deja criptate fizic pe disc. Acest lucru este posibil dacă cheia de criptare este utilizată pentru a decripta până când criptarea este completă.

Actualizare: nu este nevoie ca criptoransomware-ul să fie adaptat pentru hash sau programul de comparare hash; tot ce trebuie să facă este să implementeze corect oricare dintre cele două puncte de mai sus. Pe de altă parte, puținele criptoransomware de criptare pe care le-am studiat (într-o VM) au implementat doar parțial prima strategie (ca efect secundar al strategiei lor principale: criptează cât de repede pot), și nu a doua, care în sistemele de operare moderne necesită o escaladare a privilegiilor.

drapel br
Acest răspuns este mai clar pentru mine decât celălalt. Se pare că ideea mea originală (pe blog) era pe drumul cel bun: hashingul va detecta o diferență între o versiune criptată și cea necriptată a unui fișier. Încă sunt nedumerit că comentariul la cealaltă întrebare a mea (link de mai sus) a fost nu numai încrezător, ci și votat. În ceea ce privește cel de-al doilea punct: ar trebui să fie scris ransomware-ul pentru fiecare instrument de hashing specific sau ar putea „conectarea la codul de citire al tuturor programelor” să se facă într-o manieră generală care să corupă activitățile de citire a fișierelor de către orice program?
fgrieu avatar
drapel ng
@RayWoodcock: Bănuiesc că [acest comentariu](https://security.stackexchange.com/questions/259716/#comment536553_259716) a fost votat pozitiv, deoarece subliniază că întrebarea în sine presupune: „forma predominantă de ransomware criptează un fișier ** *și apoi îl decriptează din mers***, pentru a-l pune la dispoziția utilizatorului, fără a-l alerta pe utilizator că fișierul ar putea fi criptat permanent în orice moment”, asemănător celui de-al doilea marcator din răspunsul meu. Dacă este adevărat (ceea ce _nu_ este evident), aceasta înfrânge tehnica hash, deoarece este hashing datele descifrate, care este identică cu cea originală, deci are același hash.
drapel br
Lectura mea a sugerat că acest lucru este adevărat, despre forma predominantă de ransomware, dar este în regulă dacă m-am înșelat. Indiferent, nu cred că există vreo dispută că acest tip de ransomware există. Cred că al doilea punct și actualizarea dvs. spun că instrumentul de hashing nu vede un fișier criptat dacă sistemului i s-a spus să treacă cu vederea, cel puțin pentru moment, toată criptarea fișierelor de tip X.Un fișier criptat poate nu este o insulă în sine; este o celulă de închisoare într-un banc de celule, toate putând fi deblocate simultan cu un comutator electronic. Dar asta nu este „din mers”.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.