0Pricing
Cyber Security Academy · Pelajaran

Perburuan dengan String dan Heksadesimal

Mencocokkan artefak perangkat lunak berbahaya.

Perburuan dengan String dan Heksadesimal adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Dari Sampel ke rule

Pencarian dimulai dari sebuah sampel. Anda mengekstrak artefak yang khas, menentukan mana yang stabil, lalu menuangkannya ke dalam rule yang menangkap keluarga tersebut tanpa menandai berkas jinak.

Alurnya: melakukan triase terhadap sampel, mengambil string dan ciri struktural, memisahkan sinyal dari derau, menyusun rancangan rule, lalu mengujinya terhadap keluarga tersebut maupun kumpulan berkas bersih sebelum menerapkannya.

Mengekstrak String Kandidat

Mulailah dengan utilitas strings untuk mencantumkan rangkaian yang dapat dicetak, mencakup teks ASCII dan UTF-16 (lebar). Malware Windows sering menyimpan string dalam bentuk lebar.

Pindai keluaran untuk mencari URL C2, nama mutex, jalur registri, pesan kesalahan khusus, jalur PDB, dan teks yang sangat spesifik. Abaikan string waktu eksekusi dan kompilator yang umum.

strings -a sample.bin > ascii.txt
strings -e l sample.bin > wide.txt   # UTF-16LE
grep -iE 'http|mutex|\\\\pipe\\\\|\.pdb' ascii.txt wide.txt

Memilih String Stabil

Tidak setiap string perlu dimasukkan ke dalam rule. Utamakan artefak yang sulit diubah oleh pembuatnya tanpa usaha:

  • Nama mutex atau pipe yang ditanamkan dan unik bagi keluarga tersebut
  • Penanda protokol khusus atau kunci konfigurasi
  • Pesan debug atau panik yang tidak biasa
  • Jalur PDB tertanam yang mengungkap lingkungan pembuatan

Hindari kode bawaan pustaka, nama antarmuka pemrograman aplikasi yang umum, dan string versi yang digunakan bersama oleh perangkat lunak sah karena dapat menghasilkan positif palsu.

strings:
  $mutex = "Global\\Zx7yQ_lock" wide
  $cfgkey = "x0r_cfg_begin" ascii
  $pdb = "C:\\build\\loader\\release\\loader.pdb"

Mengatasi Pengaburan Sederhana

Banyak keluarga malware menyandikan string dengan XOR atau cara ringan lainnya. Jika string teks jelas hanya sedikit, carilah bentuk tersandi atau rutin dekodernya.

Anda dapat menghitung bita yang disandikan dengan XOR dari teks biasa yang diketahui lalu mencocokkannya, atau menggunakan pengubah xor YARA untuk mencocokkan string dengan kunci XOR satu bita apa pun secara otomatis.

strings:
  // matches "http://" under any single-byte XOR key
  $u = "http://" xor
  // or a fixed key range
  $k = "config" xor(0x01-0xff)

Pencarian dengan Pola Heksadesimal

Saat string disamarkan tetapi kode tidak, cocokkan pola bita dari logika malware itu sendiri: stub dekripsi, perulangan pembongkaran, atau konstanta unik.

Disasembling sampel, temukan rangkaian instruksi yang khas, lalu terjemahkan opcode-nya menjadi string heksadesimal. Jadikan bita yang bervariasi sebagai karakter pengganti (alamat, nilai langsung) agar pola tetap berlaku setelah kompilasi ulang.

strings:
  // XOR decrypt loop with wildcarded counter/address
  $decrypt = { 8A ?? 34 ?? 88 ?? 4? 4? 75 ?? }

Karakter Pengganti dan Lompatan dalam Praktik

Seni pencarian heksadesimal adalah menentukan bita mana yang akan dijadikan karakter pengganti. Terlalu kaku dan kompilasi ulang akan merusak rule; terlalu longgar dan rule akan cocok dengan semuanya.

  • Jadikan offset relatif dan nilai langsung yang diubah kompilator sebagai karakter pengganti
  • Pertahankan opcode, karena algoritmanya stabil
  • Gunakan lompatan [n-m] saat panjang instruksi bervariasi

Usahakan pola cukup panjang untuk menjadi unik (sering kali 8+ bita bermakna), tetapi tetap fleksibel pada bagian yang memang perlu.

strings:
  $stub = { 55 8B EC 83 EC [1-4] E8 ?? ?? ?? ?? 33 C0 }

Indikator Struktural dan PE

Ciri statis di luar bita mentah dapat menghasilkan kondisi yang kuat dan rendah derau. Dengan menggunakan modul pe, Anda dapat mencocokkan:

  • imphash — hash tabel impor, yang sering stabil di berbagai build suatu keluarga
  • nama bagian — pemaket khusus menambahkan bagian yang khas
  • imports tertentu — VirtualAllocEx + WriteProcessMemory + CreateRemoteThread menandakan injeksi
