Detection rules › Sigma
Sigma rules: 29
Abuse of Service Permissions to Hide Services Via Set-Service - PS
#Detects usage of the "Set-Service" powershell cmdlet to configure a new SecurityDescriptor that allows a service to be hidden from other utilities such as "sc.exe", "Get-Service"...etc. (Works only in powershell 7)
Known False Positives
- Rare intended use of hidden services
- Rare FP could occur due to the non linearity of the ScriptBlockText log
MITRE ATT&CK Coverage
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| PowerShell | Event ID 4104: Creating Scriptblock text (MessageNumber of MessageTotal). |
Rule Body
title: Abuse of Service Permissions to Hide Services Via Set-Service - PS
id: 953945c5-22fe-4a92-9f8a-a9edc1e522da
related:
- id: 514e4c3a-c77d-4cde-a00f-046425e2301e
type: similar
status: test
description: Detects usage of the "Set-Service" powershell cmdlet to configure a new SecurityDescriptor that allows a service to be hidden from other utilities such as "sc.exe", "Get-Service"...etc. (Works only in powershell 7)
references:
- https://twitter.com/Alh4zr3d/status/1580925761996828672
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-service?view=powershell-7.2
author: Nasreddine Bencherchali (Nextron Systems)
date: 2022-10-17
tags:
- attack.persistence
- attack.privilege-escalation
- attack.execution
- attack.stealth
- attack.t1574.011
logsource:
product: windows
category: ps_script
definition: 'Requirements: Script Block Logging must be enabled'
detection:
selection:
ScriptBlockText|contains|all:
- 'Set-Service '
- 'DCLCWPDTSD'
ScriptBlockText|contains:
- '-SecurityDescriptorSddl '
- '-sd '
condition: selection
falsepositives:
- Rare intended use of hidden services
- Rare FP could occur due to the non linearity of the ScriptBlockText log
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
ScriptBlockText|contains|all:
- 'Set-Service '
- 'DCLCWPDTSD'
ScriptBlockText|contains:
- '-SecurityDescriptorSddl '
- '-sd '
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
ScriptBlockText | match |
| field:"ScriptBlockText" kind:match |
AWS Bucket Deleted
#Detects the deletion of S3 buckets in AWS CloudTrail logs. Monitoring the deletion of S3 buckets is critical for security and data integrity, as it may indicate potential data loss or unauthorized access attempts.
Known False Positives
- During maintenance operations or testing, authorized administrators may delete S3 buckets as part of routine data management or cleanup activities.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth | No specific technique |
Rules Detecting the Same Action
These rules filter on the same operation.
- Detect Spike in S3 Bucket deletion (Splunk)
Rule Body
title: AWS Bucket Deleted
id: 39c9f26d-6e3b-4dbb-9c7a-4154b0281112
status: experimental
description: |
Detects the deletion of S3 buckets in AWS CloudTrail logs.
Monitoring the deletion of S3 buckets is critical for security and data integrity, as it may indicate potential data loss or unauthorized access attempts.
references:
- https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html
- https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket.html
author: Ivan Saakov, Nasreddine Bencherchali
date: 2025-10-19
tags:
- attack.stealth
logsource:
product: aws
service: cloudtrail
detection:
selection_event_name:
eventName: 'DeleteBucket'
selection_status_success:
errorCode: 'Success'
selection_status_null:
errorCode: null
condition: selection_event_name and 1 of selection_status_*
falsepositives:
- During maintenance operations or testing, authorized administrators may delete S3 buckets as part of routine data management or cleanup activities.
level: medium
Stages and Predicates
Stage 0: condition
selection_event_name and 1 of selection_status_*Stage 1: selection_event_name
selection_event_name:
eventName: 'DeleteBucket'
Stage 2: selection_status_success
selection_status_success:
errorCode: 'Success'
Stage 3: selection_status_null
selection_status_null:
errorCode: null
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
errorCode | eq |
| field:"aws::errorCode" kind:eq value:"Success" |
errorCode | is_null | field:"aws::errorCode" kind:is_null | |
eventName | eq |
| field:"aws::eventName" kind:eq value:"DeleteBucket" |
Binary Padding - MacOS
#Adversaries may use binary padding to add junk data and change the on-disk representation of malware. This rule detect using dd and truncate to add a junk data to file.
Known False Positives
- Legitimate script work
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
Rule Body
title: Binary Padding - MacOS
id: 95361ce5-c891-4b0a-87ca-e24607884a96
status: test
description: Adversaries may use binary padding to add junk data and change the on-disk representation of malware. This rule detect using dd and truncate to add a junk data to file.
references:
- https://github.com/redcanaryco/atomic-red-team/blob/f339e7da7d05f6057fdfcdd3742bfcf365fee2a9/atomics/T1027.001/T1027.001.md
- https://linux.die.net/man/1/truncate
- https://linux.die.net/man/1/dd
author: 'Igor Fits, Mikhail Larin, oscd.community'
date: 2020-10-19
modified: 2023-02-17
tags:
- attack.stealth
- attack.t1027.001
logsource:
product: macos
category: process_creation
detection:
selection_truncate:
Image|endswith: '/truncate'
CommandLine|contains: '-s +'
selection_dd:
Image|endswith: '/dd'
CommandLine|contains:
- 'if=/dev/zero' # if input is not /dev/zero, then there is no null padding
- 'if=/dev/random' # high-quality random data
- 'if=/dev/urandom' # low-quality random data
condition: 1 of selection_*
falsepositives:
- Legitimate script work
level: high
Stages and Predicates
Stage 0: condition
1 of selection_*Stage 1: selection_truncate
selection_truncate:
Image|endswith: '/truncate'
CommandLine|contains: '-s +'
Stage 2: selection_dd
selection_dd:
Image|endswith: '/dd'
CommandLine|contains:
- 'if=/dev/zero'
- 'if=/dev/random'
- 'if=/dev/urandom'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with |
CodeIntegrity - Unsigned Kernel Module Loaded
#Detects the presence of a loaded unsigned kernel module on the system.
Known False Positives
- Unlikely
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation | No specific technique |
Telemetry Coverage
Rule Body
title: CodeIntegrity - Unsigned Kernel Module Loaded
id: 951f8d29-f2f6-48a7-859f-0673ff105e6f
status: test
description: Detects the presence of a loaded unsigned kernel module on the system.
references:
- https://learn.microsoft.com/en-us/windows/security/application-security/application-control/windows-defender-application-control/operations/event-id-explanations
- https://learn.microsoft.com/en-us/windows/security/application-security/application-control/windows-defender-application-control/operations/event-tag-explanations
- Internal Research
author: Nasreddine Bencherchali (Nextron Systems)
date: 2023-06-06
tags:
- attack.privilege-escalation
logsource:
product: windows
service: codeintegrity-operational
detection:
selection:
EventID: 3001 # Code Integrity determined an unsigned kernel module %2 is loaded into the system. Check with the publisher to see if a signed version of the kernel module is available
condition: selection
falsepositives:
- Unlikely
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
EventID: 3001
Encoded PowerShell payload deployed (PowerShell)
#Detects scenarios where an attacker deployed a service pointing to a hidden and encoded PowerShell payload.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Stealth |
Telemetry Coverage
Rule Body
title: Encoded PowerShell payload deployed (PowerShell)
description: Detects scenarios where an attacker deployed a service pointing to a hidden and encoded PowerShell payload.
references:
- https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0002-Execution/T1059.001-PowerShell
- https://www.offensive-security.com/metasploit-unleashed/psexec-pass-hash/
- https://www.huntress.com/blog/from-powershell-to-payload-an-analysis-of-weaponized-malware
- https://www.huntress.com/blog/malware-deep-dive-examining-a-powershell-payload
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1569.002/T1569.002.md
- https://www.f5.com/labs/articles/threat-intelligence/vulnerabilities-exploits-and-malware-driving-attack-campaigns-in-october-2019
- https://www.crowdstrike.com/blog/getting-the-bacon-from-cobalt-strike-beacon/
- https://unit42.paloaltonetworks.com/threat-brief-OWASSRF/
tags:
- attack.execution
- attack.t1059.001
- attack.defense_evasion
- attack.t1027
author: mdecrevoisier
status: experimental
logsource:
product: windows
category:
- ps_module
- ps_classic_script
- ps_script
detection:
selection_powershell_native:
EventID: 800
EventData|contains|all:
- 'FromBase64String'
- 'IO.StreamReader'
- 'IO.Compression.'
selection_powershell_modern:
EventID: 4103
Payload|contains|all:
- 'FromBase64String'
- 'IO.StreamReader'
- 'IO.Compression.'
selection_powershell_block:
EventID: 4104
ScriptBlockText|contains|all:
- 'FromBase64String'
- 'IO.StreamReader'
- 'IO.Compression.'
condition: 1 of selection*
falsepositives:
- Unknown
level: high
#- 'FromBase64String'
#- 'IO.StreamReader'
#- 'IO.Compression.'
#- '[System.Convert]::'
#- '[Convert]'
#- 'System.Diagnostics.Process'
Stages and Predicates
Stage 0: condition
1 of selection*Stage 1: selection_powershell_native
selection_powershell_native:
EventID: 800
EventData|contains|all:
- 'FromBase64String'
- 'IO.StreamReader'
- 'IO.Compression.'
Stage 2: selection_powershell_modern
selection_powershell_modern:
EventID: 4103
Payload|contains|all:
- 'FromBase64String'
- 'IO.StreamReader'
- 'IO.Compression.'
Stage 3: selection_powershell_block
selection_powershell_block:
EventID: 4104
ScriptBlockText|contains|all:
- 'FromBase64String'
- 'IO.StreamReader'
- 'IO.Compression.'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
EventData | match |
| field:"EventData" kind:match |
Payload | match |
| field:"Payload" kind:match |
ScriptBlockText | match |
| field:"ScriptBlockText" kind:match |
Forest Blizzard APT - Custom Protocol Handler DLL Registry Set
#Detects the setting of the DLL that handles the custom protocol handler. Seen being created by Forest Blizzard APT as reported by MSFT.
Known False Positives
- Unlikely
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
title: Forest Blizzard APT - Custom Protocol Handler DLL Registry Set
id: d807056b-0e00-4cec-b7f8-b8b7518e382b
status: test
description: |
Detects the setting of the DLL that handles the custom protocol handler.
Seen being created by Forest Blizzard APT as reported by MSFT.
references:
- https://www.microsoft.com/en-us/security/blog/2024/04/22/analyzing-forest-blizzards-custom-post-compromise-tool-for-exploiting-cve-2022-38028-to-obtain-credentials/
author: Nasreddine Bencherchali (Nextron Systems)
date: 2024-04-23
tags:
- attack.privilege-escalation
- attack.persistence
- attack.t1547.001
- detection.emerging-threats
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains: '\CLSID\{026CC6D7-34B2-33D5-B551-CA31EB6CE345}\Server'
Details|endswith: '.dll'
condition: selection
falsepositives:
- Unlikely
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
TargetObject|contains: '\CLSID\{026CC6D7-34B2-33D5-B551-CA31EB6CE345}\Server'
Details|endswith: '.dll'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Details | ends_with |
| field:"Details" kind:ends_with value:".dll" |
TargetObject | match |
| field:"TargetObject" kind:match value:"\CLSID\{026CC6D7-34B2-33D5-B551-CA31EB6CE345}\Server" |
Github SSH Certificate Configuration Changed
#Detects when changes are made to the SSH certificate configuration of the organization.
Known False Positives
- Allowed administrative activities.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access | |
| Persistence | |
| Privilege Escalation | |
| Stealth |
Telemetry Coverage
Rule Body
title: Github SSH Certificate Configuration Changed
id: 2f575940-d85e-4ddc-af13-17dad6f1a0ef
status: test
description: Detects when changes are made to the SSH certificate configuration of the organization.
references:
- https://docs.github.com/en/enterprise-cloud@latest/organizations/managing-git-access-to-your-organizations-repositories/about-ssh-certificate-authorities
- https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise#ssh_certificate_authority
author: Romain Gaillard (@romain-gaillard)
date: 2024-07-29
tags:
- attack.initial-access
- attack.persistence
- attack.privilege-escalation
- attack.stealth
- attack.t1078.004
logsource:
product: github
service: audit
definition: 'Requirements: The audit log streaming feature must be enabled to be able to receive such logs. You can enable following the documentation here: https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise#setting-up-audit-log-streaming'
detection:
selection:
action:
- 'ssh_certificate_authority.create' # An SSH certificate authority for an organization or enterprise was created.
- 'ssh_certificate_requirement.disable' # The requirement for members to use SSH certificates to access an organization resources was disabled.
condition: selection
falsepositives:
- Allowed administrative activities.
level: medium
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
action:
- 'ssh_certificate_authority.create'
- 'ssh_certificate_requirement.disable'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
action | eq |
| field:"action" kind:eq |
HackTool - CoercedPotato Named Pipe Creation
#Detects the pattern of a pipe name as used by the hack tool CoercedPotato
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation | |
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 17: PipeEvent (Pipe Created) |
| Sysmon | Event ID 18: PipeEvent (Pipe Connected) |
Rule Body
title: HackTool - CoercedPotato Named Pipe Creation
id: 4d0083b3-580b-40da-9bba-626c19fe4033
status: test
description: Detects the pattern of a pipe name as used by the hack tool CoercedPotato
references:
- https://blog.hackvens.fr/articles/CoercedPotato.html
- https://github.com/hackvens/CoercedPotato
author: Florian Roth (Nextron Systems)
date: 2023-10-11
tags:
- attack.privilege-escalation
- attack.stealth
- attack.t1055
logsource:
product: windows
category: pipe_created
definition: 'Note that you have to configure logging for Named Pipe Events in Sysmon config (Event ID 17 and Event ID 18). The basic configuration is in popular sysmon configuration (https://github.com/SwiftOnSecurity/sysmon-config), but it is worth verifying. You can also use other repo, e.g. https://github.com/Neo23x0/sysmon-config, https://github.com/olafhartong/sysmon-modular. How to test detection? You can check powershell script from this site https://svch0st.medium.com/guide-to-named-pipes-and-hunting-for-cobalt-strike-pipes-dc46b2c5f575'
detection:
selection:
PipeName|contains: '\coerced\'
condition: selection
falsepositives:
- Unknown
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
PipeName|contains: '\coerced\'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
PipeName | match |
| field:"PipeName" kind:match value:"\coerced\" |
HackTool - Pypykatz Credentials Dumping Activity
#Detects the usage of "pypykatz" to obtain stored credentials. Adversaries may attempt to extract credential material from the Security Account Manager (SAM) database through Windows registry where the SAM database is stored
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: HackTool - Pypykatz Credentials Dumping Activity
id: a29808fd-ef50-49ff-9c7a-59a9b040b404
status: test
description: Detects the usage of "pypykatz" to obtain stored credentials. Adversaries may attempt to extract credential material from the Security Account Manager (SAM) database through Windows registry where the SAM database is stored
references:
- https://github.com/skelsec/pypykatz
- https://github.com/redcanaryco/atomic-red-team/blob/f339e7da7d05f6057fdfcdd3742bfcf365fee2a9/atomics/T1003.002/T1003.002.md#atomic-test-2---registry-parse-with-pypykatz
author: frack113
date: 2022-01-05
modified: 2023-02-05
tags:
- attack.credential-access
- attack.t1003.002
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith:
- \pypykatz.exe
- \python.exe
CommandLine|contains|all:
- 'live'
- 'registry'
condition: selection
falsepositives:
- Unknown
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
Image|endswith:
- \pypykatz.exe
- \python.exe
CommandLine|contains|all:
- 'live'
- 'registry'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with |
High risk event - grant Management APIs scopes
#Excessive permissions can lead to unauthorized access. Auth0 Management API scopes should be given to trusted applications and monitored.
Known False Positives
- Legitimate updates by an administrator. This rule is designed for threat hunting and to be a starting point for further investigation.
- Trusted client_id has not been listed, e.g. see filter_2.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Privilege Escalation |
Rule Body
title: High risk event - grant Management APIs scopes
id: b275f0fa-3f2d-493f-a741-67e861ef77ed
status: experimental
description: |
Excessive permissions can lead to unauthorized access. Auth0 Management API scopes should be given to trusted applications and monitored.
author: Okta
date: 2025-07-11
modified: 2025-09-01
logsource:
product: auth0
detection:
selection:
data.type: sapi
data.description:
- Update client grant
filter_1:
data.details.response.body.audience:
- 'https://{your-tenant-domain}/api/v2/'
data.details.request.body.scope{}|startswith:
# Example of scopes. Limit this list to relevant scopes to be monitored
- 'delete:'
- 'update:'
filter_2:
data.details.response.body.client_id:
# List client_ids for trusted applications
- '{trusted-client_id-1}'
- '{trusted-client_id-2}'
condition: selection and filter_1 and not filter_2
explanation: >
The query collects log entries issued when applications' settings are modified, i.e. "Update client grant".
It filters by audience to locate Management API related activities.
The Splunk query provides modifying IPs, client_ids of applications which were assigned to risky scopes, and a list of these scopes.
splunk: |
index=auth0 data.tenant_name="{your-tenant-name}"
data.type=sapi data.description="Update client grant"
data.details.response.body.audience="https://{your-tenant-domain}/api/v2/"
```Add more monitored scopes```
data.details.request.body.scope{} IN ("{mgg-api-scope-1}", "{mgg-api-scope-2}")
```Trigger an alert when scopes are granted to applications that are not on the list of allowed clients.```
NOT data.details.response.body.client_id IN ({trusted-client_id-1}, {trusted-client_id-2})
| fields _time, data.ip, data.details.request.body.scope{}, data.details.response.body.client_id
```Display the information in a table```
| table _time, data.ip, data.details.response.body.client_id, data.details.request.body.scope{}
comments:
- The Splunk query above shall be tuned to reflect a valid tenant name, audience, monitored Management API scopes, and trusted client_ids.
- To reduce a number of alerts, the query can be adjusted to watch for a more critical set of scopes, e.g. focus on "delete:*", but not "read:*",
and/or trigger alerts when scopes are granted to applications that are not on the list of trusted clients.
- To get a full list of available Management APIs scope and their descriptions, you can go to Applications --> Auth0 Management API --> Permissions.
- To get an easier to copy list, you can go to Applications --> Auth0 Management API --> API Explorer --> Copy the token.
- Then go to Management API documentation (https://auth0.com/docs/api/management/v2), click "Set API Token" and paste the earlier copied token. Now, you see all scopes that are easy to copy and use in the splunk query given above.
tenant_logs: |
type:"sapi" AND description: "Update client grant"
prevention:
- Control tenant admins, i.e. "Admin", as this role has permissions to modify any application.
- Enforce MFA for tenant admins to reduce the risk of an adversary gaining access.
- Control Management API scopes that allow modification of grants - *:client_grants
- Control usage of Management API from only trusted IPs by applying Network ACL scoped to "management".
falsepositives:
- Legitimate updates by an administrator. This rule is designed for threat hunting and to be a starting point for further investigation.
- Trusted client_id has not been listed, e.g. see filter_2.
level: medium
tags:
- attack.defense-evasion
- attack.t1548
Stages and Predicates
Stage 0: condition
selection and filter_1 and not filter_2Stage 1: selection
selection:
data.type: sapi
data.description:
- Update client grant
Stage 2: filter_1
filter_1:
data.details.response.body.audience:
- 'https://{your-tenant-domain}/api/v2/'
data.details.request.body.scope{}|startswith:
- 'delete:'
- 'update:'
Stage 3: not filter_2
filter_2:
data.details.response.body.client_id:
- '{trusted-client_id-1}'
- '{trusted-client_id-2}'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
data.description | eq |
| field:"data.description" kind:eq value:"Update client grant" |
data.details.request.body.scope{} | starts_with |
| field:"data.details.request.body.scope{}" kind:starts_with |
data.details.response.body.audience | eq |
| field:"data.details.response.body.audience" kind:eq value:"https://{your-tenant-domain}/api/v2/" |
data.type | eq |
| field:"data.type" kind:eq value:"sapi" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
data.details.response.body.client_id | eq | {trusted-client_id-1} | excludes:data.details.response.body.client_id field:"data.details.response.body.client_id" value:"{trusted-client_id-1}" |
data.details.response.body.client_id | eq | {trusted-client_id-2} | excludes:data.details.response.body.client_id field:"data.details.response.body.client_id" value:"{trusted-client_id-2}" |
High risk local/domain local group membership change
#Detects scenarios where a suspicious group membership is changed. Having Microsoft LAPS installed may trigger false positive events for the builtin administrators group triggered by the system account (S-1-5-18).
Known False Positives
- Administrator activity
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4732: A member was added to a security-enabled local group. |
Rule Body
title: High risk local/domain local group membership change
description: Detects scenarios where a suspicious group membership is changed. Having Microsoft LAPS installed may trigger false positive events for the builtin administrators group triggered by the system account (S-1-5-18).
references:
- https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0003-Persistence/T1098.xxx-Account%20manipulation
- https://ss64.com/nt/syntax-groups.html
- https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiers
tags:
- attack.persistence
- attack.t1098
author: mdecrevoisier
status: experimental
logsource:
product: windows
service: security
detection:
selection:
EventID: 4732 # local and domain local group
TargetSid|startswith: 'S-1-5-32'
TargetSid|endswith:
- '-544' # Administrators
- '-547' # Power Users
- '-548' # Account Operators
- '-549' # Server Operators
- '-551' # Backup Operators
- '-578' # Hyper-V Administrators
filter:
SubjectUserSid: 'S-1-5-18' # LAPS or others IAM solutions may trigger this as a false positive
condition: selection and not filter
falsepositives:
- Administrator activity
level: high
Stages and Predicates
Stage 0: condition
selection and not filterStage 1: selection
selection:
EventID: 4732
TargetSid|startswith: 'S-1-5-32'
TargetSid|endswith:
- '-544'
- '-547'
- '-548'
- '-549'
- '-551'
- '-578'
Stage 2: not filter
filter:
SubjectUserSid: 'S-1-5-18'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
TargetSid | ends_with |
| field:"TargetSid" kind:ends_with |
TargetSid | starts_with |
| field:"TargetSid" kind:starts_with value:"S-1-5-32" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
SubjectUserSid | eq | S-1-5-18 | excludes:SubjectUserSid field:"SubjectUserSid" value:"S-1-5-18" |
Host constrained delegation settings changed for potential abuse (Rubeus) - Any protocol
#Detects scenarios where an attacker modifies host delegation settings for privilege escalation.
Known False Positives
- Rare administrator modifying host delegation settings
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4742: A computer account was changed. |
Rule Body
title: Host constrained delegation settings changed for potential abuse (Rubeus) - Any protocol
description: Detects scenarios where an attacker modifies host delegation settings for privilege escalation.
references:
- https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0003-Persistence/T1098.xxx-Account%20manipulation
- https://dirkjanm.io/krbrelayx-unconstrained-delegation-abuse-toolkit/
- https://www.alsid.com/crb_article/kerberos-delegation/
- https://www.harmj0y.net/blog/activedirectory/s4u2pwnage/
- https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html
- https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-kerberos-constrained-delegation
- https://www.guidepointsecurity.com/delegating-like-a-boss-abusing-kerberos-delegation-in-active-directory/
- https://stealthbits.com/blog/what-is-kerberos-delegation-an-overview-of-kerberos-delegation/
- https://posts.specterops.io/hunting-in-active-directory-unconstrained-delegation-forests-trusts-71f2b33688e1
- https://www.thehacker.recipes/ad/movement/kerberos/delegations#talk
tags:
- attack.persistence
- attack.t1098
author: mdecrevoisier
status: experimental
logsource:
product: windows
service: security
detection:
selection: # Delegation to specified service, any protocol
EventID: 4742
UserAccountControl: '%%2098' # Enable option "Approved for authenticated delegation"
filter:
AllowedToDelegateTo: '-' # Can be: "cifs/srv01 cifs/srv02.demo.lan dcom/dc03..."
condition: selection and not filter
falsepositives:
- Rare administrator modifying host delegation settings
level: high
Stages and Predicates
Stage 0: condition
selection and not filterStage 1: selection
selection:
EventID: 4742
UserAccountControl: '%%2098'
Stage 2: not filter
filter:
AllowedToDelegateTo: '-'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
UserAccountControl | eq |
| field:"UserAccountControl" kind:eq value:"%%2098" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
AllowedToDelegateTo | eq | - | excludes:AllowedToDelegateTo field:"AllowedToDelegateTo" value:"-" |
Hypervisor-protected Code Integrity (HVCI) Related Registry Tampering Via CommandLine
#Detects the tampering of Hypervisor-protected Code Integrity (HVCI) related registry values via command line tool reg.exe. HVCI uses virtualization-based security to protect code integrity by ensuring that only trusted code can run in kernel mode. Adversaries may tamper with HVCI to load malicious or unsigned drivers, which can be used to escalate privileges, maintain persistence, or evade security mechanisms.
Known False Positives
- Legitimate system administration tasks that require disabling HVCI for troubleshooting purposes when certain drivers or applications are incompatible with it.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Hypervisor-protected Code Integrity (HVCI) Related Registry Tampering Via CommandLine
id: 6225c53a-a96e-4235-b28f-8d7997cd96eb
related:
- id: 8b7273a4-ba5d-4d8a-b04f-11f2900d043a
type: similar
status: experimental
description: |
Detects the tampering of Hypervisor-protected Code Integrity (HVCI) related registry values via command line tool reg.exe.
HVCI uses virtualization-based security to protect code integrity by ensuring that only trusted code can run in kernel mode.
Adversaries may tamper with HVCI to load malicious or unsigned drivers, which can be used to escalate privileges, maintain persistence, or evade security mechanisms.
references:
- https://www.sophos.com/en-us/blog/sharpening-the-knife-gold-blades-strategic-evolution
- https://learn.microsoft.com/en-us/windows/security/hardware-security/enable-virtualization-based-protection-of-code-integrity
author: Swachchhanda Shrawan Poudel (Nextron Systems)
date: 2026-01-26
tags:
- attack.defense-impairment
- attack.t1685
logsource:
category: process_creation
product: windows
detection:
selection_img:
- Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\reg.exe'
- OriginalFileName:
- 'PowerShell.EXE'
- 'pwsh.dll'
- 'reg.exe'
selection_cli:
CommandLine|contains:
- 'add '
- 'New-ItemProperty '
- 'Set-ItemProperty '
- 'si ' # SetItem Alias
selection_cli_base:
CommandLine|contains: '\DeviceGuard'
selection_cli_key:
CommandLine|contains:
- 'EnableVirtualizationBasedSecurity'
- 'HypervisorEnforcedCodeIntegrity'
condition: all of selection_*
falsepositives:
- Legitimate system administration tasks that require disabling HVCI for troubleshooting purposes when certain drivers or applications are incompatible with it.
level: high
regression_tests_path: regression_data/rules/windows/process_creation/proc_creation_win_hvci_registry_tampering/info.yml
simulation:
- type: atomic-red-team
name: Disable Hypervisor-Enforced Code Integrity (HVCI)
technique: T1562.001
atomic_guid: 70bd71e6-eba4-4e00-92f7-617911dbe020
Stages and Predicates
Stage 0: condition
all of selection_*Stage 1: selection_img
selection_img:
- Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\reg.exe'
- OriginalFileName:
- 'PowerShell.EXE'
- 'pwsh.dll'
- 'reg.exe'
Stage 2: selection_cli
selection_cli:
CommandLine|contains:
- 'add '
- 'New-ItemProperty '
- 'Set-ItemProperty '
- 'si '
Stage 3: selection_cli_base
selection_cli_base:
CommandLine|contains: '\DeviceGuard'
Stage 4: selection_cli_key
selection_cli_key:
CommandLine|contains:
- 'EnableVirtualizationBasedSecurity'
- 'HypervisorEnforcedCodeIntegrity'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with |
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq |
Java Running with Remote Debugging
#Detects a JAVA process running with remote debugging allowing more than just localhost to connect
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: Java Running with Remote Debugging
id: 8f88e3f6-2a49-48f5-a5c4-2f7eedf78710
status: test
description: Detects a JAVA process running with remote debugging allowing more than just localhost to connect
references:
- https://dzone.com/articles/remote-debugging-java-applications-with-jdwp
author: Florian Roth (Nextron Systems)
date: 2019-01-16
modified: 2023-02-01
tags:
- attack.t1203
- attack.execution
logsource:
category: process_creation
product: windows
detection:
selection_jdwp_transport:
CommandLine|contains: 'transport=dt_socket,address='
selection_old_jvm_version:
CommandLine|contains:
- 'jre1.'
- 'jdk1.'
exclusion:
CommandLine|contains:
- 'address=127.0.0.1'
- 'address=localhost'
condition: all of selection_* and not exclusion
falsepositives:
- Unknown
level: medium
Stages and Predicates
Stage 0: condition
all of selection_* and not exclusionStage 1: selection_jdwp_transport
selection_jdwp_transport:
CommandLine|contains: 'transport=dt_socket,address='
Stage 2: selection_old_jvm_version
selection_old_jvm_version:
CommandLine|contains:
- 'jre1.'
- 'jdk1.'
Stage 3: not exclusion
exclusion:
CommandLine|contains:
- 'address=127.0.0.1'
- 'address=localhost'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
CommandLine | match | address=127.0.0.1 | excludes:CommandLine field:"CommandLine" value:"address=127.0.0.1" |
CommandLine | match | address=localhost | excludes:CommandLine field:"CommandLine" value:"address=localhost" |
Kerberoasting Activity - Initial Query
#This rule will collect the data needed to start looking into possible kerberoasting activity. Further analysis or computation within the query is needed focusing on requests from one specific host/IP towards multiple service names within a time period of 5 seconds. You can then set a threshold for the number of requests and time between the requests to turn this into an alert.
Known False Positives
- Legacy applications.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 4769: A Kerberos service ticket was requested. |
Rule Body
title: Kerberoasting Activity - Initial Query
id: d04ae2b8-ad54-4de0-bd87-4bc1da66aa59
status: test
description: |
This rule will collect the data needed to start looking into possible kerberoasting activity.
Further analysis or computation within the query is needed focusing on requests from one specific host/IP towards multiple service names within a time period of 5 seconds.
You can then set a threshold for the number of requests and time between the requests to turn this into an alert.
references:
- https://www.trustedsec.com/blog/art_of_kerberoast/
- https://adsecurity.org/?p=3513
author: '@kostastsale'
date: 2022-01-21
modified: 2025-10-19
tags:
- attack.credential-access
- attack.t1558.003
logsource:
product: windows
service: security
detection:
selection:
EventID: 4769
Status: '0x0' # Translated as status from failure code field. Query only for successes
TicketEncryptionType: '0x17' # RC4 ticket encryption type
filter_main_krbtgt:
ServiceName|endswith:
- 'krbtgt' # Ignore requests for the krbtgt service
- '$' # Ignore requests from service names that end with $ which are associated with genuine kerberos traffic
filter_main_machine_accounts:
TargetUserName|contains: '$@' # Ignore requests from machines
condition: selection and not 1 of filter_main_*
falsepositives:
- Legacy applications.
level: medium
Stages and Predicates
Stage 0: condition
selection and not 1 of filter_main_*Stage 1: selection
selection:
EventID: 4769
Status: '0x0'
TicketEncryptionType: '0x17'
Stage 2: not filter_main_*
filter_main_krbtgt:
ServiceName|endswith:
- 'krbtgt'
- '$'
filter_main_machine_accounts:
TargetUserName|contains: '$@'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Status | eq |
| field:"Status" kind:eq value:"0x0" |
TicketEncryptionType | eq |
| field:"TicketEncryptionType" kind:eq value:"0x17" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
ServiceName | ends_with | $ | excludes:ServiceName field:"ServiceName" value:"$" |
ServiceName | ends_with | krbtgt | excludes:ServiceName field:"ServiceName" value:"krbtgt" |
TargetUserName | match | $@ | excludes:TargetUserName field:"TargetUserName" value:"$@" |
LSASS process dump by a non system account
#Detects scenarios where an attacker will dump the LSASS memory content using tools like Mimikatz, ProcDump, TaskMgr, ...
Known False Positives
- Antivirus, security products, browsers
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Credential Access |
Telemetry Coverage
Rule Body
title: LSASS process dump by a non system account
description: Detects scenarios where an attacker will dump the LSASS memory content using tools like Mimikatz, ProcDump, TaskMgr, ...
references:
- https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0006-Credential%20Access/T1003-Credential%20dumping
tags:
- attack.credential_access
- attack.t1003.001
author: mdecrevoisier
status: experimental
logsource:
product: windows
service: security
detection:
selection:
EventID:
- 4656 # A handle to an object was requested. / Kernel object
- 4663 # An attempt was made to access an object / Kernel object
ObjectType: Process
ObjectServer: Security
ObjectName|endswith: '\System32\lsass.exe'
# AccessMask:
#- '0x1410'
#- '0x1010'
#- '0x1438' # could refers to misc::memssp
#- '0x143a'
#- '0x1418'
filter:
SubjectUserName|endswith: '$'
ProcessName:
- '*\\AppData\Local\Google\Chrome\User Data\SwReporter\\*\software_reporter_tool.exe' # Google Chrome Security tool
- '*\ProgramData\Microsoft\Windows Defender\Platform\*'
- '*\Program Files\Windows Defender Advanced Threat Protection\*'
- '*\system32\csrss.exe'
- '*\system32\wininit.exe'
- '*\Windows\System32\rundll32.exe' # See LSASSY dedicated rule
condition: selection and not filter
falsepositives:
- Antivirus, security products, browsers
level: high
Stages and Predicates
Stage 0: condition
selection and not filterStage 1: selection
selection:
EventID:
- 4656
- 4663
ObjectType: Process
ObjectServer: Security
ObjectName|endswith: '\System32\lsass.exe'
Stage 2: not filter
filter:
SubjectUserName|endswith: '$'
ProcessName:
- '*\\AppData\Local\Google\Chrome\User Data\SwReporter\\*\software_reporter_tool.exe'
- '*\ProgramData\Microsoft\Windows Defender\Platform\*'
- '*\Program Files\Windows Defender Advanced Threat Protection\*'
- '*\system32\csrss.exe'
- '*\system32\wininit.exe'
- '*\Windows\System32\rundll32.exe'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
ObjectName | ends_with |
| field:"ObjectName" kind:ends_with value:"\System32\lsass.exe" |
ObjectServer | eq |
| field:"ObjectServer" kind:eq value:"Security" |
ObjectType | eq |
| field:"ObjectType" kind:eq value:"Process" |
Exclusions
The rule actively suppresses these predicates.
macOS File Transfer Tool Execution
#Detects execution of file transfer tools (scp, rsync, sftp) which may indicate lateral movement or data staging for exfiltration. Adversaries often use these utilities to move files between compromised systems.
Known False Positives
- Legitimate system administration and backup operations
- Automated file synchronization tasks
- Development workflows using rsync for deployments
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Lateral Movement |
Rule Body
title: macOS File Transfer Tool Execution
id: b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e
status: experimental
description: 'Detects execution of file transfer tools (scp, rsync, sftp) which may
indicate
lateral movement or data staging for exfiltration. Adversaries often use these
utilities to move files between compromised systems.
'
author: Eric Brown - Nebulock, Inc.
date: 2025/10/31
modified: 2025/10/31
references:
- https://attack.mitre.org/techniques/T1021/004/
- https://attack.mitre.org/techniques/T1570/
logsource:
product: macos
service: endpointsecurity
detection:
selection_event:
esf.event_type: 9
event.action: exec
selection_process:
Image|endswith:
- /scp
- /rsync
- /sftp
condition: selection_event and selection_process
falsepositives:
- Legitimate system administration and backup operations
- Automated file synchronization tasks
- Development workflows using rsync for deployments
fields:
- Image
- CommandLine
- ProcessId
- ParentProcessId
- User
tags:
- attack.lateral_movement
- attack.t1021.004
- attack.t1570
level: medium
Stages and Predicates
Stage 0: condition
selection_event and selection_processStage 1: selection_event
selection_event:
esf.event_type: 9
event.action: exec
Stage 2: selection_process
selection_process:
Image|endswith:
- /scp
- /rsync
- /sftp
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Image | ends_with |
| field:"Image" kind:ends_with |
esf.event_type | eq |
| field:"esf.event_type" kind:eq value:"9" |
event.action | eq |
| field:"EventType" kind:eq value:"exec" |
OCSP responder security settings changed
#Detects scenarios where an attacker would attempt to escalate privileges by changing the security settings of the responder.
Known False Positives
- Rare PKI/ADCS/OSCP admin changes
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Security-Auditing | Event ID 5124: A security setting was updated on OCSP Responder Service. |
Rule Body
title: OCSP responder security settings changed
description: Detects scenarios where an attacker would attempt to escalate privileges by changing the security settings of the responder.
requirements: requires to have the OCSP role installed and to have enabled auditing in the responder properties.
references:
- https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0005-Defense%20Evasion/T1222.001-File%20and%20Directory%20Permissions%20Modification
- https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=5124
tags:
- attack.defense_evasion
- attack.t1222
author: mdecrevoisier
status: experimental
logsource:
product: windows
service: security
detection:
selection:
EventID: 5124
condition: selection
falsepositives:
- Rare PKI/ADCS/OSCP admin changes
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
EventID: 5124
Potential AMSI Bypass Using NULL Bits
#Detects usage of special strings/null bits in order to potentially bypass AMSI functionalities
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: Potential AMSI Bypass Using NULL Bits
id: 92a974db-ab84-457f-9ec0-55db83d7a825
related:
- id: fa2559c8-1197-471d-9cdd-05a0273d4522
type: similar
status: test
description: Detects usage of special strings/null bits in order to potentially bypass AMSI functionalities
references:
- https://github.com/r00t-3xp10it/hacking-material-books/blob/43cb1e1932c16ff1f58b755bc9ab6b096046853f/obfuscation/simple_obfuscation.md#amsi-bypass-using-null-bits-satoshi
author: Nasreddine Bencherchali (Nextron Systems)
date: 2023-01-04
modified: 2023-05-09
tags:
- attack.defense-impairment
- attack.t1685
logsource:
product: windows
category: process_creation
detection:
selection:
CommandLine|contains:
- "if(0){{{0}}}' -f $(0 -as [char]) +"
- "#<NULL>"
condition: selection
falsepositives:
- Unknown
level: medium
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
CommandLine|contains:
- "if(0){{{0}}}' -f $(0 -as [char]) +"
- "#<NULL>"
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Potential Encrypted Registry Blob Related To SNAKE Malware
#Detects the creation of a registry value in the ".wav\OpenWithProgIds" key with an uncommon name. This could be related to SNAKE Malware as reported by CISA
Known False Positives
- Some additional tuning might be required to tune out legitimate processes that write to this key by default
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | No specific technique |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
title: Potential Encrypted Registry Blob Related To SNAKE Malware
id: 7e163e96-b9a5-45d6-b2cd-d7d87b13c60b
status: test
description: Detects the creation of a registry value in the ".wav\OpenWithProgIds" key with an uncommon name. This could be related to SNAKE Malware as reported by CISA
references:
- https://media.defense.gov/2023/May/09/2003218554/-1/-1/0/JOINT_CSA_HUNTING_RU_INTEL_SNAKE_MALWARE_20230509.PDF
author: Nasreddine Bencherchali (Nextron Systems)
date: 2023-05-10
modified: 2023-08-17
tags:
- attack.persistence
- detection.emerging-threats
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains: '\SOFTWARE\Classes\.wav\OpenWithProgIds\'
filter_main_wav:
- TargetObject|endswith: '.AssocFile.WAV'
- TargetObject|contains: '.wav.'
condition: selection and not 1 of filter_main_*
falsepositives:
- Some additional tuning might be required to tune out legitimate processes that write to this key by default
level: medium
Stages and Predicates
Stage 0: condition
selection and not 1 of filter_main_*Stage 1: selection
selection:
TargetObject|contains: '\SOFTWARE\Classes\.wav\OpenWithProgIds\'
Stage 2: not filter_main_wav
filter_main_wav:
- TargetObject|endswith: '.AssocFile.WAV'
- TargetObject|contains: '.wav.'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
TargetObject | match |
| field:"TargetObject" kind:match value:"\SOFTWARE\Classes\.wav\OpenWithProgIds\" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
TargetObject | ends_with | .AssocFile.WAV | excludes:TargetObject field:"TargetObject" value:".AssocFile.WAV" |
TargetObject | match | .wav. | excludes:TargetObject field:"TargetObject" value:".wav." |
Potential Persistence Via Netsh Helper DLL - Registry
#Detects changes to the Netsh registry key to add a new DLL value. This change might be an indication of a potential persistence attempt by adding a malicious Netsh helper
Known False Positives
- Legitimate helper added by different programs and the OS
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
title: Potential Persistence Via Netsh Helper DLL - Registry
id: c90362e0-2df3-4e61-94fe-b37615814cb1
related:
- id: 56321594-9087-49d9-bf10-524fe8479452
type: similar
- id: e7b18879-676e-4a0e-ae18-27039185a8e7
type: similar
status: test
description: |
Detects changes to the Netsh registry key to add a new DLL value. This change might be an indication of a potential persistence attempt by adding a malicious Netsh helper
references:
- https://www.ired.team/offensive-security/persistence/t1128-netsh-helper-dll
- https://pentestlab.blog/2019/10/29/persistence-netsh-helper-dll/
author: Anish Bogati
date: 2023-11-28
modified: 2025-10-08
tags:
- attack.privilege-escalation
- attack.persistence
- attack.t1546.007
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains: '\SOFTWARE\Microsoft\NetSh'
Details|contains: '.dll'
filter_main_poqexec:
Image: 'C:\Windows\System32\poqexec.exe'
Details:
- 'ipmontr.dll'
- 'iasmontr.dll'
- 'ippromon.dll'
condition: selection and not 1 of filter_main_*
falsepositives:
- Legitimate helper added by different programs and the OS
level: medium
Stages and Predicates
Stage 0: condition
selection and not 1 of filter_main_*Stage 1: selection
selection:
TargetObject|contains: '\SOFTWARE\Microsoft\NetSh'
Details|contains: '.dll'
Stage 2: not filter_main_poqexec
filter_main_poqexec:
Image: 'C:\Windows\System32\poqexec.exe'
Details:
- 'ipmontr.dll'
- 'iasmontr.dll'
- 'ippromon.dll'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Details | match |
| field:"Details" kind:match value:".dll" |
TargetObject | match |
| field:"TargetObject" kind:match value:"\SOFTWARE\Microsoft\NetSh" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
Details | eq | iasmontr.dll | excludes:Details field:"Details" value:"iasmontr.dll" |
Details | eq | ipmontr.dll | excludes:Details field:"Details" value:"ipmontr.dll" |
Details | eq | ippromon.dll | excludes:Details field:"Details" value:"ippromon.dll" |
Image | eq | C:\Windows\System32\poqexec.exe | excludes:Image field:"Image" value:"C:\Windows\System32\poqexec.exe" |
Potential Provisioning Registry Key Abuse For Binary Proxy Execution
#Detects potential abuse of the provisioning registry key for indirect command execution through "Provlaunch.exe".
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: Potential Provisioning Registry Key Abuse For Binary Proxy Execution
id: 2a4b3e61-9d22-4e4a-b60f-6e8f0cde6f25
related:
- id: 7f5d1c9a-3e83-48df-95a7-2b98aae6c13c # CLI Generic
type: similar
- id: f9999590-1f94-4a34-a91e-951e47bedefd # CLI Abuse
type: similar
- id: 7021255e-5db3-4946-a8b9-0ba7a4644a69 # Registry
type: similar
status: test
description: Detects potential abuse of the provisioning registry key for indirect command execution through "Provlaunch.exe".
references:
- https://lolbas-project.github.io/lolbas/Binaries/Provlaunch/
- https://twitter.com/0gtweet/status/1674399582162153472
author: Nasreddine Bencherchali (Nextron Systems), Swachchhanda Shrawan Poudel
date: 2023-08-08
tags:
- attack.stealth
- attack.t1218
logsource:
category: process_creation
product: windows
detection:
selection:
CommandLine|contains: 'SOFTWARE\Microsoft\Provisioning\Commands\'
condition: selection
falsepositives:
- Unknown
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
CommandLine|contains: 'SOFTWARE\Microsoft\Provisioning\Commands\'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match value:"SOFTWARE\Microsoft\Provisioning\Commands\" |
Potentially Suspicious Mofcomp Execution
#Detects execution of the "mofcomp" utility as a child of a suspicious shell or script running utility or by having a suspicious path in the commandline. The "mofcomp" utility parses a file containing MOF statements and adds the classes and class instances defined in the file to the WMI repository. Attackers abuse this utility to install malicious MOF scripts
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Potentially Suspicious Mofcomp Execution
id: 1dd05363-104e-4b4a-b963-196a534b03a1
status: test
description: |
Detects execution of the "mofcomp" utility as a child of a suspicious shell or script running utility or by having a suspicious path in the commandline.
The "mofcomp" utility parses a file containing MOF statements and adds the classes and class instances defined in the file to the WMI repository.
Attackers abuse this utility to install malicious MOF scripts
references:
- https://thedfirreport.com/2022/07/11/select-xmrig-from-sqlserver/
- https://github.com/The-DFIR-Report/Sigma-Rules/blob/75260568a7ffe61b2458ca05f6f25914efb44337/win_mofcomp_execution.yml
- https://learn.microsoft.com/en-us/windows/win32/wmisdk/mofcomp
author: Nasreddine Bencherchali (Nextron Systems)
date: 2022-07-12
modified: 2026-08-06
tags:
- attack.stealth
- attack.t1218
logsource:
category: process_creation
product: windows
detection:
selection_img:
- Image|endswith: '\mofcomp.exe'
- OriginalFileName: 'mofcomp.exe'
selection_case:
- ParentImage|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wsl.exe'
- '\wscript.exe'
- '\cscript.exe'
- CommandLine|contains:
- '\AppData\Local\Temp'
- '\Contacts\'
- '\Favorites\'
- '\Favourites\'
- '\Music\'
- '\Pictures\'
- '\Users\Public\'
- '\Videos\'
- '\WINDOWS\Temp\'
- '%appdata%'
- '%temp%'
- '%tmp%'
filter_main_wmiprvse:
ParentImage: 'C:\Windows\System32\wbem\WmiPrvSE.exe'
CommandLine|contains: 'C:\Windows\TEMP\'
CommandLine|endswith: '.mof'
filter_main_installutil:
ParentCommandLine|endswith: '\InstallUtil.exe /Uninstall C:\Windows\CCM\Microsoft.ConfigurationManager.SVProvider.dll'
ParentImage|endswith: '\InstallUtil.exe'
CommandLine|contains|all:
- 'C:\Windows\TEMP'
- '.tmp'
filter_optional_null_parent:
ParentCommandLine: null
condition: all of selection_* and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
- Unknown
level: high
Stages and Predicates
Stage 0: condition
all of selection_* and not 1 of filter_main_* and not 1 of filter_optional_*Stage 1: selection_img
selection_img:
- Image|endswith: '\mofcomp.exe'
- OriginalFileName: 'mofcomp.exe'
Stage 2: selection_case
selection_case:
- ParentImage|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wsl.exe'
- '\wscript.exe'
- '\cscript.exe'
- CommandLine|contains:
- '\AppData\Local\Temp'
- '\Contacts\'
- '\Favorites\'
- '\Favourites\'
- '\Music\'
- '\Pictures\'
- '\Users\Public\'
- '\Videos\'
- '\WINDOWS\Temp\'
- '%appdata%'
- '%temp%'
- '%tmp%'
Stage 3: not filter_main_*
filter_main_wmiprvse:
ParentImage: 'C:\Windows\System32\wbem\WmiPrvSE.exe'
CommandLine|contains: 'C:\Windows\TEMP\'
CommandLine|endswith: '.mof'
filter_main_installutil:
ParentCommandLine|endswith: '\InstallUtil.exe /Uninstall C:\Windows\CCM\Microsoft.ConfigurationManager.SVProvider.dll'
ParentImage|endswith: '\InstallUtil.exe'
CommandLine|contains|all:
- 'C:\Windows\TEMP'
- '.tmp'
Stage 4: not filter_optional_null_parent
filter_optional_null_parent:
ParentCommandLine: null
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with value:"\mofcomp.exe" |
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq value:"mofcomp.exe" |
ParentImage | ends_with |
| field:"ParentImage" kind:ends_with |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
CommandLine | ends_with | .mof | excludes:CommandLine field:"CommandLine" value:".mof" |
CommandLine | match | C:\Windows\TEMP\ | excludes:CommandLine field:"CommandLine" value:"C:\Windows\TEMP\" |
ParentImage | eq | C:\Windows\System32\wbem\WmiPrvSE.exe | excludes:ParentImage field:"ParentImage" value:"C:\Windows\System32\wbem\WmiPrvSE.exe" |
CommandLine | match | .tmp | excludes:CommandLine field:"CommandLine" value:".tmp" |
CommandLine | match | C:\Windows\TEMP | excludes:CommandLine field:"CommandLine" value:"C:\Windows\TEMP" |
ParentCommandLine | ends_with | \InstallUtil.exe /Uninstall C:\Windows\CCM\Microsoft.ConfigurationManager.SVProvider.dll | excludes:ParentCommandLine field:"ParentCommandLine" value:"\InstallUtil.exe /Uninstall C:\Windows\CCM\Microsoft.ConfigurationManager.SVProvider.dll" |
ParentImage | ends_with | \InstallUtil.exe | excludes:ParentImage field:"ParentImage" value:"\InstallUtil.exe" |
ParentCommandLine | is_null | excludes:ParentCommandLine |
Potentially Suspicious Regsvr32 HTTP/FTP Pattern
#Detects regsvr32 execution to download/install/register new DLLs that are hosted on Web or FTP servers.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Potentially Suspicious Regsvr32 HTTP/FTP Pattern
id: 867356ee-9352-41c9-a8f2-1be690d78216
related:
- id: 8e2b24c9-4add-46a0-b4bb-0057b4e6187d
type: obsolete
status: test
description: Detects regsvr32 execution to download/install/register new DLLs that are hosted on Web or FTP servers.
references:
- https://twitter.com/mrd0x/status/1461041276514623491
- https://twitter.com/tccontre18/status/1480950986650832903
- https://lolbas-project.github.io/lolbas/Binaries/Regsvr32/
author: Florian Roth (Nextron Systems)
date: 2023-05-24
modified: 2023-05-26
tags:
- attack.stealth
- attack.t1218.010
logsource:
category: process_creation
product: windows
detection:
selection_img:
- Image|endswith: '\regsvr32.exe'
- OriginalFileName: 'REGSVR32.EXE'
selection_flag:
CommandLine|contains:
- ' /i'
- ' -i'
selection_protocol:
CommandLine|contains:
- 'ftp'
- 'http'
condition: all of selection_*
falsepositives:
- Unknown
level: medium
Stages and Predicates
Stage 0: condition
all of selection_*Stage 1: selection_img
selection_img:
- Image|endswith: '\regsvr32.exe'
- OriginalFileName: 'REGSVR32.EXE'
Stage 2: selection_flag
selection_flag:
CommandLine|contains:
- ' /i'
- ' -i'
Stage 3: selection_protocol
selection_protocol:
CommandLine|contains:
- 'ftp'
- 'http'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with value:"\regsvr32.exe" |
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq value:"REGSVR32.EXE" |
PowerShell Console History Logs Deleted
#Detects the deletion of the PowerShell console History logs which may indicate an attempt to destroy forensic evidence
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
Rule Body
title: PowerShell Console History Logs Deleted
id: ff301988-c231-4bd0-834c-ac9d73b86586
status: test
description: Detects the deletion of the PowerShell console History logs which may indicate an attempt to destroy forensic evidence
references:
- Internal Research
author: Nasreddine Bencherchali (Nextron Systems)
date: 2023-02-15
tags:
- attack.stealth
- attack.t1070
logsource:
category: file_delete
product: windows
detection:
selection:
TargetFilename|endswith: '\PSReadLine\ConsoleHost_history.txt'
condition: selection
falsepositives:
- Unknown
level: medium
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
TargetFilename|endswith: '\PSReadLine\ConsoleHost_history.txt'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
TargetFilename | ends_with |
| field:"TargetFilename" kind:ends_with value:"\PSReadLine\ConsoleHost_history.txt" |
Powershell Executed From Headless ConHost Process
#Detects the use of powershell commands from headless ConHost window. The "--headless" flag hides the windows from the user upon execution.
MITRE ATT&CK Coverage
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Powershell Executed From Headless ConHost Process
id: 056c7317-9a09-4bd4-9067-d051312752ea
related:
- id: 00ca75ab-d5ce-43be-b86c-55ff39c6abfc
type: derived
status: test
description: |
Detects the use of powershell commands from headless ConHost window.
The "--headless" flag hides the windows from the user upon execution.
references:
- https://www.huntress.com/blog/fake-browser-updates-lead-to-boinc-volunteer-computing-software
author: Matt Anderson (Huntress)
date: 2024-07-23
tags:
- attack.execution
- attack.stealth
- attack.t1059.001
- attack.t1059.003
- attack.t1564.003
logsource:
category: process_creation
product: windows
detection:
selection_img:
- Image|endswith: '\conhost.exe'
- OriginalFileName: 'CONHOST.EXE'
selection_cli:
CommandLine|contains|all:
- '--headless'
- 'powershell'
condition: all of selection_*
falsepositives:
- Unknown
level: medium
regression_tests_path: regression_data/rules/windows/process_creation/proc_creation_win_conhost_headless_powershell/info.yml
Stages and Predicates
Stage 0: condition
all of selection_*Stage 1: selection_img
selection_img:
- Image|endswith: '\conhost.exe'
- OriginalFileName: 'CONHOST.EXE'
Stage 2: selection_cli
selection_cli:
CommandLine|contains|all:
- '--headless'
- 'powershell'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with value:"\conhost.exe" |
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq value:"CONHOST.EXE" |
Powershell WMI Persistence
#Adversaries may establish persistence and elevate privileges by executing malicious content triggered by a Windows Management Instrumentation (WMI) event subscription.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| PowerShell | Event ID 4104: Creating Scriptblock text (MessageNumber of MessageTotal). |
Rule Body
title: Powershell WMI Persistence
id: 9e07f6e7-83aa-45c6-998e-0af26efd0a85
status: test
description: Adversaries may establish persistence and elevate privileges by executing malicious content triggered by a Windows Management Instrumentation (WMI) event subscription.
references:
- https://github.com/redcanaryco/atomic-red-team/blob/f339e7da7d05f6057fdfcdd3742bfcf365fee2a9/atomics/T1546.003/T1546.003.md
- https://github.com/EmpireProject/Empire/blob/08cbd274bef78243d7a8ed6443b8364acd1fc48b/data/module_source/persistence/Persistence.psm1#L545
author: frack113
date: 2021-08-19
modified: 2022-12-25
tags:
- attack.persistence
- attack.privilege-escalation
- attack.t1546.003
logsource:
product: windows
category: ps_script
definition: 'Requirements: Script Block Logging must be enabled'
detection:
selection_ioc:
- ScriptBlockText|contains|all:
- 'New-CimInstance '
- '-Namespace root/subscription '
- '-ClassName __EventFilter '
- '-Property ' # is a variable name
- ScriptBlockText|contains|all:
- 'New-CimInstance '
- '-Namespace root/subscription '
- '-ClassName CommandLineEventConsumer '
- '-Property ' # is a variable name
condition: selection_ioc
falsepositives:
- Unknown
level: medium
regression_tests_path: regression_data/rules/windows/powershell/powershell_script/posh_ps_wmi_persistence/info.yml
Stages and Predicates
Stage 0: condition
selection_iocStage 1: selection_ioc
selection_ioc:
- ScriptBlockText|contains|all:
- 'New-CimInstance '
- '-Namespace root/subscription '
- '-ClassName __EventFilter '
- '-Property '
- ScriptBlockText|contains|all:
- 'New-CimInstance '
- '-Namespace root/subscription '
- '-ClassName CommandLineEventConsumer '
- '-Property '
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
ScriptBlockText | match |
| field:"ScriptBlockText" kind:match |
Process Execution From WebDAV Share
#Detects execution of processes with image paths starting with WebDAV shares (\), which might indicate malicious file execution from remote web shares. Execution of processes from WebDAV shares can be a sign of lateral movement or exploitation attempts, especially if the process is not a known legitimate application. Exploitation Attempt of vulnerabilities like CVE-2025-33053 also involves executing processes from WebDAV paths.
Known False Positives
- Legitimate use of WebDAV shares for process execution
- Known applications executing from WebDAV paths
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Command & Control |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: Process Execution From WebDAV Share
id: f8de9dd5-7a63-4cfd-9d0c-ae124878b5a9
status: experimental
description: |
Detects execution of processes with image paths starting with WebDAV shares (\\), which might indicate malicious file execution from remote web shares.
Execution of processes from WebDAV shares can be a sign of lateral movement or exploitation attempts, especially if the process is not a known legitimate application.
Exploitation Attempt of vulnerabilities like CVE-2025-33053 also involves executing processes from WebDAV paths.
references:
- https://research.checkpoint.com/2025/stealth-falcon-zero-day/
author: Swachchhanda Shrawan Poudel (Nextron Systems)
date: 2025-06-13
tags:
- attack.execution
- attack.command-and-control
- attack.lateral-movement
- attack.t1105
- detection.threat-hunting
logsource:
category: process_creation
product: windows
detection:
selection:
Image|startswith: '\\\\'
Image|contains: '\DavWWWRoot\'
condition: selection
falsepositives:
- Legitimate use of WebDAV shares for process execution
- Known applications executing from WebDAV paths
level: low
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
Image|startswith: '\\\\'
Image|contains: '\DavWWWRoot\'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Image | match |
| field:"Image" kind:match value:"\DavWWWRoot\" |
Image | starts_with |
| field:"Image" kind:starts_with value:"\\\\" |
PUA - Process Hacker Driver Load
#Detects driver load of the Process Hacker tool
Known False Positives
- Legitimate use of process hacker or system informer by developers or system administrators
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 6: Driver loaded |
Rule Body
title: PUA - Process Hacker Driver Load
id: 67add051-9ee7-4ad3-93ba-42935615ae8d
related:
- id: 10cb6535-b31d-4512-9962-513dcbc42cc1
type: similar
status: test
description: Detects driver load of the Process Hacker tool
references:
- https://processhacker.sourceforge.io/
author: Florian Roth (Nextron Systems)
date: 2022-11-16
modified: 2024-11-23
tags:
- attack.persistence
- attack.privilege-escalation
- cve.2021-21551
- attack.t1543
logsource:
category: driver_load
product: windows
detection:
selection:
- ImageLoaded|endswith: '\kprocesshacker.sys'
- Hashes|contains:
- 'IMPHASH=821D74031D3F625BCBD0DF08B70F1E77'
- 'IMPHASH=F86759BB4DE4320918615DC06E998A39'
- 'IMPHASH=0A64EEB85419257D0CE32BD5D55C3A18'
- 'IMPHASH=6E7B34DFC017700B1517B230DF6FF0D0'
condition: selection
falsepositives:
- Legitimate use of process hacker or system informer by developers or system administrators
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
- ImageLoaded|endswith: '\kprocesshacker.sys'
- Hashes|contains:
- 'IMPHASH=821D74031D3F625BCBD0DF08B70F1E77'
- 'IMPHASH=F86759BB4DE4320918615DC06E998A39'
- 'IMPHASH=0A64EEB85419257D0CE32BD5D55C3A18'
- 'IMPHASH=6E7B34DFC017700B1517B230DF6FF0D0'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Hashes | match |
| field:"Hashes" kind:match |
ImageLoaded | ends_with |
| field:"ImageLoaded" kind:ends_with value:"\kprocesshacker.sys" |
Pubprn.vbs Proxy Execution
#Detects the use of the 'Pubprn.vbs' Microsoft signed script to execute commands.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: Pubprn.vbs Proxy Execution
id: 1fb76ab8-fa60-4b01-bddd-71e89bf555da
status: test
description: Detects the use of the 'Pubprn.vbs' Microsoft signed script to execute commands.
references:
- https://lolbas-project.github.io/lolbas/Scripts/Pubprn/
author: frack113
date: 2022-05-28
tags:
- attack.stealth
- attack.t1216.001
logsource:
category: process_creation
product: windows
detection:
selection:
CommandLine|contains|all:
- '\pubprn.vbs'
- 'script:'
condition: selection
falsepositives:
- Unknown
level: medium
regression_tests_path: regression_data/rules/windows/process_creation/proc_creation_win_lolbin_pubprn/info.yml
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
CommandLine|contains|all:
- '\pubprn.vbs'
- 'script:'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Remote Access Tool - Action1 Arbitrary Code Execution and Remote Sessions
#Detects the execution of Action1 in order to execute arbitrary code or establish a remote session. Action1 is a powerful Remote Monitoring and Management tool that enables users to execute commands, scripts, and binaries. Through the web interface of action1, the administrator must create a new policy or an app to establish remote execution and then points that the agent is installed. Hunting Opportunity 1- Weed Out The Noise When threat actors execute a script, a command, or a binary through these new policies and apps, the names of these become visible in the command line during the execution process. Below is an example of the command line that contains the deployment of a binary through a policy with name "test_app_1": ParentCommandLine: "C:\WINDOWS\Action1\action1_agent.exe schedule:Deploy_App__test_app_1_1681327673425 runaction:0" After establishing a baseline, we can split the command to extract the policy name and group all the policy names and inspect the results with a list of frequency occurrences. Hunting Opportunity 2 - Remote Sessions On Out Of Office Hours If you have admins within your environment using remote sessions to administer endpoints, you can create a threat-hunting query and modify the time of the initiated sessions looking for abnormal activity.
Known False Positives
- If Action1 is among the approved software in your environment, you might find that this is a noisy query. See description for ideas on how to alter this query and start looking for suspicious activities.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Command & Control |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Remote Access Tool - Action1 Arbitrary Code Execution and Remote Sessions
id: aa3168fb-d594-4f93-a92d-7a9ba675b766
status: test
description: |
Detects the execution of Action1 in order to execute arbitrary code or establish a remote session.
Action1 is a powerful Remote Monitoring and Management tool that enables users to execute commands, scripts, and binaries.
Through the web interface of action1, the administrator must create a new policy or an app to establish remote execution and then points that the agent is installed.
Hunting Opportunity 1- Weed Out The Noise
When threat actors execute a script, a command, or a binary through these new policies and apps, the names of these become visible in the command line during the execution process. Below is an example of the command line that contains the deployment of a binary through a policy with name "test_app_1":
ParentCommandLine: "C:\WINDOWS\Action1\action1_agent.exe schedule:Deploy_App__test_app_1_1681327673425 runaction:0"
After establishing a baseline, we can split the command to extract the policy name and group all the policy names and inspect the results with a list of frequency occurrences.
Hunting Opportunity 2 - Remote Sessions On Out Of Office Hours
If you have admins within your environment using remote sessions to administer endpoints, you can create a threat-hunting query and modify the time of the initiated sessions looking for abnormal activity.
references:
- https://twitter.com/Kostastsale/status/1646256901506605063?s=20
- https://www.action1.com/documentation/
author: '@kostastsale'
date: 2023-04-13
tags:
- attack.command-and-control
- attack.t1219.002
- detection.threat-hunting
logsource:
category: process_creation
product: windows
detection:
selection_app_deployment_exec:
ParentImage|endswith: '\action1_agent.exe'
Image|contains: '\Windows\Action1\package_downloads\'
selection_command_exec:
ParentImage|endswith:
- '\cmd.exe'
- '\powershell.exe'
ParentCommandLine|contains:
- '\Action1\scripts\Run_Command_'
- '\Action1\scripts\Run_PowerShell_'
selection_remote_session_init:
Image|endswith: '\agent1_remote.exe'
condition: 1 of selection_*
falsepositives:
- If Action1 is among the approved software in your environment, you might find that this is a noisy query. See description for ideas on how to alter this query and start looking for suspicious activities.
level: medium
Stages and Predicates
Stage 0: condition
1 of selection_*Stage 1: selection_app_deployment_exec
selection_app_deployment_exec:
ParentImage|endswith: '\action1_agent.exe'
Image|contains: '\Windows\Action1\package_downloads\'
Stage 2: selection_command_exec
selection_command_exec:
ParentImage|endswith:
- '\cmd.exe'
- '\powershell.exe'
ParentCommandLine|contains:
- '\Action1\scripts\Run_Command_'
- '\Action1\scripts\Run_PowerShell_'
Stage 3: selection_remote_session_init
selection_remote_session_init:
Image|endswith: '\agent1_remote.exe'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Image | ends_with |
| field:"Image" kind:ends_with value:"\agent1_remote.exe" |
Image | match |
| field:"Image" kind:match value:"\Windows\Action1\package_downloads\" |
ParentCommandLine | match |
| field:"ParentCommandLine" kind:match |
ParentImage | ends_with |
| field:"ParentImage" kind:ends_with |
Remote schedule task creation via named pipes (ATexec)
#Detects scenarios where an attacker remotely creates a scheduled task over named pipes to execute commands or elevate privileges.
Known False Positives
- Administrator activity, backup solutions
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Execution |
Telemetry Coverage
Rule Body
title: Remote schedule task creation via named pipes (ATexec)
description: Detects scenarios where an attacker remotely creates a scheduled task over named pipes to execute commands or elevate privileges.
references:
- https://github.com/mdecrevoisier/EVTX-to-MITRE-Attack/tree/master/TA0002-Execution/T1053.005-Scheduled%20Task
- https://github.com/SecureAuthCorp/impacket/blob/master/examples/atexec.py
- https://u0041.co/blog/post/1
- https://blog.menasec.net/2019/03/threat-hunting-25-scheduled-tasks-for.html
tags:
- attack.execution
- attack.t1053.005
author: mdecrevoisier
status: experimental
logsource:
product: windows
service: security
detection:
selection:
EventID: 5145
ShareName: '\\*\IPC$'
RelativeTargetName: atsvc
AccessList|contains: '%%4417' # WriteData
condition: selection
falsepositives:
- Administrator activity, backup solutions
level: medium
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
EventID: 5145
ShareName: '\\*\IPC$'
RelativeTargetName: atsvc
AccessList|contains: '%%4417'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
AccessList | match |
| field:"AccessList" kind:match value:"%%4417" |
RelativeTargetName | eq |
| field:"RelativeTargetName" kind:eq value:"atsvc" |
ShareName | wildcard |
| field:"ShareName" kind:wildcard value:"\\*\IPC$" |
Renamed MegaSync Execution
#Detects the execution of a renamed MegaSync.exe as seen used by ransomware families like Nefilim, Sodinokibi, Pysa, and Conti.
Known False Positives
- Software that illegally integrates MegaSync in a renamed form
- Administrators that have renamed MegaSync
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Renamed MegaSync Execution
id: 643bdcac-8b82-49f4-9fd9-25a90b929f3b
status: test
description: Detects the execution of a renamed MegaSync.exe as seen used by ransomware families like Nefilim, Sodinokibi, Pysa, and Conti.
references:
- https://redcanary.com/blog/rclone-mega-extortion/
author: Sittikorn S
date: 2021-06-22
modified: 2023-02-03
tags:
- attack.stealth
- attack.t1218
logsource:
product: windows
category: process_creation
detection:
selection:
OriginalFileName: 'megasync.exe'
filter:
Image|endswith: '\megasync.exe'
condition: selection and not filter
falsepositives:
- Software that illegally integrates MegaSync in a renamed form
- Administrators that have renamed MegaSync
level: high
Stages and Predicates
Stage 0: condition
selection and not filterStage 1: selection
selection:
OriginalFileName: 'megasync.exe'
Stage 2: not filter
filter:
Image|endswith: '\megasync.exe'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq value:"megasync.exe" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
Image | ends_with | \megasync.exe | excludes:Image field:"Image" value:"\megasync.exe" |
Risk of signup fraud - rapid creation of fake accounts
#Detect potential signup fraud by monitoring the following events: surge in a number of registration, excessive failed signups, or too many signup attempts with use of breached passwords.
Known False Positives
- Legitimate users signing up with a large number of accounts, e.g. as result of marketing campaigns like the black friday or concentrated events like conferences.
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Rule Body
title: Risk of signup fraud - rapid creation of fake accounts
id: 3a9be414-716e-11f0-8153-723487b9527c
name: selected_events
status: experimental
description: |
Detect potential signup fraud by monitoring the following events: surge in a number of registration, excessive failed signups,
or too many signup attempts with use of breached passwords.
author: Okta
date: 2025-07-11
modified: 2025-09-19
logsource:
product: auth0
detection:
selection:
data.type:
- fs
- ss
- signup_pwd_leak
condition: selection
explanation: >
The query collects log entries with successful/failed signups as well as signup attempts where leaked credentials were attempted.
The Splunk query alerts when one of the thresholds exceeds - number of successful signups, failed signups,
or signups attempts with breached passwords.
The query can be limited to, for example, only successful signups surge by setting a respective threshold to 0.
The Splunk query provides aggregations both per an observation window (default is 1 hour) and per IPs,
i.e. Option 1 and Option 2 respectively.
Both aggregations can be applied at the same time or separately, see comments in the query itself.
splunk: |
index=auth0 data.tenant_name="{your-tenant-name}"
data.type IN (fs, ss, signup_pwd_leak)
``` Adjust the observation window if needed```
| bin _time span=1h
| fields data.type data.ip
``` Option 1 - This part of the query below provides aggregation per an observation window ```
| eventstats count(eval('data.type'="fs")) as total_count_fs,
count(eval('data.type'="ss")) as total_count_ss,
count(eval('data.type'="signup_pwd_leak")) as total_count_signup_pwd_leak
by _time
``` Adjust the thresholds. Set threshold to 0 to exclude one of the events from filtering ```
| where total_count_fs >= {thresholds_total_failed}
| where total_count_ss >= {thresholds_total_successful}
| where total_count_signup_pwd_leak >= {thresholds_total_leaked_pwd}
``` Uncomment two clauses below (dedup and table) and comment the rest of the query
to see total count of events per observation window, not IPs ```
```| dedup _time
| table _time, total_count_fs, total_count_ss, total_count_signup_pwd_leak```
``` Option 2 - This part of the query below provides aggregation per IP ```
| stats count(eval('data.type'="fs")) as per_ip_count_fs,
count(eval('data.type'="ss")) as per_ip_count_ss,
count(eval('data.type'="signup_pwd_leak")) as per_ip_count_signup_pwd_leak
by _time, data.ip
| fillnull value=0
``` Extra filtering to exclude low volume IPs```
| where per_ip_count_fs >= {thresholds_per_ip_failed}
| where per_ip_count_ss >= {thresholds_per_ip_successful}
| where per_ip_count_signup_pwd_leak >= {thresholds_per_ip_leaked_pwd}
| table _time, data.ip, per_ip_count_fs, per_ip_count_ss, per_ip_count_signup_pwd_leak
comments:
- The Splunk query above shall be tuned to reflect a valid tenant name.
- The following thresholds values should be set based on the customer's environment and expected behavior -
thresholds_total_failed, thresholds_total_successful, thresholds_total_leaked_pwd, thresholds_per_ip_failed,
thresholds_per_ip_successful, and thresholds_per_ip_leaked_pwd
- To learn normality, it is recommended to run the query (excluding "where" clauses) for a period of time and calculate
the thresholds based on the observed data.
- A similar detection (with less details) can be implemented through Security Center and its alerts.
- An attempt to signup with leaked credentials (signup_pwd_leak) released at the same time with failed signups (fs).
The query does not account for it.
tenant_logs: |
type:"fs" OR type:"ss" OR type:"signup_pwd_leak"
prevention:
- Enable attack protection features preventing velocity-based attacks, i.e. suspicious IP throttling and bot detection.
- Migrate to passwordless authentication that adds friction to adversaries.
- Collect attribution of the fraudulent traffic (IPs, ASNs, Geo, ja3/ja4), and block the obviously malicious sources with Tenant ACL.
- Force email OTP validation built-in feature of a Database connection on signup.
falsepositives:
- Legitimate users signing up with a large number of accounts, e.g. as result of marketing campaigns like the black friday
or concentrated events like conferences.
level: medium
tags:
- attack.resource-development
- attack.t1136
---
title: Surge in signup events by volume
id: 99d03061-b59a-44e5-9924-c8d5afee501c
correlation:
type: event_count
rules:
- selected_events # Referenced here
group-by:
- data.ip
- data.type
timespan: 1h
condition:
gte: 1
field: data.type
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
data.type:
- fs
- ss
- signup_pwd_leak
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
data.type | eq |
| field:"data.type" kind:eq |
Successful Exchange ProxyShell Attack
#Detects URP patterns and status codes that indicate a successful ProxyShell exploitation attack against Exchange servers
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Initial Access | No specific technique |
Rule Body
title: Successful Exchange ProxyShell Attack
id: 992be1eb-e5da-437e-9a54-6d13b57bb4d8
status: test
description: Detects URP patterns and status codes that indicate a successful ProxyShell exploitation attack against Exchange servers
references:
- https://youtu.be/5mqid-7zp8k?t=2231
- https://blog.orange.tw/2021/08/proxylogon-a-new-attack-surface-on-ms-exchange-part-1.html
- https://peterjson.medium.com/reproducing-the-proxyshell-pwn2own-exploit-49743a4ea9a1
author: Florian Roth (Nextron Systems), Rich Warren
date: 2021-08-09
modified: 2023-01-02
tags:
- attack.initial-access
- detection.emerging-threats
logsource:
category: webserver
detection:
selection_auto:
cs-uri-query|contains: '/autodiscover.json'
selection_uri:
cs-uri-query|contains:
- '/powershell'
- '/mapi/nspi'
- '/EWS'
- 'X-Rps-CAT'
selection_success:
sc-status:
- 200
- 301
condition: selection_auto and selection_uri and selection_success
falsepositives:
- Unknown
level: critical
Stages and Predicates
Stage 0: condition
selection_auto and selection_uri and selection_successStage 1: selection_auto
selection_auto:
cs-uri-query|contains: '/autodiscover.json'
Stage 2: selection_uri
selection_uri:
cs-uri-query|contains:
- '/powershell'
- '/mapi/nspi'
- '/EWS'
- 'X-Rps-CAT'
Stage 3: selection_success
selection_success:
sc-status:
- 200
- 301
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
cs-uri-query | match |
| field:"cs-uri-query" kind:match |
sc-status | eq |
| field:"sc-status" kind:eq |
Suspicious Application Allowed Through Exploit Guard
#Detects applications being added to the "allowed applications" list of exploit guard in order to bypass controlled folder settings
Known False Positives
- Unlikely
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
title: Suspicious Application Allowed Through Exploit Guard
id: 42205c73-75c8-4a63-9db1-e3782e06fda0
status: test
description: Detects applications being added to the "allowed applications" list of exploit guard in order to bypass controlled folder settings
references:
- https://www.microsoft.com/security/blog/2017/10/23/windows-defender-exploit-guard-reduce-the-attack-surface-against-next-generation-malware/
author: Nasreddine Bencherchali (Nextron Systems)
date: 2022-08-05
modified: 2023-08-17
tags:
- attack.defense-impairment
- attack.t1685
logsource:
category: registry_set
product: windows
detection:
selection_key:
TargetObject|contains: 'SOFTWARE\Microsoft\Windows Defender\Windows Defender Exploit Guard\Controlled Folder Access\AllowedApplications'
selection_paths:
TargetObject|contains:
# Add more paths you don't allow in your org
- '\Users\Public\'
- '\AppData\Local\Temp\'
- '\Desktop\'
- '\PerfLogs\'
- '\Windows\Temp\'
condition: all of selection_*
falsepositives:
- Unlikely
level: high
Stages and Predicates
Stage 0: condition
all of selection_*Stage 1: selection_key
selection_key:
TargetObject|contains: 'SOFTWARE\Microsoft\Windows Defender\Windows Defender Exploit Guard\Controlled Folder Access\AllowedApplications'
Stage 2: selection_paths
selection_paths:
TargetObject|contains:
- '\Users\Public\'
- '\AppData\Local\Temp\'
- '\Desktop\'
- '\PerfLogs\'
- '\Windows\Temp\'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
TargetObject | match |
| field:"TargetObject" kind:match |
Suspicious Control Panel DLL Load
#Detects suspicious Rundll32 execution from control.exe as used by Equation Group and Exploit Kits
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Stealth |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
Rule Body
title: Suspicious Control Panel DLL Load
id: d7eb979b-c2b5-4a6f-a3a7-c87ce6763819
status: test
description: Detects suspicious Rundll32 execution from control.exe as used by Equation Group and Exploit Kits
references:
- https://twitter.com/rikvduijn/status/853251879320662017
- https://twitter.com/felixw3000/status/853354851128025088
author: Florian Roth (Nextron Systems)
date: 2017-04-15
modified: 2023-02-09
tags:
- attack.stealth
- attack.t1218.011
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\System32\control.exe'
selection_img:
- Image|endswith: '\rundll32.exe'
- OriginalFileName: 'RUNDLL32.EXE'
filter:
CommandLine|contains: 'Shell32.dll'
condition: all of selection_* and not filter
falsepositives:
- Unknown
level: high
Stages and Predicates
Stage 0: condition
all of selection_* and not filterStage 1: selection_parent
selection_parent:
ParentImage|endswith: '\System32\control.exe'
Stage 2: selection_img
selection_img:
- Image|endswith: '\rundll32.exe'
- OriginalFileName: 'RUNDLL32.EXE'
Stage 3: not filter
filter:
CommandLine|contains: 'Shell32.dll'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Image | ends_with |
| field:"Image" kind:ends_with value:"\rundll32.exe" |
OriginalFileName | eq |
| field:"OriginalFileName" kind:eq value:"RUNDLL32.EXE" |
ParentImage | ends_with |
| field:"ParentImage" kind:ends_with value:"\System32\control.exe" |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
CommandLine | match | Shell32.dll | excludes:CommandLine field:"CommandLine" value:"Shell32.dll" |
System Information Discovery Via Sysctl - MacOS
#Detects the execution of "sysctl" with specific arguments that have been used by threat actors and malware. It provides system hardware information. This process is primarily used to detect and avoid virtualization and analysis environments.
Known False Positives
- Legitimate administrative activities
MITRE ATT&CK Coverage
Telemetry Coverage
Rule Body
title: System Information Discovery Via Sysctl - MacOS
id: 6ff08e55-ea53-4f27-94a1-eff92e6d9d5c
status: test
description: |
Detects the execution of "sysctl" with specific arguments that have been used by threat actors and malware. It provides system hardware information.
This process is primarily used to detect and avoid virtualization and analysis environments.
references:
- https://www.loobins.io/binaries/sysctl/#
- https://evasions.checkpoint.com/techniques/macos.html
- https://www.welivesecurity.com/2019/04/09/oceanlotus-macos-malware-update/
- https://www.sentinelone.com/labs/20-common-tools-techniques-used-by-macos-threat-actors-malware/
- https://objective-see.org/blog/blog_0x1E.html
- https://www.virustotal.com/gui/file/1c547a064494a35d6b5e6b459de183ab2720a22725e082bed6f6629211f7abc1/behavior
- https://www.virustotal.com/gui/file/b4b1fc65f87b3dcfa35e2dbe8e0a34ad9d8a400bec332025c0a2e200671038aa/behavior
author: Pratinav Chandra
date: 2024-05-27
tags:
- attack.stealth
- attack.t1497.001
- attack.discovery
- attack.t1082
logsource:
product: macos
category: process_creation
detection:
selection_img:
- Image|endswith: '/sysctl'
- CommandLine|contains: 'sysctl'
selection_cmd:
CommandLine|contains:
- 'hw.'
- 'kern.'
- 'machdep.'
condition: all of selection_*
falsepositives:
- Legitimate administrative activities
level: medium
Stages and Predicates
Stage 0: condition
all of selection_*Stage 1: selection_img
selection_img:
- Image|endswith: '/sysctl'
- CommandLine|contains: 'sysctl'
Stage 2: selection_cmd
selection_cmd:
CommandLine|contains:
- 'hw.'
- 'kern.'
- 'machdep.'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match |
Image | ends_with |
| field:"Image" kind:ends_with value:"/sysctl" |
Vulnerable WinRing0 Driver Load
#Detects the load of a signed WinRing0 driver often used by threat actors, crypto miners (XMRIG) or malware for privilege escalation
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 6: Driver loaded |
Rule Body
title: Vulnerable WinRing0 Driver Load
id: 1a42dfa6-6cb2-4df9-9b48-295be477e835
status: test
description: Detects the load of a signed WinRing0 driver often used by threat actors, crypto miners (XMRIG) or malware for privilege escalation
references:
- https://github.com/xmrig/xmrig/tree/master/bin/WinRing0
- https://www.rapid7.com/blog/post/2021/12/13/driver-based-attacks-past-and-present/
author: Florian Roth (Nextron Systems)
date: 2022-07-26
modified: 2024-11-23
tags:
- attack.persistence
- attack.privilege-escalation
- attack.t1543.003
logsource:
product: windows
category: driver_load
detection:
selection:
- Hashes|contains: 'IMPHASH=D41FA95D4642DC981F10DE36F4DC8CD7'
- ImageLoaded|endswith:
- '\WinRing0x64.sys'
- '\WinRing0.sys'
- '\WinRing0.dll'
- '\WinRing0x64.dll'
- '\winring00x64.sys'
condition: selection
falsepositives:
- Unknown
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
- Hashes|contains: 'IMPHASH=D41FA95D4642DC981F10DE36F4DC8CD7'
- ImageLoaded|endswith:
- '\WinRing0x64.sys'
- '\WinRing0.sys'
- '\WinRing0.dll'
- '\WinRing0x64.dll'
- '\winring00x64.sys'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Hashes | match |
| field:"Hashes" kind:match value:"IMPHASH=D41FA95D4642DC981F10DE36F4DC8CD7" |
ImageLoaded | ends_with |
| field:"ImageLoaded" kind:ends_with |
Webserver IIS module installed (command)
#Detects scenarios where an attacker attempts to deploy an IIS module via the gacutil tool.
Known False Positives
- New modules deployed on IIS Web servers, but also Exchange and ADCS servers
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 1: Process creation |
| Security-Auditing | Event ID 4688: A new process has been created. |
Rule Body
title: Webserver IIS module installed (command)
description: Detects scenarios where an attacker attempts to deploy an IIS module via the gacutil tool.
references:
- https://securelist.com/owowa-credential-stealer-and-remote-access/105219/
- https://docs.microsoft.com/fr-fr/iis/get-started/introduction-to-iis/iis-modules-overview
- https://www.microsoft.com/security/blog/2021/11/08/threat-actor-dev-0322-exploiting-zoho-manageengine-adselfservice-plus/
- https://www.microsoft.com/security/blog/2022/07/26/malicious-iis-extensions-quietly-open-persistent-backdoors-into-servers/
- https://www.welivesecurity.com/2021/08/06/anatomy-native-iis-malware/
- https://i.blackhat.com/USA21/Wednesday-Handouts/us-21-Anatomy-Of-Native-Iis-Malware-wp.pdf
- https://securelist.com/the-sessionmanager-iis-backdoor/106868/
- https://www.mdsec.co.uk/2020/02/iis-raid-backdooring-iis-using-native-modules/
- https://github.com/0x09AL/IIS-Raid
- https://github.com/gtworek/PSBits/blob/master/Misc/Install-PSBackdoor.ps1
- https://www.microsoft.com/en-us/security/blog/2022/12/12/iis-modules-the-evolution-of-web-shells-and-how-to-detect-them/
tags:
- attack.persistence
- attack.t1505.004
author: mdecrevoisier
status: experimental
tags:
- attack.persistence
- attack.t1505.004
author: mdecrevoisier
status: experimental|
logsource:
product: windows
category: process_creation
detection:
selection:
NewProcessName|endswith: '\gacutil.exe'
CommandLine|contains:
- '-i'
- '/i'
CommandLine|contains: '.dll'
condition: selection
falsepositives:
- New modules deployed on IIS Web servers, but also Exchange and ADCS servers
level: high
Stages and Predicates
Stage 0: condition
selectionStage 1: selection
selection:
NewProcessName|endswith: '\gacutil.exe'
CommandLine|contains:
- '-i'
- '/i'
CommandLine|contains: '.dll'
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
CommandLine | match |
| field:"CommandLine" kind:match value:".dll" |
NewProcessName | ends_with |
| field:"Image" kind:ends_with value:"\gacutil.exe" |
Windows Event Log Access Tampering Via Registry
#Detects changes to the Windows EventLog channel permission values. It focuses on changes to the Security Descriptor Definition Language (SDDL) string, as modifications to these values can restrict access to specific users or groups, potentially aiding in defense evasion by controlling who can view or modify a event log channel. Upon execution, the user shouldn't be able to access the event log channel via the event viewer or via utilities such as "Get-EventLog" or "wevtutil".
Known False Positives
- Administrative activity, still unlikely
MITRE ATT&CK Coverage
| Tactic | Techniques |
|---|---|
| Persistence | |
| Privilege Escalation | |
| Defense Impairment |
Telemetry Coverage
| Provider | Record / event type |
|---|---|
| Sysmon | Event ID 13: RegistryEvent (Value Set) |
Rule Body
title: Windows Event Log Access Tampering Via Registry
id: ba226dcf-d390-4642-b9af-b534872f1156
status: experimental
description: |
Detects changes to the Windows EventLog channel permission values. It focuses on changes to the Security Descriptor Definition Language (SDDL) string, as modifications to these values can restrict access to specific users or groups, potentially aiding in defense evasion by controlling who can view or modify a event log channel. Upon execution, the user shouldn't be able to access the event log channel via the event viewer or via utilities such as "Get-EventLog" or "wevtutil".
references:
- https://www.atomicredteam.io/atomic-red-team/atomics/T1562.002#atomic-test-8---modify-event-log-channel-access-permissions-via-registry---powershell
- https://www.youtube.com/watch?v=uSYvHUVU8xY
- https://learn.microsoft.com/en-us/windows/win32/secauthz/security-descriptor-definition-language
author: X__Junior
date: 2025-01-16
modified: 2025-08-16
tags:
- attack.privilege-escalation
- attack.persistence
- attack.defense-impairment
- attack.t1547.001
- attack.t1112
logsource:
category: registry_set
product: windows
detection:
# O:SYG:SYD:(D;;0x1;;;WD)
# O:BAG:SYD:(A;;0x2;;;S-1-15-2-1)(D;;0x1;;;WD)
selection_key_1:
TargetObject|contains: '\SYSTEM\CurrentControlSet\Services\EventLog\'
TargetObject|endswith: '\CustomSD'
selection_key_2:
TargetObject|contains:
- '\Policies\Microsoft\Windows\EventLog\'
- '\Microsoft\Windows\CurrentVersion\WINEVT\Channels'
TargetObject|endswith: '\ChannelAccess'
selection_details:
- Details|contains: 'D:(D;'
- Details|contains|all:
- 'D:('
- ')(D;'
filter_main_trustedinstaller:
Image: 'C:\Windows\servicing\TrustedInstaller.exe'
filter_main_tiworker:
Image|startswith: 'C:\Windows\WinSxS\'
Image|endswith: '\TiWorker.exe'
filter_optional_empty:
Image: ''
filter_optional_null:
Image: null
condition: 1 of selection_key_* and selection_details and not 1 of filter_main_* and not 1 of filter_optional_*
falsepositives:
- Administrative activity, still unlikely
level: high
simulation:
- type: atomic-red-team
name: Modify Event Log Access Permissions via Registry - PowerShell
technique: T1562.002
atomic_guid: a0cb81f8-44d0-4ac4-a8f3-c5c7f43a12c1
- type: atomic-red-team
name: Modify Event Log Channel Access Permissions via Registry - PowerShell
technique: T1562.002
atomic_guid: 8e81d090-0cd6-4d46-863c-eec11311298f
- type: atomic-red-team
name: Modify Event Log Channel Access Permissions via Registry 2 - PowerShell
technique: T1562.002
atomic_guid: 85e6eff8-3ed4-4e03-ae50-aa6a404898a5
Stages and Predicates
Stage 0: condition
1 of selection_key_* and selection_details and not 1 of filter_main_* and not 1 of filter_optional_*Stage 1: selection_key_1
selection_key_1:
TargetObject|contains: '\SYSTEM\CurrentControlSet\Services\EventLog\'
TargetObject|endswith: '\CustomSD'
Stage 2: selection_key_2
selection_key_2:
TargetObject|contains:
- '\Policies\Microsoft\Windows\EventLog\'
- '\Microsoft\Windows\CurrentVersion\WINEVT\Channels'
TargetObject|endswith: '\ChannelAccess'
Stage 3: selection_details
selection_details:
- Details|contains: 'D:(D;'
- Details|contains|all:
- 'D:('
- ')(D;'
Stage 4: not filter_main_*
filter_main_trustedinstaller:
Image: 'C:\Windows\servicing\TrustedInstaller.exe'
filter_main_tiworker:
Image|startswith: 'C:\Windows\WinSxS\'
Image|endswith: '\TiWorker.exe'
Stage 5: not filter_optional_*
filter_optional_empty:
Image: ''
filter_optional_null:
Image: null
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
Details | match |
| field:"Details" kind:match |
TargetObject | ends_with |
| field:"TargetObject" kind:ends_with |
TargetObject | match |
| field:"TargetObject" kind:match |
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
Image | ends_with | \TiWorker.exe | excludes:Image field:"Image" value:"\TiWorker.exe" |
Image | starts_with | C:\Windows\WinSxS\ | excludes:Image field:"Image" value:"C:\Windows\WinSxS\" |
Image | eq | C:\Windows\servicing\TrustedInstaller.exe | excludes:Image field:"Image" value:"C:\Windows\servicing\TrustedInstaller.exe" |
Image | is_null | excludes:Image |