Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
aws-recon — Mehrthread-fähiges AWS-Inventarsammelwerkzeug mit Fokus auf sicherheitsrelevante Ressourcen und Metadaten. | Kitploit
Tools/GitHubGitHub/joshlarsen/aws-recon
Cloud-Infrastruktur-SicherheitAufklärungSchwachstellenanalyseScripting & AutomatisierungKonfigurationsprüfungInformationsbeschaffungCloud-SicherheitDevSecOpsArchived
GitHubjoshlarsen/aws-recon

aws-recon

Mehrthread-fähiges AWS-Inventarsammelwerkzeug mit Fokus auf sicherheitsrelevante Ressourcen und Metadaten.

55850vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

Docker Pulls Gem Version GitHub Workflow Status (branch) AWS Service Regions

AWS Recon

Ein multi-threaded, auf AWS-Sicherheit ausgerichtetes Inventarsammelwerkzeug, geschrieben in Ruby.

Dieses Werkzeug wurde entwickelt, um die effiziente Sammlung einer großen Menge von AWS-Ressourcenattributen und -Metadaten zu erleichtern. Es zielt darauf ab, nahezu alles zu sammeln, was für die Sicherheitskonfiguration und den Sicherheitsstatus einer AWS-Umgebung relevant ist.

Bestehende Werkzeuge (z. B. AWS Config), die eine Form der Ressourcensammlung durchführen, haben nicht die Abdeckung und Spezifität, um den Sicherheitsstatus genau zu messen (z. B. detaillierte Ressourcenattributdaten, vollständig geparste Richtliniendokumente und verschachtelte Ressourcenbeziehungen).

AWS Recon bewältigt die Sammlung aus großen Konten durch die Nutzung automatischer Wiederholungsversuche (entweder aufgrund von Netzwerkzuverlässigkeit oder API-Drosselung), automatisches Paging großer Antworten (> 100 Ressourcen pro API-Aufruf) und Multi-Threading paralleler Anfragen, um die Sammlung zu beschleunigen.

Projektziele

  • Vollständigere Ressourcenabdeckung als verfügbare Tools (insbesondere für ECS & EKS)
  • Detailliertere Ressourcendetails, einschließlich verschachtelter verwandter Ressourcen in der Ausgabe
  • Flexible Ausgabe (Konsole, JSON-Zeilen, reines JSON, Datei, S3-Bucket und Standardausgabe)
  • Effizient (multi-threaded, ratenbegrenzt, automatische Wiederholungsversuche und automatisches Ergebnis-Paging)
  • Einfach zu warten und zu erweitern

Großartige Unternehmen, die AWS Recon verwenden**

  • Netflix
  • HashiCorp
  • Workday
  • Stripe
  • PayPal
  • Typeform
  • Amazon Web Services
  • Plaid
  • Expel
  • Mozilla
  • Bugcrowd
  • Dropbox
  • Pinterest
  • HackerOne
  • MuleSoft
  • Slack
  • Drata
  • Google
  • Sophos
  • Sumo Logic
  • Coalfile
  • Xero

** Nutzung impliziert keine Befürwortung

Einrichtung

Voraussetzungen

AWS Recon benötigt eine AWS-Kontorolle oder Anmeldeinformationen mit ReadOnlyAccess. Vollständiger AdministratorAccess ist überprivilegiert, funktioniert aber ebenfalls. Die SecurityAudit-Richtlinie ist nicht ausreichend, da sie den Zugriff auf viele Dienste ausschließt.

Ausführung über Docker

Verwenden Sie Docker Version 19.x oder höher, um das vorgefertigte Image auszuführen, ohne etwas installieren zu müssen.

Lokale Ausführung über Ruby

Wenn Sie bereits Ruby installiert haben (2.6.x oder 2.7.x), möchten Sie möglicherweise das Ruby-Gem installieren.

Installation

AWS Recon kann lokal über einen Docker-Container oder durch Installation des Ruby-Gems ausgeführt werden.

