Unusual Service Host Child Process - Childless Service

Identifies unusual child processes of Service Host (svchost.exe) that traditionally do not spawn any child processes. This may indicate a code injection or an equivalent form of exploitation.

Elastic rule (View on GitHub)

 1[metadata]
 2creation_date = "2020/10/13"
 3integration = ["endpoint", "windows"]
 4maturity = "production"
 5min_stack_comments = "New fields added: required_fields, related_integrations, setup"
 6min_stack_version = "8.3.0"
 7updated_date = "2023/10/23"
 8
 9[rule]
10author = ["Elastic"]
11description = """
12Identifies unusual child processes of Service Host (svchost.exe) that traditionally do not spawn any child processes.
13This may indicate a code injection or an equivalent form of exploitation.
14"""
15false_positives = ["Changes to Windows services or a rarely executed child process."]
16from = "now-9m"
17index = ["logs-endpoint.events.*", "winlogbeat-*", "logs-windows.*", "endgame-*"]
18language = "eql"
19license = "Elastic License v2"
20name = "Unusual Service Host Child Process - Childless Service"
21risk_score = 47
22rule_id = "6a8ab9cc-4023-4d17-b5df-1a3e16882ce7"
23setup = """
24
25If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2,
26events will not define `event.ingested` and default fallback for EQL rules was not added until version 8.2.
27Hence for this rule to work effectively, users will need to add a custom ingest pipeline to populate
28`event.ingested` to @timestamp.
29For more details on adding a custom ingest pipeline refer - https://www.elastic.co/guide/en/fleet/current/data-streams-pipeline-tutorial.html
30"""
31severity = "medium"
32tags = ["Domain: Endpoint", "OS: Windows", "Use Case: Threat Detection", "Tactic: Defense Evasion", "Tactic: Privilege Escalation", "Data Source: Elastic Endgame", "Data Source: Elastic Defend"]
33timestamp_override = "event.ingested"
34type = "eql"
35
36query = '''
37process where host.os.type == "windows" and event.type == "start" and
38     process.parent.name : "svchost.exe" and
39
40     /* based on svchost service arguments -s svcname where the service is known to be childless */
41
42    process.parent.args : ("WdiSystemHost","LicenseManager",
43      "StorSvc","CDPSvc","cdbhsvc","BthAvctpSvc","SstpSvc","WdiServiceHost",
44      "imgsvc","TrkWks","WpnService","IKEEXT","PolicyAgent","CryptSvc",
45      "netprofm","ProfSvc","StateRepository","camsvc","LanmanWorkstation",
46      "NlaSvc","EventLog","hidserv","DisplayEnhancementService","ShellHWDetection",
47      "AppHostSvc","fhsvc","CscService","PushToInstall") and
48
49      /* unknown FPs can be added here */
50
51     not process.name : ("WerFault.exe","WerFaultSecure.exe","wermgr.exe") and
52     not (process.executable : "?:\\Windows\\System32\\RelPost.exe" and process.parent.args : "WdiSystemHost") and
53     not (process.name : "rundll32.exe" and
54          process.args : "?:\\WINDOWS\\System32\\winethc.dll,ForceProxyDetectionOnNextRun" and process.parent.args : "WdiServiceHost") and
55     not (process.executable : ("?:\\Program Files\\*", "?:\\Program Files (x86)\\*", "?:\\Windows\\System32\\Kodak\\kds_i4x50\\lib\\lexexe.exe") and
56          process.parent.args : "imgsvc")
57'''
58
59
60[[rule.threat]]
61framework = "MITRE ATT&CK"
62[[rule.threat.technique]]
63id = "T1055"
64name = "Process Injection"
65reference = "https://attack.mitre.org/techniques/T1055/"
66[[rule.threat.technique.subtechnique]]
67id = "T1055.012"
68name = "Process Hollowing"
69reference = "https://attack.mitre.org/techniques/T1055/012/"
70
71
72
73[rule.threat.tactic]
74id = "TA0004"
75name = "Privilege Escalation"
76reference = "https://attack.mitre.org/tactics/TA0004/"
77[[rule.threat]]
78framework = "MITRE ATT&CK"
79[[rule.threat.technique]]
80id = "T1055"
81name = "Process Injection"
82reference = "https://attack.mitre.org/techniques/T1055/"
83[[rule.threat.technique.subtechnique]]
84id = "T1055.012"
85name = "Process Hollowing"
86reference = "https://attack.mitre.org/techniques/T1055/012/"
87
88
89[rule.threat.tactic]
90id = "TA0005"
91name = "Defense Evasion"
92reference = "https://attack.mitre.org/tactics/TA0005/"

Related rules

to-top