The following analytic identifies an attempt to disable multi-factor authentication for an AWS IAM user. An adversary who has obtained access to an AWS tenant may disable multi-factor authentication as a way to plant a backdoor and maintain persistence using a valid account. This way the attackers can keep persistance in the environment without adding new users.
- Type: TTP
- Product: Splunk Enterprise, Splunk Enterprise Security, Splunk Cloud
- Datamodel: Endpoint
- Last Updated: 2022-10-04
- Author: Bhavin Patel, Splunk
- ID: 374832b1-3603-420c-b456-b373e24d34c0
|T1586||Compromise Accounts||Resource Development|
|T1586.003||Cloud Accounts||Resource Development|
|T1621||Multi-Factor Authentication Request Generation||Credential Access|
|T1556||Modify Authentication Process||Credential Access, Defense Evasion, Persistence|
|T1556.006||Multi-Factor Authentication||Credential Access, Defense Evasion, Persistence|
Kill Chain Phase
- CIS 3
- CIS 5
- CIS 16
1 2 3 4 5 `cloudtrail` (eventName= DeleteVirtualMFADevice OR eventName=DeactivateMFADevice) | stats count min(_time) as firstTime max(_time) as lastTime by src eventName eventSource aws_account_id userAgent eventID awsRegion user_name userIdentity.arn status | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)` | `aws_multi_factor_authentication_disabled_filter`
The SPL above uses the following Macros:
aws_multi-factor_authentication_disabled_filter is a empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.
List of fields required to use this analytic.
How To Implement
The Splunk AWS Add-on is required to utilize this data. The search requires AWS Cloudtrail logs.
Known False Positives
AWS Administrators may disable MFA but it is highly unlikely for this event to occur without prior notice to the company
Associated Analytic Story
|64.0||80||80||User $user_name$ has disabled Multi-Factor authentication for AWS account $aws_account_id$|
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.
source | version: 1