Local group enumeration via net localgroup or Get-LocalGroup
Matches the Windows leg of AN0317: a process-creation event where net.exe or its net1.exe helper is invoked with the localgroup verb, or where the command line carries the Get-LocalGroup cmdlet family (Get-LocalGroup and Get-LocalGroupMember both satisfy the same substring). Both forms read only the SAM of the local machine, which is what keeps this rule inside T1069.001 and out of T1069.002 — `net group` and Get-ADGroupMember read domain groups and are deliberately not matched here, because the parent T1069 was declined precisely for ORing the two together. The analytic's real signal is correlation, not the command: MITRE's TimeWindow knob asks for enumeration followed by lateral movement and its UserContext knob asks whether the caller is privileged, and lib/sigma models neither a timeframe nor an identity lookup, so a match means one enumeration command ran and nothing more. Three coverage limits are structural: the direct API route the analytic also names (NetLocalGroupEnum, NetLocalGroupGetMembers) writes no process event at all, a base64-encoded PowerShell command hides the cmdlet name from CommandLine, and matching net.exe on its image path misses a renamed copy. The brief maps Security EventID 4688 onto the Sysmon-shaped process_creation category, and this rule is written in the Sysmon EventID 1 vocabulary (Image, CommandLine); an estate feeding 4688 into the same category must map NewProcessName onto Image first, and must have both Audit Process Creation and the separate Include command line in process creation events policy enabled — neither is on by default, and without the second one CommandLine is absent and every selection here is dead. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0114, 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 "\\net.exe" or FolderPath endswith "\\net1.exe") and ProcessCommandLine contains " localgroup") or ProcessCommandLine contains "Get-LocalGroup")
Splunk · SPL
Run this as a search.
index=* (((Image="*\\net.exe" OR Image="*\\net1.exe") AND CommandLine="* localgroup*") OR CommandLine="*Get-LocalGroup*")Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE (((TO_LOWER(process.executable) LIKE "*\\\\net.exe" OR TO_LOWER(process.executable) LIKE "*\\\\net1.exe") AND TO_LOWER(process.command_line) LIKE "* localgroup*") OR TO_LOWER(process.command_line) LIKE "*get-localgroup*")
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. --> <!-- 2 rules: the Sigma condition ORs across different fields, which one rule cannot express. Any one matching is a hit. --> <rule id="100000" level="5"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="Image" type="pcre2">(?i)(\\net\.exe$|\\net1\.exe$)</field> <field name="CommandLine" type="pcre2">(?i) localgroup</field> <description>Local group enumeration via net localgroup or Get-LocalGroup (1/2)</description> <mitre> <id>T1069.001</id> </mitre> </rule> <rule id="100001" level="5"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="CommandLine" type="pcre2">(?i)Get-LocalGroup</field> <description>Local group enumeration via net localgroup or Get-LocalGroup (2/2)</description> <mitre> <id>T1069.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.