AWS - GuardDuty Enum

Support HackTricks

GuardDuty

According to the docs: GuardDuty łączy uczenie maszynowe, wykrywanie anomalii, monitorowanie sieci i odkrywanie złośliwych plików, korzystając zarówno z AWS, jak i wiodących źródeł zewnętrznych, aby pomóc w ochronie obciążeń i danych na AWS. GuardDuty jest w stanie analizować dziesiątki miliardów zdarzeń z różnych źródeł danych AWS, takich jak dzienniki zdarzeń AWS CloudTrail, dzienniki przepływu Amazon Virtual Private Cloud (VPC), dzienniki audytu i systemowe Amazon Elastic Kubernetes Service (EKS) oraz dzienniki zapytań DNS.

Amazon GuardDuty identyfikuje nietypową aktywność w Twoich kontach, analizuje znaczenie bezpieczeństwa tej aktywności i podaje kontekst, w jakim została wywołana. Umożliwia to osobie reagującej określenie, czy powinna poświęcić czas na dalsze dochodzenie.

Alerty pojawiają się w konsoli GuardDuty (90 dni) oraz w CloudWatch Events.

Gdy użytkownik wyłączy GuardDuty, przestanie monitorować Twoje środowisko AWS i nie wygeneruje żadnych nowych ustaleń, a istniejące ustalenia zostaną utracone. Jeśli po prostu go zatrzymasz, istniejące ustalenia pozostaną.

Przykład Ustaleń

  • Rozpoznanie: Aktywność sugerująca rozpoznanie przez atakującego, takie jak nietypowa aktywność API, podejrzane próby logowania do bazy danych, skanowanie portów wewnątrz VPC, nietypowe wzorce nieudanych prób logowania lub skanowanie otwartych portów z znanego złego adresu IP.

  • Kompromitacja instancji: Aktywność wskazująca na kompromitację instancji, taka jak kopanie kryptowalut, złośliwe polecenia i kontrola (C&C), złośliwe oprogramowanie wykorzystujące algorytmy generowania domen (DGA), aktywność odmowy usługi wychodzącej, nietypowo wysoki wolumen ruchu sieciowego, nietypowe protokoły sieciowe, komunikacja instancji wychodzącej z znanym złośliwym adresem IP, tymczasowe poświadczenia Amazon EC2 używane przez zewnętrzny adres IP oraz eksfiltracja danych przy użyciu DNS.

  • Kompromitacja konta: Typowe wzorce wskazujące na kompromitację konta obejmują wywołania API z nietypowej geolokalizacji lub proxy anonimowego, próby wyłączenia logowania AWS CloudTrail, zmiany osłabiające politykę haseł konta, nietypowe uruchomienia instancji lub infrastruktury, wdrożenia infrastruktury w nietypowym regionie, kradzież poświadczeń, podejrzana aktywność logowania do bazy danych oraz wywołania API z znanych złośliwych adresów IP.

  • Kompromitacja koszyka: Aktywność wskazująca na kompromitację koszyka, taka jak podejrzane wzorce dostępu do danych wskazujące na nadużycie poświadczeń, nietypowa aktywność API Amazon S3 z zdalnego hosta, nieautoryzowany dostęp S3 z znanych złośliwych adresów IP oraz wywołania API w celu pobrania danych z koszyków S3 od użytkownika, który nie miał wcześniejszej historii dostępu do koszyka lub wywołanych z nietypowej lokalizacji. Amazon GuardDuty nieprzerwanie monitoruje i analizuje zdarzenia danych S3 AWS CloudTrail (np. GetObject, ListObjects, DeleteObject), aby wykrywać podejrzaną aktywność we wszystkich Twoich koszykach Amazon S3.

Informacje o Ustaleniach

Podsumowanie ustaleń:

  • Typ ustalenia

  • Powaga: 7-8.9 Wysoka, 4-6.9 Średnia, 01-3.9 Niska

  • Region

  • ID konta

  • ID zasobu

  • Czas wykrycia

  • Która lista zagrożeń została użyta

Treść zawiera te informacje:

  • Zasób dotknięty

  • Akcja

  • Aktor: adres IP, port i domena

  • Dodatkowe informacje

Wszystkie Ustalenia

Uzyskaj dostęp do listy wszystkich ustaleń GuardDuty w: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

Wiele Kont

Na Zaproszenie

Możesz zaprosić inne konta do innego konta AWS GuardDuty, aby każde konto było monitorowane z tego samego GuardDuty. Konto główne musi zaprosić konta członkowskie, a następnie przedstawiciel konta członkowskiego musi zaakceptować zaproszenie.

