volatility3
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| volatility3 [2025/02/19 20:23] – created, needs imgs mbunic | volatility3 [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: | + | U ovom članku je objašnjeno korištenje forenzičkog alata za analizu memorije "Volatility 3". |
| - | < | + | |
| - | https:// | + | |
| - | </ | + | |
| - | U poglavlju uvod je objašnjena problematika i područje primjene alata, te se preporučuje čitanje tog poglavlja prije nastavka | + | |
| - | 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 | + | |
| - | + | ||
| - | ===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 | + | |
| - | + | ||
| - | 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, | + | |
| - | + | ||
| - | 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: | + | |
| - | + | ||
| - | < | + | |
| - | vol.py -f “/ | + | |
| - | </ | + | |
| - | + | ||
| - | Dok je u verziji 3 naredba : | + | |
| - | + | ||
| - | < | + | |
| - | vol.py -f “/ | + | |
| - | </ | + | |
| - | + | ||
| - | 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 | + | Prije instalacije i korištenja alata potrebno je imati instaliran |
| 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: | ||
| < | < | ||
| https:// | https:// | ||
| - | </ | ||
| - | |||
| - | 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. | ||
| - | |||
| - | < | ||
| - | https:// | ||
| </ | </ | ||
| Line 56: | Line 21: | ||
| </ | </ | ||
| - | Nakon čega, ako je alat uspješno instaliran, može se u pokrenuti u shellu. Za provjeru uspješne instalacije, | + | Kako bi se provjerilo |
| < | < | ||
| Line 62: | Line 27: | ||
| </ | </ | ||
| - | 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. | + | |
| - | + | ||
| - | < | + | |
| - | volatility -f win7dump.elf --profile=Win7SP1x86_23418 pslist | + | |
| - | </ | + | |
| - | + | ||
| - | Nego alat sam detektira profil, kao što je već objašnjeno. | + | |
| - | + | ||
| - | pslist -> windows.pslist | + | |
| - | clipboard -> windows.clipboard | + | |
| - | iehistory -> windows.iehistory | + | |
| - | … | + | |
| - | + | ||
| - | Također umjesto prve riječi volatility, koristi se „vol“. | + | |
| - | + | ||
| - | Ekvivalent naredbe | + | |
| - | + | ||
| - | < | + | |
| - | volatility -f win7dump.elf --profile=Win7SP1x86_23418 pslist | + | |
| - | </ | + | |
| - | + | ||
| - | Iz Volatility2 bi u Volatility3 bila: | + | |
| - | + | ||
| - | < | + | |
| - | vol -f win7dump.elf windows.pslist | + | |
| - | </ | + | |
| - | + | ||
| - | 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=== | + | |
| < | < | ||
| - | Damir je otvorio slastičarnu i iako mu je posao na početku dobro išao, konkurencija se nekako | + | Damir je otvorio slastičarnu i, iako mu je posao na početku dobro išao, konkurencija se nekako |
| - | Damir sumnja da je njegov poslužitelj bio inficiran. Damir je napravio presliku memorije | + | 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 |
| + | Možeš li otkriti IP adresu i port servera s kojim je malware komunicirao? | ||
| + | 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] | ||
| https:// | https:// | ||
| </ | </ | ||
| Line 111: | Line 43: | ||
| Uz zadatak je dostupna i slika memorije na linku https:// | Uz zadatak je dostupna i slika memorije na linku https:// | ||
| - | Nakon preuzimanja slike memorije preko linka, | + | Nakon preuzimanja slike memorije preko linka, |
| - | 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 | + | 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: |
| - | Na slici je prikazan MsMpEng.exe, | + | |
| - | 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 | + | Na slici je prikazan MsMpEng.exe, |
| + | 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 "powershell" | ||
| - | Slika 2 - sumnjivi powershell proces | + | {{volatility3: |
| - | 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 | + | 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: |
| < | < | ||
| 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: |
| - | Pokretanjem ove naredbe pronađena je izvršena naredba sumnjivog procesa, | + | Pronađena je izvršena naredba sumnjivog procesa, |
| - | To se može napraviti korištenjem CyberChefa ili bash naredbama | + | To se može napraviti korištenjem CyberChefa ili bash naredbama: |
| < | < | ||
| Line 144: | Line 77: | ||
| </ | </ | ||
| - | Nakon čega se dekodirani payload može pročitati naredbom | + | Nakon čega se dekodirani payload može pročitati naredbom: |
| < | < | ||
| Line 152: | Line 85: | ||
| Dekodirani ispis je prikazan na slici 4. | Dekodirani ispis je prikazan na slici 4. | ||
| - | Slika 4 - dekodirani ispis | + | {{volatility3: |
| 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: | ||
| </ | </ | ||
| - | Te nakon čitanja čitanja dekodiranog payloada iz datoteke decoded2.txt naredbom | + | te nakon čitanja čitanja dekodiranog payloada iz datoteke decoded2.txt naredbom: |
| < | < | ||
| Line 171: | Line 105: | ||
| </ | </ | ||
| - | 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: |
| - | + | ===PRIMJER - Zadatak s Hacknite platforme – Kriminalni sistemac 2=== | |
| - | ===PRIMJER -Zadatak s Hacknite platforme – Kriminalni sistemac 2=== | + | |
| < | < | ||
| - | 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:// | https:// | ||
| 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: |
| 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: |
| < | < | ||
| Line 208: | Line 142: | ||
| </ | </ | ||
| - | 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: |
| - | Da je ova naredba vratila prazan ispis ili poruke greške, sljedeći korak bi bio pokrenuti ekvivalentnu naredbu za slike memorije Linux operacijskih | + | Da je ova naredba vratila prazan ispis ili poruke greške, sljedeći korak bi bio pokrenuti ekvivalentnu naredbu za slike memorije Linux operacijskih |
| - | Sljedeća naredba koja se može pokrenuti je | + | Sljedeća naredba koja se može pokrenuti je: |
| < | < | ||
| Line 220: | Line 154: | ||
| </ | </ | ||
| - | Kako bi se prikazala lista aktivnih procesa u trenutku | + | Kako bi se prikazala lista aktivnih procesa u trenutku |
| 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: |
| 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: | ||
| </ | </ | ||
| - | Može se preuzeti pokretanjem naredbe | + | Može se preuzeti pokretanjem naredbe: |
| < | < | ||
| Line 239: | Line 173: | ||
| </ | </ | ||
| - | Unutar | + | unutar |
| 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: |
| Lozinka je „elenaPlocaIKreda123“, | Lozinka je „elenaPlocaIKreda123“, | ||
| 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: |
| - | + | ||
| - | + | ||
| - | + | ||
| ===Izvori=== | ===Izvori=== | ||
volatility3.1739996582.txt.gz · Last modified: 2025/12/01 11:40 (external edit)