Home » Forensik Digital » Memory Forensics dengan Volatility — Cara Menganalisis RAM D...
Forensik Digital

Memory Forensics dengan Volatility — Cara Menganalisis RAM Dump untuk Menemukan Malware

Visualisasi RAM komputer dengan kode malware tersembunyi terdeteksi oleh tool Volatility, tema keamanan siber gelap

Memory Forensics dengan Volatility — Cara Menganalisis RAM Dump untuk Menemukan Malware

Saya nggak akan pernah lupa satu kasus ini. Klien saya — sebuah perusahaan teknologi finansial — menghubungi saya dengan nada frustrasi. “Sudah tiga bulan kami diserang, dan kami nggak bisa nemu malware-nya di mana pun. Antivirus bilang clean. EDR bilang clean. Tapi data tetap aja bocor.” Mereka udah ganti semua hard disk server. Rebuild dari nol. Bahkan sempat hired satu tim security eksternal sebelumnya — dan hasilnya nihil. Waktu saya tanya satu pertanyaan kunci: “RAM dump-nya pernah di-capture?”, mereka cuma diam. Di situlah saya sadar bahwa banyak banget profesional IT yang masih underestimate memory forensics dengan volatility — padahal di RAM itulah rahasia sesungguhnya tersimpan.

Setelah saya capture memory dump dari server mereka yang masih nyala, dan analisis pakai Volatility, hasilnya bikin merinding: ada malware yang berjalan sepenuhnya di memory — nggak ada satu byte pun yang ditulis ke disk. Fileless malware. Dan malware ini udah beroperasi selama tiga bulan tanpa terdeteksi oleh satu pun security tools yang terpasang. Nah, di artikel ini saya akan sharing gimana caranya melakukan memory forensics dengan Volatility — dari cara capture RAM dump yang benar, plugin-plugin esensial yang wajib kamu kuasai, sampai contoh kasus nyata step-by-step.

Kenapa RAM Itu Penting Banget di Forensik Digital

Sebelum kita masuk ke teknis Volatility, saya pengen kamu ngerti dulu kenapa memory forensics itu bukan sekadar “nice to have” tapi beneran critical skill. Coba pikir: apa yang terjadi saat komputer nyala? Semua yang dikerjakan komputer — setiap proses, setiap koneksi jaringan, setiap file yang dibuka, setiap password yang diketik — semuanya lewat RAM dulu. RAM adalah workspace-nya sistem operasi. Dan begitu listrik mati, semua isi RAM hilang dalam hitungan detik.

Nah, di sinilah letak kenapa memory forensics sangat krusial. Banyak artifact forensik yang cuma bisa ditemukan di RAM dan nggak pernah ada di disk:

  • Fileless malware — malware yang berjalan entirely in memory, nggak pernah nulis file executable ke disk. Ini teknik yang makin populer karena bisa bypass antivirus tradisional.
  • Encryption keys — kalau attacker make enkripsi, encryption key-nya ada di RAM selama sistem nyala. Begitu dapet RAM dump, kamu bisa ekstrak key-nya.
  • Running processes yang udah di-terminate — bahkan setelah process selesai, sisa-sisanya masih ada di memory (tergantung berapa lama setelah termination).
  • Network connections — koneksi mana yang aktif, ke IP mana, port berapa, process apa yang megang koneksi itu. Ini krusial buat track komunikasi attacker.
  • Injected code — attacker sering nyuntikin malicious code ke process legitimate (misalnya nginject ke explorer.exe atau svchost.exe). Di disk, process ini kelihatan normal. Di memory, injected code-nya keliatan.
  • Credentials dalam plaintext — tools kayak Mimikatz bisa ngekstrak password plaintext dari memory (Windows LSASS). Jadi kalau attacker make Mimikatz… jejaknya ada di RAM.

Singkatnya: kalau kamu cuma analisis hard disk, kamu cuma lihat setengah dari cerita. Setengahnya lagi ada di RAM. Dan Volatility adalah tools untuk membaca setengah cerita yang tersembunyi itu.

Cara Capture Memory Dump — Step Paling Kritis yang Sering Dilakukan Salah

Sebelum bisa analisis, kamu harus capture dulu. Dan langkah ini harus dilakukan dengan benar. Kesalahan kecil bisa bikin memory dump kamu nggak usable atau bahkan menghancurkan bukti.