Zur Ausführung über einen Docker-Container übergeben Sie die erforderlichen AWS-Anmeldeinformationen in den Docker-run-Befehl. Zum Beispiel:

root@kitploit:~
$ docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -v -s EC2 -r global,us-east-1,us-east-2

Zur lokalen Ausführung installieren Sie zuerst das Gem:

root@kitploit:~
$ gem install aws_recon
Fetching aws_recon-0.5.17.gem
Fetching aws-sdk-3.0.1.gem
Fetching parallel-1.20.1.gem
...
Successfully installed aws-sdk-3.0.1
Successfully installed parallel-1.20.1
Successfully installed aws_recon-0.5.17

Oder fügen Sie es mit bundle zu Ihrer Gemfile hinzu:

root@kitploit:~
$ bundle add aws_recon
Fetching gem metadata from https://rubygems.org/
Resolving dependencies...
...
Using aws-sdk 3.0.1
Using parallel-1.20.1
Using aws_recon 0.5.17

Verwendung

AWS Recon nutzt alle AWS-Anmeldeinformationen (siehe Voraussetzungen), die derzeit in der Umgebung verfügbar sind, in der es ausgeführt wird. Wenn Sie Daten aus mehreren Konten sammeln, möchten Sie möglicherweise etwas wie aws-vault verwenden, um verschiedene Anmeldeinformationen zu verwalten.

root@kitploit:~
$ aws-vault exec profile -- aws_recon

Einfache Umgebungsvariablen funktionieren ebenfalls.

root@kitploit:~
$ AWS_PROFILE=<profile> aws_recon

Zur Ausführung aus einem Docker-Container mit aws-vault-verwalteten Anmeldeinformationen (Ausgabe auf stdout):

root@kitploit:~
$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  darkbitio/aws_recon:latest \
  aws_recon -j -s EC2 -r global,us-east-1,us-east-2

Zur Ausführung aus einem Docker-Container mit aws-vault-verwalteten Anmeldeinformationen und Ausgabe in eine Datei müssen Sie einige Voraussetzungen erfüllen. Erstens benötigt Docker Zugriff, um den von Ihnen angegebenen Pfad (oder einen übergeordneten Pfad) einzubinden. Zweitens müssen Sie eine leere Datei erstellen, in die die Ausgabe gespeichert werden soll (z. B. output.json). Dies liegt daran, dass nur diese eine Datei zur Laufzeit in den Docker-Container eingebunden wird. Zum Beispiel:

Erstellen Sie eine leere Datei.

root@kitploit:~
$ touch output.json

Führen Sie den aws_recon-Container aus und geben Sie die Ausgabedatei an.

root@kitploit:~
$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -s EC2 -v -r global,us-east-1,us-east-2

Sie möchten möglicherweise zu Beginn das Flag -v oder --verbose verwenden, um Status und Aktivität während der Sammlung zu sehen.

Im ausführlichen Modus zeigt die Konsolenausgabe Folgendes:

root@kitploit:~
<thread>.<region>.<service>.<operation>

Das Präfix t gibt an, unter welchem Thread eine bestimmte Anfrage ausgeführt wird. Region, Dienst und Vorgang geben an, welche Anforderungsoperation gerade läuft und wo.

root@kitploit:~
$ aws_recon -v

t0.global.EC2.describe_account_attributes
t2.global.S3.list_buckets
t3.global.Support.describe_trusted_advisor_checks
t2.global.S3.list_buckets.acl
t5.ap-southeast-1.WorkSpaces.describe_workspaces
t6.ap-northeast-1.Lightsail.get_instances
...
t2.us-west-2.WorkSpaces.describe_workspaces
t1.us-east-2.Lightsail.get_instances
t4.ap-southeast-1.Firehose.list_delivery_streams
t7.ap-southeast-1.Lightsail.get_instances
t0.ap-south-1.Lightsail.get_instances
t1.us-east-2.Lightsail.get_load_balancers
t7.ap-southeast-2.WorkSpaces.describe_workspaces
t2.eu-west-3.SageMaker.list_notebook_instances
t3.eu-west-2.SageMaker.list_notebook_instances

