Detection rules › Sigma
DSInternals Suspicious PowerShell Cmdlets - ScriptBlock
Detects execution and usage of the DSInternals PowerShell module. Which can be used to perform what might be considered as suspicious activity such as dumping DPAPI backup keys or manipulating NTDS.DIT files. The DSInternals PowerShell Module exposes several internal features of Active Directory and Azure Active Directory. These include FIDO2 and NGC key auditing, offline ntds.dit file manipulation, password auditing, DC recovery from IFM backups and password hash calculation.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Execution | T1059.001 Command and Scripting Interpreter: PowerShell |
Event coverage
| Provider | Event ID | Title |
|---|---|---|
| PowerShell | 4104 | Creating Scriptblock text (MessageNumber of MessageTotal). |
Stages and Predicates
Stage 1: selection
or:
ScriptBlockText|contains: Add-ADDBSidHistory
ScriptBlockText|contains: Add-ADNgcKey
ScriptBlockText|contains: Add-ADReplNgcKey
ScriptBlockText|contains: 'ConvertFrom-ADManagedPasswordBlob'
ScriptBlockText|contains: ConvertFrom-GPPrefPassword
ScriptBlockText|contains: ConvertFrom-ManagedPasswordBlob
ScriptBlockText|contains: ConvertFrom-UnattendXmlPassword
ScriptBlockText|contains: ConvertFrom-UnicodePassword
ScriptBlockText|contains: ConvertTo-AADHash
ScriptBlockText|contains: ConvertTo-GPPrefPassword
ScriptBlockText|contains: ConvertTo-KerberosKey
ScriptBlockText|contains: ConvertTo-LMHash
ScriptBlockText|contains: ConvertTo-MsoPasswordHash
ScriptBlockText|contains: ConvertTo-NTHash
ScriptBlockText|contains: ConvertTo-OrgIdHash
ScriptBlockText|contains: ConvertTo-UnicodePassword
ScriptBlockText|contains: Disable-ADDBAccount
ScriptBlockText|contains: Enable-ADDBAccount
ScriptBlockText|contains: Get-ADDBAccount
ScriptBlockText|contains: Get-ADDBBackupKey
ScriptBlockText|contains: Get-ADDBDomainController
ScriptBlockText|contains: 'Get-ADDBGroupManagedServiceAccount'
ScriptBlockText|contains: Get-ADDBKdsRootKey
ScriptBlockText|contains: Get-ADDBSchemaAttribute
ScriptBlockText|contains: Get-ADDBServiceAccount
ScriptBlockText|contains: Get-ADDefaultPasswordPolicy
ScriptBlockText|contains: Get-ADKeyCredential
ScriptBlockText|contains: Get-ADPasswordPolicy
ScriptBlockText|contains: Get-ADReplAccount
ScriptBlockText|contains: Get-ADReplBackupKey
ScriptBlockText|contains: Get-ADReplicationAccount
ScriptBlockText|contains: Get-ADSIAccount
ScriptBlockText|contains: Get-AzureADUserEx
ScriptBlockText|contains: Get-BootKey
ScriptBlockText|contains: Get-KeyCredential
ScriptBlockText|contains: Get-LsaBackupKey
ScriptBlockText|contains: Get-LsaPolicy
ScriptBlockText|contains: Get-SamPasswordPolicy
ScriptBlockText|contains: Get-SysKey
ScriptBlockText|contains: Get-SystemKey
ScriptBlockText|contains: New-ADDBRestoreFromMediaScript
ScriptBlockText|contains: New-ADKeyCredential
ScriptBlockText|contains: New-ADNgcKey
ScriptBlockText|contains: New-NTHashSet
ScriptBlockText|contains: Remove-ADDBObject
ScriptBlockText|contains: Save-DPAPIBlob
ScriptBlockText|contains: Set-ADAccountPasswordHash
ScriptBlockText|contains: Set-ADDBAccountPassword
ScriptBlockText|contains: Set-ADDBBootKey
ScriptBlockText|contains: Set-ADDBDomainController
ScriptBlockText|contains: Set-ADDBPrimaryGroup
ScriptBlockText|contains: Set-ADDBSysKey
ScriptBlockText|contains: Set-AzureADUserEx
ScriptBlockText|contains: Set-LsaPolicy
ScriptBlockText|contains: Set-SamAccountPasswordHash
ScriptBlockText|contains: Set-WinUserPasswordHash
ScriptBlockText|contains: Test-ADDBPasswordQuality
ScriptBlockText|contains: Test-ADPasswordQuality
ScriptBlockText|contains: Test-ADReplPasswordQuality
ScriptBlockText|contains: Test-PasswordQuality
ScriptBlockText|contains: Unlock-ADDBAccount
ScriptBlockText|contains: Write-ADNgcKey
ScriptBlockText|contains: Write-ADReplNgcKey
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
ScriptBlockText | match |
|
Neighbors
Broader alternatives (more inclusive than this rule)
These rules match a superset of what this rule catches. They cover the same events plus more. Use them if you want wider coverage and can absorb more false positives.
- Potential PowerShell Obfuscation via Invalid Escape Sequences (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via Backtick-Escaped Variable Expansion (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via Character Array Reconstruction (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via Concatenated Dynamic Command Invocation (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via High Numeric Character Proportion (drops 1 filter this rule applies)
- Potential Dynamic IEX Reconstruction via Environment Variables (drops 1 filter this rule applies)
- Dynamic IEX Reconstruction via Method String Access (drops 1 filter this rule applies)
- PowerShell Obfuscation via Negative Index String Reversal (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via Reverse Keywords (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via String Concatenation (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via String Reordering (drops 1 filter this rule applies)
- Potential PowerShell Obfuscation via Special Character Overuse (drops 1 filter this rule applies)