Windows Service
Appearance
Windows Service adalah program yang berjalan di background, mirip dengan daemon di Linux. Malware sering menggunakan service untuk bertahan lama di sistem korban. Windows Service dikontrol oleh Service Control Manager (SCM), yang berada di %SystemRoot%.exe.
Cara Malware Menggunakan Service
Sebagai .exe
- File executable independen yang dijalankan sebagai proses layanan.
- Path executable disimpan dalam registry di HKLM\SYSTEM\CurrentControlSet\services\<service_name> pada value ImagePath.
Sebagai DLL
Malware yang berjalan sebagai DLL akan berjalan di dalam svchost.exe.
- Malware menambahkan dirinya dalam HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
- Path DLL disimpan dalam HKLM\SYSTEM\CurrentControlSet\services\<service_name>\Parameters, pada value ServiceDll., pada value ServiceDll.
Menambahkan Service
Untuk executable file
sc create <service_name> type= own binpath= <path_to_executable>
Untuk DLL
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost" /v "<service_group>" /t REG_MULTI_SZ /d "<service_name>\0" /f reg add "HKLM\SYSTEM\CurrentControlSet\Services\<service_name>\Parameters" /v ServiceDll /t REG_EXPAND_SZ /d <path_to_dll> /f sc create <service_name> type= share binpath= "C:\Windows\System32\svchost.exe -k <service_group>"
Cara menjalankan
sc start <service_name>
atau
net start <service_name>
Debugging Windows Service yang Berbahaya
Debugging Windows Service lebih rumit dibanding executable biasa karena berjalan di background dan memiliki timeout jika tidak selesai dalam 30 detik.
Metode Debugging Windows Services
- Menggunakan Registry untuk Attach Debugger Otomatis
- Tambahkan key di HKLMNTFile Execution Options<filename>
- Tambahkan string Debugger dengan path debugger (misalnya WinDbg).
- Mengaktifkan Interaksi dengan Desktop
- Buka services.msc → klik kanan service → Properties → Log On → centang Allow service to interact with desktop.
- Alternatif: Edit registry HKLM<service_name>, tambahkan flag SERVICE_INTERACTIVE_PROCESS (0x00000100).
- Menggunakan GFlags (Global Flags Editor)
- Setel debugger melalui GFlags UI dengan menambahkan nama executable pada tab Image File, lalu tambahkan path debugger.
- Child Debugging
- Attach debugger ke services.exe, lalu aktifkan debugging proses anak dengan .childdbg 1 di WinDbg.
- Setelah itu, mulai service untuk menangkap eksekusinya.
- Patching EntryPoint untuk Loop Infinite
- Modifikasi EntryPoint dengan *** untuk membuat infinite loop.
- Gunakan debugger untuk attach ke proses yang menggunakan CPU tinggi, lalu kembalikan instruksi asli.