AWS Pentesting
Podstawowe Informacje
Zanim zaczniesz pentesting środowiska AWS, musisz znać kilka podstawowych rzeczy o tym, jak działa AWS, aby 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 InformationLaboratoria do nauki
Narzędzia do symulacji ataków:
Metodologia AWS Pentester/Red Team
Aby przeprowadzić audyt środowiska 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 uzyskanie poświadczeń. Oto kilka pomysłów, jak to zrobić:
Leaks w github (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 endpointu metadata
Lokalne odczytywanie plików
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
Naruszenia stron trzecich
Wewnętrzny pracownik
Cognito poświadczenia
Lub przez kompromitację niezautoryzowanej usługi eksponowanej:
AWS - Unauthenticated Enum & AccessLub jeśli przeprowadzasz przegląd, możesz po prostu poprosić o poświadczenia z tymi rolami:
AWS - Permissions for a PentestPo uzyskaniu poświadczeń, musisz wiedzieć do kogo należą te poświadczenia i do czego mają dostęp, więc musisz przeprowadzić podstawową enumerację:
Podstawowa Enumeracja
SSRF
Jeśli znalazłeś SSRF na maszynie w AWS, sprawdź tę stronę, aby uzyskać triki:
Whoami
Jedną z pierwszych rzeczy, które musisz wiedzieć, jest to, kim jesteś (w jakim koncie się znajdujesz i inne informacje o środowisku AWS):
Zwróć uwagę, że firmy mogą używać canary tokens do identyfikacji, kiedy tokeny są kradzione i używane. Zaleca się sprawdzenie, czy token jest canary tokenem, zanim go użyjesz. Więcej informacji znajdziesz na tej stronie.
Org Enumeration
AWS - Organizations EnumIAM Enumeration
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 mogą robić i jak eskalować uprawnienia.
Jeśli nie masz wystarczających uprawnień do enumeracji IAM, możesz ukraść je bruteforce aby je odkryć. Sprawdź jak przeprowadzić enumerację i brute-forcing w:
AWS - IAM, Identity Center & SSO EnumTeraz, gdy masz pewne informacje o swoich poświadczeniach (i jeśli jesteś red teamem, miejmy nadzieję, że nie zostałeś wykryty). Czas dowiedzieć się, które usługi są używane w środowisku. W poniższej sekcji możesz sprawdzić kilka sposobów na enumerację niektórych popularnych usług.
Services Enumeration, Post-Exploitation & Persistence
AWS ma zdumiewającą ilość usług, na poniższej stronie znajdziesz podstawowe informacje, enumerację cheatsheets**,** jak uniknąć wykrycia, uzyskać trwałość i inne post-exploitation triki dotyczące niektórych z nich:
AWS - ServicesZwróć uwagę, że nie musisz wykonywać całej pracy ręcznie, poniżej w tym poście znajdziesz sekcję o automatycznych narzędziach.
Ponadto, na tym etapie możesz odkryć więcej usług dostępnych dla nieautoryzowanych użytkowników, które możesz być w stanie wykorzystać:
AWS - Unauthenticated Enum & AccessPrivilege Escalation
Jeśli możesz sprawdzić przynajmniej swoje własne uprawnienia do różnych zasobów, możesz sprawdzić, czy jesteś w stanie uzyskać dalsze uprawnienia. Powinieneś skupić się przynajmniej na uprawnieniach wskazanych w:
AWS - Privilege EscalationPublicly Exposed Services
Podczas enumeracji usług AWS możesz znaleźć niektóre z nich udostępniające elementy do Internetu (porty VM/Kontenerów, bazy danych lub usługi kolejkowania, snapshoty lub bucket...). 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 znajdziesz informacje o tym, jak znaleźć udostępnione usługi AWS i jak je sprawdzić. Aby znaleźć luki w udostępnionych usługach sieciowych, polecam wyszukać konkretną usługę w:
Compromising the Organization
From the root/management account
Kiedy konto zarządzające tworzy nowe konta w organizacji, tworzona jest nowa rola w nowym koncie, domyślnie nazwana OrganizationAccountAccessRole
i nadająca politykę AdministratorAccess kontu zarządzającemu, aby uzyskać dostęp do nowego konta.
Aby uzyskać dostęp jako administrator do konta podrzędnego, potrzebujesz:
Przejąć konto zarządzające i znaleźć ID kont podrzędnych oraz nazwy ról (domyślnie OrganizationAccountAccessRole), które pozwalają kontu zarządzającemu na 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 bezpośrednio znaleźć nazw ról, więc sprawdź wszystkie niestandardowe polityki IAM i wyszukaj jakiekolwiek pozwalające na
sts:AssumeRole
nad wcześniej odkrytymi kontami podrzędnymi.Przejąć 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 impersonację, jako że jest to konto zewnętrzne, specyficzne uprawnieniasts:AssumeRole
są konieczne).
Automated Tools
Recon
aws-recon: Wielowątkowe narzędzie do zbierania inwentarza skoncentrowane na bezpieczeństwie AWS, napisane w Ruby.
cloudlist: Cloudlist to narzędzie multi-cloud do pozyskiwania zasobów (nazwy hostów, adresy IP) od dostawców chmury.
cloudmapper: CloudMapper pomaga analizować środowiska Amazon Web Services (AWS). Obecnie zawiera znacznie więcej funkcji, w tym audytowanie pod kątem problemów z bezpieczeństwem.
cartography: Cartography to narzędzie Python, które konsoliduje zasoby infrastruktury i relacje między nimi w intuicyjnym widoku grafu zasilanym przez bazę danych Neo4j.
starbase: Starbase zbiera zasoby i relacje z usług i systemów, w tym infrastruktury cloud, aplikacji SaaS, kontroli bezpieczeństwa i innych, w intuicyjnym widoku grafu wspieranym przez bazę danych Neo4j.
aws-inventory: (Używa python2) Jest to narzędzie, które próbuje odkryć wszystkie zasoby AWS utworzone na koncie.
aws_public_ips: Jest to narzędzie do pobierania wszystkich publicznych adresów IP (zarówno IPv4/IPv6) powią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 open-source AWS exploitation framework, zaprojektowany do ofensywnego testowania bezpieczeństwa w środowiskach cloud. Może enumerować, znajdować błędne konfiguracje 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 w słowniku
user_escalation_methods
.Zauważ, że pacu sprawdza tylko twoje własne ścieżki privescs (nie na całym koncie).
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óżnych IAM Users i Roles w koncie jako graf skierowany, co umożliwia sprawdzenie 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 znalezienia ś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 do oceny bezpieczeństwa AWS IAM, które identyfikuje naruszenia zasady najmniejszych uprawnień i generuje raport HTML z priorytetami ryzyka. Pokaże potencjalnie nadmiernie uprzywilejowanych klientów, wbudowane i aws policies oraz które principals mają do nich dostęp. (Nie tylko sprawdza privesc, ale także inne interesujące uprawnienia, zalecane do użycia).
cloudjack: CloudJack ocenia konta AWS pod kątem podatności na przejęcie subdomen w wyniku rozdzielonych konfiguracji Route53 i CloudFront.
ccat: List ECR repos -> Pull ECR repo -> Backdoor it -> Push backdoored image
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.
Audit
cloudsploit: CloudSploit by Aqua to projekt open-source zaprojektowany do wykrywania ryzyk związanych z bezpieczeństwem w kontach infrastruktury chmurowej, w tym: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) i GitHub (nie szuka ShadowAdmins).
Prowler: Prowler to narzędzie Open Source do przeprowadzania ocen najlepszych praktyk bezpieczeństwa AWS, audytów, reagowania na incydenty, ciągłego monitorowania, utwardzania i gotowości do analizy kryminalistycznej.
CloudFox: CloudFox pomaga uzyskać świadomość sytuacyjną w nieznanych środowiskach chmurowych. Jest to narzędzie wiersza poleceń open source stworzone, aby pomóc testerom penetracyjnym i innym specjalistom ds. bezpieczeństwa ofensywnego znaleźć podatne ścieżki ataku w infrastrukturze chmurowej.
ScoutSuite: Scout Suite to open source'owe narzędzie do audytu bezpieczeństwa multi-cloud, które umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych.
cs-suite: Cloud Security Suite (używa python2.7 i wygląda na nieutrzymywane)
Zeus: Zeus to potężne narzędzie do AWS EC2 / S3 / CloudTrail / CloudWatch / KMS najlepszych praktyk utwardzania (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 kontami i zasobami w publicznej chmurze. Pozwala użytkownikom definiować polityki umożliwiające dobrze zarządzaną infrastrukturę chmurową, która jest zarówno bezpieczna, jak i zoptymalizowana kosztowo. Konsoliduje wiele ad-hoc skryptów organizacji w lekkie i elastyczne narzędzie, z ujednoliconymi 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 w chmurze. W PacBot polityki bezpieczeństwa i zgodności są implementowane jako kod. Wszystkie zasoby odkryte przez PacBot są oceniane pod kątem zgodności z tymi politykami. Ramy auto-fix PacBot umożliwiają automatyczne reagowanie 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 alarmowanie na podstawie danych z dowolnego środowiska, używając zdefiniowanych źródeł danych i logiki alarmowania. Zespoły ds. bezpieczeństwa komputerowego używają StreamAlert do skanowania terabajtów danych logów każdego dnia w celu wykrywania i reagowania na incydenty.
DEBUG: Przechwytywanie żądań AWS cli
Referencje
Last updated