Poprzez Organizację

Możesz wyznaczyć dowolne konto w organizacji jako delegowanego administratora GuardDuty. Tylko konto zarządzające organizacją może wyznaczyć delegowanego administratora.

Konto, które zostanie wyznaczone jako delegowany administrator, staje się kontem administratora GuardDuty, ma automatycznie włączony GuardDuty w wyznaczonym regionie AWS i ma również uprawnienia do włączania i zarządzania GuardDuty dla wszystkich kont w organizacji w tym regionie. Inne konta w organizacji mogą być wyświetlane i dodawane jako konta członkowskie GuardDuty związane z tym kontem delegowanego administratora.

Enumeracja

# 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 Bypass

General Guidance

Spróbuj dowiedzieć się jak najwięcej o zachowaniu poświadczeń, których zamierzasz użyć:

  • Czas, w którym są używane

  • Lokalizacje

  • User Agents / Usługi (może być używane z awscli, webconsole, lambda...)

  • Uprawnienia regularnie używane

Z tą informacją, odtwórz jak najwięcej tego samego scenariusza, aby użyć dostępu:

  • Jeśli to jest użytkownik lub rola dostępna przez użytkownika, spróbuj użyć jej w tych samych godzinach, z tej samej geolokalizacji (nawet tego samego ISP i IP, jeśli to możliwe)

  • Jeśli to jest rola używana przez usługę, stwórz tę samą usługę w tym samym regionie i użyj jej stamtąd w tych samych przedziałach czasowych

  • Zawsze staraj się używać tych samych uprawnień, które ten podmiot używał

  • Jeśli musisz użyć innych uprawnień lub nadużyć uprawnienia (na przykład, pobrać 1.000.000 plików dziennika cloudtrail), rób to powoli i z minimalną ilością interakcji z AWS (awscli czasami wywołuje kilka API do odczytu przed zapisem)

Breaking GuardDuty

guardduty:UpdateDetector

Dzięki temu uprawnieniu możesz wyłączyć GuardDuty, aby uniknąć wyzwalania alertów.

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

Atakujący z tym uprawnieniem mają możliwość stosowania filtrów do automatycznego archiwizowania wyników:

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)

Napastnicy z wcześniejszymi uprawnieniami mogli modyfikować Zaufaną listę IP GuardDuty, dodając do niej swój adres IP i unikać generowania alertów.

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

Napastnicy mogą usunąć miejsce docelowe, aby zapobiec powiadomieniom:

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

Usunięcie tego miejsca publikacji nie wpłynie na generowanie ani widoczność ustaleń w konsoli GuardDuty. GuardDuty będzie nadal analizować zdarzenia w Twoim środowisku AWS, identyfikować podejrzane lub nieoczekiwane zachowanie i generować ustalenia.

Przykłady obejścia konkretnych ustaleń

Zauważ, że istnieje dziesiątki ustaleń GuardDuty, jednak jako Red Teamer nie wszystkie z nich będą miały na Ciebie wpływ, a co lepsze, masz pełną dokumentację każdego z nich w https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html, więc zapoznaj się z nią przed podjęciem jakichkolwiek działań, aby nie zostać złapanym.

Oto kilka przykładów obejść konkretnych ustaleń GuardDuty:

GuardDuty wykrywa żądania API AWS z popularnych narzędzi do testowania penetracyjnego i uruchamia Ustalenie PenTest. Wykrywane jest to przez nazwę agenta użytkownika, która jest przekazywana w żądaniu API. Dlatego modyfikując agenta użytkownika, można zapobiec wykryciu ataku przez GuardDuty.

Aby temu zapobiec, możesz poszukać w skrypcie session.py w pakiecie botocore i zmodyfikować agenta użytkownika, lub ustawić Burp Suite jako proxy AWS CLI i zmienić agenta użytkownika za pomocą MitM lub po prostu użyć systemu operacyjnego takiego jak Ubuntu, Mac lub Windows, co zapobiegnie uruchomieniu tego alertu.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Ekstrakcja poświadczeń EC2 z usługi metadanych i wykorzystywanie ich poza środowiskiem AWS aktywuje alert UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Z kolei wykorzystanie tych poświadczeń z instancji EC2 uruchamia alert UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. Jednak użycie poświadczeń na innej skompromitowanej instancji EC2 w tym samym koncie pozostaje niewykryte, nie generując alertu.

Dlatego użyj wyeksfiltrowanych poświadczeń z wnętrza maszyny, w której je znalazłeś, aby nie uruchomić tego alertu.

Referencje

Wsparcie HackTricks

Last updated