9 poin oleh GN⁺ 2025-06-30 | 1 komentar | Bagikan ke WhatsApp
  • Malware sering memeriksa keberadaan perangkat keras seperti kipas CPU untuk menghindari berjalan di lingkungan virtual
  • Informasi kipas CPU dapat diperiksa melalui kelas Win32_Fan di WMI, dan data ini disimpan di SMBIOS
  • Untuk menyisipkan data SMBIOS kustom di Xen, diperlukan patch dan konfigurasi terpisah, serta kedua tabel Cooling Device(Type 27) dan Temperature Probe(Type 28) harus dikonfigurasi
  • Di QEMU/KVM, SMBIOS kustom dapat diterapkan dengan mudah melalui opsi -smbios tanpa patch tambahan
  • Dengan cara ini, mesin virtual dapat dibuat seolah-olah memiliki kipas CPU, sehingga bisa mencoba menghindari deteksi oleh malware

Mengapa melakukan ini?

  • Sebagian malware memeriksa ada atau tidaknya perangkat keras tertentu (misalnya kipas CPU) untuk memastikan apakah ia berjalan di lingkungan virtual
  • Mereka memeriksa perangkat keras melalui kelas WMI seperti Win32_Fan; jika informasi ini tidak ada, malware menilai sistem tersebut sebagai mesin virtual lalu menghindari eksekusi
  • Tujuannya adalah agar analis tidak bisa menganalisis malware tersebut
  • Ada berbagai kelas WMI lain seperti Win32_CacheMemory dan Win32_VoltageProbe, tetapi tulisan ini berfokus pada kipas CPU

Bagaimana komputer mengenali adanya kipas CPU?

  • Komputer membaca informasi SMBIOS untuk mengetahui keberadaan perangkat pendingin (kipas CPU)
  • Instance Win32_Fan disediakan oleh cimwin32.dll, dan DLL tersebut membaca informasi kipas dari entri type 27 di SMBIOS
  • Hooking DLL dan metode serupa juga dimungkinkan, tetapi memanipulasi SMBIOS secara langsung adalah pendekatan yang lebih baik

SMBIOS Type 27

  • SMBIOS type 27 berarti "Cooling Device"
  • Dengan utilitas dmidecode, data Cooling Device di SMBIOS dapat diperiksa secara langsung
  • Contoh:
    • Type: Chip Fan
    • Status: OK
    • Description: CPU Fan
    • Nominal Speed: 5600 rpm, dan sebagainya

Cara mengatur data SMBIOS kustom di Xen

  • Di Xen, data SMBIOS dalam bentuk biner dapat ditentukan langsung dengan menggunakan opsi smbios_firmware pada berkas konfigurasi domain
  • Buat file smbios.bin lalu sisipkan data Cooling Device(type 27)
  • Ukuran struktur SMBIOS (misalnya 24 byte) harus ditambahkan di depan sebagai integer little-endian 32-bit

Masalah: batasan override struktur

  • Xen membatasi override hanya pada struktur bernomor 0, 1, 2, 3, 11, 22, 39
  • Type 27 tidak diizinkan secara default, sehingga diperlukan patch pada source
  • Patch terkait pernah diusulkan di forum pengembang Xen, tetapi belum diterima secara resmi (perlu menerapkan patch dan build sendiri)

Type 28 juga diperlukan

  • Cooling Device(type 27) terhubung dengan Temperature Probe(type 28)
  • Jika tidak ada entri type 28 di SMBIOS, kelas Win32_Fan tidak akan tampil dengan benar
  • Agar dapat dikenali dengan tepat, data type 28 dari sistem host perlu diambil lalu ditambahkan ke smbios.bin

Struktur akhir smbios.bin

  • Memuat data Type 27 dan Type 28 sekaligus
  • Informasi ukuran (little-endian) disisipkan di depan tiap struktur
  • Contoh: bentuk seperti 18 00 00 00 ... (type 27) ... 29 00 00 00 ... (type 28) ...

Penerapan dan verifikasi di Xen

  • Setelah menyalakan mesin virtual Windows dengan perintah pembuatan domain, periksa di WMI apakah kelas Win32_Fan dikenali dengan benar
  • Jika muncul Description: Cooling Device dan Status: OK, berarti kipas CPU berhasil dikenali

Mengatur data SMBIOS di QEMU/KVM

  • Di QEMU/KVM, SMBIOS kustom dapat diatur dengan mudah menggunakan opsi -smbios file=path
  • Hanya data raw yang digunakan, tanpa informasi ukuran struktur
  • Data SMBIOS dari host juga bisa langsung dimanfaatkan

