User Tools

Site Tools


volatility3

Volatility 3

Uvod

U ovom članku je objašnjeno korištenje forenzičkog alata za analizu memorije “Volatility 3”.

Instalacija

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:

https://pypi.org/project/volatility3/

Najjednostavniji i preporučeni način korištenja je preuzimanje projekta kao Python 3 paketa, naredbom:

pip install volatility3

Kako bi se provjerilo je li instalacija bila uspješna, može se u naredbanoj liniji (engl. Shell) pokrenuti naredba:

vol -h

koja bi trebala ispisati kratka uputstva i dostupne opcije za pokretanje alata.

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 domogla
njegovog tajnog recepta za čokoladnu tortu.
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 komunicira. bez 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

Uz zadatak je dostupna i slika memorije na linku https://cumulus.carnet.hr/index.php/s/8Es9xjTSrXPQTQd.

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 kojim malware komunicira. Za ovu namjenu idealan je malfind modul, koji se koristi za pronalazak malicioznih procesa u slici memorije. Pokretanje naredbe je:

vol -f win10.raw windows.malfind

Rezultat pokretanja naredbe prikazan je na slici 1.

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. 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” s PID vrijednošću 6800.

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:

vol -f win10.raw windows.cmdline | grep 6800

Pokretanjem ove naredbe može se vidjeti ispis prikazan na slici 3.

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:

echo " SQBmACgAJABQAFMAVgBlAHIA …" | base64 -d > decoded.txt 

Nakon čega se dekodirani payload može pročitati naredbom:

cat decoded.txt

Dekodirani ispis je prikazan na slici 4.

Ponovno se može vidjeti dio dekodiranog payloada koji je u base64 formatu:

FromBase64String('aAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4ANgA…')

Za koji se opet može ponoviti isti postupak dekodiranja

echo "aAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4ANgA…" | base64 -d > decoded2.txt

te nakon čitanja čitanja dekodiranog payloada iz datoteke decoded2.txt naredbom:

cat decoded2.txt

bit će prikazana IP adresa i port koji malware koristi, što je prikazano na slici 5.

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?
https://cumulus.carnet.hr/index.php/s/6dXmt4gaA5SP5xT
Napomena: zabranjeno je napadati cumulus.carnet.hr

Uz zadatak je dostupna i slika memorije na linku https://cumulus.carnet.hr/index.php/s/6dXmt4gaA5SP5xT.

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. Ovo se može provjeriti učitavanjem sistemac2.kdbx datoteke u online keepass preglednik, kao na primjer KeeWeb na linku:

https://app.keeweb.info/

Pri učitavanju se može vidjeti da je potrebna glavna lozinka za deskripciju datoteke (Slika 6).

Ovo će biti smjernica pri analizi sistemac2.dmp slike memorije.

Nakon pozicioniranja u direktorij gdje se nalazi i slika memorije, pokretanjem naredbe:

vol -f sistemac2.dmp windows.info

može se vidjeti da je operacijski sustav slike Windows i osnovne informacije o operacijskom sustavu (Slika 7).

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:

vol -f sistemac2.dmp windows.pslist

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.)

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.

Taj dodatak je dostupan na git repozitoriju na sljedećoj poveznici:

https://github.com/forensicxlab/volatility3_plugins/tree/main

Može se preuzeti pokretanjem naredbe:

git clone https://github.com/forensicxlab/volatility3_plugins.git

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 ./):

./
├── sistemac2.dmp
├── sistemac2.kdbx
└── volatility3_plugins
    ├── anydesk.py
    ├── inodes.py
    ├── keepass.py
    ├── prefetch.py
    └── README.md

Može se vidjeti „keepass.py“ dodatak za Volatiliy3, među ostalim dodatcima. Kako bi se upotrijebio preuzeti dodatak nad slikom memorije, potrebno je navesti putanju do korištenog keepass dodatka kao i PID KeePass.exe procesa. To se može učiniti naredbom:

vol -f sistemac2.dmp --plugin-dir ./volatility3_plugins/ keepas --pid 6012

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.

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. S obzirom na pronađeni dio lozinke „elenaPlocaIKreda123“, može se pokušati znak „z“ ili „Z“, koji bi s ostatkom lozinke tvorio „(z/Z) elenaPlocaIKreda123“. Pokušajem unosa ovih dviju kombinacija lozinki u KeeWeb za datoteku sistemac2.kdbx (prikazano na slici 6), može se uspješno dešifrirati datoteka s lozinkom „zelenaPlocaIKreda123“ te zaključiti da je to glavna lozinka. 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.

Izvori

Volatility općenito
https://www.cert.hr/wp-content/uploads/2018/03/alat_volatility.pdf
https://volatilityfoundation.org/the-volatility-framework/
Volatility 3
https://github.com/volatilityfoundation/volatility3
https://pypi.org/project/volatility3/
https://volatility3.readthedocs.io/en/latest/
Volatility 2 vs Volatility 3
https://volatility3.readthedocs.io/en/latest/vol2to3.html
https://blog.onfvp.com/post/volatility-cheatsheet/
https://www.pentestpartners.com/security-blog/using-volatility-for-advanced-memory-forensics/
https://blogs.jpcert.or.jp/en/2020/07/how-to-convert-vol-plugin.html
volatility3.txt · Last modified: 2025/06/03 10:22 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki