AWS Pentesting
Basic Information
Zanim rozpoczniesz pentesting środowiska AWS, musisz znać kilka podstawowych rzeczy dotyczących działania AWS, aby pomóc sobie 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 InformationLabs to learn
Tools to simulate attacks:
AWS Pentester/Red Team Methodology
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 poprzez 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 oraz do czego mają dostęp, więc musisz przeprowadzić podstawową enumerację:
Basic Enumeration
SSRF
Jeśli znalazłeś SSRF na maszynie w AWS, sprawdź tę stronę po triki:
Whoami
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ę.
Enumeracja organizacji
AWS - Organizations EnumEnumeracja IAM
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 zrobić 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.
Enumeracja usług, post-eksploatacja i utrzymanie
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 znajdziesz sekcję o automatycznych narzędziach.
Co więcej, na tym etapie możesz odkryć więcej usług wystawionych dla użytkowników nieautoryzowanych, które możesz wykorzystać:
AWS - Unauthenticated Enum & AccessEskalacja uprawnień
Jeś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 EscalationPublicznie wystawione usługi
Podczas 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 koszyki...). 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 szukać konkretnej usługi w:
Kompromitacja organizacji
Z konta głównego/zarządzającego
Kiedy konto zarządzające tworzy nowe konta w organizacji, w nowym koncie tworzona jest nowa rola, 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 uprawnieniasts:AssumeRole
są konieczne).
Automatyczne narzędzia
Recon
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.
Privesc & Exploiting
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 uprzywilejowanego 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.
Audyt
cloudsploit: CloudSploit od Aqua to projekt open-source zaprojektowany w celu 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. 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 zabezpieczania AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (wygląda na nieutrzymywane). Sprawdza tylko domyślnie skonfigurowane poświadczenia w systemie.
Stały Audyt
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ść automatycznego reagowania na naruszenia polityki poprzez podejmowanie zdefiniowanych działań.
streamalert: StreamAlert to bezserwerowe, w czasie rzeczywistym ramy analizy danych, które umożliwiają 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 dzienników każdego dnia w celu wykrywania incydentów i reakcji.
DEBUG: Przechwytywanie żądań AWS cli
References
Last updated