AWS Pentesting
Grundlegende Informationen
Bevor Sie mit dem Pentesting einer AWS-Umgebung beginnen, gibt es einige Grundlagen, die Sie kennen müssen, wie AWS funktioniert, um Ihnen zu helfen zu verstehen, was Sie tun müssen, wie Sie Misskonfigurationen finden und wie Sie sie ausnutzen können.
Konzepte wie Organisationshierarchie, IAM und andere grundlegende Konzepte werden erklärt in:
pageAWS - Basic InformationLabs zum Lernen
Tools zur Simulation von Angriffen:
AWS Pentester/Red-Team-Methodik
Um eine AWS-Umgebung zu überprüfen, ist es sehr wichtig zu wissen: welche Dienste verwendet werden, was offengelegt wird, wer auf was Zugriff hat und wie interne AWS-Dienste und externe Dienste verbunden sind.
Aus der Sicht eines Red Teams ist der erste Schritt zur Kompromittierung einer AWS-Umgebung, einige Anmeldeinformationen zu erhalten. Hier sind einige Ideen, wie Sie das erreichen können:
Lecks in GitHub (oder ähnlich) - OSINT
Social Engineering
Passwort-Wiederverwendung (Passwortlecks)
Schwachstellen in AWS-gehosteten Anwendungen
Serverseitige Anfragenfälschung (SSRF) mit Zugriff auf Metadaten-Endpunkt
Lokales Dateilesen
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3rd-Parties gehackt
Interne Mitarbeiter
Cognito Anmeldeinformationen
Oder durch Kompromittierung eines unauthentifizierten Dienstes, der freigegeben ist:
pageAWS - Unauthenticated Enum & AccessOder wenn Sie eine Überprüfung durchführen, könnten Sie einfach um Anmeldeinformationen mit diesen Rollen bitten:
pageAWS - Permissions for a PentestNachdem Sie es geschafft haben, Anmeldeinformationen zu erhalten, müssen Sie wissen, wem diese Anmeldeinformationen gehören, und auf was sie Zugriff haben, daher müssen Sie eine grundlegende Aufzählung durchführen:
Grundlegende Aufzählung
SSRF
Wenn Sie einen SSRF in einer Maschine innerhalb von AWS gefunden haben, überprüfen Sie diese Seite für Tricks:
Whoami
Eine der ersten Dinge, die Sie wissen müssen, ist, wer Sie sind (in welchem Konto Sie sich befinden und andere Informationen über die AWS-Umgebung):
Beachten Sie, dass Unternehmen möglicherweise Kanarienvogel-Token verwenden, um festzustellen, wann Token gestohlen und verwendet werden. Es wird empfohlen zu überprüfen, ob ein Token ein Kanarienvogel-Token ist, bevor es verwendet wird. Für weitere Informationen überprüfen Sie diese Seite.
Org Enumeration
pageAWS - Organizations EnumIAM Enumeration
Wenn Sie ausreichende Berechtigungen haben, überprüfen Sie die Berechtigungen jeder Entität im AWS-Konto, um zu verstehen, was Sie und andere Identitäten tun können und wie Sie Berechtigungen eskalieren können.
Wenn Sie nicht genügend Berechtigungen haben, um IAM aufzulisten, können Sie Brute-Force-Angriffe durchführen, um sie herauszufinden. Überprüfen Sie wie die Auflistung und das Brute-Forcing durchgeführt werden in:
pageAWS - IAM, Identity Center & SSO EnumNun, da Sie einige Informationen zu Ihren Anmeldeinformationen haben (und wenn Sie ein Red-Team sind, hoffentlich nicht entdeckt wurden). Es ist an der Zeit herauszufinden, welche Dienste in der Umgebung verwendet werden. In dem folgenden Abschnitt können Sie einige Möglichkeiten finden, um einige gängige Dienste aufzulisten.
Dienste Auflisten, Post-Exploitation & Persistenz
AWS verfügt über eine erstaunliche Anzahl von Diensten, auf der folgenden Seite finden Sie Grundinformationen, Auflistungs-Cheatsheets, wie man Entdeckung vermeidet, Persistenz erlangt und andere Post-Exploitation-Tricks zu einigen von ihnen:
pageAWS - ServicesBeachten Sie, dass Sie nicht alle Arbeiten manuell durchführen müssen, weiter unten in diesem Beitrag finden Sie einen Abschnitt über automatische Tools.
Darüber hinaus haben Sie möglicherweise in diesem Stadium mehr Dienste entdeckt, die unauthentifizierten Benutzern ausgesetzt sind, die Sie möglicherweise ausnutzen können:
pageAWS - Unauthenticated Enum & AccessBerechtigungserweiterung
Wenn Sie zumindest Ihre eigenen Berechtigungen über verschiedene Ressourcen überprüfen können, könnten Sie überprüfen, ob Sie weitere Berechtigungen erhalten können. Konzentrieren Sie sich mindestens auf die Berechtigungen, die in folgendem Abschnitt angegeben sind:
pageAWS - Privilege EscalationÖffentlich zugängliche Dienste
Beim Auflisten von AWS-Diensten haben Sie möglicherweise festgestellt, dass einige von ihnen Elemente ins Internet exponieren (VM/Container-Ports, Datenbanken oder Warteschlangendienste, Snapshots oder Buckets...). Als Pentester/Red Teamer sollten Sie immer überprüfen, ob Sie sensible Informationen/Schwachstellen darauf finden können, da sie Ihnen möglicherweise weiteren Zugriff auf das AWS-Konto ermöglichen.
In diesem Buch sollten Sie Informationen darüber finden, wie Sie exponierte AWS-Dienste finden und überprüfen können. Wie Sie Schwachstellen in exponierten Netzwerkdiensten finden, empfehle ich Ihnen, nach dem spezifischen Dienst unter folgendem Link zu suchen:
Organisation kompromittieren
Vom Root-/Management-Konto
Wenn das Managementkonto neue Konten in der Organisation erstellt, wird im neuen Konto standardmäßig eine neue Rolle erstellt, die standardmäßig OrganizationAccountAccessRole
heißt und dem Managementkonto die AdministratorAccess-Richtlinie gibt, um auf das neue Konto zuzugreifen.
Um also als Administrator auf ein Unterkonto zuzugreifen, müssen Sie:
Das Management-Konto kompromittieren und die ID der Unterkonten und die Namen der Rolle (standardmäßig OrganizationAccountAccessRole) finden, die es dem Managementkonto ermöglichen, als Administrator zuzugreifen.
Um die Unterkonten zu finden, gehen Sie zum Bereich Organisationen in der AWS-Konsole oder führen Sie
aws organizations list-accounts
aus.Sie können den Namen der Rollen nicht direkt finden, überprüfen Sie also alle benutzerdefinierten IAM-Richtlinien und suchen Sie nach einer, die das
sts:AssumeRole
über die zuvor entdeckten Unterkonten erlaubt.Kompromittieren Sie ein Hauptelement im Managementkonto mit der Berechtigung
sts:AssumeRole
über die Rolle in den Unterkonten (auch wenn das Konto jedem aus dem Managementkonto erlaubt, sich zu verstellen, sind spezifischests:AssumeRole
-Berechtigungen erforderlich).
Automatisierte Tools
Recon
aws-recon: Ein mehrfädiges, auf Sicherheit ausgerichtetes Inventar-Sammelwerkzeug für AWS, geschrieben in Ruby.
cloudlist: Cloudlist ist ein Multi-Cloud-Tool zum Abrufen von Assets (Hostnamen, IP-Adressen) von Cloud-Anbietern.
cloudmapper: CloudMapper hilft Ihnen dabei, Ihre Amazon Web Services (AWS)-Umgebungen zu analysieren. Es enthält jetzt viel mehr Funktionalitäten, einschließlich der Überprüfung auf Sicherheitsprobleme.
cartography: Cartography ist ein Python-Tool, das Infrastrukturressourcen und deren Beziehungen in einer intuitiven Grafikansicht zusammenfasst, die von einer Neo4j-Datenbank unterstützt wird.
starbase: Starbase sammelt Vermögenswerte und Beziehungen von Diensten und Systemen, einschließlich Cloud-Infrastruktur, SaaS-Anwendungen, Sicherheitskontrollen und mehr, in einer intuitiven Graphenansicht, unterstützt durch die Neo4j-Datenbank.
aws-inventory: (Verwendet python2) Dies ist ein Tool, das versucht, alle AWS-Ressourcen in einem Konto zu entdecken.
aws_public_ips: Es handelt sich um ein Tool zum Abrufen aller öffentlichen IP-Adressen (IPv4/IPv6) eines AWS-Kontos.
Privesc & Ausnutzung
SkyArk: Entdecken Sie die privilegiertesten Benutzer in der gescannten AWS-Umgebung, einschließlich der AWS-Shadow-Administratoren. Es verwendet Powershell. Sie können die Definition privilegierter Richtlinien in der Funktion
Check-PrivilegedPolicy
unter https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1 finden.pacu: Pacu ist ein Open-Source AWS-Ausnutzungsframework, das für Sicherheitstests gegen Cloud-Umgebungen entwickelt wurde. Es kann auflisten, Fehlkonfigurationen finden und ausnutzen. Sie können die Definition privilegierter Berechtigungen unter https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 im
user_escalation_methods
-Dictionary finden.Beachten Sie, dass pacu nur Ihre eigenen Privesc-Pfade überprüft (nicht kontoweit).
PMapper: Principal Mapper (PMapper) ist ein Skript und eine Bibliothek zur Identifizierung von Risiken in der Konfiguration der AWS Identity and Access Management (IAM) für ein AWS-Konto oder eine AWS-Organisation. Es modelliert die verschiedenen IAM-Benutzer und Rollen in einem Konto als gerichteten Graphen, der Überprüfungen auf Privilegieneskalation und auf alternative Pfade ermöglicht, die ein Angreifer nehmen könnte, um Zugriff auf eine Ressource oder Aktion in AWS zu erlangen. Sie können die **Berechtigungen überprüfen, die verwendet werden, um Privesc-Pfade zu finden, in den Dateinamen, die mit
_edges.py
enden, unter https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining ist ein AWS IAM Security Assessment-Tool, das Verstöße gegen das Prinzip des geringsten Privilegs identifiziert und einen risikopriorisierten HTML-Bericht generiert. Es zeigt potenziell überprivilegierte Kunden, inline und aws Richtlinien und welche Prinzipale Zugriff auf sie haben. (Es überprüft nicht nur auf Privilege Escalation, sondern auch auf andere Arten von interessanten Berechtigungen, empfohlen zur Verwendung).
cloudjack: CloudJack bewertet AWS-Konten auf Subdomain-Hijacking-Schwachstellen als Folge von entkoppelten Route53- und CloudFront-Konfigurationen.
ccat: Liste ECR-Repos -> ECR-Repo abrufen -> Backdoor einfügen -> Zurückgegebenes Bild pushen
Dufflebag: Dufflebag ist ein Tool, das öffentliche Elastic Block Storage (EBS)-Snapshots nach versehentlich hinterlassenen Geheimnissen durchsucht.
Audit
cloudsploit: CloudSploit von Aqua ist ein Open-Source-Projekt, das die Erkennung von Sicherheitsrisiken in Cloud-Infrastrukturkonten ermöglicht, einschließlich: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) und GitHub (Es sucht nicht nach ShadowAdmins).
Prowler: Prowler ist ein Open-Source-Sicherheitstool zur Durchführung von Bewertungen, Audits, Incident Response, kontinuierlicher Überwachung, Härtung und forensischer Bereitschaft gemäß den besten Sicherheitspraktiken für AWS.
CloudFox: CloudFox hilft Ihnen, sich in unbekannten Cloud-Umgebungen zurechtzufinden. Es handelt sich um ein Open-Source-Befehlszeilentool, das entwickelt wurde, um Penetrationstestern und anderen Sicherheitsexperten im Offensivbereich zu helfen, ausnutzbare Angriffspfade in der Cloud-Infrastruktur zu finden.
ScoutSuite: Scout Suite ist ein Open-Source-Multi-Cloud-Sicherheitsprüfungstool, das die Sicherheitsbewertung der Cloud-Umgebungen ermöglicht.
cs-suite: Cloud Security Suite (verwendet python2.7 und scheint nicht gewartet zu werden)
Zeus: Zeus ist ein leistungsstolles Tool für AWS EC2 / S3 / CloudTrail / CloudWatch / KMS Best Practices zur Härtung (scheint nicht gewartet zu werden). Es überprüft nur standardmäßig konfigurierte Anmeldeinformationen im System.
Kontinuierliche Überprüfung
cloud-custodian: Cloud Custodian ist eine Regel-Engine zur Verwaltung von öffentlichen Cloud-Konten und Ressourcen. Es ermöglicht Benutzern, Richtlinien zu definieren, um eine gut verwaltete Cloud-Infrastruktur zu ermöglichen, die sowohl sicher als auch kostengünstig ist. Es konsolidiert viele der Ad-hoc-Skripte, die Organisationen haben, in ein leichtgewichtiges und flexibles Tool mit einheitlichen Metriken und Berichterstattung.
pacbot: Policy as Code Bot (PacBot) ist eine Plattform für kontinuierliche Compliance-Überwachung, Compliance-Berichterstattung und Sicherheitsautomatisierung für die Cloud. In PacBot werden Sicherheits- und Compliance-Richtlinien als Code implementiert. Alle von PacBot entdeckten Ressourcen werden gegen diese Richtlinien bewertet, um die Richtlinienkonformität zu bewerten. Das PacBot Auto-Fix-Framework bietet die Möglichkeit, automatisch auf Richtlinienverletzungen zu reagieren, indem vordefinierte Aktionen ausgeführt werden.
streamalert: StreamAlert ist ein serverloses, Echtzeit-Datenanalyserahmenwerk, das es Ihnen ermöglicht, Daten aus jeder Umgebung zu erfassen, zu analysieren und Alarme auszulösen, unter Verwendung von Datenquellen und Alarmlogik, die Sie definieren. Computer-Sicherheitsteams verwenden StreamAlert, um täglich Terabyte von Protokolldaten auf Vorfälle zu überprüfen und zu reagieren.
DEBUG: Erfassen von AWS CLI-Anfragen
Referenzen
Last updated