Analytic rule catalog
AWSCloudTrail - S3 Object Exfiltration from Anonymous User
Back
| Id | 15d3bf4e-8708-41c8-a836-8b0aa5be730e |
| Rulename | AWSCloudTrail - S3 Object Exfiltration from Anonymous User |
| Description | Detects S3 GetObject activity performed by anonymous principals, which can indicate unauthorized object access and potential data exfiltration from public or misconfigured buckets. |
| Severity | Medium |
| Tactics | Collection |
| Techniques | T1530 |
| Required data connectors | AWS |
| Kind | Scheduled |
| Query frequency | 5m |
| Query period | 5m |
| Trigger threshold | 0 |
| Trigger operator | gt |
| Source Uri | https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Amazon%20Web%20Services/Analytic%20Rules/AWS_S3ObjectExfiltrationByAnonymousUser.yaml |
| Version | 1.0.1 |
| Arm template | 15d3bf4e-8708-41c8-a836-8b0aa5be730e.json |
AWSCloudTrail
| where ((UserIdentityAccountId =~ @'ANONYMOUS_PRINCIPAL' or UserIdentityPrincipalid == "Anonymous") and EventName == 'GetObject')
| extend
BucketName = parse_json(RequestParameters).bucketName,
ObjectKey = parse_json(RequestParameters).key
| extend UserName = substring(UserIdentityPrincipalid, indexof_regex(UserIdentityPrincipalid, ":") + 1)
| extend Name = split(UserName,'@')[0],UpnSuffix = split(UserName,'@')[1]
triggerThreshold: 0
version: 1.0.1
entityMappings:
- entityType: Account
fieldMappings:
- identifier: Name
columnName: Name
- identifier: UPNSuffix
columnName: UpnSuffix
- entityType: IP
fieldMappings:
- identifier: Address
columnName: SourceIpAddress
query: |
AWSCloudTrail
| where ((UserIdentityAccountId =~ @'ANONYMOUS_PRINCIPAL' or UserIdentityPrincipalid == "Anonymous") and EventName == 'GetObject')
| extend
BucketName = parse_json(RequestParameters).bucketName,
ObjectKey = parse_json(RequestParameters).key
| extend UserName = substring(UserIdentityPrincipalid, indexof_regex(UserIdentityPrincipalid, ":") + 1)
| extend Name = split(UserName,'@')[0],UpnSuffix = split(UserName,'@')[1]
alertDetailsOverride:
alertDisplayNameFormat: AWS S3 object access by anonymous principal in bucket {{BucketName}}
alertDescriptionFormat: Detected anonymous GetObject activity for bucket {{BucketName}} and object {{ObjectKey}} from {{SourceIpAddress}}.
name: AWSCloudTrail - S3 Object Exfiltration from Anonymous User
kind: Scheduled
tactics:
- Collection
id: 15d3bf4e-8708-41c8-a836-8b0aa5be730e
queryFrequency: 5m
customDetails:
ObjectKey: ObjectKey
BucketName: BucketName
description: |
Detects S3 GetObject activity performed by anonymous principals, which can indicate unauthorized object access
and potential data exfiltration from public or misconfigured buckets.
requiredDataConnectors:
- connectorId: AWS
dataTypes:
- AWSCloudTrail
triggerOperator: gt
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Amazon%20Web%20Services/Analytic%20Rules/AWS_S3ObjectExfiltrationByAnonymousUser.yaml
relevantTechniques:
- T1530
status: Available
severity: Medium
queryPeriod: 5m
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspace": {
"type": "String"
}
},
"resources": [
{
"apiVersion": "2024-01-01-preview",
"id": "[concat(resourceId('Microsoft.OperationalInsights/workspaces/providers', parameters('workspace'), 'Microsoft.SecurityInsights'),'/alertRules/15d3bf4e-8708-41c8-a836-8b0aa5be730e')]",
"kind": "Scheduled",
"name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/15d3bf4e-8708-41c8-a836-8b0aa5be730e')]",
"properties": {
"alertDetailsOverride": {
"alertDescriptionFormat": "Detected anonymous GetObject activity for bucket {{BucketName}} and object {{ObjectKey}} from {{SourceIpAddress}}.",
"alertDisplayNameFormat": "AWS S3 object access by anonymous principal in bucket {{BucketName}}"
},
"alertRuleTemplateName": "15d3bf4e-8708-41c8-a836-8b0aa5be730e",
"customDetails": {
"BucketName": "BucketName",
"ObjectKey": "ObjectKey"
},
"description": "Detects S3 GetObject activity performed by anonymous principals, which can indicate unauthorized object access\nand potential data exfiltration from public or misconfigured buckets.\n",
"displayName": "AWSCloudTrail - S3 Object Exfiltration from Anonymous User",
"enabled": true,
"entityMappings": [
{
"entityType": "Account",
"fieldMappings": [
{
"columnName": "Name",
"identifier": "Name"
},
{
"columnName": "UpnSuffix",
"identifier": "UPNSuffix"
}
]
},
{
"entityType": "IP",
"fieldMappings": [
{
"columnName": "SourceIpAddress",
"identifier": "Address"
}
]
}
],
"OriginalUri": "https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Amazon%20Web%20Services/Analytic%20Rules/AWS_S3ObjectExfiltrationByAnonymousUser.yaml",
"query": "AWSCloudTrail\n| where ((UserIdentityAccountId =~ @'ANONYMOUS_PRINCIPAL' or UserIdentityPrincipalid == \"Anonymous\") and EventName == 'GetObject')\n| extend\n BucketName = parse_json(RequestParameters).bucketName,\n ObjectKey = parse_json(RequestParameters).key\n| extend UserName = substring(UserIdentityPrincipalid, indexof_regex(UserIdentityPrincipalid, \":\") + 1)\n| extend Name = split(UserName,'@')[0],UpnSuffix = split(UserName,'@')[1]\n",
"queryFrequency": "PT5M",
"queryPeriod": "PT5M",
"severity": "Medium",
"status": "Available",
"subTechniques": [],
"suppressionDuration": "PT1H",
"suppressionEnabled": false,
"tactics": [
"Collection"
],
"techniques": [
"T1530"
],
"templateVersion": "1.0.1",
"triggerOperator": "GreaterThan",
"triggerThreshold": 0
},
"type": "Microsoft.OperationalInsights/workspaces/providers/alertRules"
}
]
}