AWS Pentesting
Last updated
Last updated
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Zanim zaczniesz pentesting środowiska AWS, musisz znać kilka podstawowych rzeczy dotyczących działania AWS, aby pomóc Ci zrozumieć, co musisz zrobić, jak znaleźć błędne konfiguracje i jak je wykorzystać.
Koncepcje takie jak hierarchia organizacji, IAM i inne podstawowe pojęcia są wyjaśnione w:
AWS - Basic InformationNarzędzia do symulacji ataków:
Aby audytować środowisko AWS, bardzo ważne jest, aby wiedzieć: które usługi są używane, co jest eksponowane, kto ma dostęp do czego i jak są połączone wewnętrzne usługi AWS oraz usługi zewnętrzne.
Z punktu widzenia Red Team, pierwszym krokiem do kompromitacji środowiska AWS jest zdobycie jakichś poświadczeń. Oto kilka pomysłów, jak to zrobić:
Wycieki w githubie (lub podobnych) - OSINT
Inżynieria społeczna
Ponowne użycie haseł (wycieki haseł)
Luki w aplikacjach hostowanych na AWS
Server Side Request Forgery z dostępem do punktu końcowego metadanych
Odczyt lokalnych plików
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
Naruszone strony trzecie
Wewnętrzny pracownik
Cognito poświadczenia
Lub przez kompromitację nieautoryzowanej usługi:
AWS - Unauthenticated Enum & AccessLub jeśli robisz przegląd, możesz po prostu poprosić o poświadczenia z tymi rolami:
AWS - Permissions for a PentestPo zdobyciu poświadczeń musisz wiedzieć do kogo należą te poświadczenia i do czego mają dostęp, więc musisz przeprowadzić podstawową enumerację:
Jeśli znalazłeś SSRF na maszynie w AWS, sprawdź tę stronę po triki:
Jedną z pierwszych rzeczy, które musisz wiedzieć, jest to, kim jesteś (w jakim koncie jesteś i inne informacje o środowisku AWS):
Zauważ, że firmy mogą używać canary tokens, aby zidentyfikować, kiedy tokeny są kradzione i używane. Zaleca się sprawdzenie, czy token jest tokenem canary, zanim go użyjesz. Aby uzyskać więcej informacji, sprawdź tę stronę.
Jeśli masz wystarczające uprawnienia, sprawdzenie uprawnień każdej jednostki w koncie AWS pomoże Ci zrozumieć, co Ty i inne tożsamości możecie robić oraz jak eskalować uprawnienia.
Jeśli nie masz wystarczających uprawnień do enumeracji IAM, możesz ukraść je za pomocą brute force, aby je ustalić. Sprawdź jak przeprowadzić enumerację i brute-forcing w:
AWS - IAM, Identity Center & SSO EnumTeraz, gdy masz pewne informacje o swoich poświadczeniach (a jeśli jesteś w red team, miejmy nadzieję, że nie zostałeś wykryty). Czas ustalić, które usługi są używane w środowisku. W następnej sekcji możesz sprawdzić kilka sposobów na enumerację niektórych powszechnych usług.
AWS ma zdumiewającą ilość usług, na następnej stronie znajdziesz podstawowe informacje, enumerację cheatsheets**,** jak unikać wykrycia, uzyskać utrzymanie i inne sztuczki post-eksploatacyjne dotyczące niektórych z nich:
AWS - ServicesZauważ, że nie musisz wykonywać całej pracy ręcznie, poniżej w tym poście możesz znaleźć sekcję o automatycznych narzędziach.
Co więcej, na tym etapie możesz odkryć więcej usług wystawionych dla nieautoryzowanych użytkowników, które możesz wykorzystać:
AWS - Unauthenticated Enum & AccessJeśli możesz sprawdzić przynajmniej swoje własne uprawnienia do różnych zasobów, możesz sprawdzić, czy możesz uzyskać dalsze uprawnienia. Powinieneś skupić się przynajmniej na uprawnieniach wskazanych w:
AWS - Privilege EscalationPodczas enumeracji usług AWS mogłeś znaleźć niektóre z nich wystawiające elementy do Internetu (porty VM/Kontenerów, bazy danych lub usługi kolejkowe, migawki lub kosze...). Jako pentester/red teamer zawsze powinieneś sprawdzić, czy możesz znaleźć wrażliwe informacje / luki w nich, ponieważ mogą one zapewnić Ci dalszy dostęp do konta AWS.
W tej książce powinieneś znaleźć informacje o tym, jak znaleźć wystawione usługi AWS i jak je sprawdzić. Jeśli chodzi o to, jak znaleźć luki w wystawionych usługach sieciowych, zalecałbym wyszukiwanie konkretnej usługi w:
Gdy konto zarządzające tworzy nowe konta w organizacji, nowa rola jest tworzona w nowym koncie, domyślnie nazwana OrganizationAccountAccessRole
i nadająca politykę AdministratorAccess dla konta zarządzającego, aby uzyskać dostęp do nowego konta.
Aby uzyskać dostęp jako administrator do konta podrzędnego, musisz:
Skompromitować konto zarządzające i znaleźć ID konta podrzędnego oraz nazwy ról (domyślnie OrganizationAccountAccessRole), które pozwalają kontu zarządzającemu uzyskać dostęp jako administrator.
Aby znaleźć konta podrzędne, przejdź do sekcji organizacji w konsoli AWS lub uruchom aws organizations list-accounts
Nie możesz znaleźć nazw ról bezpośrednio, więc sprawdź wszystkie niestandardowe polityki IAM i poszukaj jakichkolwiek, które pozwalają na sts:AssumeRole
nad wcześniej odkrytymi kontami podrzędnymi.
Skompromituj podmiot w koncie zarządzającym z uprawnieniem sts:AssumeRole
nad rolą w kontach podrzędnych (nawet jeśli konto pozwala każdemu z konta zarządzającego na podszywanie się, ponieważ jest to konto zewnętrzne, konkretne uprawnienia sts:AssumeRole
są konieczne).
aws-recon: Narzędzie do zbierania inwentarza skoncentrowane na bezpieczeństwie AWS, napisane w Ruby.
cloudlist: Cloudlist to narzędzie wielochmurowe do pozyskiwania zasobów (nazwy hostów, adresy IP) od dostawców chmury.
cloudmapper: CloudMapper pomaga w analizie twoich środowisk Amazon Web Services (AWS). Teraz zawiera znacznie więcej funkcji, w tym audyt problemów z bezpieczeństwem.
cartography: Cartography to narzędzie w Pythonie, które konsoliduje zasoby infrastruktury oraz relacje między nimi w intuicyjnym widoku graficznym zasilanym przez bazę danych Neo4j.
starbase: Starbase zbiera zasoby i relacje z usług i systemów, w tym infrastruktury chmurowej, aplikacji SaaS, kontroli bezpieczeństwa i innych, w intuicyjny widok graficzny oparty na bazie danych Neo4j.
aws-inventory: (Używa python2) To narzędzie, które próbuje odkryć wszystkie zasoby AWS utworzone w koncie.
aws_public_ips: To narzędzie do pobierania wszystkich publicznych adresów IP (zarówno IPv4/IPv6) związanych z kontem AWS.
SkyArk: Odkryj najbardziej uprzywilejowanych użytkowników w skanowanym środowisku AWS, w tym AWS Shadow Admins. Używa powershell. Możesz znaleźć definicję uprzywilejowanych polityk w funkcji Check-PrivilegedPolicy
w https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.
pacu: Pacu to otwartoźródłowe ramy eksploatacji AWS, zaprojektowane do testowania bezpieczeństwa ofensywnego w środowiskach chmurowych. Może enumerować, znajdować błędy konfiguracyjne i eksploatować je. Możesz znaleźć definicję uprzywilejowanych uprawnień w https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 wewnątrz słownika user_escalation_methods
.
Zauważ, że pacu sprawdza tylko twoje własne ścieżki privesc (nie w skali całego konta).
PMapper: Principal Mapper (PMapper) to skrypt i biblioteka do identyfikacji ryzyk w konfiguracji AWS Identity and Access Management (IAM) dla konta AWS lub organizacji AWS. Modeluje różne użytkowników IAM i role w koncie jako graf skierowany, co umożliwia sprawdzanie eskalacji uprawnień oraz alternatywnych ścieżek, które atakujący mógłby wykorzystać, aby uzyskać dostęp do zasobu lub akcji w AWS. Możesz sprawdzić uprawnienia używane do znajdowania ścieżek privesc w plikach kończących się na _edges.py
w https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining to narzędzie oceny bezpieczeństwa AWS IAM, które identyfikuje naruszenia zasady najmniejszych uprawnień i generuje raport HTML z priorytetem ryzyka. Pokaże Ci potencjalnie nadmiernie uprawnionego klienta, polityki inline i aws polityki oraz które podmioty mają do nich dostęp. (Sprawdza nie tylko privesc, ale także inne interesujące uprawnienia, zaleca się użycie).
cloudjack: CloudJack ocenia konta AWS pod kątem wrażliwości na przejęcie subdomen w wyniku rozdzielonych konfiguracji Route53 i CloudFront.
ccat: Lista repozytoriów ECR -> Pobierz repozytorium ECR -> Wprowadź backdoora -> Wypchnij obraz z backdoorem
Dufflebag: Dufflebag to narzędzie, które przeszukuje publiczne migawki Elastic Block Storage (EBS) w poszukiwaniu sekretów, które mogły zostać przypadkowo pozostawione.
cloudsploit: CloudSploit od Aqua to projekt open-source zaprojektowany do wykrywania ryzyk bezpieczeństwa w kontach infrastruktury chmurowej, w tym: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) oraz GitHub (nie szuka ShadowAdmins).
Prowler: Prowler to narzędzie zabezpieczeń typu Open Source do przeprowadzania ocen najlepszych praktyk zabezpieczeń AWS, audytów, reakcji na incydenty, ciągłego monitorowania, wzmacniania i gotowości do analizy kryminalistycznej.
CloudFox: CloudFox pomaga uzyskać świadomość sytuacyjną w nieznanych środowiskach chmurowych. Jest to narzędzie wiersza poleceń typu open source stworzone, aby pomóc testerom penetracyjnym i innym profesjonalistom w dziedzinie bezpieczeństwa ofensywnego znaleźć wykorzystywalne ścieżki ataku w infrastrukturze chmurowej.
ScoutSuite: Scout Suite to narzędzie do audytu bezpieczeństwa w chmurze o otwartym kodzie źródłowym, które umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych.
cs-suite: Cloud Security Suite (używa python2.7 i wygląda na nieutrzymywaną)
Zeus: Zeus to potężne narzędzie do najlepszych praktyk twardnienia AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (wygląda na nieutrzymywane). Sprawdza tylko domyślnie skonfigurowane poświadczenia w systemie.
cloud-custodian: Cloud Custodian to silnik reguł do zarządzania publicznymi kontami i zasobami w chmurze. Umożliwia użytkownikom definiowanie polityk w celu umożliwienia dobrze zarządzanej infrastruktury chmurowej, która jest zarówno bezpieczna, jak i zoptymalizowana kosztowo. Konsoliduje wiele ad-hoc skryptów, które organizacje mają, w lekkie i elastyczne narzędzie, z jednolitymi metrykami i raportowaniem.
pacbot: Policy as Code Bot (PacBot) to platforma do ciągłego monitorowania zgodności, raportowania zgodności i automatyzacji bezpieczeństwa dla chmury. W PacBot polityki bezpieczeństwa i zgodności są wdrażane jako kod. Wszystkie zasoby odkryte przez PacBot są oceniane pod kątem zgodności z tymi politykami. Ramy auto-fix PacBot zapewniają możliwość automatycznej reakcji na naruszenia polityki poprzez podejmowanie zdefiniowanych działań.
streamalert: StreamAlert to bezserwerowa, w czasie rzeczywistym ramka analizy danych, która umożliwia przyjmowanie, analizowanie i powiadamianie o danych z dowolnego środowiska, używając źródeł danych i logiki powiadamiania, które definiujesz. Zespoły bezpieczeństwa komputerowego używają StreamAlert do skanowania terabajtów danych logów każdego dnia w celu wykrywania incydentów i reakcji.
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)