Amazon EKS Kubernetes Pod scan detection
Description
The following analytic detects unauthenticated requests made against the Kubernetes Pods API, indicating potential unauthorized access attempts. It leverages the aws_cloudwatchlogs_eks data source, filtering for events where user.username is "system:anonymous", verb is "list", and objectRef.resource is "pods", with requestURI set to "/api/v1/pods". This activity is significant as it may signal attempts to access sensitive resources or execute unauthorized commands within the Kubernetes environment. If confirmed malicious, such access could lead to data compromise, unauthorized command execution, or lateral movement within the cluster.
Query · spl
`aws_cloudwatchlogs_eks` "user.username"="system:anonymous" verb=list objectRef.resource=pods requestURI="/api/v1/pods"
| rename source as cluster_name sourceIPs{} as src_ip
| stats count min(_time) as firstTime max(_time) as lastTime values(responseStatus.reason) values(responseStatus.code) values(userAgent) values(verb) values(requestURI)
BY src_ip cluster_name user.username
user.groups{}
| `security_content_ctime(lastTime)`
| `security_content_ctime(firstTime)`
| `amazon_eks_kubernetes_pod_scan_detection_filter`
Implementation guide
You must install the AWS App for Splunk (version 5.1.0 or later) and Splunk Add-on forAWS (version 4.4.0 or later), then configure your AWS CloudWatch EKS Logs.Please also customize the kubernetes_pods_aws_scan_fingerprint_detection macro to filter out the false positives.
Known false positives
- Not all unauthenticated requests are malicious, but frequency, UA and source IPs and direct request to API provide context.
Analyst notes
Known false positives: Not all unauthenticated requests are malicious, but frequency, UA and source IPs and direct request to API provide context.