import "pe"
condition:
  pe.imphash() == "4e3a9f..." or
  for any s in pe.sections : ( s.name == ".x0rsec" )

Entropy sebagai Sinyal

Wilayah yang dipaketkan atau dienkripsi memiliki entropy tinggi. Modul math mengukurnya, sehingga Anda dapat menandai sampel yang bagian muatannya tampak terenkripsi, ciri khas pemaket.

Entropy saja menghasilkan banyak derau (pemasang terkompresi juga memiliki entropy tinggi), jadi gabungkan dengan indikator lain alih-alih memicu peringatan hanya berdasarkan entropy.

import "math"
condition:
  math.entropy(0, filesize) >= 7.2 and $loader_stub

Menggabungkan Indikator

Rule yang paling kuat memerlukan beberapa indikator yang saling independen, sehingga tidak ada satu kebetulan pun yang memicu kecocokan. Padukan string, pola kode, dan ciri struktural.

Kondisi berlapis ini tahan terhadap positif palsu (semua bagian harus cocok) dan pengelakan (pembuatnya harus mengubah beberapa ciri sekaligus).

condition:
  uint16(0) == 0x5A4D and
  filesize < 800KB and
  $mutex and
  $decrypt and
  pe.imports("kernel32.dll", "CreateRemoteThread")

Penamaan, Metadata, dan Penerapan Versi

Rule pencarian hanya berguna jika orang lain dapat mempercayai dan memeliharanya. Berikan setiap rule nama yang jelas dan menggunakan ruang nama, serta meta yang lengkap.

  • Catat nilai hash sampel yang menjadi dasar pembuatan rule
  • Catat keluarga, pembuat, tanggal, dan referensi
  • Naikkan bidang versi saat Anda menyempurnakan logika

Saat rule aktif berbulan-bulan kemudian, metadata ini memberi tahu penanggap maknanya dan seberapa besar rule itu dapat dipercaya, sehingga pencarian sekali pakai berubah menjadi deteksi yang tahan lama dan dapat dibagikan.

meta:
  family = "X0rLoader"
  author = "ir-team"
  date = "2026-06-04"
  hash = "9f1c...e2"
  version = "2"

Uji Sebelum Memercayai

Selalu validasi rule baru terhadap dua kumpulan data:

  • Positif benar — setiap sampel keluarga yang diketahui harus cocok
  • Perangkat lunak bersih — kumpulan besar yang bersih (biner sistem, aplikasi umum) harus TIDAK cocok

Satu positif palsu pada DLL Windows dapat mengarantina berkas penting di seluruh lingkungan. Jalankan, hitung, tinjau kegagalan dan kecocokan, lalu sempurnakan sebelum menerapkannya secara luas.

yara -r family.yar /malware_corpus/   # expect all to hit
yara -r family.yar /clean_corpus/     # expect zero hits

Pemeriksaan Cepat

Pilih indikator yang paling tangguh.

Ringkasan

Pencarian YARA praktis dari awal hingga akhir:

  • Ekstrak string ASCII dan lebar; pertahankan artefak yang stabil (mutex, kunci konfigurasi, jalur PDB)
  • Atasi pengaburan ringan dengan pengubah XOR atau pola tersandi
  • Cocokkan pola bita kode (rutin dekripsi/pembongkaran) saat string tersembunyi
  • Jadikan bita yang mudah berubah sebagai karakter pengganti, pertahankan opcode, dan gunakan lompatan untuk panjang yang bervariasi
  • Gunakan imphash PE, bagian, imports dan entropy sebagai sinyal struktural
  • Gabungkan beberapa indikator untuk menahan positif palsu dan pengelakan
  • Selalu uji terhadap kumpulan data keluarga dan perangkat lunak bersih sebelum menerapkan

Berikutnya: menjalankan rule ini di seluruh lingkungan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Perburuan dengan String dan Heksadesimal” gratis?

Ya — teks lengkap “Perburuan dengan String dan Heksadesimal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Perburuan dengan String dan Heksadesimal”?

Mencocokkan artefak perangkat lunak berbahaya. Kamu berlatih Cyber Security Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cyber Security Academy?

Tidak diperlukan pengalaman sebelumnya. Cyber Security Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Perburuan dengan String dan Heksadesimal” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cyber Security Academy ini?

Ya. Setiap pelajaran Cyber Security Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Kegunaan YARA
  2. Sintaks Aturan YARA
  3. Perburuan dengan String dan Heksadesimal
  4. Meningkatkan Skala dan Mengotomatiskan Pemindaian
← Kembali ke Cyber Security Academy