top of page

Part 2-(Persistence) Windows Services: A Stealthy Avenue for Persistence


In the intricate world of Windows operating systems, services play a pivotal role, running applications seamlessly in the background without requiring user interaction. These services are imperative for system functionality, ranging from critical components like DHCP Client, Windows Event Log, Server, to Workstation services. However, their essential nature makes them an attractive target for both legitimate applications and, unfortunately, malware seeking persistence.


Anatomy of Windows Services

1. Service Architecture

Windows services can be standalone executables or loaded as DLLs. To optimize resources, many service DLLs are grouped together and run under svchost.exe instances.


2. Service Configurations

The Registry keys house crucial parameters for each service, including its name, display name, path to the executable image file, start value, required privileges, dependencies, and more. A start type value dictates whether a service initiates at boot, on manual intervention, or upon specific trigger events.


 The configurations for services, along with device driver configurations, are stored in the Registry under


  • HKLM\SYSTEM\CurrentControlSet\Services.


Using CMD:

1. cmd :- reg query HKLM\SYSTEM\CurrentControlSet\Services /s /v Start

This command queries the Registry for all services and displays their start types.


Output will be like:

Start REG_DWORD 0x3


The Start entry is a REG_DWORD (DWORD) value that defines when the service should start

  • 0x0 (Hexadecimal) or 0 (Decimal): Boot start - The service starts during the system boot process.

  • 0x1 (Hexadecimal) or 1 (Decimal): System start - The service starts during the system initialization.

  • 0x2 (Hexadecimal) or 2 (Decimal): Automatic start - The service starts automatically when the system starts.

  • 0x3 (Hexadecimal) or 3 (Decimal): Manual start - The service must be started manually by the user or another program.

  • 0x4 (Hexadecimal) or 4 (Decimal): Disabled - The service is disabled and cannot be started.


2. cmd :- reg query HKLM\SYSTEM\CurrentControlSet\Services /s /v DisplayName

This command shows a list of all services along with their display names.


Output will be like:

DisplayName REG_SZ @%systemroot%\system32\XboxNetApiSvc.dll,-100


The output you provided indicates the display name of a service in the Windows Registry. The service is using a localized string resource for its display name.


3. cmd :- reg query HKLM\SYSTEM\CurrentControlSet\Services\[ServiceName]

Replace [ServiceName] with the actual name of the service you want to check. It will provide more details about service


The Stealthy Nature of Services in Persistence


1. Persistence Vector

Due to their ability to start reliably at boot, often preceding antivirus loading, services are a popular vector for achieving persistence. With over a hundred services registered on an average Windows system, it becomes remarkably easy for malicious entities to hide in plain sight.


2. Modifying Services

With administrator rights, modifying the Services Registry key or using the built-in sc command allows the creation of a service that auto-loads a malicious DLL or executable. This technique is a classic method employed by malware authors.


3. Service Replacement

A more stealthy approach involves replacing an existing service's binary with a malicious one, especially one that is disabled or deemed unnecessary. This method requires finding an unimportant service to replace and is not as common due to its increased complexity.


4. Service Recovery Mode

An even rarer but potentially more stealthy method involves using the service recovery mode option to load a malicious binary when a specific service crashes. This approach leverages the recovery options of a service to run a program upon failure.


Tools for Analysis


1. Autoruns

Sysinternals Autoruns tool provides a user-friendly means to collect and analyze services on a system. It aids in uncovering the services running under svchost.exe instances.


2. Built-in Commands

On live systems, the built-in sc command proves valuable for querying installed services, providing detailed information on service configurations. Parameters such as queryex, qc, qprivs, and qtriggerinfo offer insights into service details.


3. Registry Analysis

For offline analysis, delving into service configurations within the Registry unveils crucial details. Investigating unusual service crashes in event logs may also provide valuable clues.

In a digital landscape where persistence is key, understanding the nuances of Windows services becomes imperative. Vigilance, coupled with the right analysis tools, is crucial for identifying and mitigating potential threats lurking within the services framework.


Akash Patel

24 views0 comments

Comments


bottom of page