Agar sebuah sistem operasi (OS) dapat bekerja, salah satu mekanisme yang diperlukan adalah adanya proses service/program yang mendukung running nya sebuah OS yang disimpan di memori. Data/informasi yang ada di memori dalam istilah forensik termasuk data volatile, yang berarti informasi tersebut tidak akan permanen berada di memori, tidak seperti data yang disimpan di HDD dan USB drive. Yang termasuk data volatil misalnya process yang sedang running, koneksi yang sedang berlangsung, jumlah memori yang digunakan saat ini, file yang sedang diakses oleh sebuah program saat itu, DLL yang diload oleh sebuah process, dsb. Data-data yang saya sebutkan ini akan hilang & tidak valid lagi jika komputer saya restart dan memori di flush ulang saat proses boot (listrik mati/tidak ada arus listrik sementara).
Persis dengan analogi rumah yang kemalingan biasanya dipasang garis polisi agar tidak ada yang boleh masuk supaya semua informasi & barang bukti yang ada di rumah korban kemalingan tsb tidak diubah/direkayasa/diganggu, begitu pula data volatil di memori. Untuk melakukan forensik, sangat disarankan tidak dilakukan reboot pada komputer sampai data volatil didapatkan terlebih dahulu (a.k.a image memory di dump ke sebuah file terlebih dahulu)
Tools untuk dump data yang ada di physical memory ke file salah satunya pada contoh posting kali ini pada sistem Windows, saya menggunakan tools mdd. Ada banyak tools serupa untuk OS yang berbeda-beda. Tinggal googling aja. 🙂

