AWS Pentesting

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

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 Information

Labs 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 & Access

Oder wenn Sie eine Überprüfung durchführen, könnten Sie einfach um Anmeldeinformationen mit diesen Rollen bitten:

pageAWS - Permissions for a Pentest

Nachdem 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):

# Easiest way, but might be monitored?
aws sts get-caller-identity
aws iam get-user # This will get your own user

# If you have a Key ID
aws sts get-access-key-info --access-key-id=ASIA1234567890123456

# Get inside error message
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa

# From metadata
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document

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 Enum

IAM 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 Enum

Nun, 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 - Services

Beachten 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 & Access

Berechtigungserweiterung

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 spezifische sts:AssumeRole-Berechtigungen erforderlich).

Automatisierte Tools

Recon

  • aws-recon: Ein mehrfädiges, auf Sicherheit ausgerichtetes Inventar-Sammelwerkzeug für AWS, geschrieben in Ruby.

# Install
gem install aws_recon

# Recon and get json
AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose
  • 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.

# Installation steps in github
# Create a config.json file with the aws info, like:
{
"accounts": [
{
"default": true,
"id": "<account id>",
"name": "dev"
}
],
"cidrs":
{
"2.2.2.2/28": {"name": "NY Office"}
}
}

# Enumerate
python3 cloudmapper.py collect --profile dev
## Number of resources discovered
python3 cloudmapper.py stats --accounts dev

# Create HTML report
## In the report you will find all the info already
python3 cloudmapper.py report --accounts dev

# Identify potential issues
python3 cloudmapper.py audit --accounts dev --json > audit.json
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
python3 cloudmapper.py iam_report --accounts dev

# Identify admins
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
python3 cloudmapper.py find_admins --accounts dev

# Identify unused elements
python3 cloudmapper.py find_unused --accounts dev

# Identify publivly exposed resources
python3 cloudmapper.py public --accounts dev

python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
  • cartography: Cartography ist ein Python-Tool, das Infrastrukturressourcen und deren Beziehungen in einer intuitiven Grafikansicht zusammenfasst, die von einer Neo4j-Datenbank unterstützt wird.

# Install
pip install cartography
## At the time of this writting you need neo4j version 3.5.*

# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt  --neo4j-user neo4j
  • 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

# Install
## Feel free to use venvs
pip3 install pacu

# Use pacu CLI
pacu
> import_keys <profile_name> # import 1 profile from .aws/credentials
> import_keys --all # import all profiles
> list # list modules
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
  • 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

# Install
pip install principalmapper

# Get data
pmapper --profile dev graph create
pmapper --profile dev graph display # Show basic info
# Generate graph
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
pmapper --profile dev visualize --only-privesc # Only privesc permissions

# Generate analysis
pmapper --profile dev analysis
## Run queries
pmapper --profile dev query 'who can do iam:CreateUser'
pmapper --profile dev query 'preset privesc *' # Get privescs with admins

# Get organization hierarchy data
pmapper --profile dev orgs create
pmapper --profile dev orgs display
  • 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).

# Install
pip install cloudsplaining

# Download IAM policies to check
## Only the ones attached with the versions used
cloudsplaining download --profile dev

# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
  • 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).

./index.js --csv=file.csv --console=table --config ./config.js

# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
  • 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.

# Install python3, jq and git
# Install
pip install prowler
prowler -v

# Run
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
  • 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.

cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Scout Suite ist ein Open-Source-Multi-Cloud-Sicherheitsprüfungstool, das die Sicherheitsbewertung der Cloud-Umgebungen ermöglicht.

# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help

# Get info
scout aws -p dev
  • 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

# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080

# Capture with burp nor verifying ssl
aws --no-verify-ssl ...

# Dowload brup cert and transform it to pem
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem

# Indicate the ca cert to trust
export AWS_CA_BUNDLE=~/Downloads/certificate.pem

# Run aws cli normally trusting burp cert
aws ...

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated