Existing account altered to weaken or extend its credentials
AN0265 asks for account attribute changes correlated with unusual process lineage or timing. The correlation half is not expressible — its TimeWindow knob wants a five-minute join between a suspicious process and a directory change, and its SubjectTargetMismatch knob wants the modifying account compared against the modified one, and lib/sigma has no timeframe, no aggregation and no field-to-field comparison. So this rule takes the analytic's process-creation leg alone and keeps it at the parent technique: it matches the commands that alter an account that already exists in ways that preserve or broaden an adversary's hold on it — clearing the password requirement, lifting expiry, re-enabling a dormant account, resetting a password, or bolting a service principal name onto a user so it becomes Kerberoastable. The two account-control flags that matter most here, PasswordNeverExpires and DoesNotRequirePreAuth, are matched only when a setting cmdlet appears on the same command line, because those two words are far more often typed in a `Get-ADUser -Filter`/`-Properties` audit query — an enumeration that belongs to T1087, not here — than in an actual write. Group membership changes are deliberately excluded even though the analytic's other log source lists EventID 4728, because adding an account to a local or domain group is T1098.007 and belongs in that brief, not under the parent tag. Two limits worth stating before deployment. The brief sources this leg from Sysmon EventID 1, which records CommandLine natively; if the site feeds Security EventID 4688 into the same `process_creation` category instead, *Audit Process Creation* and the separate *Include command line in process creation events* policy must both be enabled or every term below is blind and the rule returns zero rows that read as quiet rather than deaf. And because this is process-creation only, a cmdlet invoked inside a .ps1 body, from a DLL, or over LDAP by a compiled tool leaves nothing here — the directory-side events would, but this rule is not written in their vocabulary. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0096, 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 " user ") and (ProcessCommandLine contains "/active:yes" or ProcessCommandLine contains "/expires:never" or ProcessCommandLine contains "/passwordreq:no" or ProcessCommandLine contains "/passwordchg:no" or ProcessCommandLine contains "/logonpasswordchg:no" or ProcessCommandLine contains "/times:all")) or (ProcessCommandLine contains "Set-ADAccountPassword" or ProcessCommandLine contains "Set-ADAccountControl" or ProcessCommandLine contains "Set-LocalUser" or ProcessCommandLine contains "Enable-LocalUser" or ProcessCommandLine contains "Enable-ADAccount")) or ((ProcessCommandLine contains "PasswordNeverExpires" or ProcessCommandLine contains "DoesNotRequirePreAuth" or ProcessCommandLine contains "AllowReversiblePasswordEncryption") and (ProcessCommandLine contains "Set-ADUser" or ProcessCommandLine contains "Set-ADAccountControl" or ProcessCommandLine contains "Set-LocalUser"))) or (FolderPath endswith "\\setspn.exe" and (ProcessCommandLine contains " -a " or ProcessCommandLine contains " -s ")))
Splunk · SPL
Run this as a search.
index=* ((((((Image="*\\net.exe" OR Image="*\\net1.exe") AND CommandLine="* user *") AND (CommandLine="*/active:yes*" OR CommandLine="*/expires:never*" OR CommandLine="*/passwordreq:no*" OR CommandLine="*/passwordchg:no*" OR CommandLine="*/logonpasswordchg:no*" OR CommandLine="*/times:all*")) OR (CommandLine="*Set-ADAccountPassword*" OR CommandLine="*Set-ADAccountControl*" OR CommandLine="*Set-LocalUser*" OR CommandLine="*Enable-LocalUser*" OR CommandLine="*Enable-ADAccount*")) OR ((CommandLine="*PasswordNeverExpires*" OR CommandLine="*DoesNotRequirePreAuth*" OR CommandLine="*AllowReversiblePasswordEncryption*") AND (CommandLine="*Set-ADUser*" OR CommandLine="*Set-ADAccountControl*" OR CommandLine="*Set-LocalUser*"))) OR (Image="*\\setspn.exe" AND (CommandLine="* -a *" OR CommandLine="* -s *")))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 "* user *") AND (TO_LOWER(process.command_line) LIKE "*/active:yes*" OR TO_LOWER(process.command_line) LIKE "*/expires:never*" OR TO_LOWER(process.command_line) LIKE "*/passwordreq:no*" OR TO_LOWER(process.command_line) LIKE "*/passwordchg:no*" OR TO_LOWER(process.command_line) LIKE "*/logonpasswordchg:no*" OR TO_LOWER(process.command_line) LIKE "*/times:all*")) OR (TO_LOWER(process.command_line) LIKE "*set-adaccountpassword*" OR TO_LOWER(process.command_line) LIKE "*set-adaccountcontrol*" OR TO_LOWER(process.command_line) LIKE "*set-localuser*" OR TO_LOWER(process.command_line) LIKE "*enable-localuser*" OR TO_LOWER(process.command_line) LIKE "*enable-adaccount*")) OR ((TO_LOWER(process.command_line) LIKE "*passwordneverexpires*" OR TO_LOWER(process.command_line) LIKE "*doesnotrequirepreauth*" OR TO_LOWER(process.command_line) LIKE "*allowreversiblepasswordencryption*") AND (TO_LOWER(process.command_line) LIKE "*set-aduser*" OR TO_LOWER(process.command_line) LIKE "*set-adaccountcontrol*" OR TO_LOWER(process.command_line) LIKE "*set-localuser*"))) OR (TO_LOWER(process.executable) LIKE "*\\\\setspn.exe" AND (TO_LOWER(process.command_line) LIKE "* -a *" OR TO_LOWER(process.command_line) LIKE "* -s *")))
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. --> <!-- 4 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) user </field> <field name="CommandLine" type="pcre2">(?i)(/active:yes|/expires:never|/passwordreq:no|/passwordchg:no|/logonpasswordchg:no|/times:all)</field> <description>Existing account altered to weaken or extend its credentials (1/4)</description> <mitre> <id>T1098</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)(Set-ADAccountPassword|Set-ADAccountControl|Set-LocalUser|Enable-LocalUser|Enable-ADAccount)</field> <description>Existing account altered to weaken or extend its credentials (2/4)</description> <mitre> <id>T1098</id> </mitre> </rule> <rule id="100002" level="5"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="CommandLine" type="pcre2">(?i)(PasswordNeverExpires|DoesNotRequirePreAuth|AllowReversiblePasswordEncryption)</field> <field name="CommandLine" type="pcre2">(?i)(Set-ADUser|Set-ADAccountControl|Set-LocalUser)</field> <description>Existing account altered to weaken or extend its credentials (3/4)</description> <mitre> <id>T1098</id> </mitre> </rule> <rule id="100003" level="5"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="Image" type="pcre2">(?i)\\setspn\.exe$</field> <field name="CommandLine" type="pcre2">(?i)( -a | -s )</field> <description>Existing account altered to weaken or extend its credentials (4/4)</description> <mitre> <id>T1098</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.