Jump to content

Windows Service

From Haidhi Wiki
Revision as of 12:17, 18 March 2025 by SanzSkuy (talk | contribs)

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 **HKLMNT*. - Path DLL disimpan dalam **HKLM<service_name>*, 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

  1. Menggunakan Registry untuk Attach Debugger Otomatis
    • Tambahkan key di HKLMNTFile Execution Options<filename>
    • Tambahkan string Debugger dengan path debugger (misalnya WinDbg).
  2. 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).
  3. Menggunakan GFlags (Global Flags Editor)
    • Setel debugger melalui GFlags UI dengan menambahkan nama executable pada tab Image File, lalu tambahkan path debugger.
  4. Child Debugging
    • Attach debugger ke services.exe, lalu aktifkan debugging proses anak dengan .childdbg 1 di WinDbg.
    • Setelah itu, mulai service untuk menangkap eksekusinya.
  5. 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.