-
Notifications
You must be signed in to change notification settings - Fork 594
[Rule Tuning] Multi-Factor Authentication Disabled for User #5006
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[Rule Tuning] Multi-Factor Authentication Disabled for User #5006
Conversation
Rule: Tuning - GuidelinesThese guidelines serve as a reminder set of considerations when tuning an existing rule. Documentation and Context
Rule Metadata Checks
Testing and Validation
|
…-disabled-for-user
event.dataset: "azure.auditlogs" and | ||
azure.auditlogs.operation_name: "Disable Strong Authentication" or | ||
azure.auditlogs.operation_name: "User deleted security info" and azure.auditlogs.properties.additional_details.key: "AuthenticationMethod" and | ||
event.outcome: (Success or success) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
event.dataset: "azure.auditlogs" and | |
azure.auditlogs.operation_name: "Disable Strong Authentication" or | |
azure.auditlogs.operation_name: "User deleted security info" and azure.auditlogs.properties.additional_details.key: "AuthenticationMethod" and | |
event.outcome: (Success or success) | |
event.dataset: "azure.auditlogs" and | |
azure.auditlogs.operation_name: "Disable Strong Authentication" or | |
(azure.auditlogs.operation_name: "User deleted security info" and azure.auditlogs.properties.additional_details.key: "AuthenticationMethod") and | |
event.outcome: (Success or success) |
I'm adding the parenthesis for clarity because initially I thought you were looking for ("Disable Strong Auth"
OR "User deleted security info"
) AND azure.auditlogs.properties.additional_details.key: "AuthenticationMethod"
But when I put both versions of parenthesis into the stack the one I've suggested here captures events for both these azure.auditlogs.operation_name
, where as the one I initially thought would have excluded one. This is expected correct?


There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Parenthesis causes a KQL query optimization failure which is why none are included. The reason you see one result with your parenthesis is because AuthenticationMethod
is not a data point when operation is Disable Strong Authentication
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@terrancedejesus event.outcome: (Success or success)
is not evaluated for azure.auditlogs.operation_name: "Disable Strong Authentication"
so it may match also on failure ?
language = "kuery" | ||
license = "Elastic License v2" | ||
name = "Multi-Factor Authentication Disabled for an Azure User" | ||
name = "Multi-Factor Authentication Disabled for User" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For consistency across the rulesets could you add the datasource to the beginning of the name? Across the Azure ruleset I've seen a mix of "Microsoft Entra ID" and "Azure Entra" used, not sure which is appropriate here.
name = "Multi-Factor Authentication Disabled for User" | |
name = "Microsoft Entra ID Multi-Factor Authentication Disabled for User" |
note = """## Triage and analysis | ||
|
||
### Investigating Multi-Factor Authentication Disabled for an Azure User | ||
### Investigating Multi-Factor Authentication Disabled for User |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
### Investigating Multi-Factor Authentication Disabled for User | |
### Investigating Microsoft Entra ID Multi-Factor Authentication Disabled for User |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no standard practice on this. May be a good idea to determine what is ideal moving forward. Always including names of the data source overlaps with the purpose of the rule tags, related integrations and target indices. Whatever we agree on, we should then open a PR to standardize it. If we standardize including integrations, then that would effect Elastic Defend rules and we would be putting Elastic Defend on every rule.
rule_id = "dafa3235-76dc-40e2-9f71-1773b96d24cf" | ||
severity = "medium" | ||
severity = "low" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why the change to low?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- MFA disabled does not immediately indicate malicious behavior
- MFA being disabled, while not extremely noisy, is more likely a benign TP
- Expecting a steady volume of benign TPs over time that we will not be able to tune but rather use the alerts and correlation when triaging
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@terrancedejesus I would recommend to instead bump it to high, it's a low noise and very susp behavior, unless the added condition "User deleted security info"
is expected to be noisier, if that's the case keep it as medium, observe telem and downgrade/bump-up severity. low is a bit risky for such events. OR convert the rule to newterm by
azure.auditlogs.properties.initiated_by.app.servicePrincipalName
with riks set to high ?
event.dataset: "azure.auditlogs" and | ||
azure.auditlogs.operation_name: "Disable Strong Authentication" or | ||
azure.auditlogs.operation_name: "User deleted security info" and azure.auditlogs.properties.additional_details.key: "AuthenticationMethod" and | ||
event.outcome: (Success or success) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@terrancedejesus event.outcome: (Success or success)
is not evaluated for azure.auditlogs.operation_name: "Disable Strong Authentication"
so it may match also on failure ?
rule_id = "dafa3235-76dc-40e2-9f71-1773b96d24cf" | ||
severity = "medium" | ||
severity = "low" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@terrancedejesus I would recommend to instead bump it to high, it's a low noise and very susp behavior, unless the added condition "User deleted security info"
is expected to be noisier, if that's the case keep it as medium, observe telem and downgrade/bump-up severity. low is a bit risky for such events. OR convert the rule to newterm by
azure.auditlogs.properties.initiated_by.app.servicePrincipalName
with riks set to high ?
Pull Request
Issue link(s):
Summary - What I changed
Tunes rule to include missing operation for user-initiated MFA disablement. Please see issue for more details.
How To Test
Query can be used in TRADE stack.
Checklist
bug
,enhancement
,schema
,maintenance
,Rule: New
,Rule: Deprecation
,Rule: Tuning
,Hunt: New
, orHunt: Tuning
so guidelines can be generatedmeta:rapid-merge
label if planning to merge within 24 hoursContributor checklist