Remote scriptlet proxied through PubPrn.vbs
AN1464 describes a single command shape: the signed Microsoft printer publishing script pubprn.vbs run under a script host with its second argument set to the `script:` moniker, so that the script's GetObject call fetches and executes a remote .sct scriptlet instead of resolving an LDAP container. All three legs are required together — cscript.exe or wscript.exe as the image, `pubprn` somewhere in the command line, and a `script:` moniker carrying a remote location — because the documented legitimate invocation passes an `LDAP://` path as that argument and therefore never satisfies the third. MITRE's `CommandLineRegex` knob describes the moniker with an HTTP or HTTPS URI; the ftp and UNC spellings in that list were added here, not taken from the brief. Limits worth stating plainly. Both the image list and the `pubprn` string are defeated by copying the script under another name, and that is not a hypothetical evasion: Windows 10 and later ship a pubprn.vbs that refuses a remote second argument, so a match on a current build normally means a downlevel copy of the old script was carried onto the host, where renaming it costs the adversary nothing. The analytic's four other log sources are all correlation legs — the outbound fetch on Sysmon EventID 3 or 22, and the module load on EventID 7 that would in practice be the scriptlet runtime scrobj.dll, a name inferred here rather than given by MITRE — and none is attempted, because Sigma models no join between events and because the fetch is performed inside the script host process itself, so on its own it is an ordinary cscript.exe network connection rather than a detection. This rule is written in the Sysmon EventID 1 vocabulary (`Image`, `CommandLine`) that AN1464 names first; a process_creation index fed from Security 4688 instead needs `NewProcessName` mapped onto `Image`, and 4688 needs both *Audit Process Creation* and the separate *Include command line in process creation events* policy before `CommandLine` exists at all — neither is on in a default install or in the Microsoft and CIS baselines, and without them this rule returns zero rows, which reads as quiet when it means blind. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0528, 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.
DeviceProcessEvents| where ((FolderPath endswith "\\cscript.exe" or FolderPath endswith "\\wscript.exe") and ProcessCommandLine contains "pubprn" and (ProcessCommandLine contains "script:http" or ProcessCommandLine contains "script:ftp" or ProcessCommandLine contains "script:\\\\"))
Splunk · SPL
Run this as a search.
index=* ((Image="*\\cscript.exe" OR Image="*\\wscript.exe") AND CommandLine="*pubprn*" AND (CommandLine="*script:http*" OR CommandLine="*script:ftp*" OR CommandLine="*script:\\\\*"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE ((TO_LOWER(process.executable) LIKE "*\\\\cscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\wscript.exe") AND TO_LOWER(process.command_line) LIKE "*pubprn*" AND (TO_LOWER(process.command_line) LIKE "*script:http*" OR TO_LOWER(process.command_line) LIKE "*script:ftp*" OR TO_LOWER(process.command_line) LIKE "*script:\\\\\\\\*"))
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)(\\cscript\.exe$|\\wscript\.exe$)</field> <field name="CommandLine" type="pcre2">(?i)pubprn</field> <field name="CommandLine" type="pcre2">(?i)(script:http|script:ftp|script:\\\\)</field> <description>Remote scriptlet proxied through PubPrn.vbs</description> <mitre> <id>T1216.001</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.