AWS Pentesting
Podstawowe informacje
Przed rozpoczęciem testowania penetracyjnego środowiska AWS istnieje kilka podstawowych rzeczy, które musisz wiedzieć na temat działania AWS, aby pomóc Ci zrozumieć, co musisz zrobić, jak znaleźć błędy konfiguracji i jak je wykorzystać.
Pojęcia takie jak hierarchia organizacyjna, IAM i inne podstawowe koncepcje są wyjaśnione w:
Laboratoria do nauki
Narzędzia do symulowania ataków:
Metodologia testera penetracyjnego/Red Team AWS
Aby przetestować środowisko AWS, bardzo ważne jest poznanie: jakie usługi są używane, co jest eksponowane, kto ma dostęp do czego, oraz jak są połączone wewnętrzne usługi AWS z usługami zewnętrznymi.
Z punktu widzenia Red Teamu, pierwszym krokiem do skompromitowania środowiska AWS jest zdobycie jakichś poświadczeń. Oto kilka pomysłów, jak to zrobić:
Wycieki w githubie (lub podobne) - OSINT
Inżynieria społeczna
Ponowne użycie hasła (wycieki haseł)
Luki w aplikacjach hostowanych w AWS
Server Side Request Forgery z dostępem do punktu końcowego metadanych
Odczyt lokalnego pliku
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
strony naruszone
Wewnętrzny pracownik
Cognito poświadczenia
Lub poprzez skompromitowanie nieskanowanego serwisu wystawionego:
Albo jeśli wykonujesz przegląd, po prostu możesz poprosić o poświadczenia z tymi rolami:
Po uzyskaniu poświadczeń musisz wiedzieć, do kogo należą te poświadczenia, i do czego mają dostęp, dlatego musisz wykonać podstawową enumerację:
Podstawowa Enumeracja
SSRF
Jeśli znalazłeś SSRF na maszynie wewnątrz AWS, sprawdź tę stronę z trikami:
Whoami
Jedną z pierwszych rzeczy, które musisz wiedzieć, jest kim jesteś (w jakim koncie jesteś i inne informacje o środowisku AWS):
Zauważ, że firmy mogą używać tokenów kanarkowych do identyfikacji, kiedy tokeny są kradzione i używane. Zaleca się sprawdzenie, czy token jest tokenem kanarkowym, zanim go użyjesz. Więcej informacji znajdziesz na tej stronie.
Wyliczenie Organizacji
Wyliczenie 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 wyliczenia IAM, możesz je ukraść metodą bruteforce, aby je ustalić. Sprawdź, jak wyliczyć i przeprowadzić atak bruteforce w:
Teraz, gdy masz pewne informacje o swoich poświadczeniach (i jeśli jesteś czerwoną drużyną, miejmy nadzieję, że nie zostałeś wykryty). Czas dowiedzieć się, które usługi są używane w środowisku. W następnym rozdziale możesz sprawdzić kilka sposobów na wyliczenie niektórych powszechnych usług.
Wyliczenie Usług, Po-Eksploatacja i Trwałość
AWS oferuje ogromną liczbę usług, na następnej stronie znajdziesz podstawowe informacje, ściągi do wyliczenia, jak uniknąć wykrycia, uzyskać trwałość oraz inne sztuczki po-eksploatacyjne dotyczące niektórych z nich:
Zauważ, że nie musisz wykonywać wszystkich prac ręcznie, poniżej w tym poście znajdziesz sekcję dotyczącą narzędzi automatycznych.
Ponadto, na tym etapie możesz odkryć więcej usług wystawionych na użytkowników bez uwierzytelnienia, możesz być w stanie je wykorzystać:
Eskalacja 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:
Usługi Publicznie Wystawione
Podczas wyliczania usług AWS możesz natknąć się na niektóre z nich, które wystawiają elementy do Internetu (porty VM/Kontenerów, bazy danych lub usługi kolejek, migawki lub kubełki...). Jako pentester/czerwona drużyna zawsze powinieneś sprawdzić, czy możesz znaleźć czułe informacje / podatności na nich, ponieważ mogą one zapewnić Ci dalszy dostęp do konta AWS.
W tej książce znajdziesz informacje na temat tego, jak znaleźć usługi AWS wystawione i jak je sprawdzić. Jeśli chodzi o znalezienie podatności w wystawionych usługach sieciowych, polecam 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 kontu zarządzającego, aby uzyskać dostęp do nowego konta.
Aby uzyskać dostęp jako administrator do konta potomnego, musisz:
Skompromitować konto zarządzające i znaleźć ID kont dzieci oraz nazwy roli (domyślnie OrganizationAccountAccessRole), pozwalającej kontu zarządzającemu uzyskać dostęp jako administrator.
Aby znaleźć konta dzieci, przejdź do sekcji organizacji w konsoli AWS lub uruchom
aws organizations list-accounts
Nie można bezpośrednio znaleźć nazwy ról, więc sprawdź wszystkie niestandardowe polityki IAM i wyszukaj te, które pozwalają na
sts:AssumeRole
w odniesieniu do wcześniej odkrytych kont dzieci.Skompromituj podmiot w koncie zarządzającym z uprawnieniami
sts:AssumeRole
w odniesieniu do roli w kontach dzieci (nawet jeśli konto zezwala na udawanie kogokolwiek z konta zarządzającego, konieczne są konkretne uprawnieniasts:AssumeRole
).
Narzędzia Automatyzujące
Recon
aws-recon: Narzędzie do zbierania inwentarza zorientowane na bezpieczeństwo AWS napisane w Ruby, obsługujące wiele wątków.
cloudlist: Cloudlist to narzędzie wielochmurowe do pozyskiwania zasobów (Nazwy hostów, Adresy IP) od Dostawców Chmury.
cloudmapper: CloudMapper pomaga analizować środowiska Amazon Web Services (AWS). Teraz zawiera znacznie więcej funkcji, w tym audytowanie problemów związanych z bezpieczeństwem.
cartography: Cartography to narzędzie napisane w języku Python, 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 wiele więcej do intuicyjnego widoku graficznego wspieranego przez bazę danych Neo4j.
aws-inventory: (Używa python2) Jest to narzędzie, które próbuje odkryć wszystkie zasoby AWS utworzone w 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: Odkrywa najbardziej uprzywilejowanych użytkowników w zeskanowanym środowisku AWS, w tym administratorów cieni AWS. Korzysta z 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 otwarte źródło framework eksploatacji AWS, zaprojektowane do testów bezpieczeństwa ofensywnego przeciwko środowiskom chmurowym. Może wyliczać, znajdować błędne konfiguracje i je wykorzystywać. 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 ścieżki privesc dla twojego własnego konta (nie na poziomie całego konta).
PMapper: Principal Mapper (PMapper) to skrypt i biblioteka służąca do identyfikowania ryzyka w konfiguracji AWS Identity and Access Management (IAM) dla konta AWS lub organizacji AWS. Modeluje różnych użytkowników IAM i role w koncie jako graf skierowany, co umożliwia sprawdzanie eskalacji uprawnień oraz alternatywnych ścieżek, jakie atakujący mógłby podjąć, aby uzyskać dostęp do zasobu lub działania w AWS. Możesz sprawdzić uprawnienia używane do znalezienia ścieżek eskalacji uprawnień w plikach zakończonych 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 potencjalnie nadmiernie uprzywilejowanych klientów, polityki inline i aws oraz które podmioty mają do nich dostęp. (Nie sprawdza tylko podniesienia uprawnień, ale także inne rodzaje interesujących uprawnień, zalecane do użycia).
cloudjack: CloudJack ocenia konta AWS pod kątem podatności na przejęcie subdomeny wynikające z rozdzielonych konfiguracji Route53 i CloudFront.
ccat: Wylistuj repozytoria ECR -> Pobierz repozytorium ECR -> Wstaw backdoor -> Wgraj zainfekowany obraz
Dufflebag: Dufflebag to narzędzie, które przeszukuje publiczne migawki Elastic Block Storage (EBS) w poszukiwaniu pozostawionych przypadkowo sekretów.
Audyt
cloudsploit: CloudSploit stworzony przez Aquę to projekt open-source zaprojektowany do wykrywania ryzyka bezpieczeństwa 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 do oceny najlepszych praktyk bezpieczeństwa w AWS, audytów, reagowania na incydenty, ciągłego monitorowania, usztywniania i gotowości do prowadzenia śledztw.
CloudFox: CloudFox pomaga zyskać świadomość sytuacyjną w nieznanych środowiskach chmurowych. Jest to narzędzie wiersza poleceń typu open source stworzone, aby pomóc testerom penetracyjnym i innym profesjonalistom ds. bezpieczeństwa ofensywnego znaleźć wykorzystywalne ścieżki ataku w infrastrukturze chmurowej.
ScoutSuite: Scout Suite to otwarte narzędzie do audytu bezpieczeństwa wielu chmur, które umożliwia ocenę postawy bezpieczeństwa środowisk chmurowych.
cs-suite: Cloud Security Suite (używa pythona 2.7 i wydaje się nieaktualizowany)
Zeus: Zeus to potężne narzędzie do wdrażania najlepszych praktyk zabezpieczeń dla AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (wydaje się nieaktualizowany). Sprawdza tylko domyślnie skonfigurowane poświadczenia w systemie.
Stała audyt
cloud-custodian: Cloud Custodian to silnik reguł do zarządzania kontami i zasobami w chmurze publicznej. Umożliwia użytkownikom definiowanie polityk umożliwiających dobrze zarządzaną infrastrukturę chmurową, która jest zarówno bezpieczna, jak i zoptymalizowana pod względem kosztów. Konsoliduje wiele skryptów ad hoc organizacji 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 zabezpieczeń w chmurze. W PacBot, polityki bezpieczeństwa i zgodności są implementowane jako kod. Wszystkie zasoby odkryte przez PacBota są oceniane pod kątem tych polityk, aby ocenić zgodność z nimi. Ramka auto-fix PacBota umożliwia automatyczne reagowanie na naruszenia polityk poprzez podejmowanie predefiniowanych działań.
streamalert: StreamAlert to bezserwerowa, analiza danych w czasie rzeczywistym, która umożliwia przyjmowanie, analizowanie i alarmowanie na danych z dowolnego środowiska, korzystając z źródeł danych i logiki alarmowania, które definiujesz. Zespoły bezpieczeństwa komputerowego używają StreamAlert do przeszukiwania terabajtów danych dziennika codziennie w poszukiwaniu wykrywania i reagowania na incydenty.
DEBUG: Przechwytywanie żądań AWS cli
Odnośniki
Last updated