Detection rules › Sigma

New User Account Creation Attempt Via ADSI in CommandLine

Status
experimental
Severity
medium
Log source
category process_creation, product windows
Author
William Gokah (idea), Raylee Hawkins, Swachchhanda Shrawan Poudel (Nextron Systems)
Source
github.com/SigmaHQ/sigma

Detects PowerShell command line arguments containing ADSI (Active Directory Service Interfaces) patterns trying to create a new user account via the WinNT or LDAP provider. This is an uncommon method to create user accounts and may indicate an attempt to evade detection by avoiding more commonly monitored commands such as "net user", "New-LocalUser" or "New-ADUser".

Known false positives

  • Legitimate administrative scripts that use ADSI to provision user accounts but should be rare in most environments

MITRE ATT&CK coverage

Telemetry coverage

ProviderRecord / event type
SysmonEvent ID 1: Process creation

Rule body

title: New User Account Creation Attempt Via ADSI in CommandLine
id: 7c9fed65-039a-4055-8c23-fa763d94aff6
related:
    - id: e50d5d26-0cf6-4045-b82b-13c0a4e316be
      type: similar
status: experimental
description: |
    Detects PowerShell command line arguments containing ADSI (Active Directory Service Interfaces) patterns
    trying to create a new user account via the WinNT or LDAP provider. This is an uncommon method to create
    user accounts and may indicate an attempt to evade detection by avoiding more commonly monitored commands
    such as "net user", "New-LocalUser" or "New-ADUser".
references:
    - https://learn.microsoft.com/en-us/windows/win32/adsi/user-creation-with-the-adsi-ldap-provider
    - https://learn.microsoft.com/en-us/windows/win32/adsi/adsi-winnt-provider
author: William Gokah (idea), Raylee Hawkins, Swachchhanda Shrawan Poudel (Nextron Systems)
date: 2026-08-13
tags:
    - attack.persistence
    - attack.t1136.001
    - attack.t1136.002
logsource:
    category: process_creation
    product: windows
detection:
    selection_img:
        - Image|endswith:
              - '\powershell.exe'
              - '\pwsh.exe'
        - OriginalFileName:
              - 'PowerShell.EXE'
              - 'pwsh.dll'
    selection_cli_adsi:
        CommandLine|contains: '[ADSI]'
    selection_cli_create_user:
        # Example (WinNT - local user):
        #   powershell.exe -Command "$c = [ADSI]('WinNT://' + $env:COMPUTERNAME); $u = $c.Create('User','NewUser'); $u.SetPassword('P@ssw0rd!'); $u.SetInfo()"
        # Example (LDAP - domain user):
        #   $ou = [ADSI]"LDAP://CN=Users,DC=domain,DC=com"; $user = $ou.Create("user", "CN=NewUser"); $user.Put("sAMAccountName","NewUser"); $user.SetInfo()
        CommandLine|contains:
            - '.Create("user'
            - ".Create('user"
    selection_cli_adsi_provider:
        CommandLine|contains:
            - 'WinNT://' # Local user creation via WinNT provider
            - 'LDAP://' # Domain user creation via LDAP provider
    condition: all of selection_*
falsepositives:
    - Legitimate administrative scripts that use ADSI to provision user accounts but should be rare in most environments
level: medium
regression_tests_path: regression_data/rules/windows/process_creation/proc_creation_win_powershell_adsi_create_user/info.yml

Stages and Predicates

Stage 0: condition

all of selection_*

Stage 1: selection_img

selection_img:
    - Image|endswith:
          - '\powershell.exe'
          - '\pwsh.exe'
    - OriginalFileName:
          - 'PowerShell.EXE'
          - 'pwsh.dll'

Stage 2: selection_cli_adsi

selection_cli_adsi:
    CommandLine|contains: '[ADSI]'

Stage 3: selection_cli_create_user

selection_cli_create_user:
    CommandLine|contains:
        - '.Create("user'
        - ".Create('user"

Stage 4: selection_cli_adsi_provider

selection_cli_adsi_provider:
    CommandLine|contains:
        - 'WinNT://'
        - 'LDAP://'

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
CommandLinematch
  • .Create("user
  • .Create('user
  • LDAP://
  • WinNT://
  • [ADSI]
field:"CommandLine" kind:match
Imageends_with
  • \powershell.exe corpus 181 (sigma 180, kusto 1)
  • \pwsh.exe corpus 167 (sigma 166, kusto 1)
field:"Image" kind:ends_with
OriginalFileNameeq
  • PowerShell.EXE corpus 140 (sigma 86, splunk 30, elastic 24)
  • pwsh.dll corpus 114 (sigma 81, splunk 30, elastic 3)
field:"OriginalFileName" kind:eq