AWS-001 CloudTrail S3 Data Event
공격 행위 요약
공격자는 침해된 배포/운영 지점에서 수집 자료를 archive 파일로 압축한 뒤, AWS CLI를 이용해 private S3 bucket으로 업로드했다. CloudTrail S3 Data Event에서는 이 행위가 s3.amazonaws.com의 PutObject 이벤트로 기록된다.
로그 발생 위치
S3 object-level API 호출은 CloudTrail Data Event 설정이 활성화되어 있을 때 기록된다. CloudTrail 로그 파일은 S3 로그 버킷에 .json.gz 형태로 저장되고, Elastic Agent AWS integration이 SQS 알림을 기준으로 로그 파일을 읽어 ELK에 적재한다.
주요 필드
| Field | 의미 |
|---|---|
@timestamp | S3 업로드 API 호출 시간 |
event.action | AWS API action, S3 업로드는 PutObject |
event.provider | 이벤트 발생 서비스, S3는 s3.amazonaws.com |
event.outcome | API 호출 성공 여부 |
user.name | API를 호출한 IAM 사용자 |
aws.cloudtrail.user_identity.arn | API 호출 주체의 IAM ARN |
source.ip | API 요청 출발지 IP |
user_agent.name | API 요청 클라이언트, AWS CLI는 aws-cli |
aws.cloudtrail.event_category | CloudTrail 이벤트 범주, S3 Data Event는 Data |
aws.cloudtrail.read_only | 읽기 전용 여부, PutObject는 false |
aws.cloudtrail.resources.arn | 대상 S3 bucket 또는 object ARN |
aws.cloudtrail.flattened.request_parameters.key | 업로드된 object key |
탐지 포인트
T1567.002는 클라우드 저장소로 파일을 업로드하는 행위가 핵심이다. 다음 조건을 중심으로 확인한다.
event.action이PutObject인지 확인한다.event.provider가s3.amazonaws.com인지 확인한다.aws.cloudtrail.event_category가Data인지 확인한다.event.outcome이success인지 확인한다.aws.cloudtrail.read_only가false인지 확인한다.- 업로드 대상 bucket 또는 object ARN이 유출 목적 저장소인지 확인한다.
user_agent.name이aws-cli인지 확인한다.- 업로드 직전에
LX-001에서 staging 또는 archive 생성이 있었는지 확인한다.
KQL 또는 탐지 쿼리
data_stream.dataset:"aws.cloudtrail" and event.action:"PutObject"
data_stream.dataset:"aws.cloudtrail" and event.action:"PutObject" and aws.cloudtrail.resources.arn:*sb05-k8s-drain-20260504*
data_stream.dataset:"aws.cloudtrail" and event.action:"PutObject" and user_agent.name:"aws-cli"
data_stream.dataset:"aws.cloudtrail" and event.action:"PutObject" and user.name:"sb05-s3-uploader"
Investigation Pivot
event.action이PutObject이고event.outcome이success인지 확인한다.aws.cloudtrail.resources.arn과aws.cloudtrail.flattened.request_parameters.key로 업로드 대상 bucket과 object key를 확인한다.user.name과aws.cloudtrail.user_identity.arn으로 어떤 IAM 주체가 업로드를 수행했는지 확인한다.source.ip가 침해된 배포/운영 지점과 연결되는지 확인한다.user_agent.name,user_agent.original로 AWS CLI 기반 업로드인지 확인한다.- 같은 시간대의
LX-001에서aws실행 흔적과 archive 파일 접근 흔적을 확인한다. - 업로드 이전에 staging, archive 생성, Kubernetes Secret 조회, Pod exec, RBAC 변경이 있었는지 타임라인으로 연결한다.
