Suspicious RDP ActiveX Client Loaded

Identifies suspicious Image Loading of the Remote Desktop Services ActiveX Client (mstscax), this may indicate the presence of RDP lateral movement capability.

Elastic rule (View on GitHub)

 1[metadata]
 2creation_date = "2020/11/19"
 3integration = ["endpoint", "windows"]
 4maturity = "production"
 5min_stack_comments = "New fields added: required_fields, related_integrations, setup"
 6min_stack_version = "8.3.0"
 7updated_date = "2024/03/28"
 8
 9[rule]
10author = ["Elastic"]
11description = """
12Identifies suspicious Image Loading of the Remote Desktop Services ActiveX Client (mstscax), this may indicate the
13presence of RDP lateral movement capability.
14"""
15from = "now-9m"
16index = ["logs-endpoint.events.library-*", "winlogbeat-*", "logs-windows.sysmon_operational-*", "endgame-*"]
17language = "eql"
18license = "Elastic License v2"
19name = "Suspicious RDP ActiveX Client Loaded"
20references = ["https://posts.specterops.io/revisiting-remote-desktop-lateral-movement-8fb905cb46c3"]
21risk_score = 47
22rule_id = "71c5cb27-eca5-4151-bb47-64bc3f883270"
23setup = """## Setup
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: Lateral Movement", "Data Source: Elastic Endgame", "Data Source: Elastic Defend", "Data Source: Sysmon"]
33timestamp_override = "event.ingested"
34type = "eql"
35
36query = '''
37any where host.os.type == "windows" and
38 (event.category : ("library", "driver") or (event.category == "process" and event.action : "Image loaded*")) and
39 (?dll.name : "mstscax.dll" or file.name : "mstscax.dll") and
40   /* depending on noise in your env add here extra paths  */
41  process.executable : (
42    "C:\\Windows\\*",
43    "C:\\Users\\Public\\*",
44    "C:\\Users\\Default\\*",
45    "C:\\Intel\\*",
46    "C:\\PerfLogs\\*",
47    "C:\\ProgramData\\*",
48    "\\Device\\Mup\\*",
49    "\\\\*"
50  ) and
51  /* add here FPs */
52  not process.executable : (
53    "?:\\Windows\\System32\\mstsc.exe",
54    "?:\\Windows\\SysWOW64\\mstsc.exe",
55    "?:\\Windows\\System32\\vmconnect.exe",
56    "?:\\Windows\\System32\\WindowsSandboxClient.exe",
57    "?:\\Windows\\System32\\hvsirdpclient.exe"
58  )
59'''
60
61
62[[rule.threat]]
63framework = "MITRE ATT&CK"
64[[rule.threat.technique]]
65id = "T1021"
66name = "Remote Services"
67reference = "https://attack.mitre.org/techniques/T1021/"
68
69[[rule.threat.technique.subtechnique]]
70id = "T1021.001"
71name = "Remote Desktop Protocol"
72reference = "https://attack.mitre.org/techniques/T1021/001/"
73
74[rule.threat.tactic]
75id = "TA0008"
76name = "Lateral Movement"
77reference = "https://attack.mitre.org/tactics/TA0008/"

References

Related rules

to-top