AWS - EC2, EBS, SSM & VPC Post Exploitation
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
EC2 & VPC
Aby uzyskać więcej informacji, sprawdź:
AWS - EC2, EBS, ELB, SSM, VPC & VPN EnumZłośliwe Lustro VPC - ec2:DescribeInstances
, ec2:RunInstances
, ec2:CreateSecurityGroup
, ec2:AuthorizeSecurityGroupIngress
, ec2:CreateTrafficMirrorTarget
, ec2:CreateTrafficMirrorSession
, ec2:CreateTrafficMirrorFilter
, ec2:CreateTrafficMirrorFilterRule
ec2:DescribeInstances
, ec2:RunInstances
, ec2:CreateSecurityGroup
, ec2:AuthorizeSecurityGroupIngress
, ec2:CreateTrafficMirrorTarget
, ec2:CreateTrafficMirrorSession
, ec2:CreateTrafficMirrorFilter
, ec2:CreateTrafficMirrorFilterRule
Lustrowanie ruchu VPC duplikuje ruch przychodzący i wychodzący dla instancji EC2 w obrębie VPC bez potrzeby instalowania czegokolwiek na samych instancjach. Ten zduplikowany ruch byłby zazwyczaj wysyłany do czegoś takiego jak system wykrywania intruzów w sieci (IDS) w celu analizy i monitorowania. Napastnik mógłby to wykorzystać do przechwycenia całego ruchu i uzyskania wrażliwych informacji:
Aby uzyskać więcej informacji, sprawdź tę stronę:
AWS - Malicious VPC MirrorSkopiuj działającą instancję
Instancje zazwyczaj zawierają jakiś rodzaj wrażliwych informacji. Istnieją różne sposoby, aby się do nich dostać (sprawdź sztuczki eskalacji uprawnień EC2). Jednak innym sposobem na sprawdzenie, co zawierają, jest utworzenie AMI i uruchomienie nowej instancji (nawet na swoim własnym koncie) z niej:
EBS Snapshot dump
Migawki to kopie zapasowe woluminów, które zazwyczaj zawierają wrażliwe informacje, dlatego ich sprawdzenie powinno ujawnić te informacje. Jeśli znajdziesz wolumin bez migawki, możesz: Utworzyć migawkę i wykonać następujące działania lub po prostu zamontować go w instancji w ramach konta:
AWS - EBS Snapshot DumpData Exfiltration
DNS Exfiltration
Nawet jeśli zablokujesz EC2, aby żaden ruch nie mógł się wydostać, nadal może wyciekać przez DNS.
Logi przepływu VPC nie zarejestrują tego.
Nie masz dostępu do logów DNS AWS.
Wyłącz to, ustawiając "enableDnsSupport" na false za pomocą:
aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id <vpc-id>
Exfiltration via API calls
Atakujący może wywołać punkty końcowe API konta, które kontroluje. Cloudtrail zarejestruje te wywołania, a atakujący będzie mógł zobaczyć wykradzione dane w logach Cloudtrail.
Open Security Group
Możesz uzyskać dalszy dostęp do usług sieciowych, otwierając porty w ten sposób:
Privesc do ECS
Możliwe jest uruchomienie instancji EC2 i zarejestrowanie jej do użycia w celu uruchomienia instancji ECS, a następnie kradzież danych instancji ECS.
Dla więcej informacji sprawdź to.
Usuń logi przepływu VPC
SSM Port Forwarding
Wymagane uprawnienia:
ssm:StartSession
Oprócz wykonywania poleceń, SSM umożliwia tunelowanie ruchu, co można wykorzystać do przejścia z instancji EC2, które nie mają dostępu do sieci z powodu grup zabezpieczeń lub NACL. Jednym ze scenariuszy, w których jest to przydatne, jest przejście z Bastion Host do prywatnego klastra EKS.
Aby rozpocząć sesję, musisz mieć zainstalowany SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Zainstaluj SessionManagerPlugin na swoim komputerze
Zaloguj się do Bastion EC2, używając następującego polecenia:
Uzyskaj tymczasowe poświadczenia Bastion EC2 AWS za pomocą skryptu Abusing SSRF in AWS EC2 environment
Przenieś poświadczenia na swoją maszynę do pliku
$HOME/.aws/credentials
jako profil[bastion-ec2]
Zaloguj się do EKS jako Bastion EC2:
Zaktualizuj pole
server
w pliku$HOME/.kube/config
, aby wskazywało nahttps://localhost
Utwórz tunel SSM w następujący sposób:
Ruch z narzędzia
kubectl
jest teraz przekazywany przez tunel SSM za pośrednictwem Bastion EC2 i możesz uzyskać dostęp do prywatnego klastra EKS z własnej maszyny, uruchamiając:
Zauważ, że połączenia SSL zakończą się niepowodzeniem, chyba że ustawisz flagę --insecure-skip-tls-verify
(lub jej odpowiednik w narzędziach audytowych K8s). Biorąc pod uwagę, że ruch jest tunelowany przez bezpieczny tunel AWS SSM, jesteś bezpieczny przed wszelkiego rodzaju atakami MitM.
Na koniec, ta technika nie jest specyficzna dla atakowania prywatnych klastrów EKS. Możesz ustawić dowolne domeny i porty, aby przełączyć się na dowolną inną usługę AWS lub niestandardową aplikację.
Share AMI
Wyszukiwanie wrażliwych informacji w publicznych i prywatnych AMI
https://github.com/saw-your-packet/CloudShovel: CloudShovel to narzędzie zaprojektowane do wyszukiwania wrażliwych informacji w publicznych lub prywatnych obrazach maszyn Amazon (AMI). Automatyzuje proces uruchamiania instancji z docelowych AMI, montowania ich woluminów i skanowania w poszukiwaniu potencjalnych sekretów lub wrażliwych danych.
Udostępnij migawkę EBS
EBS Ransomware PoC
Dowód koncepcji podobny do demonstracji Ransomware przedstawionej w notatkach po eksploatacji S3. KMS powinno być nazwane RMS, czyli Ransomware Management Service, biorąc pod uwagę, jak łatwo jest go używać do szyfrowania różnych usług AWS.
Najpierw z konta AWS 'atakującego' utwórz klucz zarządzany przez klienta w KMS. W tym przykładzie pozwolimy AWS zarządzać danymi klucza, ale w realistycznym scenariuszu złośliwy aktor zachowałby dane klucza poza kontrolą AWS. Zmień politykę klucza, aby zezwolić na użycie klucza przez dowolny podmiot AWS. W tej polityce klucza nazwa konta to 'AttackSim', a reguła polityki zezwalająca na pełny dostęp nazywa się 'Outside Encryption'
Polityka klucza wymaga włączenia następujących uprawnień, aby umożliwić jego użycie do szyfrowania woluminu EBS:
kms:CreateGrant
kms:Decrypt
kms:DescribeKey
kms:GenerateDataKeyWithoutPlainText
kms:ReEncrypt
Teraz, mając publicznie dostępnym kluczem do użycia. Możemy użyć konta 'ofiary', które ma uruchomione instancje EC2 z podłączonymi nieszyfrowanymi woluminami EBS. Woluminy EBS tego konta 'ofiary' są celem szyfrowania, ten atak zakłada naruszenie konta AWS o wysokich uprawnieniach.
W rezultacie w koncie pozostaną tylko szyfrowane woluminy EBS.
Warto również zauważyć, że skrypt zatrzymał instancje EC2, aby odłączyć i usunąć oryginalne woluminy EBS. Oryginalne nieszyfrowane woluminy są teraz zniknęły.
Następnie wróć do polityki klucza w koncie 'atakującego' i usuń regułę polityki 'Zewnętrzne Szyfrowanie' z polityki klucza.
Poczekaj chwilę, aż nowa polityka klucza zostanie rozpropagowana. Następnie wróć do konta 'ofiary' i spróbuj podłączyć jedną z nowo zaszyfrowanych woluminów EBS. Zauważysz, że możesz podłączyć wolumin.
Jednak gdy spróbujesz rzeczywiście uruchomić instancję EC2 z zaszyfrowanym woluminem EBS, po prostu się nie powiedzie i przejdzie z stanu 'oczekiwania' z powrotem do stanu 'zatrzymany' na zawsze, ponieważ podłączony wolumin EBS nie może być odszyfrowany za pomocą klucza, ponieważ polityka klucza już na to nie pozwala.
To jest skrypt w Pythonie używany. Przyjmuje dane uwierzytelniające AWS dla konta 'ofiary' oraz publicznie dostępny wartość ARN AWS dla klucza, który ma być użyty do szyfrowania. Skrypt utworzy zaszyfrowane kopie WSZYSTKICH dostępnych woluminów EBS podłączonych do WSZYSTKICH instancji EC2 w docelowym koncie AWS, następnie zatrzyma każdą instancję EC2, odłączy oryginalne woluminy EBS, usunie je, a na koniec usunie wszystkie migawki wykorzystane w trakcie procesu. To pozostawi tylko zaszyfrowane woluminy EBS w docelowym koncie 'ofiary'. UŻYWAJ TEGO SKRYPTU TYLKO W ŚRODOWISKU TESTOWYM, JEST DESTRUKCYJNY I USUNIE WSZYSTKIE ORYGINALNE WOLUMINY EBS. Możesz je odzyskać, używając wykorzystanego klucza KMS i przywrócić do ich pierwotnego stanu za pomocą migawek, ale chcę tylko, abyś był świadomy, że to jest PoC ransomware na końcu dnia.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Last updated