TDCTF Academy Logo TDCTF ACADEMY

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:

  1. Buka FTK Imager (harus dijalankan sebagai Administrator).
  2. File > Capture Memory...
  3. Pilih destination path untuk file output (.mem).
  4. Centang Include pagefile jika ingin menyertakan pagefile.sys.
  5. Klik Capture.
  6. 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:

  1. Dapatkan gambaran proses:
python3 vol.py -f ransom.mem windows.pstree
  1. Cari proses mencurigakan: Ditemukan proses payup.exe dengan PPID tidak wajar.

  2. Periksa koneksi jaringan:

python3 vol.py -f ransom.mem windows.netscan | grep payup

Ditemukan koneksi ke IP C2 di 185.234.xx.xx:8443.

  1. Deteksi injection:
python3 vol.py -f ransom.mem windows.malfind --pid <PID_payup>

Ditemukan region PAGE_EXECUTE_READWRITE.

  1. Ekstrak indikator:
python3 vol.py -f ransom.mem windows.dumpfiles --pid <PID_payup>
# Dump executable untuk analisis YARA lanjutan
  1. 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

  1. 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:

  1. Akuisisi memori - LiME, FTK Imager, WinPmem, DumpIt.
  2. Analisis Volatility 3 - pslist, pstree, netscan, malfind, cmdscan, dlllist.
  3. Teknik deteksi - proses hidden, DLL injection, process hollowing.
  4. 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.

PADA HALAMAN INI