| Technique | Service Stop (T1489) |
| Tactic | Impact |
| Platforms | ESXi, IaaS, Linux, macOS, Windows |
Overview
Service Stop (T1489) is a technique where adversaries deliberately halt or disable running services on a target system to prevent legitimate users from accessing them or to enable follow-on destructive activity. Attackers use this to take critical business services offline — such as database engines, mail servers, backup agents, or endpoint security tools — either to cause direct operational damage or to unlock data files that can then be encrypted or destroyed.
Every security team needs visibility into service stop activity because it is a reliable late-stage indicator of ransomware or wiper deployment, often occurring minutes before mass encryption begins. Missing this signal means losing the last actionable window to intervene before significant business impact occurs.
Attacker Perspective
Attackers use service stop as a deliberate enablement step that clears the path for destruction, encryption, or denial of service by removing the software guards protecting critical data.
- Ransomware pre-encryption sweep (Windows): Ransomware families like REvil, LockBit, and BlackCat execute batch loops using
net stop <service> /yandsc stop <service>to terminate database (MSSQLSERVER, MySQL80), backup (VeeamDeploymentSvc, BackupExecAgentAccelerator), and AV services (WinDefend, MsMpEng) before encrypting files, because these services hold exclusive locks on their data stores. - ESXi hypervisor jackpotting: Threat actors such as those behind Cheerscrypt and BlackBasta ESXi variants use
esxcli vm process kill --type=force --world-id=<id>andvim-cmd vmsvc/power.off <vmid>to forcibly power off all running virtual machines so their VMDK flat files can be accessed and encrypted without filesystem locks. - Incident response disruption (Linux): Attackers use
systemctl stop <service>andsystemctl disable <service>, orservice <name> stop, to kill EDR agents, syslog forwarders (rsyslog, syslog-ng), and auditd itself — deliberately blinding defensive tooling before conducting further operations. - Cloud API abuse (AWS): Using compromised high-privilege IAM credentials, attackers call
organizations:DisableAWSServiceAccessto prevent AWS services from creating service-linked roles across an organization, disrupting security tooling like GuardDuty or Security Hub that depend on those roles for cross-account visibility.
This technique is attractive precisely because it is often a native operating system capability requiring no custom tooling, making it blend into normal administrative activity and leaving a very short window between execution and impact.
Detection Strategy
Required Telemetry
- Windows — System Event Log, Service Control Manager: Enable auditing of service state changes. Event ID
7036(service entered stopped/running state) and7040(start type changed) are generated by default in the System log (%SystemRoot%\System32\winevt\Logs\System.evtx) with no additional configuration. Ensure these logs are forwarded to your SIEM. - Windows — Security Event Log, Process Creation (Event ID 4688): Enable via GPO: Computer Configuration → Windows Settings → Security Settings → Advanced Audit Policy → Detailed Tracking → Audit Process Creation → Success. Also enable command-line logging: GPO path
Administrative Templates → System → Audit Process Creation → Include command line in process creation events = Enabled, or registry keyHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit → ProcessCreationIncludeCmdLine_Enabled = 1. This generates Event ID4688with full command-line arguments — critical for catchingnet stop,sc stop, andtaskkillinvocations. - Windows — Sysmon (Event ID 1, 5, 13): Deploy Sysmon with a configuration that captures process creation (Event ID
1), process termination (Event ID5), and registry value changes (Event ID13). Sysmon provides richer parent-child process context than native 4688 events. Use the SwiftOnSecurity or Olaf Hartong Sysmon config as a baseline. - Windows — Security Event Log, Audit Policy Changes: Event ID
4719captures audit policy modifications; attackers sometimes disable auditing before stopping services. Enable via Audit Policy Change → Success and Failure. - Linux — auditd rules for process execution and service management: Add the following rules to
/etc/audit/rules.d/service-stop.rules:
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/systemctl -k service_stop
-a always,exit -F arch=b64 -S execve -F path=/usr/sbin/service -k service_stop
-a always,exit -F arch=b64 -S kill -k process_kill
These generate audit records in/var/log/audit/audit.logwith full argument lists. Forward via auditbeat, Filebeat, or rsyslog to your SIEM. - Linux — systemd journal:
journalctlrecords service unit state transitions. Ensure journald is configured to forward to syslog (ForwardToSyslog=yesin/etc/systemd/journald.conf) and that syslog is shipping to your SIEM. Look for journal entries containingStopped,Deactivated, orFailedfor critical units. - macOS — Endpoint Security Framework / EDR telemetry: Native macOS does not produce service stop events in a SIEM-friendly format without an EDR or the Endpoint Security Framework. Ensure your macOS EDR is configured to log
launchctl unload,launchctl bootout, andkillsyscalls. Apple Unified Log (vialog streamorlog collect) capturescom.apple.launchdmessages for service state changes. - ESXi — shell and API logs: Enable ESXi Shell logging and forward
/var/log/shell.logand/var/log/hostd.logto your SIEM. These captureesxcliandvim-cmdcommands. Also enable vSphere API call logging in vCenter viavpxdlogs at/var/log/vmware/vpxd/vpxd.log. - AWS CloudTrail: Ensure CloudTrail is enabled with management events (read and write) across all regions. The relevant API calls are
organizations:DisableAWSServiceAccess,iam:DeleteServiceLinkedRole, andguardduty:DeleteDetector. These appear in CloudTrail aseventNamevalues in theCloudTraillog source. Confirm multi-region trail is active in your AWS Organizations management account.
Key Indicators
- Windows Event ID 7036 — mass service stop burst: In the System event log, field
param2=stoppedwith multiple unique values ofparam1(service name) occurring within a short time window (e.g., 10+ services stopped within 60 seconds from the same host). This is the clearest ransomware pre-encryption signal. - Windows process creation — net.exe stopping services: In Event ID
4688or Sysmon Event ID1, look forImageending innet.exeornet1.exewithCommandLinematchingnet stop * /y. High-confidence pattern:CommandLine CONTAINS "net stop" AND CommandLine CONTAINS "/y". - Windows process creation — sc.exe service control:
Image=sc.exewithCommandLinematching patterns likesc stop <servicename>orsc config <servicename> start= disabled. Particularly suspicious when the stopped service is a security or backup product:CommandLine CONTAINS "WinDefend" OR "MsMpEng" OR "VeeamDeploymentSvc" OR "BackupExec". - Windows process creation — taskkill targeting security processes:
Image=taskkill.exewithCommandLinecontaining/f /imfollowed by known AV/EDR process names such asMsMpEng.exe,cb.exe,CSFalconService.exe,bdagent.exe. - Windows — suspicious parent process for service stop commands:
net stop,sc stop, ortaskkillspawned by an unusual parent such ascmd.exe→wscript.exe,powershell.exe,mshta.exe, or any process running from a temp directory (ParentImage CONTAINS "\Temp\" OR "\AppData\"). - Linux auditd — systemctl stop on critical services: In auditd records with
key=service_stop, look fora1(argument) =stopordisabletargeting service names such asauditd,rsyslog,sshd, or any EDR agent daemon (e.g.,falconctl,cbdaemon). - ESXi — mass VM power-off via shell: In
/var/log/shell.log, look for repeated occurrences ofvim-cmd vmsvc/power.offoresxcli vm process killwithin a short window, particularly if executed from an interactive session outside normal maintenance hours. - AWS CloudTrail — security service deletion:
eventName=DeleteDetector(GuardDuty),DisableSecurityHub,StopLogging(CloudTrail), orDisableAWSServiceAccess. Any of these from a non-automation IAM principal or outside a change window should be treated as high severity. CheckuserIdentity.arnandsourceIPAddressfor anomalies.
Detection Logic
Rule 1 (Broad — high sensitivity): Mass service stop burst on Windows
IF EventID = 7036 AND param2 = "stopped" THEN count(distinct param1) BY host WITHIN 60 seconds >= 10 → ALERT HIGH
This catches the wide-net service-stop sweep used by ransomware families before encryption. Expected volume is very low in healthy environments — legitimate patching may trigger a handful of stops but rarely 10+ unique services in 60 seconds. Tune the threshold based on your environment’s baseline during patch windows.
Rule 2 (Medium — process-based): Service stop commands from anomalous parent processes
IF (Image ENDS WITH "net.exe" OR Image ENDS WITH "sc.exe" OR Image ENDS WITH "taskkill.exe") AND (CommandLine CONTAINS "stop" OR CommandLine CONTAINS "disabled") AND ParentImage NOT IN ["services.exe", "svchost.exe", "msiexec.exe", "SCCM_known_process_list"] THEN ALERT MEDIUM
This catches attackers using scripting engines, malicious documents, or reverse shells to invoke service stop commands. Legitimate IT tooling almost always chains through services.exe or a known management agent as the parent. Medium volume expected — requires tuning for your patch management toolchain.
Rule 3 (Narrow — high precision): Service stop targeting security and backup products
IF (Image ENDS WITH "net.exe" OR Image ENDS WITH "sc.exe" OR Image ENDS WITH "taskkill.exe") AND CommandLine CONTAINS_ANY ["WinDefend", "MsMpEng", "CSFalconService", "cbdaemon", "VeeamDeploymentSvc", "BackupExecJobEngine", "SQLWriter", "MSSQLSERVER", "MSExchangeIS"] THEN ALERT HIGH
This is a precision rule targeting the exact services that ransomware and destructive malware prioritize stopping. Very low false positive rate — legitimate administrators almost never stop these services via command-line one-liners outside of documented maintenance. Expect near-zero benign alerts; investigate every firing.
Rule 4 (Cloud): AWS security service disabled via API
IF eventSource = "guardduty.amazonaws.com" AND eventName = "DeleteDetector" OR eventSource = "cloudtrail.amazonaws.com" AND eventName = "StopLogging" OR eventName = "DisableAWSServiceAccess" AND userIdentity.type NOT IN ["Service"] AND userAgent NOT CONTAINS "terraform" THEN ALERT HIGH
This catches adversaries disabling cloud-native detection capabilities using compromised IAM credentials. Exclude known automation principals (Terraform, CloudFormation service roles) by ARN. Any human-identity principal triggering this outside a documented change window should be treated as a confirmed incident until proven otherwise.
Tuning Guidance
- Patch management and software deployment tools (SCCM, Intune, Ansible, Chef): These tools legitimately stop and start services during software installation. Identify the process names and service accounts used by your deployment tooling and exclude them:
ParentImage IN ["ccmexec.exe", "msiexec.exe", "ansible-runner"] OR user IN [svcSCCM, svcAnsible]. Baseline during known patch windows to establish normal volume. - Windows Update and servicing: Windows Update stops services like
wuauserv,bits, and sometimes IIS during cumulative updates. These stop events originate fromTiWorker.exeorTrustedInstaller.exeas parent processes. Add exclusion:ParentImage CONTAINS "TiWorker.exe" OR ParentImage CONTAINS "TrustedInstaller.exe". - Legitimate database maintenance windows: DBAs routinely stop SQL Server services during maintenance. Detect this legitimate activity by correlating with your ITSM change management system — if a change ticket exists for the time window and host, suppress the alert. Alternatively exclude:
user IN [sa_dba, svcSQL] AND hours BETWEEN 02:00 AND 06:00if maintenance windows are consistent. - Security product updates (AV/EDR self-update): Some endpoint security products stop and restart their own services during self-update. These will appear as service stop events for the exact process names in Rule 3. Identify the update process name for your security stack (e.g.,
SenseCnfg.exefor Defender for Endpoint) and add it as a parent exclusion. - Linux container orchestration and CI/CD pipelines: Jenkins build agents, Docker daemon operations, and Kubernetes node maintenance can trigger
systemctl stopevents at high volume. Exclude by the invoking user account (user IN [jenkins, gitlab-runner, k8s-node-agent]) or by source host type (CI worker nodes identified by hostname pattern).
When the Alert Fires: Investigation Steps
- Verify the alert is real — confirm the raw event in the source log. Pull the raw System Event ID
7036or process creation Event ID4688/Sysmon Event ID1from your SIEM using the exact host name, timestamp, and EventID from the alert. Confirm the event is not a duplicate, replay, or parser artifact before proceeding. - Identify the affected host and the account that performed the action. Extract the
Computerfield from the event and look up the host in your asset inventory — note its role (domain controller, database server, workstation), OS, business criticality, and owner. Check theSubjectUserNameoruserfield and flag immediately if the account is a service account, administrator, or has elevated privileges. - Pull the full command-line and reconstruct the parent process chain. In Sysmon Event ID
1or 4688, captureCommandLine,Image,ParentImage,ParentCommandLine, andProcessGuid/ParentProcessGuid. Use ProcessGuid chaining to walk the full ancestor tree — if the chain leads tocmd.exespawned bywscript.exeor an Office application, treat this as confirmed malicious. - Identify which services were stopped and assess business impact. Query Event ID
7036for allparam2 = "stopped"events on the same host within a ±30-minute window and list the unique service names (param1). Cross-reference against your critical service inventory — if backup agents, AV services, or database engines are in the list, escalate immediately as a likely ransomware precursor event. - Check for files written to disk and network connections around the same timeframe. Use Sysmon Event ID
11(FileCreate) and Event ID3(NetworkConnect) on the same host in the ±10-minute window around the alert. Look for new executables or scripts dropped in%TEMP%,C:\ProgramData, orC:\Windows\Temp, and for outbound connections to unusual IP ranges or on non-standard ports. - Search for lateral movement originating from this host. Query your SIEM for authentication events (Windows Security Event ID
4624logon type 3, or4648explicit credential use) sourced from the affected host to other internal systems in the past 24 hours. Also check for new SMB connections, RDP sessions, or WMI/PSRemoting activity using Sysmon network events or your EDR’s lateral movement detection. - Make the escalation decision — confirmed incident vs. benign administrative action. Escalate to a confirmed incident if any of the following are true: the stopped services include security tools or backup agents; the parent process chain is anomalous or routes through a scripting engine; files were dropped to temp directories; network connections to external IPs were made; or lateral movement is detected. If all activity traces cleanly to a documented maintenance ticket and known admin account, close as a false positive after documenting your reasoning in the ticket.
Response Playbook
Containment
- Isolate the host immediately but leave it powered on: Use your EDR console (CrowdStrike Network Containment, Defender for Endpoint Device Isolation, or equivalent) to cut off network access while preserving volatile memory and process state for forensics. Do not power off — you will lose in-memory artifacts including encryption keys if ransomware is mid-execution.
- Disable the implicated user account: In Active Directory, use
Disable-ADAccount -Identity <username>or the ADUC console to immediately disable the account that executed the service stop commands. If the account is a service account, coordinate with the application owner before disabling to understand downstream impact. - Kill the malicious process if still running: Use your EDR’s remote kill capability or, if you have shell access on an isolated host, identify the process by PID from the Sysmon events and terminate it. Do not do this before capturing process memory if your IR procedure allows it.
- Block identified C2 infrastructure at the perimeter: If network connections to external IPs were identified in Step 5 of the investigation, push blocks to your firewall and DNS filter immediately. For cloud environments, update Security Group rules or Network ACLs to deny outbound traffic to those destinations.
- Revoke active cloud sessions and tokens: If the activity involved AWS, Azure, or GCP, immediately invalidate the IAM credentials or access tokens used. In AWS:
iam:UpdateAccessKey --status Inactiveand attach an explicit deny policy to the user. In Azure: revoke all active sessions via Conditional Access orRevoke-AzureADUserAllRefreshToken. - Snapshot affected cloud resources before remediation: If ESXi VMs or cloud instances are involved, take forensic snapshots using vSphere snapshot or cloud-native snapshotting before making changes, to preserve evidence and enable recovery.
Eradication
- Remove identified persistence mechanisms: Search the affected host for new scheduled tasks (Event ID
4698, orschtasks /query), new services (Event ID7045), autorun registry keys (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run), and WMI subscriptions (Get-WMIObject -Namespace root\subscription -Class __EventFilter). Delete any entries not present in your baseline. - Find and delete dropped payloads and tools: Based on the file write events identified in the investigation (Sysmon Event ID
11), enumerate and hash all files written to temp directories during the attack window. Submit hashes to VirusTotal or your threat intel platform, then delete confirmed malicious files. Preserve copies in quarantine for forensic analysis. - Reset credentials for all accounts involved: Reset passwords for every account that authenticated from the affected host during the attack window, not just the directly implicated account. Assume any credentials cached on the host (LSASS, credential manager, browser stores) are compromised. Force token revocation for cloud identities.
- Check lateral movement targets for persistence: For every host the affected system connected to during the attack window, run the same persistence check (scheduled tasks, new services, autorun keys) to ensure the attacker did not establish footholds on those systems before containment.
- Rotate any secrets or API keys that may have been accessed: Review the host’s running applications and configuration files for embedded secrets, API tokens, or cloud credentials. Rotate all of them as a precaution. For AWS environments, run
aws iam list-access-keysfor affected principals and rotate immediately.
Recovery
- Verify the host is clean before reconnecting it to the network: Have a senior analyst or IR lead sign off that all persistence mechanisms are removed and a full AV/EDR scan returns clean. If confidence in the host’s integrity is less than high — for example, if the attacker had weeks of access or used a rootkit — re-image from a known-good gold image rather than attempting in-place remediation.
- Restart stopped services in the correct order: Re-enable and start all services that were stopped by the attacker, beginning with security services (AV, EDR agent, log forwarder) before returning the system to production. Verify each service reaches a running state and is generating expected telemetry in your SIEM before proceeding.
- Re-enable the user account only after confirming no persistence remains: Before restoring the account, confirm the account’s MFA device is intact and not registered to a new device, review its role and access permissions for unnecessary privileges, and notify the account owner of the incident and required security steps.
- Monitor the affected host and account for 72 hours post-remediation: Create a temporary high-sensitivity detection rule scoped to the specific host and user that alerts on any service stop, new process creation from temp directories, or outbound network connections for 72 hours. Review these alerts manually rather than relying on automated suppression.
- Document the full timeline and update detections: Write an incident timeline from first indicator to containment and capture all new IOCs (file hashes, IPs, service names, account names). Submit IOCs to your threat intel platform and update detection rules to incorporate any gaps discovered — for example, if the attacker used a service stop command pattern not previously covered by Rule 3, add it now.
Stay Ahead
Get daily threat intelligence and detection playbooks.
Free. No account. No email. Follow in Feedly, Inoreader, or any RSS reader.