Finished in 46 seconds. Saving resources to output.json.

Beispiel-Kommandozeilenoptionen

root@kitploit:~
# Sammle S3- und EC2-globale Ressourcen sowie us-east-1 und us-east-2

$ AWS_PROFILE=<profile> aws_recon -s S3,EC2 -r global,us-east-1,us-east-2
root@kitploit:~
# Sammle S3- und EC2-globale Ressourcen sowie us-east-1 und us-east-2

$ AWS_PROFILE=<profile> aws_recon --services S3,EC2 --regions global,us-east-1,us-east-2
root@kitploit:~
# Speichere Ausgabe in S3-Bucket

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket
root@kitploit:~
# Speichere Ausgabe in S3-Bucket mit einer anderen Heimatregion als us-east-1

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket:us-west-2

Beispiel für die OpenCSPM-formatierte (NDJSON) Ausgabe.

root@kitploit:~
$ AWS_PROFILE=<profile> aws_recon -l \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom

oder

root@kitploit:~
$ AWS_PROFILE=<profile> aws_recon -j \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom > output.json

Fehler

API-Ausnahmen im Zusammenhang mit Berechtigungen werden in den meisten Fällen stillschweigend ignoriert. Diese Fehler treten normalerweise aus einem der folgenden Gründe auf:

  • Verwendung einer Rolle ohne ausreichende Berechtigungen
  • Abfragen eines Kontos mit SCPs, die die Nutzung bestimmter Dienste verhindern
  • Versuch, einen Dienst abzufragen, der in Ihrer Region/Ihrem Konto nicht aktiviert/verfügbar ist

Im verbose-Modus sehen Sie Ausnahme-Logs in der Ausgabe:

root@kitploit:~
t2.us-east-1.EC2.describe_subnets.0
t4.us-east-1.SSM.describe_instance_information.0
t6.us-east-1.SecurityHub.InvalidAccessException   <-----
t2.us-east-1.EC2.describe_addresses.0
t4.us-east-1.SSM.describe_parameters.0
t1.us-east-1.GuardDuty.list_detectors.0

Verwenden Sie die Kommandozeilenoption -q, um diese Ausnahmen erneut auszulösen, damit die Fehlerbehebung bei Zugriffsproblemen einfacher wird.

root@kitploit:~
Traceback (most recent call last):
arn:aws:sts::1234567890:assumed-role/role/my-audit-role is not authorized to perform:
 codepipeline:GetPipeline on resource: arn:aws:codepipeline:us-west-2:1234567890:pipeline
 (Aws::CodePipeline::Errors::AccessDeniedException)

Der genaue API-Vorgang, der die Ausnahme ausgelöst hat, wird in der letzten Zeile des Stack-Trace angezeigt. Wenn Sie den erforderlichen Zugriff nicht auflösen können, sollten Sie diese Dienste mit -x oder --not-services ausschließen oder die Option -q weglassen, damit die Sammlung fortgesetzt werden kann.

Threads

AWS Recon verwendet mehrere Threads, um einige der I/O-Herausforderungen bei der Durchführung vieler API-Aufrufe an Endpunkte auf der ganzen Welt zu überwinden.

Für globale Dienste wie IAM, Shield und Support werden Anfragen nicht multi-threaded ausgeführt. Das S3-Modul ist multi-threaded, da jeder Bucket mehrere zusätzliche Aufrufe erfordert, um vollständige Metadaten zu sammeln.

Für regionale Dienste wird ein Thread (bis zum Thread-Limit) für jeden Dienst in einer Region gestartet. Standardmäßig werden bis zu 8 Threads verwendet. Wenn Ihr Konto Ressourcen über viele Regionen verteilt hat, können Sie die Geschwindigkeit verbessern, indem Sie die Anzahl der Threads mit -t X erhöhen, wobei X die Anzahl der Threads ist.

Leistung

