User Tools

Site Tools


volatility3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
volatility3 [2025/02/19 20:23] – created, needs imgs mbunicvolatility3 [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 3: Line 3:
 ===Uvod=== ===Uvod===
  
-Na Hackultet Wiki je dostupan dokument koji objašnjava područje problematike za koje se alat Volatility koristi, primjene i upute korištenja alata Volatility3. Dokument je dostupan na linku:  +ovom članku je objašnjeno korištenje forenzičkog alata za analizu memorije "Volatility 3".
-<file> +
-https://www.cert.hr/wp-content/uploads/2018/03/alat_volatility.pdf. +
-</file> +
-poglavlju uvod je objašnjena problematika i  područje primjene alata, te se preporučuje čitanje tog poglavlja prije nastavka  proučavanja ovog dokumenta. Ostatak spomenutog dokumenta objašnjava korištenje alata Volatility verzije 2, dok će ovaj dokument opisivati korištenje alata Volatility verzije 3.  +
-Nakon što je čitatelj upoznat s pojmovima radne memorije, slike radne memorije i forenzičke analize slike radne memorije, te pristupu i ciljevima postupka analize radne memorije, može se nastaviti s upoznavanjem razlike između verzija Volatiliy alata 2 i 3, te korištenja alata Volatility verzije 3. +
- +
-===Razlike između Volatility verzije 2 i verzije 3=== +
-  +
-Dok je verzija 2 alata Volatility pisana u zastarjelom Pythonu 2, verzija 3 je pisana u Pythonu 3. Osim implicitnih unaprijeđena koje ova promjena donosi, verzija 3 ima još mnogo drugih poboljšanja u odnosu na stariju verziju. Prednost starije verzije je što je duže u upotrebi, pa zato je poznatija i ima razrađeniju dokumentaciju te određena proširenja i module stvorene od same zajednice korisnika alata, koje možda još nisu prilagođene i napisane za noviju verziju. +
- +
-Volatility 3 je dizajniran korištenjem modularnog pristupa za razliku od Volatility 2 koji je bio dizajniran korištenjem „monolitnog“ pristupa. Radi ove činjenice, promjene koda i pisanje novih modula je puno jednostavnije, te zato Volatility 3 ima određene dostupe modula i funkcionalnosti koje nisu prisutne u starijoj verziji, iako postoje funkcionalnosti i moduli iz verzije 2 koji nisu još prisutne u verziji 3. Zato su obje verzija alata i dalje relevantne, te je u određenim slučajevima primjenjivija starija ili novija verzija. +
- +
-Također neke funkcionalnosti koje su prisutne u obje verzije alata, su puno brže, preciznije i praktičnije u verziji alata 3, kao što je funkcionalnost identifikacije korištenog operacijskog sustava u slici radne memorije koja se analizira. +
-Dok je u verziji 2 pristup analizi slike bio prvo identifikacija korištenog operacijskog sustava kako bi se odabrao odgovarajući profil, te naknadno definiranje odgovarajućeg profila pri pokretanju naredbi u daljnjoj analizi slike, ovaj proces je puno praktičniji u verziji 3. Verzija 3 uopće ne koristi profile, nego dinamički sama identificira sve potrebne karakteristike koje su prije bile specificirane profilom pri korištenju neke funkcionalnosti. Zato prvi korak identifikacije odgovarajućeg profila alatom verzije 2 uopće nije potreban kada se koristi alat verzije 3. +
-Tako na primjer, naredba za pregled i analizu mrežnih podataka „netstat“ u verziji 2 je: +
- +
-<file> +
-vol.py -f “/path/to/file” ‑‑profile <profile> netscan +
-</file> +
- +
-Dok je u verziji 3 naredba : +
- +
-<file> +
-vol.py -f “/path/to/file” windows.netscan +
-</file> +
- +
-Drugi argument u naredbi verzije 2, koji specificira točan profil pri analizi slike je nepotreban u ekvivalentnoj naredbi verzije 3, jer alat sam dinamički identificira sve potrebne informacije. Ovo vrijedi i za ostale naredbe +
- +
  
 ===Instalacija=== ===Instalacija===
  
-Prije instalacije i korištenja alata potrebno je imati instalirati Python 3. Instalacija i korištenje alata je vrlo slično na Windows i Linux operacijskom sustavu, pogotovo pri korištenju preporučenog načina instalacije. U primjerima će se koristiti Linux operacijski sustav.+Prije instalacije i korištenja alata potrebno je imati instaliran Python 3. Instalacija i korištenje alata je vrlo slično na operacijskim sustavima Windows i Linux, pogotovo pri korištenju preporučenog načina instalacije. U primjerima će se koristiti operacijski sustav Linux.
  
 Alat se može jednostavno instalirati kao Python 3 paket s PyPi registra. Pregled paketa je dostupan na linku: Alat se može jednostavno instalirati kao Python 3 paket s PyPi registra. Pregled paketa je dostupan na linku:
Line 42: Line 13:
 <file> <file>
 https://pypi.org/project/volatility3/ https://pypi.org/project/volatility3/
-</file> 
- 
-Da bi se koristila najnovija development verzija alata, potrebno je preuzeti projekt s GitHuba i izgraditi ga. GitHub projekt je dostupan ovdje zajedno sa uputstvima za preuzimanje i gradnju. 
- 
-<file> 
-https://github.com/volatilityfoundation/volatility3 
 </file> </file>
  
Line 56: Line 21:
 </file> </file>
  
-Nakon čega, ako je alat uspješno instaliran, može se u pokrenuti u shelluZa provjeru uspješne instalacije, može se u shellu pokrenuti naredba +Kako bi se provjerilo je li instalacija bila uspješna, može se u naredbanoj liniji (englShell) pokrenuti naredba:
  
 <file> <file>
Line 62: Line 27:
 </file> </file>
  
-Koja bi trebala ispisati kratka uputstva i dostupne opcije za pokretanje alata.+koja bi trebala ispisati kratka uputstva i dostupne opcije za pokretanje alata.
  
-===Korištenje alata=== +===PRIMJER - Zadatak s Hacknite platforme –  Memorija===
- +
-U prethodno spomenutom dokumentu koji  opisuje korištenje Volatilty2 alata (spomenut u uvodnom poglavlju), postoji poglavlje „Korištenje alata Volatility za analizu slike memorije“.  +
-Unutar ovog poglavlja su dobro opisane naredbe alata Volatility2 te njihove upotrebe. Jedina značajna razlika je da s alatom Volatility3 više nije uz svaku naredbu potrebno definirati profil, kao npr.  +
- +
-<file> +
-volatility -f win7dump.elf --profile=Win7SP1x86_23418 pslist +
-</file> +
- +
-Nego alat sam detektira profil, kao što je već objašnjeno.  Pošto profil nije definiran, koji bi prije odredio točnu verziju Windowsa koji se koristi, za neke naredbe je potrebno samo definirati da je operacijski sustav Windows, no ne i koji profil. Tako su na primjer neke razlike naredbi između alata Volatility 2 i Volatilit3: +
- +
-  pslist -> windows.pslist  +
-  clipboard -> windows.clipboard +
-  iehistory -> windows.iehistory +
-  … +
-   +
-Također umjesto prve riječi volatility, koristi se „vol“. +
- +
-Ekvivalent naredbe  +
- +
-<file> +
-volatility -f win7dump.elf --profile=Win7SP1x86_23418 pslist +
-</file> +
- +
-Iz Volatility2 bi u Volatility3 bila: +
- +
-<file> +
-vol -f win7dump.elf windows.pslist +
-</file> +
- +
-Ove sve promjene nije važno znati napamet, jer se sve mogu pronaći unutar dokumentacije i korištenjem help naredbe: „vol -h“. Volatility3 naredbe su vrlo slične Volatility2 naredbama, ali su jednostavnije i praktičnije za korištenje. +
- +
- +
- +
- +
- +
-===PRIMJER -Zadatak s Hacknite platforme –  Memorija===+
  
 <file> <file>
-Damir je otvorio slastičarnu i iako mu je posao na početku dobro išao, konkurencija se nekako dočepala njegovog tajnog recepta za čokoladnu tortu. +Damir je otvorio slastičarnu iiako mu je posao na početku dobro išao, konkurencija se nekako domogla 
-Damir sumnja da je njegov poslužitelj bio inficiran. Damir je napravio presliku memorije njegovog poslužitelja, možeš li otkriti IP adresu i port servera s kojim je malware komunicirao? +njegovog tajnog recepta za čokoladnu tortu. 
-Flag je kombinacija IP adrese i porta s kojom malware komunicira bez točaka. Primjerice ako malware komunicira s IP adresom 192.168.5.1 na portu 1111 flag bi bio CTF2023[192168511111]+Damir sumnja da je njegov poslužitelj bio inficiran. Damir je napravio presliku memorije svog poslužitelja
 +Možeš li otkriti IP adresu i port servera s kojim je malware komunicirao? 
 +Flag je kombinacija IP adrese i porta s kojom malware komunicirabez točaka. Primjerice ako malware komunicira  
 +s IP adresom 192.168.5.1 na portu 1111 flag bi bio CTF2023[192168511111]
 https://cumulus.carnet.hr/index.php/s/8Es9xjTSrXPQTQd https://cumulus.carnet.hr/index.php/s/8Es9xjTSrXPQTQd
 </file> </file>
Line 111: Line 43:
 Uz zadatak je dostupna i slika memorije na linku https://cumulus.carnet.hr/index.php/s/8Es9xjTSrXPQTQd. Uz zadatak je dostupna i slika memorije na linku https://cumulus.carnet.hr/index.php/s/8Es9xjTSrXPQTQd.
  
-Nakon preuzimanja slike memorije preko linka, kompresirana datoteka se može raspakirati i proces analize može biti započet. +Nakon preuzimanja slike memorije preko linka, komprimirana datoteka se može raspakirati i proces analize može biti započet. 
-U tekstu zadatka je naznačeno da je poslužitelj bio inficiran malwareom i da bi se riješio zadatak, potrebno je pronaći IP i port s kojime malware komunicira. Za ovu namjenu idealan je malfind modul, koji se koristi za pronalazak malicioznih procesa u slici memorije.+U tekstu zadatka je naznačeno da je poslužitelj bio inficiran malwareom i da bi se riješio zadatak, potrebno je pronaći IP i port s kojim malware komunicira. Za ovu namjenu idealan je malfind modul, koji se koristi za pronalazak malicioznih procesa u slici memorije.
 Pokretanje naredbe je: Pokretanje naredbe je:
  
Line 121: Line 53:
 Rezultat pokretanja naredbe prikazan je na slici 1. Rezultat pokretanja naredbe prikazan je na slici 1.
  
-Slika 1 - Pokretanje malfind modula nad slikom memorije +{{volatility3:slika1.png}} 
-Na slici je prikazan MsMpEng.exe, jedan od sumnjivih procesa pronađen pokretanjem naredbe, među kojima su i drugi procesi kao što je  SearchApp.exe, smartscreen.exe, OneDrive.exe i powershell.exe. Među prikazanim procesima mogu biti prisutni i „false positivi“, procesi koji zapravo nisu maliciozni, ali su označeni kao sumnjivi. Zato je bitno u postupku danje analize sumnjivih procesa, odrediti redoslijed najprioritetnijih i najvjerojatnijih procesa, koji će se prvi podvrgnuti postupku daljnje analize. Od spomenutih procesa, powershell je među prvim procesima na koji treba obratiti pažnju, jer je poznato da malware često koristi powershell za ostvarivanje raznih ciljeva, što je opisano u dokumentu „Malware tehnike.  + 
-Powershell proces prikazan u rezultatima izvršene naredbe ima PID (Process ID) 6800, što je prikazano na slici 2., te se sada može vršiti daljnja analiza nad powershell procesom s PID vrijednošću 6800.+Na slici je prikazan MsMpEng.exe, jedan od sumnjivih procesa pronađen pokretanjem naredbe, među kojima su i drugi procesi kao što je  SearchApp.exe, smartscreen.exe, OneDrive.exe i powershell.exe. Među prikazanim procesima mogu biti prisutni i „false positivi“, procesi koji zapravo nisu maliciozni, ali su označeni kao sumnjivi. Zato je bitno u postupku daljnje analize sumnjivih procesa, odrediti redoslijed najvjerojatnijih procesa, koji prve treba analizirati. Od spomenutih procesa, powershell je među prvim procesima na koji treba obratiti pažnju, jer je poznato da malware često koristi powershell za ostvarivanje raznih ciljeva, što je opisano u članku [[malware_tehnike|Malware tehnike]].  
 +Powershell proces prikazan u rezultatima izvršene naredbe ima PID (Process ID) 6800, što je prikazano na slici 2., te se sada može dalje analizirati proces "powershells PID vrijednošću 6800.
  
-Slika 2 - sumnjivi powershell proces+{{volatility3:slika2.png}}
  
-Slijedeći modul koji je vrlo koristan za analizu je modul „cmdline“ koji prikazuje naredbe izvršene u ljuskama. Kako bi se pronašle naredbe koje je izvršavao powershell proces s PID vrijednošću 6800, može se pokrenuti naredba+Slijedeći modul koji je vrlo koristan za analizu je modul „cmdline“ koji prikazuje naredbe izvršene u ljuskama. Kako bi se pronašle naredbe koje je izvršavao proces 6800, može se pokrenuti naredba:
  
 <file> <file>
Line 135: Line 68:
 Pokretanjem ove naredbe može se vidjeti ispis prikazan na slici 3. Pokretanjem ove naredbe može se vidjeti ispis prikazan na slici 3.
  
-Slika 3 - powershell naredba+{{volatility3:slika3.png}}
  
-Pokretanjem ove naredbe pronađena je izvršena naredba sumnjivog procesa, koja se treba dalje analizirati. Može se uočiti da je payload pokrenute naredbe u formatu Base64, koji se treba dekodirati u format „UTF-16LE“, format koji powershell koristi. +Pronađena je izvršena naredba sumnjivog procesa, koju treba dalje analizirati. Može se uočiti da je payload pokrenute naredbe u formatu Base64, koji se treba dekodirati u format „UTF-16LE“, format koji koristi powershell
-To se može napraviti korištenjem CyberChefa ili bash naredbama+To se može napraviti korištenjem CyberChefa ili bash naredbama:
  
 <file> <file>
Line 144: Line 77:
 </file> </file>
  
-Nakon čega se dekodirani payload može pročitati naredbom+Nakon čega se dekodirani payload može pročitati naredbom:
  
 <file> <file>
Line 152: Line 85:
 Dekodirani ispis je prikazan na slici 4. Dekodirani ispis je prikazan na slici 4.
  
-Slika 4 - dekodirani ispis+{{volatility3:slika4.png}} 
 Ponovno se može vidjeti dio dekodiranog payloada koji je u base64 formatu: Ponovno se može vidjeti dio dekodiranog payloada koji je u base64 formatu:
  
Line 165: Line 99:
 </file> </file>
  
-Te nakon čitanja čitanja dekodiranog payloada iz datoteke decoded2.txt naredbom+te nakon čitanja čitanja dekodiranog payloada iz datoteke decoded2.txt naredbom:
  
 <file> <file>
Line 171: Line 105:
 </file> </file>
  
-Bit će prikazana IP adresa i port koji malware koristi, što je prikazano na slici 5.+bit će prikazana IP adresa i port koji malware koristi, što je prikazano na slici 5.
  
  
-Slika 5 - rješenje zadatka+{{volatility3:slika5.png}}
  
- +===PRIMJER - Zadatak s Hacknite platforme –  Kriminalni sistemac 2===
-===PRIMJER -Zadatak s Hacknite platforme –  Kriminalni sistemac 2===+
  
 <file> <file>
-Uhvaćen je i drugi sistem administrator kriminalnog marketa. Istraživači su napravili forenzičku sliku memorije njegovog računala. Kao i u prošli put, postoji keepass file koji žele otključati. Možeš li im pomoći?+Uhvaćen je i drugi sistem administrator kriminalnog marketa. Istraživači su napravili forenzičku sliku  
 +memorije njegovog računala. Kao i u prošli put, postoji keepass file koji žele otključati. Možeš li im pomoći?
 https://cumulus.carnet.hr/index.php/s/6dXmt4gaA5SP5xT https://cumulus.carnet.hr/index.php/s/6dXmt4gaA5SP5xT
 Napomena: zabranjeno je napadati cumulus.carnet.hr Napomena: zabranjeno je napadati cumulus.carnet.hr
Line 188: Line 122:
  
 Preuzimanjem i raspakiravanjem datoteke, dobivaju se datoteke „sistemac2.dmp“ i „sistemac2.kdbx“.  Preuzimanjem i raspakiravanjem datoteke, dobivaju se datoteke „sistemac2.dmp“ i „sistemac2.kdbx“. 
-Kdbx je ekstenzija datoteke „KeePass“ programa za pohranu lozinki. Lozinke pohranjene u .kdbx datoteci su obično enkriptirane i za dekripciju je potreban glavni ključ .kdbx datoteke.+Kdbx je ekstenzija datoteke „KeePass“programa za pohranu lozinki. Lozinke pohranjene u .kdbx datoteci su obično enkriptirane i za dekripciju je potreban glavni ključ .kdbx datoteke.
 Ovo se može provjeriti učitavanjem sistemac2.kdbx datoteke u online keepass preglednik, kao na primjer KeeWeb na linku: Ovo se može provjeriti učitavanjem sistemac2.kdbx datoteke u online keepass preglednik, kao na primjer KeeWeb na linku:
  
Line 198: Line 132:
  
  
-Slika 6 KeeWeb+{{volatility3:slika6.png}}
  
 Ovo će biti smjernica pri analizi sistemac2.dmp slike memorije. Ovo će biti smjernica pri analizi sistemac2.dmp slike memorije.
  
-Nakon pozicioniranja u direktorij gdje se nalazi i slika memorije, pokretanjem naredbe +Nakon pozicioniranja u direktorij gdje se nalazi i slika memorije, pokretanjem naredbe:
  
 <file> <file>
Line 208: Line 142:
 </file> </file>
  
-Može se vidjeti da je operacijski sustav slike Windows i osnovne informacije o operacijskom sustavu (Slika 7).+može se vidjeti da je operacijski sustav slike Windows i osnovne informacije o operacijskom sustavu (Slika 7).
  
-Slika 7 - osnovne informacije OS-a slike memorije+{{volatility3:slika7.png}}
  
-Da je ova naredba vratila prazan ispis ili poruke greške, sljedeći korak bi bio pokrenuti ekvivalentnu naredbu za slike memorije Linux operacijskih sustav, kako bi se utvrdilo koristi li se Linux i osnovne informacije o operacijskom sustavu.  +Da je ova naredba vratila prazan ispis ili poruke greške, sljedeći korak bi bio pokrenuti ekvivalentnu naredbu za slike memorije Linux operacijskih sustava, kako bi se utvrdilo koristi li se Linux i osnovne informacije o operacijskom sustavu.  
  
-Sljedeća naredba koja se može pokrenuti je +Sljedeća naredba koja se može pokrenuti je:
  
 <file> <file>
Line 220: Line 154:
 </file> </file>
  
-Kako bi se prikazala lista aktivnih procesa u trenutku stvaranje slike memorije.+Kako bi se prikazala lista aktivnih procesa u trenutku stvaranja slike memorije.
 Ova naredba prikazuje da je jedan od aktivnih procesa bio KeePass.exe s pridruženim identifikatorom procesa (eng. PID – Process Identifier) 6012 (Slika 8.) Ova naredba prikazuje da je jedan od aktivnih procesa bio KeePass.exe s pridruženim identifikatorom procesa (eng. PID – Process Identifier) 6012 (Slika 8.)
  
-Slika 8 - ispis aktivnih procesa+{{volatility3:slika8.png}}
  
 Za Volatility3 postoji dodatak (eng. plugin) koji se može koristiti za ekstrakciju lozinke .kdbx datoteke koja je dešifrirana i učitana u aktivnom procesu slike memorije, kao što je slučaj u ovom zadatku. Za Volatility3 postoji dodatak (eng. plugin) koji se može koristiti za ekstrakciju lozinke .kdbx datoteke koja je dešifrirana i učitana u aktivnom procesu slike memorije, kao što je slučaj u ovom zadatku.
Line 233: Line 167:
 </file> </file>
  
-Može se preuzeti pokretanjem naredbe +Može se preuzeti pokretanjem naredbe:
  
 <file> <file>
Line 239: Line 173:
 </file> </file>
  
-Unutar istog direktorija kao što je i slika memorije, kako bi se olakšala upotreba dodatka.+unutar istog direktorija kao što je i slika memorije, kako bi se olakšala upotreba dodatka.
 Nakon što su dodatci preuzeti, zadržavanjem iste pozicije, stablo poddirektorija bi trebalo izgledati ovako (naredba tree ./): Nakon što su dodatci preuzeti, zadržavanjem iste pozicije, stablo poddirektorija bi trebalo izgledati ovako (naredba tree ./):
  
Line 264: Line 198:
 Ispis na slici 9 prikazuje pronađenu glavnu lozinku .kdbx datoteke (u ovom slučaju sistemac2.kdbx) koja je dešifrirana i učitana u aktivnom procesu KeePass.exe.  Ispis na slici 9 prikazuje pronađenu glavnu lozinku .kdbx datoteke (u ovom slučaju sistemac2.kdbx) koja je dešifrirana i učitana u aktivnom procesu KeePass.exe. 
  
-Slika 9 - korištenje KeePass dodatka+{{volatility3:slika9.png}} 
 Lozinka je „elenaPlocaIKreda123“, no važno je napomenuti da ovaj dodatak ne može pronaći prvi znak lozinke! Umjesto toga predlaže moguće prve znakove, koji su na slici 9 vidljivi ispisani unutar vitičastih zagrada: „{e,a,&,/,0,2,6,J}“.  Lozinka je „elenaPlocaIKreda123“, no važno je napomenuti da ovaj dodatak ne može pronaći prvi znak lozinke! Umjesto toga predlaže moguće prve znakove, koji su na slici 9 vidljivi ispisani unutar vitičastih zagrada: „{e,a,&,/,0,2,6,J}“. 
 Nijedan od ovih znakova ne mora nužno biti ispravan prvi znak, umjesto toga može se ili napisati skripta za „brute force“ pronalazak prvog znaka, ili se može pokušati pogoditi prvi znak iz konteksta. Nijedan od ovih znakova ne mora nužno biti ispravan prvi znak, umjesto toga može se ili napisati skripta za „brute force“ pronalazak prvog znaka, ili se može pokušati pogoditi prvi znak iz konteksta.
Line 271: Line 206:
 Nakon toga se flag koji je rješenje zadatka jednostavno može pročitati iz dešifrirane datoteke, kao što je prikazano na slici 10. Nakon toga se flag koji je rješenje zadatka jednostavno može pročitati iz dešifrirane datoteke, kao što je prikazano na slici 10.
  
-Slika 10 - Rješenje zadatka +{{volatility3:slika10.png}}
- +
- +
- +
  
 ===Izvori=== ===Izvori===
volatility3.1739996582.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki