Malware & Analisis

Analisis Statis Malware — Teknik Dasar Tanpa Menjalankan Kode Berbahaya

Belajar analisis statis malware dari dasar: teknik membaca PE header, strings analysis, hash lookup, dan identifikasi malware tanpa perlu menjalankannya. Aman untuk pemula.

Luthfi Ahmad Paradiansyah
Luthfi Ahmad Paradiansyah
Tampilan tool analisis statis malware dengan PE header dan import table yang disorot kaca pembesar
Tampilan tool analisis statis malware dengan PE header dan import table yang disorot kaca pembesar

Di artikel pengantar malware sebelumnya, gue udah kenalin dua pendekatan utama: analisis statis (tanpa menjalankan) dan analisis dinamis (dengan menjalankan). Sekarang kita deep dive ke yang pertama: analisis statis.

Kenapa analisis statis duluan? Dua alasan:

  1. Lebih aman. Lo nggak perlu menjalankan malware-nya, jadi nggak ada risiko infeksi.
  2. Lebih cepat. Dalam hitungan detik, lo bisa dapet gambaran awal: file ini mencurigakan atau nggak?

Analisis statis itu kayak lo liatin orang dari jauh sebelum memutuskan untuk ngobrol. Lo cek penampilannya, gerak-geriknya, bawaannya — semua tanpa interaksi langsung. Kalau dari jauh udah keliatan mencurigakan, lo nggak perlu deket-deket.

Di artikel ini, gue bakal pandu lo step-by-step melakukan analisis statis. Dari yang paling simpel (cek hash) sampai yang lebih advanced (baca assembly — dikit aja, tenang). Siap? Buka laptop lo, dan kita mulai.


Apa Itu Analisis Statis?

Analisis statis adalah teknik menganalisis malware dengan memeriksa file-nya saja — tanpa mengeksekusi atau menjalankannya. Lo cuma "liat-liat" isi file: metadata, strings, header, import/export functions.

Informasi yang bisa lo dapet dari analisis statis:

  • Tipe file sebenarnya (jangan tertipu ekstensi).
  • Kapan file dikompilasi (timestamp).
  • Apakah file di-packing atau di-obfuscate.
  • Fungsi-fungsi sistem apa yang dipanggil (API calls).
  • String-string yang tertanam di dalam binary (URL, IP, path, pesan).
  • Apakah file ini sudah dikenal sebagai malware (hash lookup).

Dengan informasi ini, lo bisa menjawab pertanyaan: "Haruskah gue lanjut ke analisis dinamis, atau ini cuma false positive?"


Langkah 1: Cek Tipe File Sebenarnya

Jangan percaya ekstensi. File bernama invoice.pdf.exe jelas mencurigakan. Tapi gimana kalau namanya invoice.pdf dengan icon PDF juga?

Di Linux, lo bisa pakai perintah file:

file mencurigakan.pdf

# Output (contoh malware):
# mencurigakan.pdf: PE32 executable (GUI) Intel 80386, for MS Windows

Lho? invoice.pdf ternyata executable Windows, bukan PDF! Ini trik lama: attacker mengganti icon dan ekstensi untuk mengelabui user.

Di Windows, lo bisa pakai tool seperti Detect It Easy atau Exeinfo PE yang bisa mendeteksi tipe file, compiler, dan packer.

Contoh output Detect It Easy:

Type: PE32
Compiler: Microsoft Visual C++ 8.0
Linker: Microsoft Linker 9.0
Packer: UPX 3.96

Nah, kalau di output ada tulisan "Packer: UPX" — lanjut ke langkah berikutnya. File ini di-pack untuk menyembunyikan isinya.


Langkah 2: Cek Hash File

Hash adalah fingerprint digital sebuah file. Dua file dengan konten yang persis sama akan punya hash yang sama. Begitu isinya berubah sedikit aja — hash-nya berubah total.

Generate hash MD5, SHA-1, dan SHA-256:

# Linux
md5sum mencurigakan.exe
sha1sum mencurigakan.exe
sha256sum mencurigakan.exe

# Windows (PowerShell)
Get-FileHash mencurigakan.exe -Algorithm MD5
Get-FileHash mencurigakan.exe -Algorithm SHA256

Setelah dapet hash, cek di:

  1. VirusTotal — upload hash atau file-nya. Lihat berapa engine yang mendeteksi sebagai malicious.
  2. MalwareBazaar — database sampel malware dari abuse.ch.
  3. Hybrid Analysis — platform analisis malware gratis.

PENTING: Kalau lo upload file ke VirusTotal, file itu jadi publik. Artinya, attacker bisa tau kalau malware-nya udah ketahuan (dan mungkin langsung ganti infrastruktur). Jadi kalau ini malware targeted (nyasar organisasi spesifik), lebih baik cek hash aja dulu — jangan upload file-nya.


Langkah 3: Strings Analysis

Ini teknik paling simpel tapi sering kasih hasil mengejutkan. Strings adalah teks yang bisa dibaca manusia dalam file binary. Malware sering punya strings yang "ngomong sendiri":

  • URL Command & Control (C2) server: http://evil.com/panel/gate.php
  • Nama file atau path: C:\Windows\Temp\payload.dll
  • Pesan error atau debug: Connection failed, retrying...
  • Registry keys: Software\Microsoft\Windows\CurrentVersion\Run
  • Nama API function: CreateFileA, RegSetValueEx, InternetOpenUrl
  • Pesan ke korban: Your files have been encrypted!

Cara Ekstrak Strings:

Linux:

strings mencurigakan.exe > strings_output.txt

# Cari pattern spesifik
strings mencurigakan.exe | grep -i "http"
strings mencurigakan.exe | grep -i "cmd.exe"
strings mencurigakan.exe | grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

Windows:

  • Pakai strings.exe dari Sysinternals (Microsoft).
  • Atau pakai BinText — GUI kecil untuk ekstrak strings.
  • Atau pestudio — otomatis highlight strings mencurigakan.

Yang Perlu Diwaspadai:

Jangan langsung percaya semua strings yang lo temuin. Attacker bisa:

  • Encode/encrypt strings — jadi kelihatan acak.
  • Masukin fake strings — URL palsu buat ngecoh investigator.
  • Gunakan string stacking — gabungin potongan string yang di-decode saat runtime.

Tapi untuk screening awal, strings analysis tetap powerful.


Langkah 4: Analisis PE Header

Untuk file Windows executable (.exe, .dll, .sys), struktur file-nya mengikuti format PE (Portable Executable). PE header itu kayak "KTP"-nya executable — isinya metadata penting.

Informasi yang Bisa Diambil dari PE Header:

1. Timestamp Kompilasi

Kapan file ini dibuat? Di pestudio atau Detect It Easy, lo bisa lihat "Compile Time". Kadang timestamp-nya aneh:

  • Tanggal di masa depan → mungkin malware yang sengaja ngubah timestamp.
  • Tanggal 1992 → mungkin file sistem Windows yang sah (tapi bisa juga dipalsukan).

2. Sections

PE file dibagi jadi beberapa section. Yang penting:

  • .text — kode executable. Ukurannya harus proporsional.
  • .data — data yang diinisialisasi.
  • .rdata — data read-only (import/export tables).
  • .rsrc — resource (icon, gambar, dialog).

Yang mencurigakan:

  • Section dengan nama aneh (.h4ck, .upx0, .upx1 — kemungkinan packed).
  • Section dengan permission RWX (Read-Write-Execute) — jarang ada di file normal.
  • Perbedaan besar antara "Raw Size" dan "Virtual Size" — bisa jadi indikasi malware injection.

3. Import Table

Ini bagian PALING PENTING dalam analisis statis. Import table berisi daftar fungsi API Windows yang dipanggil oleh executable. Dari sini, lo bisa nebak perilaku malware.

Contoh fungsi yang mencurigakan:

Fungsi Dugaan Perilaku
CreateFile, WriteFile, ReadFile Manipulasi file
RegSetValueEx, RegCreateKey Modifikasi registry (persistence!)
CreateProcess, ShellExecute, WinExec Menjalankan program lain
VirtualAlloc, VirtualProtect, CreateRemoteThread Process injection
InternetOpen, InternetConnect, URLDownloadToFile Komunikasi jaringan
CryptEncrypt, CryptDecrypt Enkripsi/dekripsi (ransomware!)
GetAsyncKeyState, SetWindowsHookEx Keylogging
OpenProcess, WriteProcessMemory Manipulasi proses lain

Kalau lo lihat kombinasi VirtualAlloc + WriteProcessMemory + CreateRemoteThread → hampir pasti ini malware yang melakukan process injection.

4. Resources

Bagian resource bisa menyimpan:

  • Ikon dan gambar (buat nyamar).
  • File executable lain (dropper).
  • Konfigurasi atau script.

Tool seperti Resource Hacker bisa nge-extract resource dari PE file.


Tools untuk Analisis Statis

1. pestudio (Windows, Gratis)

Ini tools wajib. Buka file, pestudio langsung kasih gambaran:

  • Indicator: warna merah/kuning/hijau untuk menandakan tingkat kecurigaan.
  • Import functions dengan highlight fungsi berbahaya.
  • Strings dengan highlight yang mencurigakan.
  • PE header lengkap.
  • VirusTotal integration (hash lookup).

UI-nya intuitif. Buat pemula, pestudio adalah starting point terbaik.

2. Detect It Easy (DIE) — Windows/Linux, Gratis

Lebih fokus ke deteksi tipe file, compiler, dan packer. Entropy analysis untuk mendeteksi obfuscation.

3. Exeinfo PE — Windows, Gratis

Mirip DIE. Bisa mendeteksi ratusan jenis packer dan protector.

4. PE-bear — Windows, Gratis

PE viewer yang lebih detail dari pestudio. Cocok untuk yang udah lebih advanced.

5. FLOSS — Windows/Linux, Gratis

FLARE Obfuscated String Solver dari Mandiant/FireEye. Lebih canggih dari strings biasa. Bisa otomatis decode string yang di-obfuscate.


Deteksi Packed Malware

Packer adalah tools yang mengompresi atau mengenkripsi executable untuk memperkecil ukuran atau menyembunyikan kode. Malware hampir selalu di-packing untuk menghindari deteksi.

Ciri-ciri File yang Di-packing:

  1. Section name aneh.upx0, .aspack, .petite.
  2. Entropy tinggi — data terlihat acak (terenkripsi). Tools seperti Detect It Easy bisa menghitung entropy.
  3. Import table sedikit — cuma LoadLibrary dan GetProcAddress (karena malware bakal dynamic load fungsi lain setelah di-unpack).
  4. Virtual Size jauh lebih besar dari Raw Size — section akan mengembang di memori setelah di-unpack.

Packer yang Umum Dipakai Malware:

  • UPX — open source, gampang di-unpack.
  • Themida — komersial, susah di-unpack.
  • VMProtect — komersial, ada virtual machine-nya sendiri.
  • Custom packer — dibuat sendiri oleh attacker.

Cara Unpack:

Untuk UPX: tinggal upx -d file.exe. Untuk packer lain... itu urusan reverse engineering yang lebih dalem. Kita bahas di artikel terpisah.


Studi Kasus Kecil: Analisis Statis Sampel

Anggap lo dapet file update_patch.exe dari email phishing. Ini step-by-step analisisnya:

Step 1: Cek tipe file

file update_patch.exe
# PE32 executable

Ok, emang executable.

Step 2: Cek hash di VirusTotal

SHA256: a1b2c3...
Detection: 45/72 engines flagged as malicious
Labels: Trojan, AgentTesla, Keylogger

Dah jelas. Tapi anggap aja ini sampel baru (0 detection) — lanjut.

Step 3: Strings

http://attacker-c2.xyz/gate.php
Software\Microsoft\Windows\CurrentVersion\Run
cmd.exe /c

Ada URL mencurigakan, registry persistence, dan command execution. Udah merah semua.

Step 4: PE Header — Import Table

GetAsyncKeyState  → keylogging!
InternetOpen      → komunikasi jaringan!
RegSetValueEx     → persistence!
CreateFile        → manipulasi file!

Dari import table aja udah bisa disimpulkan: ini keylogger yang ngirim hasil ke server attacker dan nambahin diri ke startup.

Konklusi: File ini MALICIOUS. Tidak perlu lanjut ke analisis dinamis kecuali lo butuh detail lebih (misalnya: apa yang di-log? Dikirim ke mana tepatnya?).

Dalam 5 menit, dengan tools gratis — lo udah bisa menentukan file ini berbahaya. That's the power of static analysis.


Keterbatasan Analisis Statis

Jujur aja: analisis statis nggak bisa jawab semuanya.

  1. Packed/Obfuscated malware — kalau file di-packed dengan enkripsi kuat, strings dan import table nggak bakal kasih info berguna. Lo harus unpack dulu.

  2. Behavior dinamis — lo nggak bisa tau apa yang bakal dilakuin malware tanpa menjalankannya. File apa yang dienkripsi? Ke mana data dikirim?

  3. False negative — malware yang canggih bisa lolos dari semua indikator statis.

  4. Dependency — malware mungkin butuh argument command-line tertentu atau file konfigurasi sebelum aktif. Analisis statis nggak bisa reveal ini.

Makanya, analisis statis adalah screening awal. Kalau hasilnya mencurigakan → lanjut ke analisis dinamis (artikel berikutnya!).


Checklist Analisis Statis

Ini yang harus lo lakukan setiap kali dapet file mencurigakan:

  • Cek tipe file sebenarnya (file command atau DIE)
  • Generate hash (MD5, SHA-1, SHA-256) dan cek di VirusTotal
  • Ekstrak strings dan cari IOCs (URL, IP, file path, registry keys)
  • Cek PE header: timestamp, sections, import table, resources
  • Cek apakah di-packed (section names, entropy, import count)
  • Kalau di-packed dengan UPX → coba unpack
  • Catat semua IOCs (Indicators of Compromise) yang ditemukan
  • Ambil keputusan: lanjut analisis dinamis, atau cukup sampai sini?

Penutup

Analisis statis adalah skill fundamental yang harus dikuasai setiap malware analyst. Lo bisa dapet banyak informasi cuma dengan "liat-liat" — tanpa risiko menginfeksi sistem lo sendiri.

Di artikel berikutnya, kita bakal naik level ke analisis dinamis — menjalankan malware di sandbox yang aman, mengamati perilakunya, dan menangkap semua yang dia lakukan. Dari sini lo bakal tau persis: malware ini ngapain aja? Data apa yang dikirim? Bagaimana cara kerjanya?

Seperti biasa, kalau ada yang mau ditanyakan → Kontak. Cek juga artikel terkait di Malware & Analisis.

Sampai ketemu di sandbox!

Tips dari Pengalaman Lapangan

Sebelum gue tutup, ada beberapa tips dari pengalaman bertahun-tahun ngelakuin analisis statis yang mungkin berguna buat lo:

1. Jangan skip hash lookup. Gue pernah nemu malware yang keliatannya sophisticated banget — packed, obfuscated, import table kosong. Ternyata setelah cek hash di VirusTotal: 55/72 engine detect, community comments lengkap dengan analisis detail. Semua kerjaan gue yang 2 jam itu sebenarnya udah dikerjain orang lain. Lesson learned: selalu cek hash dulu.

2. Strings adalah teman terbaik lo. Bahkan malware yang di-packed sekalipun kadang ninggalin jejak di strings. URL, IP, mutex name, registry key — seringkali cukup buat identifikasi malware family. Jangan cuma jalanin strings sekali. Coba dengan encoding berbeda: ASCII, Unicode (Wide), dan UTF-8.

3. Import table hampir nggak pernah bohong. Malware bisa nyembunyiin string, tapi dia nggak bisa nyembunyiin API calls yang dia butuhin (kecuali pakai dynamic loading). Kalau lo lihat CryptEncrypt + CreateFile + WriteFile + DeleteFile = hampir pasti ransomware. GetAsyncKeyState + InternetOpen = keylogger. VirtualAlloc + WriteProcessMemory + CreateRemoteThread = process injection. Pattern import table adalah signature paling reliable dalam analisis statis.

4. Bikin library referensi. Setiap kali lo analisis malware, catat: malware family, hash, IOCs, dan notes. Lama-lama lo punya library yang bisa lo pakai untuk quick comparison. "Oh, import table ini mirip Emotet, coba cek catatan gue tentang Emotet..."

5. Statis dan dinamis itu komplementer. Jangan merasa "gue harus selesaiin semua analisis statis dulu baru boleh lanjut ke dinamis". Kadang, setelah 5 menit statis, lo udah tau ini malware. Langsung aja ke dinamis. Tapi kadang juga, setelah analisis dinamis, lo balik lagi ke statis untuk konfirmasi temuan. Fleksibel aja.

Sekian tips dari gue. Semoga mempercepat learning curve lo di dunia malware analysis. Ingat: nggak ada malware yang sempurna. Selalu ada jejak — tinggal lo cukup telaten untuk menemukannya atau nggak.

Enjoyed this article?

Share it with your network

Copied!
Luthfi Ahmad Paradiansyah

Written by

Luthfi Ahmad Paradiansyah

Saya adalah CEO Forendigi, perusahaan digital yang berfokus pada solusi forensik digital modern. Berbekal pengalaman mendalam di bidang keamanan siber, analisis data, dan investigasi teknologi, ia berhasil membawa Forendigi menjadi mitra terpercaya bagi institusi, korporasi, serta aparat penegak hukum. Di bawah kepemimpinannya, perusahaan mengembangkan inovasi untuk mengungkap bukti digital dengan akurasi tinggi, menjaga integritas data, serta meningkatkan keamanan informasi. Visi strategis dan kepemimpinan Saya menempatkan Forendigi sebagai pelopor layanan forensik digital yang profesional, adaptif, dan berstandar internasional.