Volatility: Perform Memory Forensics with Volatility (Part 01)

Sharing is caring
This entry is part 2 of 13 in the series Incident Response and Forensics

Views: 23

Reference: TryHackMe Room “Core Windows Processes”

Core Windows Processes

Understanding how the Windows operating system functions as a defender is vital. 

Task Manager doesn’t show a Parent-Child process view. That is where other utilities, such as Process Hacker and Process Explorer, come to the rescue.

Process Hacker

Process Explorer

Command-line equivalent of obtaining information about the running processes on a Windows system: tasklistGet-Process or ps (PowerShell), and wmic.

System Process

When you launch an application in user mode, Windows creates a process for it. This process provides the application with a private virtual address space and a private handle table. Since each application’s virtual address space is private, one application can’t modify another application’s data. Each application runs in isolation, ensuring that if one crashes, it doesn’t affect other applications or the operating system.

All code running in kernel mode shares a single virtual address space. As a result, a kernel-mode driver isn’t isolated from other drivers or the operating system. If a kernel-mode driver mistakenly writes to the wrong virtual address, it could compromise data belonging to the operating system or another driver. If a kernel-mode driver crashes, it causes the entire operating system to crash.

Image Path:  N/A

Parent Process:  None

Number of Instances:  One

User Account:  Local System

Start Time:  At boot time

What is unusual behaviour for this System process?

  • A parent process (aside from System Idle Process (0))
  • Multiple instances of System. (Should only be one instance) 
  • A different PID. (Remember that the PID will always be PID 4)
  • Not running in Session 0

SMSS.exe process (Session Manager Subsystem)

 This process, also known as the Windows Session Manager, is responsible for creating new sessions.

It is the first user-mode process started by the kernel. This process starts the kernel and user modes of the Windows subsystem. This subsystem includes win32k.sys (kernel mode), winsrv.dll (user mode), and csrss.exe (user mode). 

Smss.exe starts csrss.exe (Windows subsystem) and wininit.exe in Session 0, an isolated Windows session for the operating system, and csrss.exe and winlogon.exe for Session 1, which is the user session. The first child instance creates child instances in new sessions, done by smss.exe copying itself into the new session and self-terminating. 

Any other subsystem listed in the Required value of HKLM\System\CurrentControlSet\Control\Session Manager\Subsystems is also launched.

SMSS is also responsible for creating environment variables, virtual memory paging files and starts winlogon.exe (the Windows Logon Manager).

Normal Behaviour:

Image Path:  %SystemRoot%\System32\smss.exe

Parent Process:  System

Number of Instances:  One master instance and child instance per session. The child instance exits after creating the session.

User Account:  Local System

Start Time:  Within seconds of boot time for the master instance

What is unusual with SMSS.exe process?

  • A different parent process other than System (4)
  • The image path is different from C:\Windows\System32
  • More than one running process. (children self-terminate and exit after each new session)
  • The running User is not the SYSTEM user
  • Unexpected registry entries for Subsystem

csrss.exe (Client Server Runtime Process)

It is the user-mode side of the Windows subsystem. This process is always running and is critical to system operation. If this process is terminated by chance, it will result in system failure. This process is responsible for the Win32 console window and process thread creation and deletion. For each instance, csrsrv.dll, basesrv.dll, and winsrv.dll are loaded (along with others). 

Normal Behaviour:

Image Path:  %SystemRoot%\System32\csrss.exe

Parent Process:  Created by an instance of smss.exe

Number of Instances:  Two or more

User Account:  Local System

Start Time:  Within seconds of boot time for the first two instances (for Session 0 and 1). Start times for additional instances occur as new sessions are created, although only Sessions 0 and 1 are often created.

What is unusual?

  • An actual parent process. (smss.exe calls this process and self-terminates)
  • Image file path other than C:\Windows\System32
  • Subtle misspellings to hide rogue processes masquerading as csrss.exe in plain sight
  • The user is not the SYSTEM user.

 Windows Initialization Processwininit.exe

It is responsible for launching services.exe (Service Control Manager), lsass.exe (Local Security Authority), and lsaiso.exe within Session 0. It is another critical Windows process that runs in the background, along with its child processes. 

Note: lsaiso.exe is a process associated with Credential Guard and KeyGuard. You will only see this process if Credential Guard is enabled. 

Normal Behaviour:

Image Path:  %SystemRoot%\System32\wininit.exe

Parent Process:  Created by an instance of smss.exe

Number of Instances:  One

User Account:  Local System

Start Time:  Within seconds of boot time

What is unusual?

  • An actual parent process. (smss.exe calls this process and self-terminates)
  • Image file path other than C:\Windows\System32
  • Subtle misspellings to hide rogue processes in plain sight
  • Multiple running instances
  • Not running as SYSTEM

Service Control Manager (SCM) or services.exe (Wininit.exe –> services.exe)

Its primary responsibility is to handle system services: loading services, interacting with services and starting or ending services. It maintains a database that can be queried using a Windows built-in utility, sc.exe

Information regarding services is stored in the registry, HKLM\System\CurrentControlSet\Services

his process also loads device drivers marked as auto-start into memory. 

When a user logs into a machine successfully, this process is responsible for setting the value of the Last Known Good control set (Last Known Good Configuration), HKLM\System\Select\LastKnownGood, to that of the CurrentControlSet. 

This process is the parent to several other key processes: svchost.exe, spoolsv.exe, msmpeng.exe, and dllhost.exe, to name a few. 

Normal Behaviour:

Image Path:  %SystemRoot%\System32\services.exe

Parent Process:  wininit.exe

Number of Instances:  One

User Account:  Local System

Start Time:  Within seconds of boot time

What is unusual?

  • A parent process other than wininit.exe
  • Image file path other than C:\Windows\System32
  • Subtle misspellings to hide rogue processes in plain sight
  • Multiple running instances
  • Not running as SYSTEM

Service Host (Host Process for Windows Services), or svchost.exe (wininit.exe > services.exe > svchost.exe)

Svchost.exe is responsible for hosting and managing Windows services.

The services running in this process are implemented as DLLs. The DLL to implement is stored in the registry for the service under the Parameters subkey in ServiceDLL. The full path is HKLM\SYSTEM\CurrentControlSet\Services\SERVICE NAME\Parameters.

Since svchost.exe will always have multiple running processes on any Windows system, this process has been a target for malicious use. Adversaries create malware to masquerade as this process and try to hide amongst the legitimate svchost.exe processes. They can name the malware svchost.exe or misspell it slightly, such as scvhost.exe. By doing so, the intention is to go under the radar. Another tactic is to install/call a malicious service (DLL).  

Normal Behaviour:

Image Path: %SystemRoot%\System32\svchost.exe

Parent Process: services.exe

Number of Instances: Many

User Account: Varies (SYSTEM, Network Service, Local Service) depending on the svchost.exe instance. In Windows 10, some instances run as the logged-in user.

Start Time: Typically within seconds of boot time. Other instances of svchost.exe can be started after boot.

What is unusual?

  • A parent process other than services.exe
  • Image file path other than C:\Windows\System32
  • Subtle misspellings to hide rogue processes in plain sight
  • The absence of the -k parameter

Local Security Authority Subsystem Service (LSASS.exe)

LSASS is a process in Microsoft Windows operating systems that is responsible for enforcing the security policy on the system. It verifies users logging on to a Windows computer or server, handles password changes, and creates access tokens. It also writes to the Windows Security Log.”

It creates security tokens for SAM (Security Account Manager), AD (Active Directory), and NETLOGON. It uses authentication packages specified in HKLM\System\CurrentControlSet\Control\Lsa.

Lsass.exe is another process adversaries target. Common tools such as mimikatz are used to dump credentials, or adversaries mimic this process to hide in plain sight. Again, they do this by either naming their malware by this process name or simply misspelling the malware slightly. 

Normal Behaviour:

Image Path:  %SystemRoot%\System32\lsass.exe

Parent Process:  wininit.exe

Number of Instances:  One

User Account:  Local System

Start Time:  Within seconds of boot time

What is unusual?

  • A parent process other than wininit.exe
  • Image file path other than C:\Windows\System32
  • Subtle misspellings to hide rogue processes in plain sight
  • Multiple running instances
  • Not running as SYSTEM

Windows Logonwinlogon.exe

It is responsible for handling the Secure Attention Sequence (SAS). It is the ALT+CTRL+DELETE key combination users press to enter their username & password. 

This process is also responsible for loading the user profile. It loads the user’s NTUSER.DAT into HKCU, and userinit.exe loads the user’s shell.

It is also responsible for locking the screen and running the user’s screensaver, among other functions. Smss.exe launches this process along with a copy of csrss.exe within Session 1. 

Normal Behaviour:

Winlogon properties.

Image Path:  %SystemRoot%\System32\winlogon.exe

Parent Process:  Created by an instance of smss.exe that exits, so analysis tools usually do not provide the parent process name.

Number of Instances:  One or more

User Account:  Local System

Start Time:  Within seconds of boot time for the first instance (for Session 1). Additional instances occur as new sessions are created, typically through Remote Desktop or Fast User Switching logons.

What is unusual?

  • An actual parent process. (smss.exe calls this process and self-terminates)
  • Image file path other than C:\Windows\System32
  • Subtle misspellings to hide rogue processes in plain sight
  • Not running as SYSTEM
  • Shell value in the registry other than explorer.exe

Explorer.exe

This process gives the user access to their folders and files. It also provides functionality for other features, such as the Start Menu and Taskbar.

The Winlogon process runs userinit.exe, which launches the value in HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell. Userinit.exe exits after spawning explorer.exe. Because of this, the parent process is non-existent. 

There will be many child processes for explorer.exe.

Normal Behaviour:

Image Path:  %SystemRoot%\explorer.exe

Parent Process:  Created by userinit.exe and exits

Number of Instances:  One or more per interactively logged-in user

User Account:  Logged-in user(s)

Start Time:  First instance when the first interactive user logon session begins

What is unusual?

  • An actual parent process. (userinit.exe calls this process and exits)
  • Image file path other than C:\Windows
  • Running as an unknown user
  • Subtle misspellings to hide rogue processes in plain sight
  • Outbound TCP/IP connections
TCP/IP connections view from Process Explorer (for explorer.exe process)

Additional Reading

Series Navigation<< Incident Handling Life CycleIntroduction to Network Forensics >>