Jump to content

Packed Malware: Difference between revisions

From Haidhi Wiki
Created page with "Packer merupakan sebuah tools untuk mengkompres executable file dan yang ada di dalamnya seperti code, data, dan informasi lain seperti import table. Sebuah executable file yang di-packed akan me-decompress secara otomatis ketika file ini dieksekusi. Banyak malware yang menggunakan teknik ini untuk mengelabui anti-virus, khususnya untuk membypass static signature-based detection. Untuk sample malware yang dipack menggunakan UPX dapat didownload [https://bazaar.abuse.ch/..."
 
No edit summary
 
Line 51: Line 51:
#* Jika entry point mengarah ke section terakhir, maka section tersebut akan memiliki izin EXECUTABLE, karena berisi kode unpacking.
#* Jika entry point mengarah ke section terakhir, maka section tersebut akan memiliki izin EXECUTABLE, karena berisi kode unpacking.


[[File:Packed section.jpg|1000px]]





Latest revision as of 03:21, 21 March 2025

Packer merupakan sebuah tools untuk mengkompres executable file dan yang ada di dalamnya seperti code, data, dan informasi lain seperti import table. Sebuah executable file yang di-packed akan me-decompress secara otomatis ketika file ini dieksekusi.

Banyak malware yang menggunakan teknik ini untuk mengelabui anti-virus, khususnya untuk membypass static signature-based detection. Untuk sample malware yang dipack menggunakan UPX dapat didownload di sini

Teknik Mengidentifikasi Packed Malware

Static Signature

Salah satu cara untuk mengidentifikasi apakah suatu file eksekusi (executable file) telah dipacking adalah dengan menggunakan static signature. Setiap packer memiliki karakteristik unik yang dapat dikenali, misalnya:

  • UPX → Mengubah nama section dalam file PE menjadi UPX1, UPX2, dll.
  • ASPack → Menamai section terakhir dalam file PE sebagai .aspack.

Cara ini dapat dilakukan menggunakan tools untuk analisis file PE seperti PEiD dan CFF Explorer

Section Header

Setiap file PE (Portable Executable) yang tidak dipacking biasanya memiliki section names standar, seperti:

  • .text → Berisi kode program utama.
  • .data → Menyimpan data global.
  • .idata → Menyimpan informasi impor (import table).
  • .rsrc → Berisi resource seperti ikon, gambar, atau dialog.
  • .reloc → Berisi informasi relocation untuk pengalamatan memori.

Namun, file yang telah dipacking cenderung memiliki section names yang berbeda atau tidak biasa, misalnya: -

  • UPX0, UPX1 → Biasanya digunakan oleh UPX (Ultimate Packer for Executables).
  • .aspack → Digunakan oleh ASPack.
  • .stub → Umumnya mengandung kode unpacker.

Identifikasi PE File yang Dipacking Melalui Entry Point dan Section Permissions

Sebagian besar packer bekerja dengan cara mengompresi bagian-bagian file PE seperti .text; .data; dan import table

Setelah dikompresi, packer akan menambahkan section baru di akhir yang berisi stub (kode unpacking) untuk mengekstrak dan menjalankan kode asli saat runtime.

Mengenali File yang Dipacking dari Entry Point dan Section Permissions

  1. Entry Point Tidak Berada di Section Pertama
    • Biasanya, file PE yang tidak dipacking akan mulai dieksekusi dari section pertama, yaitu .text atau .code.
    • Jika sebuah file PE dipacking, entry point (EP) biasanya menunjuk ke salah satu section terakhir, yang berisi kode unpacking.
  2. Permissions pada Section Pertama
    • Pada file PE normal, section pertama (.text / .code) memiliki izin EXECUTABLE.
    • Pada file PE yang dipacking, section pertama mungkin memiliki izin READWRITE, karena kode utama belum didekripsi dan akan dipulihkan saat runtime.
  3. Permissions pada Section yang Mengandung Entry Point
    • Jika entry point mengarah ke section terakhir, maka section tersebut akan memiliki izin EXECUTABLE, karena berisi kode unpacking.



Import Table

Dalam file PE (Portable Executable), import table biasanya berisi daftar API dari sistem library (seperti kernel32.dll, user32.dll, advapi32.dll, dll) serta library pihak ketiga. Namun, dalam file PE yang dipacking, import table akan jauh lebih kecil dibandingkan file asli.

Kenapa Import Table di Packed PE File Kecil?

  • Packer menghapus sebagian besar API dari import table dan hanya menyisakan beberapa API penting.
  • Ini dilakukan karena packer akan memuat ulang semua API secara manual saat runtime setelah unpacking selesai.
  • API yang masih tersisa biasanya cukup untuk memastikan Windows Loader tetap bisa menjalankan program, karena Windows Loader akan otomatis memuat library yang masih memiliki referensi API.

Bagaimana Packer Memuat API yang Dihapus?

  1. Saat program berjalan, stub unpacker dalam PE file akan mulai bekerja.
  2. Stub ini akan menggunakan GetProcAddress untuk memuat ulang semua API yang telah dihapus.
  3. Setelah itu, executable akan berjalan seperti biasa, tapi dengan import table yang sudah direkonstruksi ulang di runtime.


Teknik Unpack Malware

  • Menggunakan Official Unpacker

Contoh jika packer nya adalah UPX, kita dapat menggunakan tool official dari UPX nya langsung dengan menjalankan:

upx -d malware.exe
  • Generic Unpacker

Generic unpackers adalah debugger yang telah diprogram sebelumnya untuk mendekompresi atau mengekstrak file yang telah dipadatkan oleh packer tertentu. Alat ini dirancang untuk mengotomatiskan proses unpacking yang biasanya dilakukan secara manual, sehingga mempercepat analisis file biner yang diproteksi oleh packer. Keunggulan generic unpackers adalah kemampuannya untuk bekerja dengan berbagai jenis packer, bahkan yang tidak secara khusus dirancang untuk mengekstrak file mereka sendiri. Namun, ada kelemahan utama dalam penggunaan alat ini, yaitu kemungkinan malware dapat mendeteksi atau menghindari proses unpacking. Jika hal ini terjadi, malware bisa dieksekusi secara langsung di mesin pengguna, yang berpotensi menyebabkan infeksi sistem.