TL;DR Feststellungen
In weniger als einer Stunde fanden wir mit den Daten von Censys 7.640 potenzielle S3-Buckets, 49 vollständig offene (World Read + Write), 16 Buckets mit anonymen Schreibzugriff, 1.235 mit anonymen Lesezugriff und mehr.
Auffinden von S3-Zielen mit Censys
Amazon S3 (Amazon Simple Storage Service) ist ein Produkt, das Objektspeicher über das Internet bereitstellt und von unzähligen Einzelpersonen und Organisationen weltweit genutzt wird. Es ist einfach zu verwenden, aber leider auch sehr leicht falsch zu konfigurieren. Am 20. Dezember 2022 wurde bekannt, dass die S3-Buckets des Bildungsverlages McGraw Hill ohne die richtige Konfiguration ins Internet gestellt wurden, so dass die persönlichen Daten von mehr als 100.000 Schülern von Hackern abgegriffen werden konnten. Und das ist kein seltenes Ereignis, sondern kommt immer wieder vor.
Auch wenn Censys derzeit nicht über einen nativen S3-Scanner verfügt, können wir die von uns gesammelten Daten dennoch für andere Tools nutzen. Wenn ein Benutzer einen Bucket erstellt, erhält dieser einen eindeutigen Namen, der dann in DNS übersetzt wird. Wenn ich beispielsweise einen S3-Bucket "censys" nenne, dann wäre dieser Bucket über den DNS-Namen "censys.s3.amazonaws.com " verfügbar. Bevor wir also feststellen können, ob ein S3-Bucket öffentlich zugänglich ist, müssen wir wissen, welcher Name dem Speicherobjekt selbst gegeben wurde.
Viele Sicherheitstools können Benutzer bei der Suche nach offenen S3-Buckets unterstützen, aber eine der größeren Herausforderungen ist die Ermittlung der Ziele (die Bucket-Namen). Eine Standardmethode ist die Brute-Force-Namenserstellung oder zufällige Kombinationen von Wörtern und der Versuch, den Namen von AWS anzufordern. Mit dieser Methode finden viele böswillige Angreifer die niedrig hängenden Früchte der unsicheren S3-Buckets.
Da Censys eine riesige Anzahl von Hosts im Internet gescannt und indexiert hat (zum Zeitpunkt der Erstellung dieses Artikels etwa 276 Millionen Hosts und 2,1 Milliarden Dienste), können wir diese Daten nutzen, um potenzielle S3-Bucket-Namen zu finden, die wir dann in das Open-Source-S3-Scanner-Tool S3Scanner einspeisen können, um die verfügbaren Zugriffsarten zu bestimmen.
Zunächst erstellten wir eine SQL-Abfrage, die den Inhalt aller HTTP-Antworten im Internet, die das Wort "s3" enthielten, in eine andere Datenbank mit Metadaten über den Host übertrug. Dann schrieben wir ein Python-Skript, das jeden dieser HTTP-Antwortkörper durchlief und s3-ähnliche URLs analysierte, um die Namen der s3-Buckets zu extrahieren, die dann in eine Datei geschrieben wurden.
Nachdem dieses Skript ausgeführt wurde, verwendeten wir die Ausgabedatei, die nur die Bucket-Namen enthielt, als Eingabe für das Tool S3Scanner: