- Berbagi pengalaman proses pengembangan defendnot, alat untuk menonaktifkan Windows Defender dengan memanfaatkan Windows Security Center(WSC) service API secara langsung
- Proyek ini dimulai dari upaya mengatasi keterbatasan teknis dan masalah hukum pada proyek no-defender sebelumnya
- Reverse engineering dan debugging dilakukan di tengah berbagai hambatan seperti lingkungan khusus (MacBook arm64, debugging jarak jauh, latensi tinggi)
- Menganalisis bypass pendaftaran Defender dan mekanisme verifikasi proses, lalu meningkatkannya agar bekerja stabil setelah berbagai kegagalan dan percobaan
- Pada akhirnya berhasil menyelesaikan fitur autorun sekaligus merefleksikan betapa beratnya proses proyek tersebut
Pengantar
- Berbagi pengalaman perjalanan implementasi alat defendnot untuk menonaktifkan Windows Defender
- Alih-alih menjelaskan detail teknis utama, tulisan ini dirangkum dengan fokus pada masalah nyata di lapangan dan pengalaman trial-and-error
- Dokumentasi resmi dan penjelasan teknis akan dipublikasikan terpisah di kemudian hari
Kilas balik 1 tahun lalu
- Sekitar 1 tahun lalu, penulis merilis proyek bernama no-defender, yang memanfaatkan mekanisme nonaktifnya Windows Defender melalui WSC API
- Proyek ini merujuk kode pihak ketiga dari vendor antivirus untuk menipu sistem seolah-olah antivirus lain telah terdaftar
- Setelah dirilis, proyek ini mendapat perhatian besar dan meraih sekitar 1.500 Star, tetapi karena permintaan penghapusan DMCA dari perusahaan antivirus terkait, sumber kode dihapus dan proyek diputuskan untuk dihentikan
Alasan memulai proyek
- Saat tulisan ini dibuat, penulis sedang tinggal di Airbnb di Seoul
- Lingkungan pengembangan utama adalah M4Pro MacBook, dan penulis tidak membawa perangkat terpisah yang diperlukan untuk reverse engineering x86
- Karena kompetisi CTF dan jadwal perjalanan, muncul situasi yang memaksa pekerjaan dilakukan tanpa perangkat x86
- Sambil meninjau kemungkinan implementasi no-defender yang lebih “normal”, penulis mulai mengeksplorasi apakah implementasi mandiri tanpa bergantung pada AV memungkinkan
Investigasi awal (hari 1)
- Dengan bantuan seorang teman, penulis mendapatkan binary WSC dan mencoba mengimplementasikan ulang pendaftaran WSC dengan struktur serupa proyek sebelumnya
- Implementasi dibuat menggunakan COM API milik WSC, tetapi muncul error Access Denied
- Penyebab error ditelusuri pada proses verifikasi tanda tangan dan autentikasi yang dilakukan WSC terhadap proses pemanggil API
- Saat mencoba mendaftarkan melalui injeksi modul ke proses AV, AV berhasil terdaftar
Mengganti binary AV dan eksperimen tambahan (hari 1)
- Penulis mencoba menjalankan alat melalui proses sistem bertanda tangan (seperti cmd.exe), tetapi gagal pada verifikasi PPL(Protected Process Light)
- Setelah itu pekerjaan dihentikan sementara sambil menunda disassembly dan pelacakan yang lebih rinci
Membangun lingkungan kerja (hari 2)
- Karena keterbatasan lingkungan MacBook arm64, debugging Windows x86 menjadi sangat sulit
- Penulis memakai PC temannya yang tinggal di Amerika secara jarak jauh (Parasec, Anydesk, dll.) untuk melakukan debugging dan eksperimen dalam lingkungan berlatensi tinggi
- Dalam proses build kode dan debugging VM yang saling bersilangan dengan rumit, penulis mengalami perlambatan dan kebingungan
Debugging layanan WSC (hari 2)
- Dikonfirmasi bahwa layanan WSC berbentuk DLL yang dijalankan oleh svchost
- Untuk melepas perlindungan PPL, diterapkan bypass dengan driver khusus, lalu dipastikan debugger dapat masuk ke fungsi target
- Terungkap bahwa layanan tersebut melakukan pemeriksaan token SID WinDefend di dalamnya
- Dari sini disusun teori bahwa prosedur autentikasi bisa dibypass dengan meniru proses yang memiliki SID WinDefend
Meniru SID WinDefend (hari 2)
- Penulis mempelajari lebih lanjut struktur token Windows dan prinsip cara kerjanya
- Setelah mengimplementasikan dan menjalankan kode peniruan SID WinDefend, semua pemanggilan COM mengembalikan SUCCESS, tetapi AV ternyata tetap tidak benar-benar terdaftar
Merekonstruksi algoritma verifikasi (hari 3)
- Penulis menganalisis ulang dengan hati-hati apakah pengecekan SID benar-benar lolos pada binary AV
- Jika pengecekan SID gagal, layanan ternyata juga memeriksa status eskalasi hak akses, tanda tangan binary, serta flag DllCharacteristics(ForceIntegrity) pada PE
- Fungsi yang menjalankan struktur tersebut direproduksi, lalu eksperimen dilakukan dengan menerapkannya pada binary core di dalam sistem
Memanfaatkan proses Taskmgr (hari 3)
- Eksperimen ulang dilakukan dengan Taskmgr.exe sebagai proses target, tetapi WSC menolak permintaan karena kesalahan pada proses pengiriman nama dan bug IPC
- Setelah memperbaiki inferensi path file dan cara penyampaian nama AV, dipastikan bahwa semuanya berjalan normal
Merapikan kode (hari 3)
- Fitur-fitur dirapikan dan penulis mencoba mengimplementasikan fitur autorun
- Saat mengelola autorun, sesekali terjadi kegagalan, sehingga penulis berulang kali memeriksa kode dan lingkungan untuk mencari penyebabnya
Implementasi autorun (hari 4)
- Penulis memastikan bahwa penyebabnya adalah opsi di Task Scheduler yang mencentang agar task tidak dijalankan saat laptop tidak terhubung ke daya AC
- Setelah pengaturan itu dimatikan, autorun berjalan normal
- Sebagai penutup, dilakukan pembersihan kode dan pengujian
Kesimpulan
- Pekerjaan reverse engineering dalam lingkungan yang terbatas dan tidak nyaman merupakan pengalaman yang sangat berat secara mental maupun fisik
- Dokumen implementasi WSC yang lebih rinci akan dipublikasikan terpisah di masa mendatang
Ucapan terima kasih
- Pindos: teman yang meminjamkan PC pada malam hari untuk membantu debugging dan menghangatkan kamar
- MrBruh: rekan yang memicu dimulainya eksplorasi proyek ini serta memberi ide dan masukan
- Juga kepada orang-orang terdekat yang terus berkomunikasi dan memberi semangat selama proyek berlangsung
- Penulis mengaku mencintai kimchi
- Terima kasih juga kepada seniman yang meninggalkan grafiti di dinding kami
1 komentar
Komentar Hacker News
C:\ProgramData\Microsoft\Windows Defender, lalu membuat file kosong di lokasi itunetcat.exe