Service installed to reassign a remote desktop session with tscon
Detects a Windows service being installed whose image path invokes tscon or names a terminal session, which is how an operator obtains the SYSTEM rights that reassigning another user's remote desktop session requires — the service runs the command, the session moves to the adversary's terminal, and no logon event is generated for the hijacker. The System channel source was chosen over the process creation source in the same analytic because it records the setup step, is written by the Service Control Manager on every install with no audit policy to enable, and its fields (`ImagePath`, `ServiceName`) are native to that channel rather than mapped from a Sysmon vocabulary. AN1620's other half — a session reassignment with no corresponding 4624 or 4648 inside MITRE's `TimeWindow`, checked against its `SessionIDMapping` knob — is an absence correlated across two log sources, which Sigma cannot express. An adversary who already holds SYSTEM (a stolen token, a scheduled task, a remote execution tool running as the machine account) can call tscon directly and installs no service at all, so this rule sees the common path and not every path. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0588, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full descriptionShow less
The detection
The 4 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.
detection.yml
Sentinel · KQL
Run this as a search.
Event| where ((Source =~ "Service Control Manager" and EventID == 7045) and (ImagePath contains "tscon" or ImagePath contains "rdp-tcp#"))
Splunk · SPL
Run this as a search.
index=* ((Provider_Name="Service Control Manager" AND EventID="7045") AND (ImagePath="*tscon*" OR ImagePath="*rdp-tcp#*"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE ((TO_LOWER(winlog.provider_name) == "service control manager" AND event.code == 7045) AND (TO_LOWER(ImagePath) LIKE "*tscon*" OR TO_LOWER(ImagePath) LIKE "*rdp-tcp#*"))
Wazuh · XML rule
Deploy to your manager — this is a rule, not a search.
<group name="sigma,windows,"> <!-- Rule ids must be unique on your manager; 100000+ is the user range. --> <rule id="100000" level="12"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="Provider_Name" type="pcre2">(?i)^Service Control Manager$</field> <field name="EventID" type="pcre2">(?i)^7045$</field> <field name="ImagePath" type="pcre2">(?i)(tscon|rdp-tcp#)</field> <description>Service installed to reassign a remote desktop session with tscon</description> <mitre> <id>T1563.002</id> </mitre> </rule></group>
Verdicts · reactions · comments
Community
Verdicts from engineers who actually deployed it, and the conversation around it.
Nobody has run this in a real environment and said what happened.
Verdicts from engineers who deployed it
0 castNo verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.
Log in to report a verdict.
Log in to join the discussion.
No comments yet. Someone who deploys this will have something to say about it.