AWS Recon führt in einem neuen/leeren Konto mindestens ~2.000 API-Aufrufe durch, nur um die unterstützten Dienste in allen 20 Standardregionen (keine GovCloud, keine China) abzufragen. Es ist sehr wahrscheinlich, dass bei großen Konten API-Ratenbegrenzungen (Drosselung) auftreten, wenn Sie mehr Threads als die Standardeinstellung (8) aktivieren.

Recon wird automatisch zurückfahren und die Wiederholungsgrenzen in der API-Antwort respektieren. Wenn Sie während der Sammlung lange Pausen beobachten, ist dies wahrscheinlich der Fall. Wiederholen Sie die Sammlung mit der Option -d oder --debug, um den Leitungsverlauf zu beobachten und zu sehen, ob Sie gedrosselt werden. Erwägen Sie die Verwendung von weniger Threads oder fordern Sie höhere Ratenlimits von AWS an, wenn Sie regelmäßig gedrosselt werden.

Optionen

Die meisten Benutzer werden die Sammlung auf relevante Dienste und Regionen beschränken wollen. Das Ausführen ohne Ausschlüsse versucht, alle Ressourcen aus allen für das Konto aktivierten Regionen zu sammeln.

root@kitploit:~
$ aws_recon -h

AWS Recon - AWS Inventory Collector (0.5.17)

Usage: aws_recon [options]
    -r, --regions [REGIONS]          Regions to scan, separated by comma (default: all)
    -n, --not-regions [REGIONS]      Regions to skip, separated by comma (default: none)
    -s, --services [SERVICES]        Services to scan, separated by comma (default: all)
    -x, --not-services [SERVICES]    Services to skip, separated by comma (default: none)
    -c, --config [CONFIG]            Specify config file for services & regions (e.g. config.yaml)
    -b, --s3-bucket [BUCKET:REGION]  Write output file to S3 bucket (default: '')
    -o, --output [OUTPUT]            Specify output file (default: output.json)
    -f, --format [FORMAT]            Specify output format (default: aws)
    -t, --threads [THREADS]          Specify max threads (default: 8, max: 128)
    -l, --json-lines                 Output NDJSON/JSONL format (default: false)
    -u, --user-data                  Collect EC2 instance user data (default: false)
    -z, --skip-slow                  Skip slow operations (default: false)
    -g, --skip-credential-report     Skip generating IAM credential report (default: false)
    -j, --stream-output              Stream JSON lines to stdout (default: false)
    -v, --verbose                    Output client progress and current operation
    -q, --quit-on-exception          Stop collection if an API error is encountered (default: false)
    -d, --debug                      Output debug with wire trace info
    -h, --help                       Print this help information

Ausgabe

Die Ausgabe ist immer eine Form von JSON – entweder JSON-Zeilen oder reines JSON. Die Ausgabe wird entweder in eine Datei geschrieben (Standard) oder auf stdout geschrieben (mit -j).

Beim Schreiben in einen S3-Bucket wird die JSON-Ausgabe automatisch mit gzip komprimiert.

Unterstützung für manuell aktivierte Regionen

Wenn Sie manuell aktivierte Regionen aktiviert haben:

  • me-south-1 - Middle East (Bahrain)
  • af-south-1 - Africa (Cape Town)
  • ap-east-1 - Asia Pacific (Hong Kong)
  • eu-south-1 - Europe (Milan)

und Sie STS verwenden, um eine Rolle in ein Konto zu übernehmen, müssen Sie v2-STS-Tokens aktivieren in dem Konto, von dem aus Sie die Rolle übernehmen, um AWS Recon gegen diese Regionen ausführen zu können.

Version-1-Tokens sind nur in AWS-Regionen gültig, die standardmäßig verfügbar sind. Diese Tokens funktionieren nicht in manuell aktivierten Regionen wie Asia Pacific (Hong Kong). Version-2-Tokens sind in allen Regionen gültig. Allerdings sind Version-2-Tokens länger und können Systeme beeinträchtigen, in denen Sie Tokens vorübergehend speichern.

