Detection: AWS Successful Single-Factor Authentication

Description

The following analytic identifies a successful Console Login authentication event for an AWS IAM user account without Multi-Factor Authentication (MFA) enabled. It leverages AWS CloudTrail logs to detect instances where MFA was not used during login. This activity is significant as it may indicate a misconfiguration, policy violation, or potential account takeover attempt. If confirmed malicious, an attacker could gain unauthorized access to the AWS environment, potentially leading to data exfiltration, resource manipulation, or further privilege escalation.

 1`cloudtrail` eventName= ConsoleLogin errorCode=success "additionalEventData.MFAUsed"=No
 2  
 3| rename user_name as user
 4  
 5| stats count min(_time) as firstTime max(_time) as lastTime
 6    BY signature dest user
 7       user_agent src vendor_account
 8       vendor_region vendor_product
 9  
10| `security_content_ctime(firstTime)`
11  
12| `security_content_ctime(lastTime)`
13  
14| `aws_successful_single_factor_authentication_filter`

Data Source

Name Platform Sourcetype Source
AWS CloudTrail ConsoleLogin AWS icon AWS 'aws:cloudtrail' 'aws_cloudtrail'

Macros Used

Name Value
security_content_ctime convert timeformat="%Y-%m-%dT%H:%M:%S" ctime($field$)
aws_successful_single_factor_authentication_filter search *
aws_successful_single_factor_authentication_filter is an empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.

Annotations

- MITRE ATT&CK
+ Kill Chain Phases
+ NIST
+ CIS
- Threat Actors
ID Technique Tactic
T1078.004 Cloud Accounts Initial Access
T1586.003 Cloud Accounts Persistence
weaponization
Delivery
Exploitation
Installation
DE.CM
CIS 10

Default Configuration

This detection is configured by default in Splunk Enterprise Security to run with the following settings:

Setting Value
Disabled true
Cron Schedule 0 * * * *
Earliest Time -70m@m
Latest Time -10m@m
Schedule Window auto
Creates Finding (Notable) Yes
Rule Title %name%
Rule Description %description%
Notable Event Fields user, dest
Creates Intermediate Finding (Risk Event) No
TTP detections generate a Finding (Notable) and may generate Intermediate Findings (Risk Events) for associated entities.

Implementation

The Splunk AWS Add-on is required to utilize this data. The search requires AWS CloudTrail logs.

Known False Positives

It is possible that some accounts do not have MFA enabled for the AWS account however its agaisnt the best practices of securing AWS.

Associated Analytic Story

Finding

Title Entity Field Entity Type Risk Score
User $user$ has successfully logged into an AWS Console without Multi-Factor Authentication from $src$ user user 50

Threat Objects

Field Type
src ip_address

References

Detection Testing

Test Type Status Dataset Source Sourcetype
Validation Passing N/A N/A N/A
Unit Passing Dataset aws_cloudtrail aws:cloudtrail
Integration ✅ Passing Dataset aws_cloudtrail aws:cloudtrail

Replay any dataset to Splunk Enterprise by using our replay.py tool or the UI. Alternatively you can replay a dataset into a Splunk Attack Range


Source: GitHub | Version: 11