Prinsip Dasar Capture Memory

  1. Lakukan di sistem yang masih nyala. Jangan restart. Jangan shutdown. RAM hilang begitu listrik mati.
  2. Gunakan tools yang trusted. Jangan download tools random dari internet. Pakai yang sudah proven di industri.
  3. Minimalkan footprint. Tools capture memory pasti ninggalin jejak di memory juga (dia kan harus running). Pilih tools yang footprint-nya minimal.
  4. Simpan dump di media eksternal. JANGAN simpen di disk lokal server yang kena — karena kamu bakal menimpa bukti. Colokin USB drive atau mount network share.
  5. Hitung hash. Setelah dump selesai, langsung hitung hash (SHA-256) dan dokumentasikan.

Capture di Linux — Pakai LiME

LiME (Linux Memory Extractor) adalah loadable kernel module (LKM) untuk capture memory di Linux. Kenapa harus kernel module? Karena akses ke physical memory di Linux perlu kernel-level access. Tools user-space kayak dd if=/dev/mem udah nggak bisa diakses penuh di kernel modern karena alasan keamanan.

Install LiME:

git clone https://github.com/504ensicsLabs/LiME.git
cd LiME/src
make

Capture memory:

sudo insmod lime-$(uname -r).ko "path=/mnt/usb/memory.dmp format=lime"

Output-nya berupa file memory dump dalam format LIME (yang bisa dibaca Volatility). Untuk format raw (bisa juga dibaca Volatility):

sudo insmod lime-$(uname -r).ko "path=/mnt/usb/memory.dmp format=raw"

Capture di Windows — Pakai winpmem atau DumpIt

Untuk Windows, ada beberapa opsi. winpmem (dari Rekall project, sekarang dimaintain oleh komunitas) adalah yang paling sering saya pakai:

winpmem.exe --output memory.dmp --format raw

Alternatif lain: DumpIt (gratis, dari Magnet Forensics), Magnet RAM Capture (gratis), atau Belkasoft Live RAM Capturer (gratis). Semuanya tinggal klik dan pilih lokasi output.

Tips Penting

Satu hal yang sering ditanyakan: “tools mana yang paling baik?” Jawaban saya: yang paling penting bukan tools-nya, tapi pastikan kamu bikin hash (SHA-256) dari dump yang dihasilkan, catat timestamp capture, catat uptime sistem (berapa lama sistem udah nyala — karena ini ngaruh ke interpretasi data), dan dokumentasikan semuanya. Tools berbeda mungkin menghasilkan dump yang sedikit berbeda karena cara capture yang beda (crash dump vs live dump), tapi selama kamu bisa justify metodologi kamu, itu yang penting.

Volatility Dasar — Plugin Wajib untuk Pemula

Oke, sekarang kita punya memory dump. Saatnya analisis. Saya asumsikan kamu udah install Volatility (cara install ada di artikel sebelumnya tentang 5 tools forensik gratis). Saya akan pake Volatility 3 untuk semua contoh di sini karena ini versi terbaru yang direkomendasikan.

Step 1: Identifikasi Profil (Vol2) / Dapatkan Info Dasar (Vol3)

Di Volatility 2, kamu perlu tahu profil yang tepat (kombinasi OS + version + architecture + service pack). Untuk cari tahu:

# Volatility 2
python2 vol.py -f memory.dmp imageinfo

# Volatility 3 (nge-detect otomatis)
python3 vol.py -f memory.dmp windows.info

Volatility 3 lebih pintar — dia auto-detect OS dan version dari memory dump. Output windows.info akan kasih tahu: Windows version, kernel version, architecture, jumlah processor, dan lain-lain.

Step 2: Lihat Daftar Proses — pslist

Plugin ini menampilkan daftar proses yang berjalan saat memory di-capture. Ini adalah titik awal analisis yang paling penting:

python3 vol.py -f memory.dmp windows.pslist

Output-nya: PID, PPID (parent PID), nama proses, jumlah thread, jumlah handles, dan timestamp kapan process dimulai dan selesai.

Apa yang harus dicari:

  • Proses dengan nama yang aneh atau random (misalnya xvcz123.exe, update_check.exe)
  • Proses yang running dari path yang nggak biasa (misalnya dari /tmp/, C:\Users\Public\, atau C:\ProgramData\)
  • Proses legitimate yang punya parent process nggak wajar. Contoh: svchost.exe biasanya parent-nya services.exe. Kalau parent-nya cmd.exe atau powershell.exe, itu mencurigakan.
  • Proses dengan command line yang aneh (pakai plugin windows.cmdline untuk lihat)

Step 3: Scan Proses Tersembunyi — psscan

Attacker yang jago bisa menyembunyikan proses dari pslist. Teknik ini namanya DKOM (Direct Kernel Object Manipulation) — attacker memanipulasi linked list di kernel supaya proses tertentu nggak muncul di enumerasi normal. psscan bekerja dengan cara berbeda: dia scan physical memory untuk mencari struktur proses (EPROCESS) secara langsung, tanpa ngikutin linked list. Jadi proses yang disembunyiin pun bisa ketemu.

python3 vol.py -f memory.dmp windows.psscan

Bandingkan output psscan dengan pslist. Kalau ada proses yang muncul di psscan tapi nggak di pslist, itu red flag besar. Attacker berusaha menyembunyikan sesuatu.

Step 4: Cek Koneksi Jaringan — netscan

Di Volatility 2, ada netscan (Windows 7+) dan connections/connscan (Windows XP). Di Volatility 3, cukup windows.netscan:

python3 vol.py -f memory.dmp windows.netscan

Output: offset, protocol (TCP/UDP), local address:port, foreign address:port, state (LISTENING, ESTABLISHED, CLOSED, dll), PID, dan owning process.

Yang harus dicurigai:

  • Koneksi ESTABLISHED ke IP yang nggak dikenal (terutama IP di negara yang nggak ada hubungan bisnis)
  • Koneksi ke port yang nggak biasa (bukan 80, 443, 53, 22)
  • Process yang seharusnya nggak bikin network connection (misalnya notepad.exe) tapi malah punya koneksi
  • Listening port yang nggak dikenal (attacker mungkin masang backdoor yang listen di port tertentu)

Step 5: Lihat Command Line — cmdline

Plugin ini menampilkan command line argument yang dipakai saat process dijalankan. Ini sangat berguna untuk memahami apa yang sebenarnya dilakukan oleh suatu process:

python3 vol.py -f memory.dmp windows.cmdline --pid 4567

Contoh temuan:

  • PowerShell dengan encoded command: powershell.exe -enc SQBFAFM... (encoded base64 — hampir pasti malicious)
  • Process yang download sesuatu: cmd.exe /c bitsadmin /transfer ...
  • Process yang nambahin user: net user hacker P@ssw0rd /add
  • Process yang nge-dump credential: procdump.exe -ma lsass.exe

Step 6: Deteksi Injected Code — malfind

Ini plugin favorit saya. malfind mencari tanda-tanda code injection di memory space setiap process. Dia bekerja dengan mencari memory region yang punya permission aneh (misalnya: executable + writable — yang biasanya nggak normal), terus ngecek apakah region itu berisi kode yang bisa dieksekusi. Kalau nemu, dia akan nge-dump region tersebut buat dianalisis lebih lanjut.

python3 vol.py -f memory.dmp windows.malfind

Output malfind bisa panjang banget, terutama di sistem dengan banyak process. Tips: fokus ke process yang mencurigakan dulu (dari hasil pslist dan netscan).

Kalau malfind nemu injected code, biasanya ini indikasi kuat adanya malware yang melakukan process injection — teknik di mana malware nyuntikin kode berbahaya ke dalam memory space process yang legitimate (kayak explorer.exe, svchost.exe, atau process browser) untuk menghindari deteksi.

Studi Kasus Lengkap — Menemukan Malware Tersembunyi dengan Volatility

Biar lebih konkret, saya akan walk-through satu kasus nyata yang saya tangani. Ini kasus fileless malware di server Windows yang saya singgung di awal artikel.

Background Kasus

  • Perusahaan fintech skala menengah di Jakarta
  • Server Windows Server 2019, production, nggak boleh dimatiin
  • Gejala: data customer bocor ke pihak ketiga secara berkala, tapi nggak ada malware yang terdeteksi
  • Antivirus: salah satu brand enterprise terkenal, full scan bersih
  • EDR: nggak ada alert mencurigakan dalam 3 bulan terakhir

Langkah 1 — Capture dan Persiapan

Saya datang ke data center mereka jam 10 pagi. Server nyala, nggak boleh direstart karena ini production. Saya colokin USB external 1TB yang udah diformat bersih. Jalankan winpmem:

winpmem.exe --output E:\server-memory.dmp --format raw

Server punya RAM 64GB — proses capture makan waktu sekitar 15 menit. Setelah selesai, saya hitung hash:

Get-FileHash E:\server-memory.dmp -Algorithm SHA256