Referensi

  • Dokumentasi berkas konfigurasi domain Xen, catatan setup milik mcnewton, arsip patch Xen yang ditolak, System Management BIOS Reference, patch QEMU Anti Detection, dan lain-lain

1 komentar

 
GN⁺ 2025-06-30
Komentar Hacker News
  • Sebagai metode anti-malware yang baru, ada juga cara membeli PC dengan pendinginan pasif, dan juga disebutkan bahwa mengatur keyboard Rusia adalah tip untuk mencegah malware penipuan, lihat tautan terkait

    • Saya benar-benar menggunakan PC Linux dengan pendinginan pasif Streacom FC8 Evo dan keyboard Rusia, tetapi dari hasil perintah dmidecode, informasi perangkat pendingin masih tetap ada dan perangkat pendingin memang terdeteksi, data sensor juga menunjukkan informasi suhu

    • Bahkan jika memakai PC dengan pendinginan pasif, biasanya header kipas tetap ada di motherboard, jadi kemungkinan tidak akan banyak berbeda meski sebenarnya tidak ada yang terhubung

  • Disebutkan bahwa sebaiknya jangan memakai bahasa seperti “smol pp”, sambil menyoroti bahwa bahasa seperti itu mengandung ejekan terhadap tubuh

    • Di kota saya ada seseorang dengan pelat nomor kustom “SML PP”, saya tidak tahu alasannya

    • Ada pendapat bahwa meskipun memakai ungkapan “bahasa kita”, tetap tidak jelas siapa yang dimaksud dengan ‘kita’ kalau yang berkata begitu hanyalah seseorang di kolom komentar blog

  • Ada pendapat bahwa jika sistem operasi dibuat terlihat seperti mesin virtual, keamanan bisa meningkat dan itu juga bisa membantu peneliti; jika ingin pendekatan non-virtualisasi maka harus benar-benar mendapat izin, dan dengan cara ini malware mungkin tidak akan menargetkan pengguna biasa demi menghindari analisis peneliti, sehingga pada akhirnya semua pihak selain pembuat malware diuntungkan

    • Bukan sistem operasi biasa yang dibuat terlihat seperti VM, melainkan mesin virtual yang sama sekali tidak sadar bahwa dirinya sedang divirtualisasi; ada pendapat bahwa sistem lpars IBM bekerja seperti itu

    • Disebutkan bahwa dengan pendekatan seperti ini, perusahaan perangkat lunak anti-cheat juga akan dirugikan; saya pribadi ingin tahu dengan jelas di mana perangkat lunak saya berjalan, tetapi karena banyak pemain multiplayer lebih membenci pengguna cheater daripada kecurangan itu sendiri, perubahan nyata tampaknya sulit terjadi

    • Ada komentar bahwa di dunia pengembangan mobile, kerangka seperti ini sebenarnya sudah menjadi kenyataan

  • Saya belum pernah melihat deskripsi SMBIOS pada motherboard konsumen yang benar-benar cocok dengan hardware aslinya; malware yang memeriksa SMBIOS seperti ini mungkin bisa gagal pada 50% hardware nyata, tetapi jika bisa memblokir 100% VM atau debugger secara pasti, dari sudut pandang malware itu tetap sangat layak walau sesekali gagal, meski saya menduga pengukuran waktu akan lebih andal daripada pendekatan seperti ini

    • Ketidakcocokan antara deskripsi SMBIOS dan hardware nyata ini особенно parah pada box murah buatan Tiongkok; nilai kosong seperti “to be filled in by OEM” sering terlihat saat mengodekan image BIOS live, jadi hanya dari nilai-nilai itu saja situasinya sudah cukup lucu

    • Malware juga penuh bug; seperti kasus lama ketika ada bug pada kode jaringan sehingga virus menyebar hanya setengah dari kecepatan yang dimaksudkan, malware tidak harus menginfeksi semua perangkat untuk tetap menimbulkan kerusakan besar

    • Sekarang saya jadi penasaran bagaimana Linux mengenali kipas, apakah memakai ACPI atau EFI, saya tidak tahu, dan saya bertanya karena sebagian besar perangkat saya mendeteksi kipas/sensor dengan akurat

    • Ada pertanyaan apakah pemeriksaan SMBIOS ini benar-benar dilakukan oleh malware nyata, atau hanya digunakan pada sampel buatan peneliti

  • Trik malware yang memakai API untuk mempersulit analisis mungkin terasa lucu, tetapi sebagian besar pemanggilan API seperti ini mudah dideteksi lewat analisis statis, dan kalau binarinya tidak diobfuscate malah bisa jadi bumerang; program yang benar-benar punya tujuan biasanya didistribusikan dengan tanda tangan dari CA tepercaya, sehingga dari sisi analisis keamanan justru mudah terdeteksi sebagai perilaku mencurigakan; saat masih junior saya juga pernah menangkap penggunaan API seperti ini dengan pola regex, dan itu cukup efektif untuk menangkap malware dasar yang disebarkan secara massal

    • Belakangan ini malware juga cukup sering menandatangani file, jadi harapan bahwa pembuat malware tidak akan memberi tanda tangan pada biner mereka sudah tidak tepat lagi; sertifikat penandatanganan kode yang dicuri itu umum, dan disebut juga bahwa Microsoft enggan mencabut sertifikat karena khawatir software pelanggan yang ada akan rusak; malware juga sering memanfaatkan driver yang rentan untuk menembus kernel; akibatnya, dibanding biner kecil mencurigakan yang melakukan panggilan WMI, utilitas overclocking yang penuh celah bisa melakukan kueri yang sama tanpa banyak dicurigai; dalam praktiknya cara ini bukan untuk menghindari deteksi, melainkan agar payload malware tidak aktif di PC analis, sehingga bila terdeteksi, payload tahap kedua tidak diunduh dan aktivitas C&C yang bisa memicu serangan nyata ditunda

    • Dari sudut pandang keamanan, ada usulan bahwa bukankah lebih baik menjalankan semua perangkat lunak di dalam VM saja

    • Ada pendapat bahwa antivirus yang menilai apakah sesuatu malware hanya lewat analisis statis juga serba tidak pasti; kalau begitu hasil akhirnya sama saja dengan pendekatan whitelist yang hanya mengizinkan software tepercaya dan menganggap semua sisanya malware

    • Kenyataannya, perusahaan seperti CrowdStrike bisa mendapatkan tanda tangan resmi untuk perangkat lunak buruk yang berjalan di level kernel dan melakukan semua system call tanpa ada yang terlalu peduli; terlepas dari apakah itu VM atau bukan, masalahnya adalah kode dan rilis yang belum tervalidasi dideploy langsung ke produksi, lalu ketika dunia benar-benar kacau, penerbangan tertunda, atau infrastruktur utama mengalami insiden, pertanggungjawabannya tetap tidak memadai; justru perusahaan legal bisa menimbulkan kerusakan lebih besar daripada peretas atau penyerang tingkat negara, dan ada pendapat bahwa insiden utilitas xz juga merupakan kecelakaan keamanan besar yang layak disejajarkan dengan SolarWinds dan ClownStrike

  • Saya pernah melihat teman di industri infosec menghabiskan hampir seluruh waktunya membuat honeypot malware yang dibuat semirip mungkin dengan hardware nyata, dan sangat mengagumkan melihat bagaimana ia menyiapkan begitu banyak perangkat dengan sangat detail, mulai dari termostat berbasis Windows XP, kontroler PLC Siemens, sampai desktop perbankan

    • Saya sungguh berharap tidak ada termostat di dunia ini yang berjalan dengan Windows XP
  • Ini mengingatkan saya bahwa saat menyiapkan Hackintosh, SMBIOS yang sesuai benar-benar penting; banyak API PC yang relatif minor telah diperkenalkan selama beberapa dekade terakhir, dan itu sering dipakai untuk menguji seberapa baik bagian-bagian seperti ini direfleksikan oleh software virtualisasi atau malware; untuk melangkah lebih jauh, analisisnya adalah bahwa kita juga perlu simulasi sensor suhu yang berubah dinamis sesuai beban CPU nyata

  • Menurut Mitre ATT&CK T1497.001 (VM Detection), pemeriksaan SMBIOS adalah vektor yang sudah dikenal; saya juga sempat bereksperimen dan ternyata bisa mengatur power supply menjadi ‘HotReplaceable=Yes’, ‘Status=OK’ sehingga tampak seperti server bare-metal seharga $5,000, dengan perintah yang digunakan: pip install dmigen lalu dmigen -o smbios.bin --type0 vendor="American Megatrends",version="F.1" --type1 manufacturer="Dell Inc.",product="PowerEdge T630" --type39 name="PSU1",location="Bay 1",status=3,hotreplaceable=1

    • Sebagai referensi, di Hacker News, untuk membuat baris baru yang benar-benar muncul, perlu memberi jeda baris dua kali atau mengindentasi tiap baris dengan dua spasi agar masuk mode kode