Memory Forensics
Pengantar
Memory Forensics (forensika memori) adalah cabang forensika digital yang berfokus pada akuisisi dan analisis volatile memory (RAM) dari sistem komputer. Berbeda dengan forensika disk yang menganalisis data yang tersimpan di hard drive, memory forensics menangkap data yang sedang aktif di memori - proses berjalan, koneksi jaringan aktif, data yang didekripsi, password dalam plaintext, hingga malware yang hanya berada di RAM tanpa menyentuh disk.
Prinsip forensika menyatakan bahwa data pada memori bersifat volatile - data akan hilang saat sistem dimatikan. Oleh karena itu, akuisisi memori harus dilakukan sebagai prioritas tertinggi dalam respon insiden, bahkan sebelum mematikan sistem.
Mengapa Memory Forensics?
Beberapa skenario di mana memory forensics sangat kritis:
- Fileless malware - malware yang hanya berjalan di memori tanpa menulis file ke disk. Tidak terdeteksi oleh scanner antivirus tradisional.
- Rootkit - menyembunyikan proses, file, dan koneksi dari alat forensik berbasis OS.
- Data dalam proses dekripsi - kunci enkripsi, password, atau data sensitif yang hanya berada di RAM.
- Network connection aktif - informasi koneksi C2 (Command & Control) yang hanya terlihat di memori.
- Proses hidden - process masquerading atau proses yang menggunakan teknik hollowing.
- Artefak ephemeral - clipboard, command history, environment variable yang tidak disimpan ke disk.
Akuisisi Memory (Memory Acquisition)
Akuisisi memori harus dilakukan dengan tools khusus yang minim mengubah state memori. Tools akuisisi yang umum digunakan:
1. LiME (Linux Memory Extractor)
LiME adalah modul kernel loadable yang digunakan untuk men-dump RAM pada sistem Linux. Keunggulannya: berjalan di kernel mode sehingga bisa mengakses seluruh ruang memori.
Instalasi dan penggunaan:
git clone https://github.com/504ensicsLabs/LiME.git
cd LiME/src
make
sudo insmod lime-6.8.0.ko path=/evidence/memory.lime format=lime
Parameter penting:
path=- lokasi file output dump memori.format=- format output:lime(recommended),raw,padded.
Contoh dengan format raw:
sudo insmod lime-6.8.0.ko path=/evidence/memory.raw format=raw
2. FTK Imager (Windows, Linux)
FTK Imager selain untuk disk imaging juga bisa digunakan untuk memory acquisition pada sistem Windows.
Langkah-langkah:
- Buka FTK Imager (harus dijalankan sebagai Administrator).
- File > Capture Memory...
- Pilih destination path untuk file output
(
.mem). - Centang Include pagefile jika ingin menyertakan pagefile.sys.
- Klik Capture.
- FTK Imager secara otomatis menghitung hash MD5 dan SHA-1 dari dump memori.
3. WinPmem
WinPmem adalah memory imager open-source untuk Windows yang dikembangkan oleh Rekall.
Penggunaan command-line:
winpmem_mini.exe --output memory.raw --format raw
Atau gunakan executable stand-alone:
winpmem.exe -o C:\evidence\memory.raw
4. DumpIt
DumpIt dari MoonSols adalah tools memory acquisition yang sangat populer karena satu-klik - cukup jalankan executable tanpa parameter.
DumpIt.exe /OUTPUT C:\evidence\memory.raw
Keunggulan DumpIt:
- Ukuran binary sangat kecil (~200KB).
- Output dalam format raw yang kompatibel dengan Volatility.
- Tidak perlu instalasi - bisa dijalankan dari USB forensic.
Verifikasi Dump Memori
Setelah akuisisi, selalu verifikasi integritas dump:
sha256sum memory.raw
Bandingkan hash dengan catatan di Chain of Custody.
Analisis dengan Volatility 3
Volatility 3 adalah framework analisis memori open-source yang paling banyak digunakan. Volatility 3 ditulis dalam Python 3 dan merupakan rewrite total dari Volatility 2, dengan arsitektur plugin yang lebih modular.
Instalasi:
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 vol.py -h
Plugin-Plugin Utama Volatility 3
1. windows.pslist - Daftar Proses
Menampilkan semua proses yang berjalan pada saat dump memori diambil.
python3 vol.py -f memory.raw windows.pslist
Output contoh:
PID PPID ImageFileName Offset Threads Handles
4 0 System 0x... 120 0
256 4 smss.exe 0x... 3 32
384 360 csrss.exe 0x... 10 356
472 460 wininit.exe 0x... 4 89
504 460 csrss.exe 0x... 9 295
612 600 winlogon.exe 0x... 5 118
672 600 services.exe 0x... 8 345
860 672 svchost.exe 0x... 12 452
...
2. windows.pstree - Proses Tree
Menampilkan hierarki proses dalam bentuk tree, memudahkan deteksi proses mencurigakan yang memiliki parent tidak wajar.
python3 vol.py -f memory.raw windows.pstree
Output contoh:
*** 4 (System)
*** 256 (smss.exe)
*** 384 (csrss.exe)
*** 472 (wininit.exe)
*** 672 (services.exe)
*** 860 (svchost.exe)
*** 1232 (svchost.exe)
*** 1504 (spoolsv.exe)
*** 1780 (svchost.exe)
*** 2204 (notepad.exe) <-- mencurigakan di bawah service
3. windows.cmdscan dan windows.consoles
Menampilkan command-line history dari proses cmd.exe - sangat berguna untuk rekonstruksi aktivitas attacker.
python3 vol.py -f memory.raw windows.cmdscan
python3 vol.py -f memory.raw windows.consoles
Output cmdscan contoh:
Command Count: 12
# Cmd #0 @ 0x...: whoami
# Cmd #1 @ 0x...: ipconfig /all
# Cmd #2 @ 0x...: netstat -an
# Cmd #3 @ 0x...: net localgroup administrators
# Cmd #4 @ 0x...: powershell -enc SQBFAFgA...
4. windows.netscan - Network Connections
Menampilkan koneksi jaringan aktif dan yang pernah ada pada saat dump memori.
python3 vol.py -f memory.raw windows.netscan
Output contoh:
Offset Proto LocalAddr ForeignAddr State PID
0x... TCP 192.168.1.10:49175 203.0.113.5:443 ESTABLISHED 2204
0x... TCP 192.168.1.10:49178 45.33.32.156:8080 ESTABLISHED 3100
0x... UDP 0.0.0.0:123 *:* - 860
Deteksi mencurigakan: PID 2204 adalah
notepad.exe - tidak wajar jika notepad melakukan
koneksi HTTPS ke IP asing.
5. windows.malfind - Deteksi Malware Injection
Mendeteksi proses yang memiliki page memori dengan atribut PAGE_EXECUTE_READWRITE (tidak wajar) atau pola tertentu yang mengindikasikan code injection.
python3 vol.py -f memory.raw windows.malfind
Output contoh:
PID Process Start Tag Protection CommitCharge
2204 notepad 0x1a0000 Vad PAGE_EXECUTE_READWRITE 42
Protection PAGE_EXECUTE_READWRITE sangat mencurigakan - menunjukkan region memori yang dapat dieksekusi dan ditulis.
Biasanya tidak ditemukan pada executable normal.
6. windows.dlllist - Daftar DLL per Proses
Menampilkan DLL yang dimuat oleh setiap proses. Berguna untuk mendeteksi DLL hijacking atau DLL injection.
python3 vol.py -f memory.raw windows.dlllist --pid 2204
Output contoh:
PID Process Base Size Name Path
2204 notepad 0x400000 0x6000 notepad.exe C:\Windows\System32\notepad.exe
2204 notepad 0x76900000 0x12000 ntdll.dll C:\Windows\System32\ntdll.dll
2204 notepad 0x75000000 0xF0000 kernel32.dll C:\Windows\System32\kernel32.dll
2204 notepad 0x10000000 0x8000 evil.dll C:\Users\Public\evil.dll <-- mencurigakan
DLL evil.dll dari C:\Users\Public sangat
mencurigakan.
7. Plugin Lainnya
windows.handles- Menampilkan object handles yang dibuka oleh proses (file, registry key, mutex, pipe).windows.registry- Mengekstrak registry hives dari memori.windows.psscan- Mendeteksi proses yang tidak terdaftar di EPROCESS list (proses hidden).windows.filescan- Mendeteksi file handles yang terbuka, termasuk file yang sudah di-delete.windows.psxview- Cross-view detection untuk proses hidden.linux.pslist,linux.bash- Plugin untuk analisis memori Linux.
Deteksi Rootkit dan Proses Hidden
Rootkit menggunakan berbagai teknik untuk menyembunyikan keberadaannya:
1. DKOM (Direct Kernel Object Manipulation)
Rootkit memodifikasi struktur kernel EPROCESS untuk
melepaskan proses dari linked list. Volatility 3 mendeteksi ini
melalui:
python3 vol.py -f memory.raw windows.psscan
windows.psscan memindai pool tag untuk menemukan
EPROCESS, tidak bergantung pada linked list - sehingga bisa
mendeteksi proses yang di-unlink oleh rootkit.
2. Cross-View Detection
Volatility menyediakan windows.psxview untuk
membandingkan beberapa sumber daftar proses:
python3 vol.py -f memory.raw windows.psxview
Proses yang muncul di satu sumber tapi tidak di sumber lain menandakan adanya rootkit.
3. Inline Hooking
Rootkit sering meng-hook fungsi kernel. Volatility plugin seperti
ssdt (Volatility 2) atau analisis manual
callbacks dapat mendeteksi ini.
Contoh Skenario Deteksi:
Skenario: Sebuah proses svchost.exe
menjalankan reverse shell. Karena svchost wajar berjalan di sistem
Windows, attacker menyamar di sana. Langkah analisis:
# 1. Lihat tree proses
python3 vol.py -f memory.raw windows.pstree
# 2. Periksa koneksi jaringan dari svchost
python3 vol.py -f memory.raw windows.netscan | grep <PID_svchost>
# 3. Periksa command line svchost
python3 vol.py -f memory.raw windows.cmdline --pid <PID_svchost>
# 4. Cari code injection
python3 vol.py -f memory.raw windows.malfind --pid <PID_svchost>
# 5. Dump proses untuk analisis lanjutan
python3 vol.py -f memory.raw windows.dumpfiles --pid <PID_svchost>
Malware Injection Techniques
1. Process Hollowing
Attacker membuat proses baru dalam keadaan suspended, melepas image asli dari memori process, lalu menuliskan executable jahat ke ruang memori tersebut. Volatility mendeteksi ini dengan:
windows.malfind- mendeteksi PAGE_EXECUTE_READWRITE regions.windows.vadinfo- menganalisis VAD (Virtual Address Descriptor) untuk anomali.
2. DLL Injection
Attacker memaksa proses target untuk memuat DLL jahat. Deteksi:
windows.dlllist- mencari DLL dari path mencurigakan.windows.ldrmodules- mendeteksi DLL yang di-unlink dari loader list.
3. APC Injection (Asynchronous Procedure Call)
Attacker mengantrekan APC ke thread target untuk mengeksekusi shellcode. Deteksi membutuhkan analisis kernel APC queue via Volatility plugin khusus.
4. Reflective DLL Injection
DLL dimuat langsung dari memori tanpa melalui Windows Loader - tidak
meninggalkan jejak di PEB (Process Environment Block). Ini adalah
teknik yang paling sulit dideteksi. Volatility dapat mendeteksinya
melalui windows.malfind dan analisis VAD.
Artefak di Memory
Network Connections
Koneksi jaringan yang tercatat di memori bisa memberikan indikator kompromi (IoC):
- IP Address jahat - C2 server, exfiltration destination.
- Port yang tidak biasa - penggunaan port tinggi untuk komunikasi C2.
- Local listening port - backdoor yang menunggu koneksi.
Contoh analisis:
python3 vol.py -f memory.raw windows.netscan | grep ESTABLISHED
Fokus pada koneksi ESTABLISHED ke IP asing dari proses
yang tidak wajar.
Open Handles
Handles adalah referensi ke object kernel (file, registry, pipe, mutex). Analisis handles bisa mengungkap:
- File yang sedang dibuka oleh malware.
- Named pipe untuk komunikasi inter-process.
- Mutex yang digunakan malware untuk mencegah eksekusi ganda.
python3 vol.py -f memory.raw windows.handles --pid <PID> --object-type File
Registry Hives
Volatility dapat mengekstrak registry hives langsung dari memori. Ini berguna untuk:
- Autorun keys - lokasi startup malware.
- Service entries - malware yang terdaftar sebagai service.
- UserAssist - program yang baru dijalankan.
- Prefetch - aplikasi yang pernah dijalankan.
python3 vol.py -f memory.raw windows.registry.userassist
python3 vol.py -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
Studi Kasus: Analisis Memory Ransomware
Skenario: Sebuah workstation Windows terinfeksi ransomware. Tim forensik berhasil mengakuisisi dump memori sebelum sistem dimatikan.
Langkah analisis:
- Dapatkan gambaran proses:
python3 vol.py -f ransom.mem windows.pstree
-
Cari proses mencurigakan: Ditemukan proses
payup.exedengan PPID tidak wajar. -
Periksa koneksi jaringan:
python3 vol.py -f ransom.mem windows.netscan | grep payup
Ditemukan koneksi ke IP C2 di 185.234.xx.xx:8443.
- Deteksi injection:
python3 vol.py -f ransom.mem windows.malfind --pid <PID_payup>
Ditemukan region PAGE_EXECUTE_READWRITE.
- Ekstrak indikator:
python3 vol.py -f ransom.mem windows.dumpfiles --pid <PID_payup>
# Dump executable untuk analisis YARA lanjutan
- Periksa registry untuk persistence:
python3 vol.py -f ransom.mem windows.registry.printkey \
--key "Software\Microsoft\Windows\CurrentVersion\Run"
Ditemukan entry: payup = C:\Users\victim\payup.exe
- Analisis command history attacker:
python3 vol.py -f ransom.mem windows.cmdscan
Terlihat perintah net use untuk mapping share,
cipher untuk enkripsi.
Kesimpulan
Memory forensics adalah senjata paling ampuh untuk mendeteksi serangan siber modern yang menggunakan teknik fileless malware, rootkit, dan process injection. Dengan menguasai:
- Akuisisi memori - LiME, FTK Imager, WinPmem, DumpIt.
- Analisis Volatility 3 - pslist, pstree, netscan, malfind, cmdscan, dlllist.
- Teknik deteksi - proses hidden, DLL injection, process hollowing.
- Artefak memori - network connections, handles, registry.
Seorang analis forensik dapat mengungkap jejak attacker yang tidak terlihat di disk forensics. Memory forensics bukan lagi opsional - ini adalah keharusan dalam setiap respon insiden yang matang.