search

Criminalistica Digitala - Analiza Memoriei Unui Calculator

Memoria unui calculator este creierul lui, iar toate procesele, care ruleaza in interiorul creierului, sunt stocate in aceasta memorie. Rolul unui detectiv este de a analiza si a incerca sa ii aduca probe clientului sau, astfel incat sa elucideze adevarul cautat de client. Criminalistica Digitala investigheaza procesele existente pe un terminal pentru a evidentia un status-quo. In lumea in care traim, securitatea cibernetica devine un nucleu al vietii cotidiene. Fie ca folosim un smartTV, un gadget, telefon, frigider smart etc, pe toate aceste dispozitive functioneaza anumite procese care sunt stocate si pot fi analizate pentru a diseca activitatea digitala a unui dispozitiv. Daca stam bine sa ne gandim, orice om are un telefon in buzunar sau un laptop, calculator, care, daca este infectat cu malware, poate fi folosit impotriva proprietarului.


Beneficiile aduse sunt urmatoarele:


  1. descoperirea furtului de secrete comerciale 

  2. obtinerea probelor digitale

  3. identificarea persoanelor rau-intentionate.


Un partener gelos, poate crede ca nu aveti cum sa stiti daca v-a instalat un soft sa va monitorizeze, dar un detectiv programator poate sa vada imediat daca exista un malware instalat. Pentru analiza avem nevoie de dump-ul de memorie de pe calculator. 


Am folosit in cadrul exercitiului nostru o masina virtuala care ruleaza cu un OS bazat pe Debian numit Kali Linux. Instrumentul folosit pentru analiza se numeste VOLATILITY.



In cadrul acestui blog post am folosit o 


COMENZI FOLOSITE:


volatility -f cridex.vmem imageinfo -- te ajuta sa afli ce profil de memorie de sistem de operare este memoria cu care lucram. In cazul nostru stim din poza de mai sus ca e WinXPSP2x86.


volatility -f cridex.vmem --profile=WinXPSP2x86 -h --trebuie sa punem profilul sistemului de operare pentru a vedea care sunt modulele existente in acest tool. Practic de acum incolo comenzile in terminal vor avea aceasta parte de inceput la care se vor adauga diferite optiuni.


-h ne arata toate optiunile existente. Cand nu stii ce sa faci, e cel mai simplu sa vezi ce comenzi poti folosi


pstree --Print process list as a tree -->Imi place tare mult aceasta optiune. Ea te ajuta sa vezi PID si PPID adica procesul si parintele lui.In general anumite procese ruleaza cu anumite ID-uri, iar unele nu trebuiesc dublate. Daca vezi ca exista mai multe procese gen svchost sau lsas, atunci e un red flag care trebuie investigat mai amanuntit.


pstree |egrep 'csrss|winlogon|explorer|reader_sl' -- arata doar procesele cerute


pslist -- Print all running processes by following the EPROCESS lists. Pentru mine aceasta optiune se aseamana cu optiunea din Windows Task Manager in care vezi toate procesele care ruleaza la un anumit moment dat. Aceasta optiunea nu trateaza analiza intr-un mod foarte in detaliu, in plus arata uneori ca toate procesele sunt cumva link-uite, insa noi stim ca acest lucru nu e asa, fiindca in memorie pot rula si anumite procese care nu sunt link-uite la anumite fisiere. Procesle malware pot clona uneori un proces real in memorie, insa nu mai executa comanda corecta, ci executa comanda rea, pe care o doreste faptasul.


psscan -- Pool scanner for process objects. Mi se pare ca aceasta comanda trateaza investigatia mai in detaliu, tocmai fiindca arata si acele procese nelincuite.



  malfind -- Find hidden and injected code. Poti adauga si porturile care ti se par suspecte -p 584, 608, 1484, 1640 | more  Un red flag aici este acel VAD TAG de PAGE_EXECUTE_READWRITE.  Acest lucru ne arata ca acel proces  are drept de scriere asupra calculatorului. Cu alte cuvinte inseamna ca ce a rulat putea crea o portita pentru un atacator. VAD reprezinta Virtual Address Descriptor si arata memoria kernel. Mai exista si PEB adica Process Environmental Block care reprezinta memoria proceselor asociata unui proces in Windows. In general se cauta discrepante dintre PEB si VAD. In cazul meu mi s-au parut ciudate aceste procese 584, 608, 1484 si 1640. 


   malfind -p 555  --verifica doar acest pid 555. Iar daca nu se arata nimic, inseamna ca nu s-a gasit nicio eroare la acest proces. Dupa ce am identificat PID-urile care par suspecte imi place sa fac un procdump cu pid-urile pentru a extrage hash-urile lor ==> procdump -p 584,608,1640,1484 --dump-dir=./ ./ inseamna folderul curent, in cazul meu pe Desktop.


sha256sum *.exe --aceasta comanda creeaza hash-urile necesare pentru a le verifica pe site-ul Virustotal.


"Programul sha256sum este conceput pentru a verifica integritatea datelor utilizând SHA-256 (familia SHA-2 cu o lungime de 256 biți). Hashe-urile SHA-256  utilizate în mod corespunzător pot confirma atât integritatea fișierului cat și autenticitatea lui. SHA-256 servește un scop similar unui algoritm anterior recomandat de Ubuntu, MD5, dar este mai puțin vulnerabil la atac.  Compararea hash-urilor face posibilă detectarea modificărilor în fișiere care ar cauza erori. Posibilitatea modificărilor (erorilor) este proporțională cu dimensiunea fișierului. Este o idee foarte bună să rulați comparația SHA-256 atunci când aveți un fișier de instalare a unui sistem de operare care trebuie să fie 100% corect. În ceea ce privește securitatea, hashurile criptografice, cum ar fi SHA-256, permit autentificarea datelor obținute din surse nesigure. Hash-ul SHA-256 trebuie să fie semnat sau să provină dintr-o sursă sigură (cum ar fi o pagină HTTPS sau un fișier semnat GPG) al unei organizații în care aveți încredere." --cc UBUNTU 



Codurile scrise in python pot fi gasite pe contul meu de Github.