CloudFox hilft Ihnen, sich in unbekannten Cloud-Umgebungen einen Überblick zu verschaffen. Es ist ein Open-Source-Befehlszeilentool, das entwickelt wurde, um Penetrationstestern und anderen Offensive-Security-Profis zu helfen, ausnutzbare Angriffspfade in der Cloud-Infrastruktur zu finden.
CloudFox ist modular (Sie können jeweils einen Befehl ausführen), aber es gibt einen Befehl aws all-checks, der die anderen AWS-Befehle für Sie mit vernünftigen Standardeinstellungen ausführt:
cloudfox aws --profile [profile-name] all-checks
White-Box-Enumeration
CloudFox wurde entwickelt, um von einem Prinzipal mit eingeschränkten Nur-Lese-Berechtigungen ausgeführt zu werden, aber sein Zweck ist es, Ihnen zu helfen, Angriffspfade zu finden, die in simulierten Kompromittierungsszenarien (auch als objektbasiertes Penetrationstest) ausgenutzt werden können.
Black-Box-Enumeration
CloudFox kann mit "gefundenen" Anmeldedaten verwendet werden, ähnlich wie Sie weirdAAL oder enumerate-iam verwenden würden. Fehlschlagende Prüfungen werden stillschweigend durchgeführt, sodass alle zurückgegebenen Daten bedeuten, dass Ihre "gefundenen" Anmeldedaten den erforderlichen Zugriff zum Abrufen haben.
Dokumentation
Die vollständige Dokumentation finden Sie in unserem Wiki.
**Option 5:** Testen eines Bugfixes ```
git clone [email protected]:BishopFox/cloudfox.git
git checkout seth-dev
go build .
./cloudfox [rest of the command options]
Voraussetzungen
AWS
AWS CLI installiert
Unterstützt AWS-Profile, AWS-Umgebungsvariablen oder Metadatenabruf (auf einer EC2-Instanz)
Um Befehle auf mehreren Profilen gleichzeitig auszuführen, können Sie den Pfad zu einer Datei mit einer Liste von Profilnamen (durch eine neue Zeile getrennt) mit dem Flag -l angeben oder alle gespeicherten Profile mit dem Flag -a übergeben.
Ein Prinzipal mit einer empfohlenen angehängten Richtlinie (unten beschrieben)
Enthält eine vollständige Liste aller Berechtigungen, die CloudFox verwendet, und sonst nichts
arn:aws:iam::aws:policy/SecurityAudit
Deckt die meisten CloudFox-Prüfungen ab, vermisst jedoch neuere Dienste oder Berechtigungen wie apprunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices
Deckt die meisten CloudFox-Prüfungen ab, vermisst jedoch neuere Dienste oder Berechtigungen wie AppRunner:*, grafana:*, lambda:GetFunctionURL, lightsail:GetContainerServices – und vermisst auch iam:SimulatePrincipalPolicy.
arn:aws:iam::aws:policy/ReadOnlyAccess
Fehlt nur AppRunner, gewährt aber auch Dinge wie "s3:Get*", was zu weitreichend sein kann.
arn:aws:iam::aws:policy/AdministratorAccess
Funktioniert einwandfrei mit CloudFox, aber wenn Sie als Penetrationstester diese Zugriffsstufe erhalten haben, sollte das wahrscheinlich ein eigener Fund sein :)
Empfohlene Berechtigungen auf geeigneten Hierarchieebenen (siehe unten)
GCP-Berechtigungen: Minimal vs. Umfassend
Minimale Berechtigungen (Einzelprojekt):
Für die grundlegende Aufzählung eines einzelnen Projekts bietet die Rolle roles/viewer Lesezugriff auf die meisten Ressourcen (einschließlich Logging, Monitoring und Compute-/Netzwerk-Anzeige).
Umfassende Berechtigungen (Organisationsweit):
Für gründliche Sicherheitsbewertungen in einer gesamten Organisation:
Bereich
Rolle
Zweck
Organisation
roles/resourcemanager.organizationViewer
Organisationsstruktur und Metadaten anzeigen
Organisation
roles/iam.securityReviewer
IAM-Richtlinien organisationsweit überprüfen
Organisation
roles/cloudasset.viewer
Cloud Asset Inventory für alle Ressourcen abfragen
Organisation
roles/cloudidentity.groupsViewer
Google-Gruppen und Mitgliedschaften auflisten
Ordner
roles/resourcemanager.folderViewer
Ordnerhierarchie und Metadaten anzeigen
Projekt
roles/viewer
Lesezugriff auf die meisten Projektressourcen (einschließlich logging.viewer, monitoring.viewer, compute.viewer)
Tooling-Projekt
roles/serviceusage.serviceUsageAdmin
(Optional) API-Kontingente für CloudFox-Operationen verwalten
Hinweis: Die grundlegende Rolle roles/viewer enthält Berechtigungen von roles/logging.viewer, roles/monitoring.viewer und roles/compute.networkViewer, sodass diese nicht separat gewährt werden müssen.
GCP-API-Anforderungen
APIs müssen in jedem zu bewertenden Projekt aktiviert sein. GCP-APIs sind projektspezifisch.
Führt alle anderen Befehle mit sinnvollen Standardeinstellungen aus. Sie sollten sich dennoch die nicht standardmäßigen Optionen jedes Befehls ansehen, aber dies ist ein guter Ausgangspunkt.
Listet die CloudFormation-Stacks im Konto auf. Erzeugt eine Beutedatei mit Stack-Details, Stack-Parametern und Stack-Ausgaben – suchen Sie nach Geheimnissen.
Listet die URI des zuletzt hochgeladenen Images aus allen Repositorys auf. Verwenden Sie die Beutedatei, um ausgewählte Images mit Docker/nerdctl zur Untersuchung herunterzuladen.
Zeigt Informationen zum Mandanten, den Abonnements und den Ressourcengruppen an, die für Ihre aktuelle Azure CLI-Sitzung verfügbar sind. Dies ist nützlich, um sich einen Überblick darüber zu verschaffen, welche Mandanten- und Abonnement-IDs Sie bei den anderen Unterbefehlen verwenden sollen.
Wie schneidet CloudFox im Vergleich zu ScoutSuite, Prowler, Steampipe's AWS Compliance Module, AWS Security Hub usw. ab?
CloudFox erstellt keine Warnungen oder Ergebnisse und prüft Ihre Umgebung nicht auf Einhaltung einer Baseline oder eines Benchmarks. Stattdessen ermöglicht es Ihnen lediglich, bei manuellen Penetrationstests effizienter zu sein. Es gibt Ihnen die Informationen, die Sie wahrscheinlich benötigen, um zu validieren, ob ein Angriffspfad möglich ist oder nicht.
Warum sehe ich Fehler in einigen CloudFox-Befehlen?
Dienste, die nicht in allen Regionen existieren - CloudFox versucht auf verschiedene Weise herauszufinden, welche Dienste in jeder Region unterstützt werden. Einige Dienste unterstützen jedoch die von CloudFox verwendeten Methoden nicht, sodass CloudFox standardmäßig einfach jede Region nach dem Dienst fragt. Regionen, die den Dienst nicht unterstützen, geben Fehler zurück.
Sie haben keine Berechtigung - Ein weiterer Grund, warum Sie Fehler sehen könnten, ist, wenn Sie keine Berechtigungen haben, um die von CloudFox durchgeführten Aufrufe zu tätigen. Entweder, weil die Richtlinie es nicht erlaubt (z. B. erlaubt SecurityAudit nicht alle Berechtigungen, die CloudFox benötigt) oder es könnte eine SCP sein, die Sie blockiert.
Sie können jederzeit in die Datei ~/.cloudfox/cloudfox-error.log schauen, um weitere Informationen zu Fehlern zu erhalten.
Steampipe - Wir haben Steampipe verwendet, um viele CloudFox-Befehle zu prototypisieren. Während CloudFox sich gezielt auf die Unterstützung von Cloud-Penetrationstestern konzentriert, ist Steampipe eine einfache Möglichkeit, alle Ihre Cloud-Ressourcen abzufragen.
Principal Mapper - Inspiration für und ein stark empfohlener Partner des Befehls iam-simulator
ScoutSuite - Exzellentes Cloud-Sicherheits-Benchmark-Tool. Hat Inspiration für die --userdata-Funktionalität im Befehl instances, den Befehl permissions und viele andere geliefert.
Prowler - Ein weiteres exzellentes Cloud-Sicherheits-Benchmark-Tool.
Pacu - Exzellentes Cloud-Penetrationstest-Tool. PACU hat einige ähnliche Aufzählungsbefehle wie CloudFox und viele andere Befehle, die Exploit-Aufgaben automatisieren (etwas, das CloudFox bewusst vermeidet).
CloudMapper - Inspiration für den Befehl inventory und allgemein für CloudFox als Ganzes.
Listet alle ECS-Aufgaben auf. Gibt eine Liste der ECS-Aufgaben sowie zugehörigen Cluster, Aufgabendefinition, Containerinstanz, Starttyp und zugehörigen IAM-Prinzipal zurück.
Listet alle EKS-Cluster auf, prüft, ob sie ihren Endpunkt öffentlich freigeben, und überprüft die zugehörigen IAM-Rollen, die dem Cluster oder der Knotengruppe zugeordnet sind. Erzeugt eine Beutedatei mit dem Befehl aws eks update-kubeconfig, der zum Verbinden mit jedem Cluster erforderlich ist.
Listet alle ENI-Informationen auf. Gibt eine Liste mit ENI-ID, Typ, externer IP, privater IP, VPC-ID, angehängter Instanz und einer Beschreibung zurück.
Ermittelt Endpunkte verschiedener Dienste. Scannen Sie diese Endpunkte sowohl von einer internen als auch externen Position, um nach Dingen zu suchen, die keine Authentifizierung erfordern, falsch konfiguriert sind usw.
Ruft die Umgebungsvariablen von Diensten ab, die diese besitzen (App Runner, ECS, Lambda, Lightsail-Container, Sagemaker werden unterstützt). Wenn Sie ein sensitives Geheimnis finden, verwenden Sie cloudfox iam-simulator UND pmapper, um zu sehen, wer darauf Zugriff hat.
Ermittelt die EFS- und FSx-Dateisysteme, die Sie möglicherweise ohne Anmeldedaten einbinden können (sofern Sie die richtige Netzwerkverbindung haben). Dies ist beispielsweise nützlich, wenn Sie ec2:RunInstance, aber nicht iam:PassRole haben.
Wie pmapper, verwendet aber den IAM-Richtliniensimulator. Es verwendet AWS' Evaluierungslogik, berücksichtigt jedoch keinen transitiven Zugriff über Privilegieneskalation, weshalb Sie auch immer pmapper verwenden sollten.
Ermittelt nützliche Informationen für EC2-Instanzen in allen Regionen wie Name, öffentliche/private IPs und Instanzprofile. Erzeugt Beutedateien, die Sie in nmap und andere Tools zur Diensterkennung einspeisen können.
Listet die Lambda-Funktionen im Konto auf, einschließlich derer, die Administratorenrollen zugewiesen haben. Gibt auch nützliche Befehle zum Herunterladen jeder Funktion.
Ermittelt AWS-Dienste, die möglicherweise einen Netzwerkdienst bereitstellen. Die Sicherheitsgruppen und Netzwerk-ACLs werden für jede Ressource analysiert, um festzustellen, welche Ports möglicherweise exponiert sind.
Listet die Rollen auf, die von Prinzipalen in diesem Konto angenommen wurden. Dies ist eine hervorragende Möglichkeit, ausgehende Angriffspfade zu finden, die in andere Konten führen.
Ermittelt IAM-Berechtigungen, die allen Benutzern und Rollen zugeordnet sind. Durchsuchen Sie diese Ausgabe, um herauszufinden, welche Berechtigungen ein bestimmter Prinzipal hat, anstatt sich in die AWS-Konsole einzuloggen und mühsam jede an den untersuchten Prinzipal angehängte Richtlinie zu erweitern.
Sucht nach pmapper-Daten, die im lokalen Dateisystem gespeichert sind, an den hier definierten Speicherorten. Wenn pmapper-Daten gefunden wurden (Sie haben bereits pmapper graph create ausgeführt), verwendet dieser Befehl diese Daten, um einen Graphen im CloudFox-Speicher zu erstellen, und teilt Ihnen mit, wer zu Admin eskaliert werden kann.
Listet alle Ressourcen in diesem Konto auf, die mit anderen Konten geteilt werden, oder Ressourcen aus anderen Konten, die mit diesem Konto geteilt werden. Nützlich für kontenübergreifende Angriffspfade.
Durchsucht mehrere Dienste, die Ressourcenrichtlinien unterstützen, und hilft Ihnen, übermäßig permissive Ressourcenvertrauensstellungen zu finden. KMS wird unterstützt, ist aber standardmäßig deaktiviert. Um KMS-Ressourcenrichtlinien in die Ausgabe aufzunehmen, fügen Sie diesem Befehl das Flag hinzu: cloudfox aws resource-trusts --include-kms.
Ermittelt IAM-Rollenvertrauensrichtlinien, damit Sie nach übermäßig permissiven Rollenvertrauensstellungen suchen oder Rollen finden können, die einem bestimmten Dienst vertrauen.
Listet Geheimnisse aus SecretsManager und SSM auf. Suchen Sie nach interessanten Geheimnissen in der Liste und sehen Sie dann mit cloudfox iam-simulator und/oder pmapper, wer darauf Zugriff hat.
Dieser Befehl ermittelt alle SNS-Themen und gibt Ihnen die Befehle, um ein Thema zu abonnieren oder Nachrichten an ein Thema zu senden (sofern Sie die erforderlichen Berechtigungen haben). Dieser Befehl befasst sich nur mit Themen, nicht mit der SMS-Funktionalität. Dieser Befehl versucht auch, Themenressourcenrichtlinien zusammenzufassen, falls vorhanden.
Dieser Befehl ermittelt alle SQS-Warteschlangen und gibt Ihnen die Befehle, um Nachrichten von einer Warteschlange zu empfangen und Nachrichten an eine Warteschlange zu senden (sofern Sie die erforderlichen Berechtigungen haben). Dieser Befehl versucht auch, Warteschlangenressourcenrichtlinien zusammenzufassen, falls vorhanden.
Listet alle Ressourcen mit Tags und alle Tags auf. Dies kann ähnlich wie Inventory als weitere Methode verwendet werden, um zu identifizieren, welche Arten von Ressourcen in einem Konto existieren.
Listet alle Compute-Workloads und ihre zugewiesenen Rollen auf. Gibt an, ob eine der Rollen Admin ist (schlecht) und ob Sie pmapper-Daten lokal haben, wird Ihnen mitgeteilt, ob eine der Rollen zu Admin eskalieren kann (auch schlecht)
Listet alle von AWS verwalteten Verzeichnisse und ihre Attribute auf. Fasst auch die aktuellen Vertrauensstellungen mit ihren Richtungen und Typen zusammen.