2020-12-08 11:31:03 +01:00
[ metadata ]
creation_date = "2020/11/16"
2023-01-04 09:30:07 -05:00
integration = [ "endpoint" , "windows" ]
2020-12-08 11:31:03 +01:00
maturity = "production"
2023-06-22 18:38:56 -03:00
updated_date = "2023/06/22"
2022-08-24 10:38:49 -06:00
min_stack_comments = "New fields added: required_fields, related_integrations, setup"
min_stack_version = "8.3.0"
2020-12-08 11:31:03 +01:00
2023-03-28 07:17:50 -06:00
[ transform ]
[ [ transform . osquery ] ]
label = "Osquery - Retrieve DNS Cache"
query = "SELECT * FROM dns_cache"
[ [ transform . osquery ] ]
label = "Osquery - Retrieve All Services"
query = "SELECT description, display_name, name, path, pid, service_type, start_type, status, user_account FROM services"
[ [ transform . osquery ] ]
label = "Osquery - Retrieve Services Running on User Accounts"
query = "" "
SELECT description, display_name, name, path, pid, service_type, start_type, status, user_account FROM services WHERE
NOT (user_account LIKE '%LocalSystem' OR user_account LIKE '%LocalService' OR user_account LIKE '%NetworkService' OR
user_account == null)
" ""
[ [ transform . osquery ] ]
label = "Osquery - Retrieve Service Unsigned Executables with Virustotal Link"
query = "" "
SELECT concat('https://www.virustotal.com/gui/file/', sha1) AS VtLink, name, description, start_type, status, pid,
services.path FROM services JOIN authenticode ON services.path = authenticode.path OR services.module_path =
authenticode.path JOIN hash ON services.path = hash.path WHERE authenticode.result != 'trusted'
" ""
2020-12-08 11:31:03 +01:00
[ rule ]
author = [ "Elastic" ]
description = "" "
Identifies remote execution of Windows services over remote procedure call (RPC). This could be indicative of lateral
movement, but will be noisy if commonly done by administrators."
"" "
from = " now-9m "
2021-01-28 20:53:57 -09:00
index = [" logs-endpoint . events . * ", " winlogbeat- * ", " logs-windows . * "]
2020-12-08 11:31:03 +01:00
language = " eql "
2021-03-03 22:12:11 -09:00
license = " Elastic License v2 "
2020-12-08 11:31:03 +01:00
name = " Remotely Started Services via RPC "
2022-09-23 14:44:24 -07:00
note = " "" ## Triage and analysis
### Investigating Remotely Started Services via RPC
2023-01-09 08:28:10 -08:00
The Service Control Manager Remote Protocol is a client / server protocol used for configuring and controlling service programs running on a remote computer . A remote service management session begins with the client initiating the connection request to the server . If the server grants the request , the connection is established . The client can then make multiple requests to modify , query the configuration , or start and stop services on the server by using the same session until the session is terminated .
2022-09-23 14:44:24 -07:00
2023-01-09 08:28:10 -08:00
This rule detects the remote creation or start of a service by correlating a ` services . exe ` network connection and the spawn of a child process .
2022-09-23 14:44:24 -07:00
2022-11-17 13:38:34 -08:00
> * * Note * * :
2023-02-22 12:33:23 -03:00
> This investigation guide uses the [ Osquery Markdown Plugin ] ( https : / / www . elastic . co / guide / en / security / master / invest-guide-run-osquery . html ) introduced in Elastic Stack version 8.5 . 0 . Older Elastic Stack versions will display unrendered Markdown in this guide .
2022-11-17 13:38:34 -08:00
2022-09-23 14:44:24 -07:00
#### Possible investigation steps
2023-01-09 08:28:10 -08:00
- Review login events ( e . g . , 4624 ) in the alert timeframe to identify the account used to perform this action . Use the ` source . address ` field to help identify the source system .
- Review network events from the source system using the source port identified on the alert and try to identify the program used to initiate the action .
- Investigate the process execution chain ( parent process tree ) for unknown processes . Examine their executable files for prevalence , whether they are located in expected locations , and if they are signed with valid digital signatures .
- Investigate any abnormal behavior by the subject process such as network connections , registry or file modifications , and any spawned child processes .
2022-09-23 14:44:24 -07:00
- Investigate other alerts associated with the user / host during the past 48 hours .
2023-01-09 08:28:10 -08:00
- Validate if the activity is not related to planned patches , updates , network administrator activity , or legitimate software installations .
2023-03-01 21:23:09 -03:00
- Examine the host for derived artifacts that indicate suspicious activities :
2022-11-17 13:38:34 -08:00
- Analyze the process executable using a private sandboxed analysis system .
- Observe and collect information about the following activities in both the sandbox and the alert subject host :
- Attempts to contact external domains and addresses .
2023-01-09 08:28:10 -08:00
- Use the Elastic Defend network events to determine domains and addresses contacted by the subject process by filtering by the process ' `process.entity_id`.
2022-11-17 13:38:34 -08:00
- Examine the DNS cache for suspicious or anomalous entries.
2023-03-28 07:17:50 -06:00
- $osquery_0
2023-01-09 08:28:10 -08:00
- Use the Elastic Defend registry events to examine registry keys accessed, modified, or created by the related processes in the process tree.
2022-11-17 13:38:34 -08:00
- Examine the host services for suspicious or anomalous entries.
2023-03-28 07:17:50 -06:00
- $osquery_1
- $osquery_2
- $osquery_3
2023-01-09 08:28:10 -08:00
- Retrieve the files' SHA-256 hash values using the PowerShell ` Get-FileHash ` cmdlet and search for the existence and reputation of the hashes in resources like VirusTotal , Hybrid-Analysis , CISCO Talos , Any . run , etc .
- Investigate potentially compromised accounts . Analysts can do this by searching for login events ( for example , 4624 ) to the target host after the registry modification .
2022-11-17 13:38:34 -08:00
2022-09-23 14:44:24 -07:00
### False positive analysis
- Remote management software like SCCM may trigger this rule . If noisy on your environment , consider adding exceptions .
### Response and remediation
- Initiate the incident response process based on the outcome of the triage .
- Isolate the involved hosts to prevent further post-compromise behavior .
- If the triage identified malware , search the environment for additional compromised hosts .
- Implement temporary network rules , procedures , and segmentation to contain the malware .
- Stop suspicious processes .
- Immediately block the identified indicators of compromise ( IoCs ) .
2023-01-09 08:28:10 -08:00
- Inspect the affected systems for additional malware backdoors like reverse shells , reverse proxies , or droppers that attackers could use to reinfect the system .
2022-09-23 14:44:24 -07:00
- Remove and block malicious artifacts identified during triage .
2023-01-09 08:28:10 -08:00
- Investigate credential exposure on systems compromised or used by the attacker to ensure all compromised accounts are identified . Reset passwords for these accounts and other potentially compromised credentials , such as email , business systems , and web services .
- Run a full antimalware scan . This may reveal additional artifacts left in the system , persistence mechanisms , and malware components .
2022-09-23 14:44:24 -07:00
- Determine the initial vector abused by the attacker and take action to prevent reinfection through the same vector .
2023-01-09 08:28:10 -08:00
- Using the incident response data , update logging and audit policies to improve the mean time to detect ( MTTD ) and the mean time to respond ( MTTR ) .
2022-09-23 14:44:24 -07:00
"" "
2023-01-04 09:30:07 -05:00
references = [
" https : / / docs . microsoft . com / en-us / openspecs / windows_protocols / ms-scmr / 705 b624a-13de-43cc-b8a2-99573da3635f ",
]
2020-12-08 11:31:03 +01:00
risk_score = 47
rule_id = " aa9a274d-6b53-424d-ac5e-cb8ca4251650 "
severity = " medium "
2023-09-05 15:22:01 -03:00
tags = [" Domain : Endpoint ", " OS : Windows ", " Use Case : Threat Detection ", " Tactic : Lateral Movement ", " Resources : Investigation Guide ", " Data Source : Elastic Defend "]
2020-12-08 11:31:03 +01:00
type = " eql "
query = '''
sequence with maxspan=1s
2023-03-05 09:41:19 -09:00
[network where host.os.type == " windows " and process.name : " services . exe " and
2022-08-24 10:38:49 -06:00
network.direction : (" incoming ", " ingress ") and network.transport == " tcp " and
2022-01-13 16:40:10 -03:00
source.port >= 49152 and destination.port >= 49152 and source.ip != " 127.0 . 0.1 " and source.ip != " : : 1 "
2020-12-08 11:31:03 +01:00
] by host.id, process.entity_id
2023-06-30 18:57:00 +01:00
[process where host.os.type == " windows " and
event.type == " start " and process.parent.name : " services . exe " and
not (process.executable : " ? : \ \ Windows \ \ System32 \ \ svchost . exe " and process.args : " tiledatamodelsvc ") and
not (process.executable : " ? : \ \ Windows \ \ System32 \ \ msiexec . exe " and process.args : " / V ") and
2022-08-01 18:11:11 +02:00
not process.executable :
(" ? : \ \ Windows \ \ ADCR_Agent \ \ adcrsvc . exe ",
" ? : \ \ Windows \ \ System32 \ \ VSSVC . exe ",
" ? : \ \ Windows \ \ servicing \ \ TrustedInstaller . exe ",
" ? : \ \ Windows \ \ System32 \ \ svchost . exe ",
" ? : \ \ Program Files ( x86 ) \ \ * . exe ",
" ? : \ \ Program Files \ \ * . exe ",
" ? : \ \ Windows \ \ PSEXESVC . EXE ",
" ? : \ \ Windows \ \ System32 \ \ sppsvc . exe ",
" ? : \ \ Windows \ \ System32 \ \ wbem \ \ WmiApSrv . exe ",
" ? : \ \ WINDOWS \ \ RemoteAuditService . exe ",
" ? : \ \ Windows \ \ VeeamVssSupport \ \ VeeamGuestHelper . exe ",
" ? : \ \ Windows \ \ VeeamLogShipper \ \ VeeamLogShipper . exe ",
" ? : \ \ Windows \ \ CAInvokerService . exe ",
" ? : \ \ Windows \ \ System32 \ \ upfc . exe ",
" ? : \ \ Windows \ \ AdminArsenal \ \ PDQ * . exe ",
" ? : \ \ Windows \ \ System32 \ \ vds . exe ",
" ? : \ \ Windows \ \ Veeam \ \ Backup \ \ VeeamDeploymentSvc . exe ",
" ? : \ \ Windows \ \ ProPatches \ \ Scheduler \ \ STSchedEx . exe ",
" ? : \ \ Windows \ \ System32 \ \ certsrv . exe ",
" ? : \ \ Windows \ \ eset-remote-install-service . exe ",
" ? : \ \ Pella Corporation \ \ Pella Order Management \ \ GPAutoSvc . exe ",
" ? : \ \ Pella Corporation \ \ OSCToGPAutoService \ \ OSCToGPAutoSvc . exe ",
" ? : \ \ Pella Corporation \ \ Pella Order Management \ \ GPAutoSvc . exe ",
" ? : \ \ Windows \ \ SysWOW64 \ \ NwxExeSvc \ \ NwxExeSvc . exe ",
" ? : \ \ Windows \ \ System32 \ \ taskhostex . exe ")
2020-12-08 11:31:03 +01:00
] by host.id, process.parent.entity_id
'''
[[rule.threat]]
framework = " MITRE ATT & CK "
[[rule.threat.technique]]
2020-12-18 12:46:16 -09:00
id = " T1021 "
name = " Remote Services "
reference = " https : / / attack . mitre . org / techniques / T1021 / "
2020-12-08 11:31:03 +01:00
[rule.threat.tactic]
id = " TA0008 "
name = " Lateral Movement "
reference = " https : / / attack . mitre . org / tactics / TA0008 / "
2020-12-18 12:46:16 -09:00