-
Notifications
You must be signed in to change notification settings - Fork 573
[Rule Tuning] Expand Scope of Entra ID Brute Force Sign-In Attempts #4777
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?
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
|
rules/integrations/azure/credential_access_entra_signin_brute_force_microsoft_365.toml
Outdated
Show resolved
Hide resolved
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.
Very cool rule/query @terrancedejesus !
AND azure.signinlogs.properties.authentication_requirement == "singleFactorAuthentication" | ||
AND error_code != 50053 | ||
| WHERE azure.signinlogs.properties.status.error_code IN ( |
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.
Is there a reason you set error_code
to azure.signinlogs.properties.status.error_code
, and then use error_code
in the first WHERE
but azure.signinlogs.properties.status.error_code
in the second?
country = source.geo.country_name, | ||
user_agent = user_agent.original, |
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.
Are these EVAL
's costly in terms of performance, or not at all?
incoming_token_type, risk_state, session_id, user_id, | ||
user_principal_name, result_description, result_signature, result_type | ||
|
||
| WHERE bf_type != "other" |
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.
This excludes any other
bf_type
's from the results?
incoming_token_type, risk_state, session_id, user_id, | ||
user_principal_name, result_description, result_signature, result_type | ||
|
||
| WHERE bf_type != "other" |
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.
Not sure if we want to do any sorting/limiting at the end.
AND azure.signinlogs.category IN ("NonInteractiveUserSignInLogs", "SignInLogs") | ||
AND event.outcome == "failure" | ||
AND azure.signinlogs.properties.authentication_requirement == "singleFactorAuthentication" | ||
AND error_code != 50053 |
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.
I'm not sure this exclusion is necessary right? since you include the error_codes you want to evaluate in the next section
Pull Request
Issue link(s):
Summary - What I changed
Adjusts the
Azure Entra ID Password Spraying (Non-Interactive SFA)
rule to expand scope and limit error codes while adding additional columns for finalized dataset to help with post-investigation. Please see development linked issue (not meta) for more details.How To Test
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