Dump Memory
Untuk dump memory di PC Windows korban simply dilakukan dengan cara sebagai berikut (harus dengan privileged user):
mdd.exe -o memory.dump
Outputnya adalah 1 file dengan besar file = besar RAM. Jika dump memory di komputer yang RAM nya 16GB, yaa.. mohon bersabar menunggu output dump file nya hehehe
Analyze Dump Memory dengan menggunakan Volatility
Volatility adalah salah satu aplikasi yang dapat membaca & mengekstrak informasi dari memori dump yang dihasilkan oleh mdd tersebut. Volatility memiliki banyak fitur untuk mengekstrak informasi proses yang berlangsung di host korban, koneksi data yang sedang terjadi, dlsb.
D:\tool\volatility2.5>volatility.exe -h Volatility Foundation Volatility Framework 2.5 Usage: Volatility - A memory forensics analysis platform. Options: -h, --help list all available options and their default values. Default values may be set in the configuration file (/etc/volatilityrc) --conf-file=.volatilityrc User based configuration file -d, --debug Debug volatility --plugins=PLUGINS Additional plugin directories to use (semi-colon separated) --info Print information about all registered objects --cache-directory=C:\Users\adeism046909/.cache\volatility Directory where cache files are stored --cache Use caching --tz=TZ Sets the (Olson) timezone for displaying timestamps using pytz (if installed) or tzset -f FILENAME, --filename=FILENAME Filename to use when opening an image --profile=WinXPSP2x86 Name of the profile to load (use --info to see a list of supported profiles) -l LOCATION, --location=LOCATION A URN location from which to load an address space -w, --write Enable write support --dtb=DTB DTB Address --output=text Output in this format (support is module specific, see the Module Output Options below) --output-file=OUTPUT_FILE Write output in this file -v, --verbose Verbose information --shift=SHIFT Mac KASLR shift address -g KDBG, --kdbg=KDBG Specify a KDBG virtual address (Note: for 64-bit Windows 8 and above this is the address of KdCopyDataBlock) --force Force utilization of suspect profile -k KPCR, --kpcr=KPCR Specify a specific KPCR address --cookie=COOKIE Specify the address of nt!ObHeaderCookie (valid for Windows 10 only) Supported Plugin Commands: amcache Print AmCache information apihooks Detect API hooks in process and kernel memory atoms Print session and window station atom tables atomscan Pool scanner for atom tables auditpol Prints out the Audit Policies from HKLM\SECURITY\Policy\PolAdtEv bigpools Dump the big page pools using BigPagePoolScanner bioskbd Reads the keyboard buffer from Real Mode memory cachedump Dumps cached domain hashes from memory callbacks Print system-wide notification routines clipboard Extract the contents of the windows clipboard cmdline Display process command-line arguments cmdscan Extract command history by scanning for _COMMAND_HISTORY connections Print list of open connections [Windows XP and 2003 Only] connscan Pool scanner for tcp connections consoles Extract command history by scanning for _CONSOLE_INFORMATION crashinfo Dump crash-dump information deskscan Poolscaner for tagDESKTOP (desktops) devicetree Show device tree dlldump Dump DLLs from a process address space dlllist Print list of loaded dlls for each process driverirp Driver IRP hook detection drivermodule Associate driver objects to kernel modules driverscan Pool scanner for driver objects dumpcerts Dump RSA private and public SSL keys dumpfiles Extract memory mapped and cached files dumpregistry Dumps registry files out to disk editbox Dumps various data from ComCtl Edit controls (experimental: ListBox, ComboBox) envars Display process environment variables eventhooks Print details on windows event hooks evtlogs Extract Windows Event Logs (XP/2003 only) filescan Pool scanner for file objects gahti Dump the USER handle type information gditimers Print installed GDI timers and callbacks gdt Display Global Descriptor Table getservicesids Get the names of services in the Registry and return Calculated SID getsids Print the SIDs owning each process handles Print list of open handles for each process hashdump Dumps passwords hashes (LM/NTLM) from memory hibinfo Dump hibernation file information hivedump Prints out a hive hivelist Print list of registry hives. hivescan Pool scanner for registry hives hpakextract Extract physical memory from an HPAK file hpakinfo Info on an HPAK file idt Display Interrupt Descriptor Table iehistory Reconstruct Internet Explorer cache / history imagecopy Copies a physical address space out as a raw DD image imageinfo Identify information for the image impscan Scan for calls to imported functions joblinks Print process job link information kdbgscan Search for and dump potential KDBG values kpcrscan Search for and dump potential KPCR values ldrmodules Detect unlinked DLLs lsadump Dump (decrypted) LSA secrets from the registry machoinfo Dump Mach-O file format information malfind Find hidden and injected code mbrparser Scans for and parses potential Master Boot Records (MBRs) memdump Dump the addressable memory for a process memmap Print the memory map messagehooks List desktop and thread window message hooks mftparser Scans for and parses potential MFT entries moddump Dump a kernel driver to an executable file sample modscan Pool scanner for kernel modules modules Print list of loaded modules multiscan Scan for various objects at once mutantscan Pool scanner for mutex objects notepad List currently displayed notepad text objtypescan Scan for Windows object type objects patcher Patches memory based on page scans poolpeek Configurable pool scanner plugin printkey Print a registry key, and its subkeys and values privs Display process privileges procdump Dump a process to an executable file sample pslist Print all running processes by following the EPROCESS lists psscan Pool scanner for process objects pstree Print process list as a tree psxview Find hidden processes with various process listings qemuinfo Dump Qemu information raw2dmp Converts a physical memory sample to a windbg crash dump screenshot Save a pseudo-screenshot based on GDI windows servicediff List Windows services (ala Plugx) sessions List details on _MM_SESSION_SPACE (user logon sessions) shellbags Prints ShellBags info shimcache Parses the Application Compatibility Shim Cache registry key shutdowntime Print ShutdownTime of machine from registry sockets Print list of open sockets sockscan Pool scanner for tcp socket objects ssdt Display SSDT entries strings Match physical offsets to virtual addresses (may take a while, VERY verbose) svcscan Scan for Windows services symlinkscan Pool scanner for symlink objects thrdscan Pool scanner for thread objects threads Investigate _ETHREAD and _KTHREADs timeliner Creates a timeline from various artifacts in memory timers Print kernel timers and associated module DPCs truecryptmaster Recover TrueCrypt 7.1a Master Keys truecryptpassphrase TrueCrypt Cached Passphrase Finder truecryptsummary TrueCrypt Summary unloadedmodules Print list of unloaded modules userassist Print userassist registry keys and information userhandles Dump the USER handle tables vaddump Dumps out the vad sections to a file vadinfo Dump the VAD info vadtree Walk the VAD tree and display in tree format vadwalk Walk the VAD tree vboxinfo Dump virtualbox information verinfo Prints out the version information from PE images vmwareinfo Dump VMware VMSS/VMSN information volshell Shell in the memory image windows Print Desktop Windows (verbose details) wintree Print Z-Order Desktop Windows Tree wndscan Pool scanner for window stations yarascan Scan process or kernel memory with Yara signatures
Let’s play!
Sebagai contoh, berikut ini hasil explorasi sebuah victim OS Windows XP SP2 (IP Address: 192.168.76.131) yang dilaporkan mengalami insiden dan akan dilakukan forensik.
Warning: kisah ini hanya fiktif belaka. Jika ada kesamaan nama tokoh, tempat, dll hanya kebetulan semata. 😛
D:\tool\volatility2.5>volatility.exe -f memory.dump --profile=WinXPSP2x86 psscan Volatility Foundation Volatility Framework 2.5 Offset(P) Name PID PPID PDB Time created Time exited ------------------ ---------------- ------ ------ ---------- ------------------------------ ------------------------------ 0x000000000201b020 svchost.exe 888 652 0x073800e0 2016-11-15 17:39:49 UTC+0000 0x000000000201bc18 svchost.exe 820 652 0x073800c0 2016-11-15 17:39:49 UTC+0000 0x000000000202d928 winmine.exe 1232 1620 0x073801a0 2016-11-15 17:40:58 UTC+0000 0x000000000205a068 smss.exe 516 4 0x07380020 2016-11-15 17:39:45 UTC+0000 0x00000000021a8268 calc.exe 1832 1620 0x07380220 2016-11-15 17:41:06 UTC+0000 0x0000000002205da0 cmd.exe 1764 1620 0x07380160 2016-11-15 17:40:08 UTC+0000 0x0000000002248020 explorer.exe 1620 1564 0x073801c0 2016-11-15 17:39:56 UTC+0000 0x00000000022692d0 alg.exe 828 652 0x073801e0 2016-11-15 17:40:18 UTC+0000 0x00000000022aab88 mdd.exe 956 1764 0x07380280 2016-11-15 17:42:40 UTC+0000 0x0000000002304550 lsass.exe 664 604 0x073800a0 2016-11-15 17:39:48 UTC+0000 0x0000000002306658 spoolsv.exe 1384 652 0x07380180 2016-11-15 17:39:52 UTC+0000 0x0000000002330020 winlogon.exe 604 516 0x07380060 2016-11-15 17:39:47 UTC+0000 0x000000000239ada0 services.exe 652 604 0x07380080 2016-11-15 17:39:48 UTC+0000 0x000000000243c980 svchost.exe 980 652 0x07380100 2016-11-15 17:39:50 UTC+0000 0x0000000002444020 csrss.exe 580 516 0x07380040 2016-11-15 17:39:47 UTC+0000 0x0000000002448268 IEXPLORE.EXE 1876 1620 0x07380240 2016-11-15 17:41:10 UTC+0000 0x00000000024879a8 ZyWzUUIWcPb.exe 564 1620 0x07380260 2016-11-15 17:42:00 UTC+0000 0x00000000024a0498 wuauclt.exe 1644 980 0x07380200 2016-11-15 17:41:02 UTC+0000 0x00000000024c56d0 svchost.exe 1068 652 0x07380140 2016-11-15 17:39:50 UTC+0000 0x00000000024f2988 svchost.exe 1024 652 0x07380120 2016-11-15 17:39:50 UTC+0000 0x00000000025c8830 System 4 0 0x00316000
Hmm.. ada proses dengan nama yang mencurigakan di Process ID (PID) 564. Mari kita cek PID tersebut melakukan koneksi kemana saja…
D:\tool\volatility2.5>volatility.exe -f memory.dump --profile=WinXPSP2x86 connections Volatility Foundation Volatility Framework 2.5 Offset(V) Local Address Remote Address Pid ---------- ------------------------- ------------------------- --- 0x8215a270 192.168.76.131:1049 31.13.78.17:80 1876 0x8203e178 192.168.76.131:1195 202.158.0.104:80 1876 0x82042398 192.168.76.131:1191 202.158.0.105:80 1876 0x8207a5a8 192.168.76.131:1208 64.74.13.22:80 1876 0x81f71cd8 192.168.76.131:1251 202.158.19.101:80 1876 0x81e2a008 192.168.76.131:1193 23.99.125.55:80 1876 0x81f74bc8 192.168.76.131:1095 103.49.221.172:80 1876 0x81fa2a50 192.168.76.131:1060 203.190.242.172:80 1876 0x82302c38 192.168.76.131:1044 202.158.0.105:80 1876 0x81fa7af0 192.168.76.131:1054 74.125.68.155:80 1876 0x81df4680 192.168.76.131:1205 64.74.13.22:80 1876 0x81f74418 192.168.76.131:1096 103.49.221.172:80 1876 0x822d2e70 192.168.76.131:1232 103.49.221.130:80 1876 0x81f71e70 192.168.76.131:1233 203.190.242.211:80 1876 0x821686f8 192.168.76.131:1197 203.190.242.211:80 1876 0x81e54bf8 192.168.76.131:1189 202.158.0.105:80 1876 0x822cf208 192.168.76.131:1199 74.125.68.155:80 1876 0x8207d008 192.168.76.131:1188 204.79.197.203:80 1876 0x8203f840 192.168.76.131:1196 23.0.162.56:80 1876 0x820a43a8 192.168.76.131:1089 74.125.200.97:80 1876 0x81f75008 192.168.76.131:1190 54.255.160.133:80 1876 0x8203f008 192.168.76.131:1192 111.221.29.30:80 1876 0x822877f8 192.168.76.131:1238 203.190.245.30:80 1876 0x822a9610 192.168.76.131:1079 23.15.149.163:80 1876 0x821e1008 192.168.76.131:1194 202.158.0.104:80 1876 0x81df54a8 192.168.76.131:1186 192.168.76.1:443 564 0x821e41f0 192.168.76.131:1050 202.158.19.101:80 1876
Ternyata PID 564 (ZyWzUUIWcPb.exe) melakukan koneksi ke sebuah host di jaringan yang sama, tepatnya melakukan koneksi ke 192.168.76.1 via port 443.
Sebenarnya ini file apa ya…Mari kita dump process di memory victim tersebut menjadi sebuah file executable dengan perintah ‘procdump’ sbb:
D:\tool\volatility2.5>volatility.exe -f memory.dump --profile=WinXPSP2x86 procdump -p 564 -D dumpfile Volatility Foundation Volatility Framework 2.5 Process(V) ImageBase Name Result ---------- ---------- -------------------- ------ 0x824879a8 0x00400000 ZyWzUUIWcPb.exe OK: executable.564.exe
Selanjutnya bisa analisa file virus tsb di dalam sandbox mungkin? Hehe. Atau kalau ingin hasil yang cepat langsung coba upload ke virustotal.com. Dari report virustotal, ternyata file executable tsb termasuk Trojan.
Iseng-iseng coba check apakah hash file SAM ada di memory:
D:\tool\volatility2.5>volatility.exe -f memory.dump --profile=WinXPSP2x86 hashdump Volatility Foundation Volatility Framework 2.5 Administrator:500:ad88b83919877b2c18adeb172ea24ea0:ea3eaf1c71240ea25265b0708a46712f::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: sule:1000:85e2d9cf3bc981e2dfc8cb30bf4e5dd7:e16377216daa56f648ef4394d8391e03::: asep:1002:aad3b435b51404eeaad3b435b51404ee:06542de1422d3a7cdafbe9c620e33089::: ZyWzUUIWcPb:1003:6d19b83990847b2c19beab146ca24ea0:9a3eaf1c75b40ea2526fb0708a46995f:::
Hmm ada user yang namanya similiar dengan nama process yang lagi running. Mostly ini adalah user non-legitimate a.k.a backdoor. Sepertinya harus investigasi siapakah 192.168.76.1 yang menerima koneksi dari victim via process ZyWzUUIWcPb.exe ini.
Dan selanjutnya, dan selanjutnya…
Happy explore!
Terimakasih sudah sharing, terimakasih ilmunya. Artikelnya sangat bermanfaat.