Catat hash di notebook investigasi. Sekarang server bisa saya biarkan jalan seperti biasa sementara saya analisis dump-nya di laptop terpisah.

Langkah 2 — Info Dasar dan Proses

Jalankan windows.info:

python3 vol.py -f server-memory.dmp windows.info

Hasil: Windows Server 2019, build 17763, x64. Semua normal.

Jalankan windows.pslist dan output saya redirect ke file teks untuk dianalisis:

python3 vol.py -f server-memory.dmp windows.pslist > pslist.txt

Saya lihat ada proses PowerShell (PID 2844) dengan parent process WmiPrvSE.exe (PID 1056). Ini sudah mencurigakan karena PowerShell yang di-spawn oleh WMI biasanya adalah indikasi lateral movement atau persistence via WMI.

Langkah 3 — Investigasi PowerShell

Cek command line PowerShell:

python3 vol.py -f server-memory.dmp windows.cmdline --pid 2844

Output:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Enc SQBFAFMALQBQ...

Encoded command. Saya decode base64-nya:

echo "SQBFAFMALQBQ..." | base64 -d

Hasil decode menunjukkan script PowerShell yang:

  1. Establish TCP connection ke IP 185.xxx.xxx.xxx:4444
  2. Download payload tambahan dari URL http://103.xxx.xxx.xxx/update.dat
  3. Execute payload entirely in memory (Invoke-Expression)

Ini klasik fileless malware via PowerShell.

Langkah 4 — Konfirmasi dengan Network Evidence

Jalankan windows.netscan:

python3 vol.py -f server-memory.dmp windows.netscan > netscan.txt
grep "2844" netscan.txt

Hasil: ada koneksi ESTABLISHED dari PID 2844 ke 185.xxx.xxx.xxx:4444. Cocok dengan command line PowerShell.

Langkah 5 — Cari Jejak Injeksi

Saya curiga PowerShell ini cuma stager — yang download malware utama dan nginject ke process lain. Jalankan windows.malfind --pid 2844:

python3 vol.py -f server-memory.dmp windows.malfind --pid 2844

Nemu injected code di beberapa memory region PowerShell. Tapi yang lebih menarik: saya juga cek process lain, terutama svchost.exe dengan PID 780 (ini process yang terlihat normal):

python3 vol.py -f server-memory.dmp windows.malfind --pid 780

Dan… nemu injected code juga! Artinya PowerShell awal cuma dipakai buat download dan inject payload ke svchost.exe. Setelah injection berhasil, PowerShell-nya mungkin udah mati (tapi jejaknya masih ada di memory), dan operasi malware berlanjut dari dalam svchost.exe yang kelihatan normal.

Langkah 6 — Dump Injected Code untuk Analisis Lebih Lanjut

Dump memory region yang di-inject untuk dianalisis lebih lanjut (misalnya dengan reverse engineering):

python3 vol.py -f server-memory.dmp -o dumpdir windows.dumpfiles --pid 780 --virtaddr 0x12345678

Region yang di-dump bisa dianalisis dengan tools malware analysis seperti IDA Pro, Ghidra, atau x64dbg. Tapi ini udah masuk ke advanced malware analysis — di luar scope artikel ini.

Hasil Akhir

Dari analisis ini, saya bisa menyimpulkan:

  1. Attacker masuk lewat WMI (kemungkinan dari sistem lain yang sudah kena)
  2. WMI nge-spawn PowerShell dengan encoded command
  3. PowerShell download dan eksekusi payload in-memory, establish reverse shell ke C2 server
  4. Payload nginject ke svchost.exe untuk stealth dan persistence
  5. Malware exfiltrate data pelanggan secara berkala ke C2 server
  6. Tidak ada file malware di disk — seluruh operasi dilakukan di memory

Setelah investigasi selesai, tim IT melakukan rebuild server, memperkuat WMI security, dan meng-enable PowerShell logging yang lebih detail. Kasus selesai.

Plugin Volatility Lain yang Wajib Kamu Tahu

Selain plugin dasar di atas, ada beberapa plugin lanjutan yang sangat berguna:

windows.dlllist — Lihat DLL yang Di-load

python3 vol.py -f memory.dmp windows.dlllist --pid 4567

Melihat semua DLL yang di-load oleh suatu proses. Attacker sering make teknik DLL hijacking — naruh malicious DLL di lokasi yang bakal di-load oleh aplikasi legitimate.

windows.handles — Lihat Handle yang Dipegang

