AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail은 AWS 환경 내에서의 활동을 기록하고 모니터링합니다. 이는 AWS 리소스와의 모든 상호작용에 대해 누가 무엇을 언제 어디서 했는지를 포함한 자세한 이벤트 로그를 캡처합니다. 이는 변경 사항 및 작업의 감사 추적을 제공하여 보안 분석, 규정 준수 감사 및 리소스 변경 추적을 지원합니다. CloudTrail은 사용자 및 리소스 동작을 이해하고 보안 포지션을 강화하며 규정 준수를 보장하는 데 필수적입니다.
각 로그된 이벤트에는 다음이 포함됩니다:
호출된 API의 이름:
eventName
호출된 서비스:
eventSource
시간:
eventTime
IP 주소:
SourceIPAddress
에이전트 방법:
userAgent
. 예시:Signing.amazonaws.com - AWS Management Console에서
console.amazonaws.com - 계정의 루트 사용자
lambda.amazonaws.com - AWS Lambda
요청 매개변수:
requestParameters
응답 요소:
responseElements
이벤트는 대략 5분마다 새로운 로그 파일에 JSON 파일로 기록되며, CloudTrail에 의해 보유되며, 로그 파일은 약 15분 후에 S3로 전달됩니다. CloudTrail 로그는 계정 및 지역을 가로지르는 방식으로 집계될 수 있습니다. CloudTrail은 로그 파일 무결성을 사용하여 로그 파일이 CloudTrail이 제공한 이후에 변경되지 않았는지 확인할 수 있도록 합니다. 로그 내용의 SHA-256 해시를 다이제스트 파일 내에 생성합니다. 새로운 로그의 sha-256 해시는 매 시간마다 생성됩니다. Trail을 생성할 때 이벤트 선택기를 사용하여 로깅할 Trail(관리, 데이터 또는 통찰 이벤트)을 지정할 수 있습니다.
로그는 S3 버킷에 저장됩니다. 기본적으로 서버 측 암호화(SSE-S3)가 사용되므로 AWS는 액세스 권한이 있는 사람들을 위해 내용을 복호화하지만 추가 보안을 위해 KMS와 자체 키를 사용할 수 있습니다.
로그는 다음과 같은 이름 형식의 S3 버킷에 저장됩니다:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
BucketName이 다음과 같은 경우:
aws-cloudtrail-logs-<accountid>-<random>
예:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
각 폴더 내에서 각 로그는 다음 형식을 따르는 이름을 가집니다: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
로그 파일 명명 규칙
또한 (파일 무결성 확인을 위한) 다이제스트 파일은 동일한 버킷에 있습니다:
여러 계정에서 로그 집계
로그 파일을 전달할 AWS 계정에서 트레일 생성
CloudTrail에 대한 교차 계정 액세스를 허용하도록 대상 S3 버킷에 권한 적용하고 액세스해야 하는 각 AWS 계정을 허용
다른 AWS 계정에서 새 트레일을 생성하고 단계 1에서 생성한 버킷을 사용하도록 선택
그러나 모든 로그를 동일한 S3 버킷에 저장할 수 있더라도 여러 계정의 CloudTrail 로그를 단일 AWS 계정에 속한 CloudWatch Logs로 집계할 수는 없습니다.
계정은 CloudTrail에서 활성화된 다른 트레일을 가질 수 있으므로 동일한(또는 다른) 로그를 다른 버킷에 저장할 수 있습니다.
1개의 조직 계정에서 모든 조직 계정으로 Cloudtrail
CloudTrail을 생성할 때, 조직의 모든 계정에 대해 CloudTrail을 활성화하고 로그를 하나의 버킷에 저장할 수 있습니다:
이렇게 하면 모든 지역의 모든 계정에 대해 CloudTrail을 쉽게 구성하고 로그를 1개의 계정(보호해야 함)에 집중할 수 있습니다.
로그 파일 확인
로그가 변경되지 않았는지 확인하려면 다음을 실행할 수 있습니다
CloudWatch로의 로그
CloudTrail은 자동으로 로그를 CloudWatch로 보낼 수 있어서 의심스러운 활동이 수행될 때 경고 알림을 설정할 수 있습니다. CloudTrail이 로그를 CloudWatch로 보낼 수 있도록 하려면 해당 작업을 허용하는 역할을 만들어야 합니다. 가능하다면 AWS 기본 역할을 사용하는 것이 좋습니다. 이 역할을 통해 CloudTrail이 다음을 수행할 수 있습니다:
CreateLogStream: CloudWatch Logs 로그 스트림 생성을 허용합니다.
PutLogEvents: CloudTrail 로그를 CloudWatch Logs 로그 스트림으로 전달합니다.
이벤트 기록
CloudTrail 이벤트 기록을 통해 기록된 로그를 테이블에서 검토할 수 있습니다:
통찰력
CloudTrail 통찰력은 CloudTrail 트레일에서 쓰기 관리 이벤트를 자동으로 분석하고 이상 활동을 경고합니다. 예를 들어, 설정된 기준과 다른 TerminateInstance
이벤트가 증가하는 경우, 이를 통찰력 이벤트로 볼 수 있습니다. 이러한 이벤트는 이상한 API 활동을 찾고 대응하는 것을 이전보다 쉽게 만듭니다.
통찰력은 CloudTrail 로그와 동일한 버킷에 저장됩니다: BucketName/AWSLogs/AccountID/CloudTrail-Insight
보안
CloudTrail 로그 파일 무결성 |
|
무단 접근 방지 |
|
로그 파일 삭제 방지 |
|
액세스 어드바이저
AWS 액세스 어드바이저는 최근 400일간의 AWS CloudTrail 로그를 수집하여 통찰을 얻습니다. CloudTrail은 AWS 계정에서 수행된 AWS API 호출 및 관련 이벤트의 기록을 캡처합니다. 액세스 어드바이저는 이 데이터를 활용하여 서비스가 마지막으로 액세스된 시기를 표시합니다. CloudTrail 로그를 분석함으로써 액세스 어드바이저는 IAM 사용자 또는 역할이 액세스한 AWS 서비스 및 해당 액세스가 발생한 시간을 결정할 수 있습니다. 이를 통해 AWS 관리자는 권한을 세분화하는 데 도움을 받을 수 있으며, 액세스되지 않은 서비스를 식별하고 실제 사용 패턴에 기반한 지나치게 넓은 권한을 줄일 수 있습니다.
따라서, 액세스 어드바이저는 사용자에게 부여된 불필요한 권한에 대해 알려주어 관리자가 제거할 수 있도록 합니다
작업
열거
CSV Injection
CloudTrail 내에서 CSV 주입을 수행하여 로그가 CSV로 내보내지고 Excel에서 열리면 임의의 코드를 실행할 수 있습니다. 다음 코드는 페이로드를 포함하는 나쁜 Trail 이름의 로그 항목을 생성합니다:
CSV Injection에 대한 자세한 정보는 다음 페이지를 확인하십시오:
이 특정 기술에 대한 자세한 정보는 https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/에서 확인하십시오.
탐지 우회
HoneyTokens 우회
HoneyTokens는 민감한 정보 유출을 탐지하기 위해 생성됩니다. AWS의 경우, 사용이 모니터링되는 AWS 키입니다. 해당 키로 작업을 트리거하는 경우, 누군가 그 키를 도난당했을 수 있습니다.
그러나 이 모니터링은 CloudTrail을 통해 수행되며, 일부 AWS 서비스는 CloudTrail로 로그를 보내지 않습니다(여기에서 목록 확인). 이러한 서비스 중 일부는 무단으로 접근한 사람(허니토큰 키)이 접근하려고 할 때 ARN을 포함한 오류로 응답합니다.
이렇게 하면 공격자는 로그를 트리거하지 않고도 키의 ARN을 얻을 수 있습니다. ARN에서 공격자는 AWS 계정 ID 및 이름을 볼 수 있으며, 이를 통해 공격자는 HoneyToken의 회사 계정 ID 및 이름을 쉽게 식별할 수 있습니다.
HoneyTokens 탐지
Pacu는 Canarytokens, SpaceCrab, SpaceSiren에 속하는 키를 감지합니다:
역할 이름이나 계정 ID에 **
canarytokens.org
**가 나타나면 오류 메시지에 **534261010715
**가 나타납니다.최근에 테스트한 결과, 계정 **
717712589309
**를 사용하고 이름에canarytokens.com
문자열이 여전히 포함되어 있습니다.역할 이름 또는 오류 메시지에 **
SpaceCrab
**가 나타나면SpaceSiren은 사용자 이름을 생성하기 위해 uuids를 사용합니다:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
이름이 랜덤으로 생성된 것처럼 보인다면, 그것이 HoneyToken일 가능성이 높습니다.
모든 공개 API가 CloudTrail 로그를 생성하지 않는 것으로 확인되었으므로, 직접 찾아야 할 수도 있습니다...
또는 액세스 키 내부에 인코딩된 계정 ID를 가져와 여기에서 설명된대로 Honeytokens AWS 계정 목록과 계정 ID를 확인할 수 있습니다:
자세한 정보는 원본 연구를 확인하십시오.
제3의 인프라 구조에 액세스
특정 AWS 서비스는 데이터베이스 또는 Kubernetes 클러스터(EKS)와 같은 인프라를 생성할 수 있습니다. 사용자가 이러한 서비스(예: Kubernetes API)에 직접 액세스하는 경우 AWS API를 사용하지 않으므로, CloudTrail은 이 통신을 볼 수 없습니다.
따라서 EKS에 액세스 권한이 있는 사용자는 EKS API의 URL을 발견하고 로컬에서 토큰을 생성하여 CloudTrail에 감지되지 않고 직접 API 서비스와 통신할 수 있습니다.
더 많은 정보:
pageAWS - EKS Post ExploitationCloudTrail 구성 수정
트레일 삭제
트레일 중지
다중 지역 로깅 비활성화
이벤트 선택기를 사용하여 로깅 비활성화
첫 번째 예에서는 단일 이벤트 셀렉터가 단일 객체로 구성된 JSON 배열로 제공됩니다. "ReadWriteType": "ReadOnly"
는 이벤트 셀렉터가 읽기 전용 이벤트만 캡처하도록 지정함을 나타냅니다 (따라서 CloudTrail 인사이트는 쓰기 이벤트를 확인하지 않을 것입니다).
특정 요구 사항에 따라 이벤트 셀렉터를 사용자 정의할 수 있습니다.
S3 라이프사이클 정책을 통한 로그 삭제
버킷 구성 수정
S3 버킷 삭제
버킷 정책 변경하여 CloudTrail 서비스로부터의 쓰기 작업 거부
S3 버킷에 객체 삭제 수명 주기 정책 추가
CloudTrail 로그를 암호화하는 데 사용된 kms 키 비활성화
Cloudtrail 랜섬웨어
S3 랜섬웨어
비대칭 키를 생성하고 CloudTrail이 해당 키로 데이터를 암호화하도록 만들고 개인 키를 삭제하여 CloudTrail 콘텐츠를 복구할 수 없게 만들 수 있습니다. 이것은 기본적으로 S3-KMS 랜섬웨어로 설명되어 있습니다:
pageAWS - S3 Post ExploitationKMS 랜섬웨어
이것은 이전 공격을 다른 권한 요구 사항으로 수행하는 가장 쉬운 방법입니다:
pageAWS - KMS Post Exploitation참고 자료
最終更新