AWS - GuardDuty Enum

htARTE (HackTricks AWS Red Team Expert)에서 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

GuardDuty

문서에 따르면 GuardDuty는 AWS에서 워크로드와 데이터를 보호하기 위해 AWS와 선도적인 타사 소스를 결합하여 기계 학습, 이상 탐지, 네트워크 모니터링 및 악성 파일 탐지를 수행합니다. GuardDuty는 AWS CloudTrail 이벤트 로그, Amazon Virtual Private Cloud (VPC) Flow Logs, Amazon Elastic Kubernetes Service (EKS) 감사 및 시스템 수준 로그, DNS 쿼리 로그 등과 같은 여러 AWS 데이터 소스에서 수십억 개의 이벤트를 분석할 수 있습니다.

Amazon GuardDuty는 계정 내에서 비정상적인 활동을 식별하고 해당 활동의 보안 관련성을 분석하며, 활동이 발생한 문맥을 제공합니다. 이를 통해 응답자는 추가 조사에 시간을 할애해야 할지 여부를 결정할 수 있습니다.

경고는 GuardDuty 콘솔 (90일)과 CloudWatch 이벤트에 표시됩니다.

사용자가 GuardDuty를 비활성화하면 AWS 환경을 모니터링하지 않게 되며 새로운 결과를 생성하지 않습니다. 또한 기존 결과가 손실됩니다. 그냥 중지하면 기존 결과는 유지됩니다.

결과 예시

  • 정찰: 공격자에 의한 정찰을 시사하는 활동, 예를 들어 비정상적인 API 활동, 수상한 데이터베이스 로그인 시도, VPC 내부 포트 스캐닝, 비정상적인 로그인 실패 요청 패턴, 알려진 악성 IP에서의 포트 프로빙 등이 있습니다.

  • 인스턴스 침투: 인스턴스 침투를 나타내는 활동, 예를 들어 암호화폐 채굴, 백도어 명령 및 제어 (C&C) 활동, 도메인 생성 알고리즘 (DGA)을 사용하는 악성 소프트웨어, 외부에서의 서비스 거부 공격 활동, 비정상적으로 높은 네트워크 트래픽 볼륨, 비정상적인 네트워크 프로토콜, 알려진 악성 IP와의 인스턴스 통신, 외부 IP 주소에서 사용된 일시적인 Amazon EC2 자격 증명, DNS를 사용한 데이터 유출 등이 있습니다.

  • 계정 침투: 계정 침투를 나타내는 일반적인 패턴으로는 비정상적인 지리적 위치나 익명 프록시에서의 API 호출, AWS CloudTrail 로깅 비활성화 시도, 계정 암호 정책을 약화시키는 변경 사항, 비정상적인 인스턴스 또는 인프라 배포, 비정상적인 지역에서의 인프라 배포, 자격 증명 도난, 수상한 데이터베이스 로그인 활동, 알려진 악성 IP 주소에서의 API 호출 등이 있습니다.

  • 버킷 침투: 버킷 침투를 나타내는 활동, 예를 들어 자격 증명 남용을 나타내는 수상한 데이터 액세스 패턴, 원격 호스트에서의 비정상적인 Amazon S3 API 활동, 알려진 악성 IP 주소에서의 무단 S3 액세스, 이전에 버킷에 액세스한 기록이 없거나 비정상적인 위치에서 호출된 사용자로부터 S3 버킷에서 데이터를 검색하기 위한 API 호출 등이 있습니다. Amazon GuardDuty는 모든 Amazon S3 버킷에서 의심스러운 활동을 감지하기 위해 AWS CloudTrail S3 데이터 이벤트 (예: GetObject, ListObjects, DeleteObject)를 지속적으로 모니터링하고 분석합니다.

결과 정보

결과 요약:

  • 결과 유형

  • 심각도: 7-8.9 높음, 4-6.9 중간, 01-3.9 낮음

  • 지역

  • 계정 ID

  • 리소스 ID

  • 감지 시간

  • 사용된 위협 목록

본문에는 다음 정보가 포함되어 있습니다:

  • 영향을 받는 리소스

  • 동작

  • 실행자: IP 주소, 포트 및 도메인

  • 추가 정보

모든 결과

GuardDuty 결과의 목록에 액세스하려면 다음을 참조하세요: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

다중 계정

초대를 통해

다른 계정을 다른 AWS GuardDuty 계정에 초대하여 모든 계정을 동일한 GuardDuty에서 모니터링할 수 있습니다. 마스터 계정은 멤버 계정을 초대하고, 멤버 계정의 대표자는 초대를 수락해야 합니다.

조직을 통해

조직 내의 어떤 계정이든 GuardDuty 위임 관리자로 지정할 수 있습니다. 조직 관리 계정만이 위임 관리자를 지정할 수 있습니다.

위임 관리자로 지정된 계정은 GuardDuty 관리자 계정이 되며, 지정된 AWS 지역에서 자동으로 GuardDuty가 활성화되며 해당 지역 내의 모든 계정에 대해 GuardDuty를 활성화하고 관리할 수 있는 권한을 갖습니다. 조직 내의 다른 계정은 이 위임 관리자 계정과 관련된 GuardDuty 멤버 계정으로 볼 수 있으며 추가할 수 있습니다.

열거

# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>

GuardDuty 우회

일반적인 지침

사용할 자격 증명에 대한 동작에 대해 가능한 한 많은 정보를 알아내려고 노력하세요:

  • 사용된 시간

  • 위치

  • 사용자 에이전트 / 서비스 (awscli, 웹 콘솔, 람다 등에서 사용될 수 있음)

  • 정기적으로 사용되는 권한

이 정보를 사용하여 가능한 한 동일한 시나리오를 재현하여 액세스를 사용하세요:

  • 사용자 또는 사용자에 의해 액세스되는 역할인 경우, 동일한 시간대에 동일한 지리적 위치에서 사용하세요 (가능하면 동일한 ISP 및 IP도 사용)

  • 서비스에 의해 사용되는 역할인 경우, 동일한 지역에서 동일한 서비스를 생성하고 동일한 시간 범위에서 사용하세요

  • 항상 이 주체가 사용한 동일한 권한을 사용하려고 하세요

  • 다른 권한을 사용하거나 권한을 남용해야 하는 경우 (예: 1,000,000개의 클라우드트레일 로그 파일 다운로드), AWS와의 상호 작용을 느리게하고 최소한의 상호 작용으로 수행하세요 (awscli는 때로는 쓰기 API 이전에 여러 읽기 API를 호출합니다)

GuardDuty 우회하기

guardduty:UpdateDetector

이 권한을 사용하면 경보를 트리거하지 않도록 GuardDuty를 비활성화할 수 있습니다.

aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}

guardduty:CreateFilter

이 권한을 가진 공격자는 자동으로 발견된 결과를 보관하기 위해 필터를 사용할 수 있습니다:

aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE

iam:PutRolePolicy, (guardduty:CreateIPSet|guardduty:UpdateIPSet)

이전 권한을 가진 공격자는 GuardDuty의 신뢰할 수 있는 IP 목록을 수정하여 자신의 IP 주소를 추가하고 경고를 생성하지 않을 수 있습니다.

aws guardduty update-ip-set --detector-id <detector-id> --activate --ip-set-id <ip-set-id> --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv

guardduty:DeletePublishingDestination

공격자는 경고를 방지하기 위해 대상을 제거할 수 있습니다:

aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

이 게시 대상을 삭제하면 GuardDuty 콘솔 내에서의 결과 생성 또는 가시성에 영향을 주지 않습니다. GuardDuty는 여전히 AWS 환경에서 이벤트를 분석하고 의심스러운 또는 예상치 못한 동작을 식별하며 결과를 생성합니다.

특정 결과 우회 예제

GuardDuty 결과는 수십 개가 있지만, Red Teamer로서 모두가 영향을 미치지는 않을 것이며, 더 좋은 것은 https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html에서 각 결과의 전체 문서를 찾을 수 있으므로 어떤 조치를 취하기 전에 확인해보세요.

여기에는 특정 GuardDuty 결과 우회 예제 몇 가지가 있습니다:

GuardDuty는 일반적인 펜트레이션 테스트 도구에서의 AWS API 요청을 감지하고 PenTest 결과를 트리거합니다. API 요청에서 전달되는 사용자 에이전트 이름으로 감지됩니다. 따라서 공격을 감지하지 못하도록 사용자 에이전트를 수정할 수 있습니다.

이를 방지하기 위해 botocore 패키지의 session.py 스크립트에서 검색하여 사용자 에이전트를 수정하거나, AWS CLI 프록시로 Burp Suite를 설정하고 MitM을 사용하여 사용자 에이전트를 변경하거나, Ubuntu, Mac 또는 Windows와 같은 운영 체제를 사용하면 이 경고가 트리거되지 않습니다.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

메타데이터 서비스에서 EC2 자격 증명을 추출하고 AWS 환경 외부에서 이를 사용하는 경우 UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS 경고가 활성화됩니다. 반대로 EC2 인스턴스에서 이러한 자격 증명을 사용하는 경우 UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS 경고가 트리거됩니다. 그러나 동일한 계정 내 다른 침해된 EC2 인스턴스에서 자격 증명을 사용하는 경우 감지되지 않고 경고가 발생하지 않습니다.

따라서, 발견한 기계 내부에서 유출된 자격 증명을 사용하여 이 경고를 트리거하지 않도록 하세요.

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

最終更新