python3 vol.py -f memory.dmp windows.handles --pid 4567

Handle adalah reference ke resource (file, registry key, process, thread, mutex, dll). Handle yang mencurigakan: process yang megang handle ke file sensitif (misalnya \Device\HarddiskVolume1\Windows\System32\config\SAM).

windows.registry.printkey — Baca Registry dari Memory

python3 vol.py -f memory.dmp windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"

Registry sering dipake attacker buat persistence. Plugin ini bisa baca registry dari memory tanpa perlu mount registry hive.

windows.hashdump — Dump Password Hashes

python3 vol.py -f memory.dmp windows.hashdump

Dump password hashes dari SAM database yang ada di memory. Berguna buat lihat user apa aja yang ada di sistem dan (setelah cracking) password apa yang dipakai.

windows.envars — Environment Variables

python3 vol.py -f memory.dmp windows.envars --pid 4567

Melihat environment variables dari suatu proses. Kadang attacker nyimpen credential di environment variable.

linux.pslist / linux.pstree / linux.proc — Ekivalen untuk Linux

Volatility 3 juga support analisis memory Linux. Plugin-nya semakin lengkap di setiap versi.

Pitfalls dan Kesalahan Umum Pemula

Setelah bertahun-tahun ngajarin junior di tim, ini kesalahan yang paling sering saya lihat:

1. Memory Dump yang Corrupt

Penyebab: tools capture yang nggak kompatibel dengan OS target, atau dump diambil saat sistem dalam keadaan nggak stabil (BSOD, heavy load). Selalu test tools kamu di environment test dulu sebelum dipake di production.

2. Profil yang Salah (Volatility 2)

Kalau masih pakai Volatility 2: profil yang nggak cocok bisa menghasilkan output yang misleading atau bahkan crash. Selalu run imageinfo dulu, dan pastiin profilnya persis sama dengan OS target.

3. Cuma Ngandelin Satu Sumber Bukti

Jangan cuma analisis memory. Cross-reference dengan bukti dari disk, log, network, dan endpoint telemetry. Memory forensics adalah satu bagian dari puzzle yang lebih besar.

4. Interpretasi yang Terburu-buru

Proses dengan nama aneh belum tentu malicious. Proses dengan nama normal belum tentu benign. Selalu verifikasi dengan multiple indicators (command line, network connections, parent process, path, DLL list, dll) sebelum menyimpulkan.

5. Nggak Dokumentasi

Males nulis = investigasi yang nggak bisa dipertanggungjawabkan. Catat setiap command yang kamu jalankan, timestamp, dan hasilnya. Kalau nanti kamu dipanggil ke pengadilan, dokumentasi adalah penyelamat kamu.

Penutup — Memory Tidak Pernah Bohong

Memory forensics dengan Volatility itu, pada akhirnya, tentang kerendahan hati. Tentang mengakui bahwa sekeras apa pun kamu nyari di disk, selalu ada kemungkinan bahwa jawabannya justru ada di tempat yang selama ini kamu abaikan: RAM. RAM adalah saksi yang mencatat semua yang terjadi di sistem, tanpa filter, tanpa bisa memalsukan diri. Dia memang volatile — mudah hilang — dan justru karena itulah dia sangat berharga.

Setelah 8 tahun lebih di dunia ini, saya makin yakin bahwa kemampuan memory forensics adalah salah satu skill yang paling membedakan investigator yang “bisa” dengan investigator yang “hebat”. Dan kabar baiknya: kamu nggak perlu tools mahal untuk belajar. Volatility gratis. RAM dump bisa kamu ambil dari VM lab sendiri. Plugin-nya lengkap. Dokumentasinya ada. Tinggal kemauan untuk duduk, baca, dan praktek.

Jadi, next time kamu dapet kasus di mana semua tools bilang “clean” tapi kamu yakin ada yang nggak beres — ingat artikel ini. Capture RAM-nya. Jalankan Volatility. Dan biarkan memory bercerita. Karena di dalam chip RAM yang kelihatannya cuma lempengan hijau kecil itu, tersimpan rahasia yang jauh lebih besar daripada yang bisa ditampung hard disk manapun.

Banditz Cyber Verified
Security Researcher at IT Security
Banditz Cyber adalah security researcher di IT Security yang berfokus pada keamanan web, analisis kerentanan, dan edukasi keamanan siber. Melalui tulisannya, ia membagikan panduan praktis, riset teknis, dan wawasan keamanan digital dengan pendekatan yang mudah dipahami.
View all posts