Wenn Sie einen statischen Zugriffsschlüssel/Geheimnis verwenden, können Sie unabhängig von der STS-Token-Version aus diesen Regionen sammeln.

Unterstützte Dienste und Ressourcen

Die aktuelle „Abdeckung“ pro Dienst ist unten aufgeführt. Dienste ohne Abdeckung werden nach und nach hinzugefügt. PRs sind willkommen. :)

AWS Recon zielt darauf ab, alle Ressourcen und Metadaten zu sammeln, die für die Bestimmung des Sicherheitsstatus Ihres AWS-Kontos (Ihrer AWS-Konten) relevant sind. Es untersucht die Ressourcen jedoch nicht tatsächlich auf den Sicherheitsstatus – dies ist die Aufgabe anderer Tools, die die Ausgabe von AWS Recon als Eingabe verwenden.

  • AccessAnalyzer
  • AdvancedShield
  • ApplicationAutoScaling
  • Athena
  • Backup
  • GuardDuty
  • Macie
  • Systems Manager
  • Trusted Advisor
  • ACM
  • API Gateway
  • AutoScaling
  • CodePipeline
  • CodeBuild
  • CloudFormation
  • CloudFront
  • CloudWatch

Zusätzliche Abdeckung

Eine der Hauptmotivationen für AWS Recon war die Entwicklung eines Tools, das einfach zu warten und zu erweitern ist. Wenn Sie der Meinung sind, dass die Abdeckung für einen bestimmten Dienst verbessert werden könnte, freuen wir uns über entsprechende PRs. Jeder mit mittleren Ruby-Kenntnissen kann das Muster nachahmen, das von den vorhandenen Collectoren verwendet wird, um einen bestimmten Dienst abzufragen und die Ergebnisse zur Ressourcensammlung hinzuzufügen.

Entwicklung

Klonen Sie dieses Repository:

root@kitploit:~
$ git clone [email protected]:darkbitio/aws-recon.git
$ cd aws-recon

Erstellen Sie ein „sticky gemset“ bei Verwendung von RVM:

root@kitploit:~
$ rvm use 2.7.2@aws_recon_dev --create --ruby-version

Führen Sie bin/setup aus, um Abhängigkeiten zu installieren. Führen Sie dann rake test aus, um die Tests auszuführen. Sie können auch bin/console für eine interaktive Eingabeaufforderung ausführen, mit der Sie experimentieren können.

Um dieses Gem auf Ihrem lokalen Rechner zu installieren, führen Sie bundle exec rake install aus. Um eine neue Version zu veröffentlichen, aktualisieren Sie die Versionsnummer in version.rb und führen Sie dann bundle exec rake release aus, wodurch ein Git-Tag für die Version erstellt, Git-Commits und -Tags gepusht und die .gem-Datei auf rubygems.org hochgeladen wird.

TODO

  • Testabdeckung mit AWS SDK gestubten Ressourcen

Danksagungen

AWS Recon wurde von der hervorragenden Arbeit der Menschen und Teams hinter diesen Tools inspiriert:

  • CloudMapper https://github.com/duo-labs/cloudmapper
  • Prowler https://github.com/toniblyx/prowler
  • CloudSploit https://github.com/cloudsploit/scans
Tool herunterladen
  • CloudWatch Logs
  • CloudTrail
  • Config
  • DirectoryService
  • DirectConnect
  • DMS
  • DynamoDB
  • EC2
  • ECR
  • ECRPublic
  • ECS
  • EFS
  • EKS
  • ELB
  • EMR
  • Elasticsearch
  • ElastiCache
  • Firehose
  • FMS
  • Glacier
  • Glue
  • IAM
  • KMS
  • Kafka
  • Kinesis
  • Lambda
  • Lightsail
  • Organizations
  • RDS
  • Redshift
  • Route53
  • Route53Domains
  • S3
  • SageMaker
  • SES
  • SecretsManager
  • SecurityHub
  • ServiceQuotas
  • Shield
  • SNS
  • SQS
  • Transfer
  • VPC
  • WAF
  • WAFv2
  • Workspaces
  • Xray