# T1569.002 - System Services: Service Execution

## Description from ATT&CK

> Adversaries may abuse the Windows service control manager to execute malicious commands or payloads. The Windows service control manager (<code>services.exe</code>) is an interface to manage and manipulate services.(Citation: Microsoft Service Control Manager) The service control manager is accessible to users via GUI components as well as system utilities such as <code>sc.exe</code> and [Net](https://attack.mitre.org/software/S0039).
> 
> [PsExec](https://attack.mitre.org/software/S0029) can also be used to execute commands or payloads via a temporary Windows service created through the service control manager API.(Citation: Russinovich Sysinternals) Tools such as [PsExec](https://attack.mitre.org/software/S0029) and <code>sc.exe</code> can accept remote servers as arguments and may be used to conduct remote execution.
> 
> Adversaries may leverage these mechanisms to execute malicious content. This can be done by either executing a new or modified service. This technique is the execution used in conjunction with [Windows Service](https://attack.mitre.org/techniques/T1543/003) during service persistence or privilege escalation.

[Source](https://attack.mitre.org/techniques/T1569/002)

## Atomic Tests

- [Atomic Test #1: Execute a Command as a Service](#atomic-test-1-execute-a-command-as-a-service)
- [Atomic Test #2: Use PsExec to execute a command on a remote host](#atomic-test-2-use-psexec-to-execute-a-command-on-a-remote-host)
- [Atomic Test #3: psexec.py (Impacket)](#atomic-test-3-psexecpy-impacket)
- [Atomic Test #4: BlackCat pre-encryption cmds with Lateral Movement](#atomic-test-4-blackcat-pre-encryption-cmds-with-lateral-movement)
- [Atomic Test #5: Use RemCom to execute a command on a remote host](#atomic-test-5-use-remcom-to-execute-a-command-on-a-remote-host)
- [Atomic Test #6: Snake Malware Service Create](#atomic-test-6-snake-malware-service-create)
- [Atomic Test #7: Modifying ACL of Service Control Manager via SDET](#atomic-test-7-modifying-acl-of-service-control-manager-via-sdet)
- [Atomic Test #8: Pipe Creation - PsExec Tool Execution From Suspicious Locations](#atomic-test-8-pipe-creation---psexec-tool-execution-from-suspicious-locations)

### Atomic Test #1: Execute a Command as a Service

Creates a service specifying an arbitrary command and executes it. When executing commands such as PowerShell, the service will report that it did not start correctly even when code executes properly.

Upon successful execution, cmd.exe creates a new service using sc.exe that will start powershell.exe to create a new file `art-marker.txt`

[BlackCat Ransomware (ALPHV)](https://www.varonis.com/blog/blackcat-ransomware)  
[Cybereason vs. BlackCat Ransomware](https://www.cybereason.com/blog/cybereason-vs.-blackcat-ransomware)

**Supported Platforms:** Windows

**auto_generated_guid:** `2382dee2-a75f-49aa-9378-f52df6ed3fb1`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| service_name | Name of service to create | string | ARTService|
| executable_command | Command to execute as a service | string | %COMSPEC% /c powershell.exe -nop -w hidden -command New-Item -ItemType File C:&#92;art-marker.txt|

#### Attack Commands: Run with `command_prompt`! Elevation Required (e.g. root or admin)

```cmd
sc.exe create #{service_name} binPath= "#{executable_command}"
sc.exe start #{service_name}
sc.exe delete #{service_name}
```

#### Cleanup Commands

```cmd
del C:\art-marker.txt >nul 2>&1
```
### Atomic Test #2: Use PsExec to execute a command on a remote host

Requires having Sysinternals installed, path to sysinternals is one of the input input_arguments
Will start a process on a remote host.

Upon successful execution, cmd will utilize psexec.exe to spawn calc.exe on a remote endpoint (default:localhost).

**Supported Platforms:** Windows

**auto_generated_guid:** `873106b7-cfed-454b-8680-fa9f6400431c`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| remote_host | Remote hostname or IP address | string | localhost|
| user_name | Username | string | DOMAIN&#92;Administrator|
| password | Password | string | P@ssw0rd1|

#### Attack Commands: Run with `command_prompt`! Elevation Required (e.g. root or admin)

```cmd
"PathToAtomicsFolder\..\ExternalPayloads\PsExec.exe" \\#{remote_host} -i -u #{user_name} -p #{password} -accepteula "C:\Windows\System32\calc.exe"
```


#### Dependencies: Run with `powershell`!

##### Description: PsExec tool from Sysinternals must exist in the ExternalPayloads directory

###### Check Prereq Commands

```powershell
if (Test-Path "PathToAtomicsFolder\..\ExternalPayloads\PsExec.exe") { exit 0} else { exit 1}
```

###### Get Prereq Commands

```powershell
New-Item -Type Directory "PathToAtomicsFolder\..\ExternalPayloads\" -ErrorAction Ignore -Force | Out-Null
Invoke-WebRequest "https://download.sysinternals.com/files/PSTools.zip" -OutFile "PathToAtomicsFolder\..\ExternalPayloads\PsTools.zip"
Expand-Archive "PathToAtomicsFolder\..\ExternalPayloads\PsTools.zip" "PathToAtomicsFolder\..\ExternalPayloads\PsTools" -Force
Copy-Item "PathToAtomicsFolder\..\ExternalPayloads\PsTools\PsExec.exe" "PathToAtomicsFolder\..\ExternalPayloads\PsExec.exe" -Force
```

### Atomic Test #3: psexec.py (Impacket)

Will execute a command on the remote host with Impacket psexec.py script.

**Supported Platforms:** Linux

**auto_generated_guid:** `edbcd8c9-3639-4844-afad-455c91e95a35`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| remote_host | Remote hostname or IP address | string | 127.0.0.1|
| username | Username | string | Administrator|
| domain | Target domain | string | |
| password | Password | string | P@ssw0rd1|
| command | Command to execute in target computer | string | whoami|

#### Attack Commands: Run with `bash`!

```bash
psexec.py '#{domain}/#{username}:#{password}@#{remote_host}' '#{command}'
```


#### Dependencies: Run with `bash`!

##### Description: psexec.py (Impacket)

###### Check Prereq Commands

```bash
if [ -x "$(command -v psexec.py)" ]; then exit 0; else exit 1; fi;
```

###### Get Prereq Commands

```bash
sudo pip3 install impacket
```

### Atomic Test #4: BlackCat pre-encryption cmds with Lateral Movement

This atomic attempts to emulate the unique behavior of BlackCat ransomware prior to encryption and during Lateral Movement attempts via PsExec on Windows. Uses bundled PsExec like BlackCat

**Supported Platforms:** Windows

**auto_generated_guid:** `31eb7828-97d7-4067-9c1e-c6feb85edc4b`

#### Inputs

| Name | Description | Type | Default Value |
|------|-------------|------|---------------|
| targethost | Target hostname to attempt psexec connection to for emulation of lateral movement. | string | $ENV:COMPUTERNAME|

#### Attack Commands: Run with `powershell`! Elevation Required (e.g. root