AWS - GuardDuty Enum
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
GuardDuty
Zgodnie z dokumentacją: 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 logi zdarzeń AWS CloudTrail, logi przepływu Amazon Virtual Private Cloud (VPC), logi audytowe i systemowe Amazon Elastic Kubernetes Service (EKS) oraz logi 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.
Warning
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ń
- Reconnaissance: Aktywność sugerująca rekonesans przez atakującego, taka 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 portów z zablokowanego adresu IP.
- Instance compromise: 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.
- Account compromise: Typowe wzorce wskazujące na kompromitację konta obejmują wywołania API z nietypowej geolokalizacji lub proxy anonimizującego, 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.
- Bucket compromise: 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 przez użytkownika bez wcześniejszej historii dostępu do koszyka lub wywołane 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
- Działanie
- 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 na 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 ustaleń:
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>
Caution
Usunięcie tego miejsca publikacji nie wpłynie na generowanie ani widoczność wyników w konsoli GuardDuty. GuardDuty będzie nadal analizować zdarzenia w Twoim środowisku AWS, identyfikować podejrzane lub nieoczekiwane zachowanie i generować wyniki.
Przykłady obejścia konkretnych wyników
Zauważ, że istnieje dziesiątki wyników 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 wyników GuardDuty:
PenTest:IAMUser/KaliLinux
GuardDuty wykrywa żądania API AWS z popularnych narzędzi do testowania penetracyjnego i uruchamia Wynik PenTest.
Wykrywa to na podstawie nazwa 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 podnosząc żadnego alertu.
Tip
Dlatego użyj wyeksportowanych poświadczeń z wnętrza maszyny, w której je znalazłeś, aby nie uruchomić tego alertu.
References
- https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html
- https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html
- https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html
- https://docs.aws.amazon.com/cli/latest/reference/guardduty/delete-publishing-destination.html
- https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-ec2.html#unauthorizedaccess-ec2-torclient
- https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws
- https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws
- https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

