
Durchsuche exponierte EBS-Volumes nach Geheimnissen
Dufflebag ist ein Tool, das öffentliche Elastic Block Storage (EBS)-Snapshots nach Geheimnissen durchsucht, die möglicherweise versehentlich zurückgelassen wurden. Sie werden überrascht sein, wie viele Passwörter und Geheimnisse einfach so herumliegen!
Das Tool ist als Elastic Beanstalk-Anwendung („EB“, nicht zu verwechseln mit EBS) organisiert und wird definitiv nicht funktionieren, wenn Sie versuchen, es auf Ihrem eigenen Rechner auszuführen.
Dufflebag hat viele bewegliche Teile, weil es in der Praxis ziemlich aufwändig ist, EBS-Volumes tatsächlich zu lesen. Sie müssen sich in einer AWS-Umgebung befinden, das Snapshot klonen, ein Volume aus dem Snapshot erstellen, das Volume anhängen, es mounten usw. Deshalb wurde es als Elastic Beanstalk-App erstellt, damit es automatisch nach Belieben hoch- oder herunterskalieren kann und das Ganze einfach wieder abgebaut werden kann, wenn Sie fertig sind.
Behalten Sie Ihre AWS-Konsole im Auge, um sicherzustellen, dass nichts außer Kontrolle gerät und Kosten verursacht. Wir haben versucht, an alle Eventualitäten zu denken und Fehlerbehandlungen bereitzustellen … aber Sie wurden gewarnt!
Sie müssen der Rolle aws-elasticbeanstalk-ec2-role einige zusätzliche AWS-IAM-Berechtigungen hinzufügen. Alternativ können Sie eine ganz neue Rolle mit diesen Berechtigungen erstellen und EB so konfigurieren, dass diese Rolle verwendet wird, aber das ist etwas aufwändiger. In jedem Fall müssen Sie Folgendes hinzufügen:
Die Kernanwendung ist in Go geschrieben, daher benötigen Sie einen Golang-Compiler. Die EB-Anwendung wird jedoch in eine .zip-Datei gepackt (so funktioniert EB nun einmal), sodass das Makefile eine Zip-Datei für Sie erstellt.
Überprüfen Sie Ihre Region. Dufflebag kann immer nur in einer AWS-Region gleichzeitig arbeiten. Wenn Sie jede Region durchsuchen möchten, müssen Sie so viele Instanzen bereitstellen. Um die Region zu ändern, ändern Sie den Inhalt der Quellcodedatei region.go.
Abhängigkeiten installieren: Ubuntu 18.04 x64:
sudo apt install make golang-go git
go get -u github.com/aws/aws-sdk-go
go get -u github.com/deckarep/golang-set
go get -u github.com/lib/pq
go get -u lukechampine.com/blake3
make
Sie sollten nun eine dufflebag.zip-Datei im Stammverzeichnis des Projekts sehen.
dufflebag beginnt. S3-Bucket-Namen müssen global eindeutig sein, daher benötigen Sie wahrscheinlich einen Suffix, der aus einer Reihe von Kauderwelsch oder etwas Ähnlichem besteht.Gehen Sie zu Ihrer AWS-Konsole und suchen Sie das Elastic Beanstalk-Menü. Dies ist wahrscheinlich auch über die CLI möglich, aber diese Beschreibung verwendet die Konsole. Wählen Sie Actions -> Create Environment.

Wählen Sie dann im nächsten Fenster Worker environment und klicken Sie auf Select.

Wählen Sie im nächsten Fenster unter Platform die Option Preconfigured -> Go.

Wählen Sie unter Application Code die Option Upload your Code.

Klicken Sie auf die Schaltfläche Upload und wählen Sie die soeben erstellte dufflebag.zip aus.

Klicken Sie abschließend auf Create Environment, um zu starten.
Es wird einige Minuten dauern, bis AWS alle Ressourcen erstellt hat und loslegen kann. Sobald die Erstellung abgeschlossen ist, beginnt Dufflebag sofort mit der Arbeit. Sie müssen nichts weiter tun.
Sobald alles läuft, können Sie es erneut ohne das Sicherheitsventil versuchen. Standardmäßig durchsucht Dufflebag nur 20 EBS-Snapshots (damit es bei Ihrem ersten Versuch nicht außer Kontrolle gerät). Um die Suche auf die gesamte Region auszuweiten, gehen Sie in populate.go, entfernen Sie die folgende Codezeile und erstellen Sie das Projekt neu:
//#####################################################################
//#### Safety Valve ####
//#### Remove this line of code below to search all of your region ####
//#####################################################################
snapshots = snapshots_result.Snapshots[0:20]
Einer der Gründe, warum Dufflebag als Elastic Beanstalk-App entwickelt wurde, ist die Möglichkeit, das Programm einfach hoch- oder herunterskalieren zu können. Standardmäßig läuft es nur auf einer Instanz und ist ziemlich langsam. Wenn Sie es jedoch etwas beschleunigen möchten, passen Sie die automatische Skalierung in Elastic Beanstalk an. Die vollständigen Optionen gehen über den Rahmen dieses Dokuments hinaus, daher überlasse ich es Ihnen, damit zu experimentieren. In der Praxis habe ich jedoch festgestellt, dass ein einfacher CPU-Auslöser recht gut funktioniert.
Beim Einrichten der Umgebung oben finden Sie die Optionen unter der Schaltfläche Configure more options (anstatt auf Create environment zu klicken) und dann auf Scaling.

Dufflebag kopiert alle interessanten Dateien in den zuvor erstellten S3-Bucket. (Technisch gesehen verwendet Dufflebag den ersten S3-Bucket, dessen Name mit „dufflebag“ beginnt.)
Sie können einfach die Dateien einzeln in Ihrem S3-Bucket beobachten. Sie werden wie folgt benannt:
originalfilename_blake3sum_volumeid
Wenn alles gut läuft, müssen Sie die Logs nicht lesen. Aber für den Fall der Fälle erlaubt Elastic Beanstalk Apps, während der Ausführung in Log-Dateien zu schreiben. Diese werden erfasst, indem Sie zur Registerkarte Logs navigieren. Klicken Sie dann auf Request Logs und Last 100 Lines. Dadurch erhalten Sie den aktuellsten Stapel von Dufflebag-Logs. Klicken Sie auf die Schaltfläche Download, um sie zu lesen. Diese Datei enthält eine Reihe anderer Systemlogs, aber der Dufflebag-Teil befindet sich ganz oben unter „/var/log/web-1.log".
Um den vollständigen Log-Verlauf zu sehen, wählen Sie Full Logs anstelle von Last 100 Lines. (Beachten Sie, dass EB standardmäßig Logs ziemlich aggressiv rotiert.)
Zusätzlich können Sie sich einen Überblick über den Gesamtfortschritt verschaffen, indem Sie die SQS-Warteschlange für die Umgebung anzeigen. Elastic Beanstalk-Worker-Umgebungen verwenden SQS zur Verwaltung des Workflows. Jede Nachricht in der Warteschlange von Dufflebag repräsentiert ein zu verarbeitendes EBS-Volume:
