Skip to content

Siemphony is in beta and still being built. How a rule earns its badge.

Siemphony’s repertoire

Script proxy runs PowerShell through SyncAppvPublishingServer

Siemphony@siemphonyhighT1216.002unverified
AN1220 describes SyncAppvPublishingServer.vbs being driven through a script interpreter with PowerShell embedded in the command line, so that a Microsoft-signed VBScript carries the payload instead of a direct powershell.exe invocation. The rule reproduces that shape on Sysmon EventID 1 in three parts: the interpreter, the script name, and a payload indicator in the same command line. The payload list is authored, not MITRE's — MITRE names the `CommandLineRegex` knob and gives `{powershell -nop -enc ...}` as its one example, and the list here is populated with the semicolon the script uses to split its argument plus the PowerShell verbs and encoders an operator reaches for after it. The interpreter list follows MITRE's `ScriptInterpreter` knob, which names wscript.exe, cscript.exe and cmd.exe; powershell.exe is deliberately not in it, because an administrator hashing or enumerating the script from a PowerShell line would then satisfy every leg on its own. Two gaps are worth stating rather than hiding: a renamed copy of the script defeats the name match, and the separate compiled SyncAppvPublishingServer.exe is out of scope for this technique and this rule. The other three sources in AN1220 are not used — PowerShell 4103/4104 sees the payload only after it has already been handed off, with nothing tying it back to the proxy, and Sysmon EventID 7 and EventID 10 carry no command line at all, so the abuse is simply not expressible there. Prerequisite: Sysmon is not present in a default install; where this category is fed by Security 4688 instead, both *Audit Process Creation* and the separate *Include command line in process creation events* policy must be on, and the field names differ — an empty result means blind, not quiet. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0440, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

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.

DeviceProcessEvents| where (((FolderPath endswith "\\wscript.exe" or FolderPath endswith "\\cscript.exe" or FolderPath endswith "\\cmd.exe") and ProcessCommandLine contains "SyncAppvPublishingServer.vbs") and (ProcessCommandLine contains ";" or ProcessCommandLine contains "powershell" or ProcessCommandLine contains "pwsh" or ProcessCommandLine contains "-enc" or ProcessCommandLine contains "IEX" or ProcessCommandLine contains "Invoke-Expression" or ProcessCommandLine contains "Net.WebClient" or ProcessCommandLine contains "DownloadString" or ProcessCommandLine contains "DownloadFile" or ProcessCommandLine contains "FromBase64String"))

Splunk · SPL

Run this as a search.

index=* (((Image="*\\wscript.exe" OR Image="*\\cscript.exe" OR Image="*\\cmd.exe") AND CommandLine="*SyncAppvPublishingServer.vbs*") AND (CommandLine="*;*" OR CommandLine="*powershell*" OR CommandLine="*pwsh*" OR CommandLine="*-enc*" OR CommandLine="*IEX*" OR CommandLine="*Invoke-Expression*" OR CommandLine="*Net.WebClient*" OR CommandLine="*DownloadString*" OR CommandLine="*DownloadFile*" OR CommandLine="*FromBase64String*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (((TO_LOWER(process.executable) LIKE "*\\\\wscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cmd.exe") AND TO_LOWER(process.command_line) LIKE "*syncappvpublishingserver.vbs*") AND (TO_LOWER(process.command_line) LIKE "*;*" OR TO_LOWER(process.command_line) LIKE "*powershell*" OR TO_LOWER(process.command_line) LIKE "*pwsh*" OR TO_LOWER(process.command_line) LIKE "*-enc*" OR TO_LOWER(process.command_line) LIKE "*iex*" OR TO_LOWER(process.command_line) LIKE "*invoke-expression*" OR TO_LOWER(process.command_line) LIKE "*net.webclient*" OR TO_LOWER(process.command_line) LIKE "*downloadstring*" OR TO_LOWER(process.command_line) LIKE "*downloadfile*" OR TO_LOWER(process.command_line) LIKE "*frombase64string*"))

Wazuh · XML rule

Deploy to your manager — this is a rule, not a search.

<group name="sigma,windows,process_creation,">  <!-- 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="Image" type="pcre2">(?i)(\\wscript\.exe$|\\cscript\.exe$|\\cmd\.exe$)</field>    <field name="CommandLine" type="pcre2">(?i)SyncAppvPublishingServer\.vbs</field>    <field name="CommandLine" type="pcre2">(?i)(;|powershell|pwsh|-enc|IEX|Invoke-Expression|Net\.WebClient|DownloadString|DownloadFile|FromBase64String)</field>    <description>Script proxy runs PowerShell through SyncAppvPublishingServer</description>    <mitre>      <id>T1216.002</id>    </mitre>  </rule></group>

Verdicts · reactions · comments

Community

Verdicts from engineers who actually deployed it, and the conversation around it.

Log in to react
Not yet reported on

Nobody has run this in a real environment and said what happened.

Verdicts from engineers who deployed it

0 cast

No 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.