Úvod do forenzní analýzy paměti
Kurz CZ.NIC, Petr Břehovský
Paměť
Je zdrojem spousty zajímavých informací, najdeme v ní:
běžící a nedávno ukončené procesy
navázaná síťová spojení (sokety)
vykonané příkazy
klíče použité k šifrování disku
injektovaný škodlivý kód
komunikaci mezi uživateli
dešifrované emaily
historii procházení Internetu
cache (clipboard, SAM databáze, editované soubory)
soubory namapované do paměti
event logy
Současný malware i současné metody neoprávněného přístupu využívané útočníky jsou založeny pokud možno pouze na práci v operační paměti, nebo je malware na disku zašifrován a decryptuje se až v paměti. Útočníci se tak snaží vyhnout detekčním mechanizmům analyzujícím práci s diskem (antiviru), viz. Stuxnet, SamSam anebo Cobalt Kitty.
Existují celé frameworky: Empire, CobaltStrike anebo PowerSploit
Zdroj
Volatility umí pracovat s následujícími formáty paměti.
RAW
Hibernační soubor
Snímek virtuálního stroje
Microsoft crash dump
Odkazy na aplikace
WinPmem (OpenSource)
Belkasoft RAM capturer (pracuje v režimu jádra)
Hibernační soubory
Virtuální stroj,
.vmem
(po uspání stroje)Windows,
%SystemDrive%/hiberfil.sys
Crash Dump
Ve Windows k nalezení v ceste, %WINDIR%/MEMORY.DMP
Do formátu (raw) vhodného k analýze pomocí volatility lze konvertovat crashdump, hibernační soubor, virtualbox core dump, vmware snapshot a firewire relaci pomocí volatility pluginu imagecopy.
python2 vol.py –f hiberfil.sys imagecopy –O hiberfil.raw
Pokud nezafunguje plugin imagecopy, použijte hibr2bin.exe
Volatility
Základní příkaz ke zjištění informací o aplikaci
python2 vol.py --info
Základní příkaz pro zjištění informací o obrazu paměti
python2 vol.py -f <cesta k obrazu pameti> imageinfo
Obecný příkaz ke zjištění informací z obrazu paměti
python2 vol.py -f <cesta k obrazu pameti> --profile=<profil OS> <plugin> [ARG]
Dump injectovaného kódu
python2 vol.py -f <cesta k obrazu pameti> --profile <OS profil> vaddump -b <offset> -D <cesta ke slozce pro dump>/
Workflow
Základní otázky jsou:
Co běželo?
Co to dělalo? (k jakým prostředkům to mělo přístup)
Jaká to mělo práva
Detailnější postup
Identifikace podezřelého procesu
Analýza knihoven podezřelého procesu
Analýza síťové komunikace
Identifikace perzistence
Uložení dat k následné analýze
Identifikujte podezřelý proces
pslist – zobrazí běžící procesy (projde spojový seznam běžících procesů), obvykle neukáže ukončené, nebo skryté procesy
pstree – zobrazí navíc vztah rodiče a potomka, přepínač -v přidává podrobnější informace
psscan – zobrazí další procesy nezobrazené pslistem (ukončené, skryté- odlinkované procesy) , které ale stále existují v nealokovaném adresním prostoru (skenuje paměť na přítomnost _EPROCESS objektů)
psxview – porovnává všechny další možné zdroje informací o procesech (vhodný k identifikaci skrytých procesů)
Seznam DLL načtených procesem:
dlllist - podobné jako pslist, prochází obousměrný spojový seznam z _PEB (process environment block) (LoadCount není nikdy -1 0xFFFF pro knihovny načítané z běhu resp. pomocí explicitního volání LoadLibrary, ale je -1 pro knihovny načítané podle IAT Import Address Table)
!!! Je velmi zvláštní když kalkulačka načítá z běhu knihovny pro práci se sítí (WS2_32.dll).
ldrmodules - prochází soubory namapované v paměti a porovnává se seznamy (podobný princip jako psxview)
Analyzujte síťovou komunikaci
connections – zobrazí otevřená spojení prohledáváním seznamu v tcpip.sys (x86/x64 WinXP a Win2003 Server) connscan – hledá „connection“ objekty ve fyzické paměti (x86/x64 WinXP a Win2003 Server)
sockets - zobrazí otevřené sockety ze seznamu v tcpip.sys (x86/x64 WinXP a Win2003 Server) sockscan - hledá „socket“ objekty ve fyzické paměti (x86/x64 WinXP a Win2003 Server)
netscan - hledá „socket“ a „connection“ objekty ve fyzické paměti, rozlišuje mezi IPv4 a IPv6 (WinVista, Win2008 Server, Win7)
Filesystem
mftparser – extrahuje MFT (Master File Table) záznamy tak, že v paměti vyhledává FILE a BAAD signatury, kterými tyto tabulky vždy začínají; dostaneme seznam souborů na disku
filescan – aktuálně otevřené soubory dumpfiles - dump obsahu souboru z paměti (nemusí být kompletní)
Registry
hivelist – vypíše seznam všech registrových hives a jejich virtuálních adres
hivescan - proskenuje paměť na všechny objekty typu _CMHIVE
hivedump - vypíše všechny klíče z hivu printkey - vypíše hodnoty konkrétního klíče (přepínač -K )
dumpregistry - vyexportuje celý hive v binární podobě (viz. regripper https://github.com/keydet89/RegRipper3.0)
hashdump - vypíše LM/NTLM hashe hesel uživatelských účtů
lsadump – vypíše z registrů dešifrovaná LSA tajemství
userassist - vypíše často spouštěné programy
Hledání malware
yarascan – vyhledává procesy se zadanou signaturou
python2 vol.py -f stuxnet.vmem --profile stuxnet yarascan --yara-file=stuxnet.yar
malfind - hledá stránky paměti s právy PAGE_EXECUTE_READWRITE a zobrazí dissasemblované náhledy (jedná se o indikátor injektovaného kódu, protože pokud je kód normálně nahrán do paměti, má tato oblast paměti nastavenou operačním systémem ochranu PAGE_EXECUTE_WRITECOPY)
Resources
Last updated