Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/olizimmermann/s3dns
OSINT (Open-Source-Intelligence)AufklärungSchwachstellenanalyseInformationsbeschaffungPenetrationstestsCloud-SicherheitSubdomain-EnumerationDNS-Analyse
GitHubolizimmermann/s3dns

s3dns

Passiver DNS-Server, der exponierte Cloud-Speicher-Buckets (AWS S3, GCP, Azure) erkennt, indem er DNS-Anfragen auflöst, CNAME-Ketten verfolgt und während der Erkundung potenzielle Subdomain-Übernahmen markiert.

1291336vor 7 TagenVon 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
Webseite
# S3DNS

**s3dns** ist ein schlanker DNS-Server, der hilft, Cloud-Speicher-Buckets (AWS S3, Google Cloud Storage und Azure Blob) aufzuspüren, indem er DNS-Anfragen auflöst, CNAMEs verfolgt und bekannte Bucket-URL-Muster abgleicht.

Es ist ein nützlicher Begleiter für **Pentester**, **Bug-Bounty-Jäger** und **Cloud-Sicherheitsanalysten**, die bei der DNS-Datenverkehrsanalyse offengelegte Cloud-Buckets aufspüren möchten.

Wenn S3DNS dir Zeit in einer Recon-Session spart, ziehe in Betracht, ihm einen ⭐️ zu geben – das hilft anderen, das Projekt zu finden.

---

---

### 🆕 Update 2026/03/06

* **TCP/53-Unterstützung** — S3DNS lauscht jetzt sowohl auf UDP als auch auf TCP-Port 53. Clients, die nach einer abgeschnittenen UDP-Antwort über TCP wiederholen, werden korrekt behandelt, wobei die Anfrage über TCP an den Upstream weitergeleitet wird, um die vollständige Antwort abzurufen.
* **Größerer DNS-Puffer** — Der UDP-Empfangspuffer wurde von 512 auf 4096 Bytes erhöht. EDNS0-Optionen des Clients werden unverändert an den Upstream-Resolver weitergegeben.
* **Antwort-Cache** — TTL-basierter LRU-Cache für DNS-Antworten, der sowohl von UDP- als auch von TCP-Pfaden gemeinsam genutzt wird. Reduziert Upstream-Last und Latenz während aktiver Recon-Sessions. Konfigurierbar über `CACHE_SIZE` (Standard: `1000` Einträge, auf `0` setzen zum Deaktivieren).
* **Ratenbegrenzung** — Pro-Client-IP-Anforderungsratenbegrenzung, um Missbrauch zu verhindern. Konfigurierbar über `RATE_LIMIT` (Standard: `100` Anfragen/s, auf `0` setzen zum Deaktivieren).
* **Erkennung von Subdomain-Übernahmen** — Wenn eine Domain zu einem Cloud-Speicher-Muster passt, aber `NXDOMAIN` zurückgibt, markiert S3DNS dies als **mögliche Domain-Übernahme**. Dies deutet auf einen hängenden DNS-Eintrag hin, der auf ein nicht beanspruchtes Bucket verweist, das ein Angreifer registrieren könnte.
* **IPv6-IP-Bereichsprüfungen** — AAAA-Einträge werden jetzt ebenfalls aufgelöst und gegen bekannte IP-Bereiche von Cloud-Speichern geprüft. AWS IPv6 S3-Präfixe werden zusammen mit IPv4-Bereichen geladen.
* **CNAME-Tiefenbegrenzung** — Die rekursive Verfolgung von CNAME-Ketten ist jetzt begrenzt (Standard: 10 Hops), um Endlosschleifen bei konstruierten oder zyklischen Einträgen zu verhindern. Konfigurierbar über den Parameter `max_cname_depth`.

### Update 2025/08/19

* Offline-AWS-IP-Bereiche als JSON-Datei hinzugefügt.
* Offline-Azure-Storage-IP-Bereiche als JSON-Datei hinzugefügt.
* Option hinzugefügt, die IP-Bereichsprüfung für einen der Dienste zu deaktivieren über:
  * `AZURE_IP_RANGES=false` oder `AWS_IP_RANGES=false` (Standard ist true).
* `regex_patterns` und hartcodierte Muster in den Ordner `patterns` als YAML-Dateien verschoben. Du kannst eigene Muster hinzufügen.
  * **Regex-Muster müssen mit `regex_` beginnen.**
* Mehrere weitere Cloud-Anbieter hinzugefügt:
  * IBM Cloud Object Storage
  * Oracle Object Storage
  * Alibaba OSS
  * Backblaze B2
  * Linode Object Storage
  * Scaleway Object Storage
  * Vultr Object Storage
  * Cloudflare R2

### Update 2025/06/21

* AWS GovCloud-Unterstützung hinzugefügt.

### Update 2025/04/16

* Regex-Muster aktualisiert.
* Ausgabe für bessere Sichtbarkeit aktualisiert (Anzeige der ursprünglichen Domain für CNAMEs, der Client-IP und IP-Bereichsindikatoren).
* Automatisches Herunterladen von IP-Bereichen von AWS — jetzt werden auch diese überprüft!
* Option zum Hinzufügen eigener IP-Bereiche (manuelle Anpassung der Muster oder IP-Bereiche in der Klasse).

### Update 2025/04/14

* Regex-Unterstützung für **Google Cloud Storage**- und **Azure Blob Storage**-Buckets hinzugefügt.

---

## 🚀 Funktionen

* Läuft als DNS-Server auf Port 53 (UDP **und** TCP)
* Erkennt potenzielle Cloud-Speicher-Buckets in DNS-Anfragen:
  * **AWS S3** (virtuell gehosteter und Pfad-Stil, inklusive GovCloud)
  * **GCP-Buckets**
  * **Azure-Blob-Container**
  * **DigitalOcean Spaces**, **Wasabi**, **IBM COS**, **Oracle Object Storage**, **Alibaba OSS**, **Backblaze B2**, **Linode**, **Scaleway**, **Vultr**, **Cloudflare R2**
* Verfolgt **CNAME-Ketten** rekursiv (konfigurierbare Tiefenbegrenzung), um maskierte Cloud-Bucket-Links zu erkennen
* Markiert **potenzielle Subdomain-Übernahmen** — Cloud-Speicher-Muster, die NXDOMAIN zurückgeben
* Prüft aufgelöste IPs (sowohl A als auch AAAA) gegen bekannte **AWS S3- und Azure-Storage-IP-Bereiche**
* **TTL-bewusster Antwort-Cache** zur Reduzierung von Latenz und Upstream-Last während der Recon
* **Pro-IP-Ratenbegrenzung** zur Verhinderung von Missbrauch
* Protokolliert alle Ergebnisse auf der Konsole und in einer Datei
* Container-freundlich

---

## ⚙️ Funktionsweise

S3DNS lauscht auf **Port 53 (UDP und TCP)** auf DNS-Anfragen. Für jede Anfrage:

1. **Extrahiert die angefragte Domain**
2. **Prüft den Antwort-Cache** — wenn eine gültige zwischengespeicherte Antwort existiert, wird sie sofort zurückgegeben
3. **Leitet die Anfrage an einen echten DNS-Resolver weiter** (z. B. `1.1.1.1`) — über UDP für UDP-Clients, über TCP für TCP-Clients
4. **Gibt die gültige DNS-Antwort an den Client zurück**

Parallel dazu:

* **Prüft auf Cloud-Speicher-Bucket-Muster** (Regex und hartcodierte Hostnamen-Muster)
* **Prüft aufgelöste IPs gegen bekannte AWS S3- und Azure-Storage-Bereiche** (IPv4 und IPv6)
* **Verfolgt CNAME-Ketten** rekursiv bis zur konfigurierten Tiefe
* **Markiert NXDOMAIN-Treffer** bei gematchten Mustern als mögliche Subdomain-Übernahmekandidaten
* **Protokolliert alle Ergebnisse** auf der Konsole und in `s3dns.log`

⚡ Verwende dies als deinen DNS während der Recon, und es werden passiv Cloud-Buckets und Übernahmekandidaten für jede Domain angezeigt, die deine Tools oder dein Browser auflösen.

---

## 🧱 Voraussetzungen

Du benötigst nur eines der folgenden:
* Python **3.11+**
* Docker (optional, aber empfohlen)

---

## 🔧 Installation

*Nur erforderlich, wenn du es lokal mit Python ausführen möchtest*

### Repository klonen

```bash
git clone https://github.com/olizimmermann/s3dns.git
cd s3dns
```

### Abhängigkeiten installieren

(Die Verwendung einer virtuellen Umgebung wird empfohlen)

```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

---

## 🧪 Verwendung

### Mit Python ausführen

Port 53 erfordert erhöhte Rechte:

```bash
sudo python s3dns.py
```

*Wenn `sudo` ein fehlendes Modul meldet, versuche: `sudo venv/bin/python s3dns.py`*

* Wenn du das Image selbst baust, stelle sicher, dass es denselben Tag wie die Docker-Hub-Version erhält: `docker build -t ozimmermann/s3dns:latest .`

### Mit Docker

*Der einfachste Weg, mit S3DNS zu starten.*

```bash
docker pull ozimmermann/s3dns:latest
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --name "s3dns" \
  ozimmermann/s3dns:latest
```

### Mit Docker bauen und ausführen

```bash
docker build -t ozimmermann/s3dns:latest .
```
```bash
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --name "s3dns" \
  ozimmermann/s3dns:latest
```

Ergebnisse werden gespeichert:

* Im **Terminal**, und/oder
* In `./bucket_findings/`

### Fehlerbehebung

Wenn du S3DNS auf demselben Rechner verwendest, auf dem du die Analyse durchführst, kann es hilfreich sein, das `--network host`-Flag zu setzen:

```bash
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --network host \
  --name "s3dns" \
  ozimmermann/s3dns:latest
```

Da Port 53 erhöhte Rechte erfordert, benötigen einige Benutzer (z. B. Mac-Benutzer) möglicherweise `sudo`:

```bash
sudo docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  --name "s3dns" \
  ozimmermann/s3dns:latest
```

---

## 🌐 S3DNS in der Recon verwenden

Setze den **DNS-Resolver** deines Systems oder Tools auf deine S3DNS-Instanz.

> Während du dein Ziel durchsuchst oder fuzzst, analysiert S3DNS jede Domain und teilt dir mit, ob sie auf Folgendes aufgelöst wird:
>
> * Einen **AWS S3-Bucket**
> * Einen **GCP-Bucket**
> * Einen **Azure-Blob-Container**
> * Jeden der 13 anderen unterstützten Cloud-Speicheranbieter
>
> Es **verfolgt CNAMEs**, sodass es, wenn eine Domain auf `cdn.example.com` zeigt und diese wiederum auf ein Cloud-Bucket, dies ebenfalls erkannt wird.
>
> Es **markiert auch potenzielle Subdomain-Übernahmen** — wenn eine Domain einem Cloud-Speicher-Muster entspricht, das Ziel jedoch nicht existiert (NXDOMAIN), wird der hängende Eintrag als möglicher Übernahmekandidat hervorgehoben.

Verwende es passiv, während du eine Seite analysierst, um **offengelegte Buckets und Übernahmemöglichkeiten zu entdecken, ohne aktiv zu testen**.

---

## ⚙️ Konfiguration

Du kannst das Verhalten über Befehlszeilen-Flags, Umgebungsvariablen oder durch Ändern von `s3dns.py` anpassen.

Die Priorität für jede Option ist: **Befehlszeilen-Flag > Umgebungsvariable > interaktive Eingabeaufforderung / Standard.** Ohne Flags verhält es sich genau wie zuvor.

### Befehlszeilen-Flags

Führe `python s3dns.py -h` aus, um die vollständige Liste zu sehen:

| Flag | Entsprechende Umgebungsvariable | Beschreibung |
|---|---|---|
| `-h`, `--help` | – | Hilfe anzeigen und beenden |
| `--version` | – | Version anzeigen und beenden |
| `-d`, `--debug` | `DEBUG` | Ausführliche Debug-Ausgabe aktivieren |
| `-l`, `--listen IP` | `LOCAL_DNS_SERVER_IP` | Lokale Schnittstelle zum Lauschen |
| `-u`, `--upstream IP` | `REAL_DNS_SERVER_IP` | Upstream-DNS-Resolver zum Weiterleiten |
| `-b`, `--bucket-file PFAD` | `BUCKET_FILE` | Pfad zum Schreiben entdeckter Bucket-Domains |
| `--aws-ip-ranges` / `--no-aws-ip-ranges` | `AWS_IP_RANGES` | AWS S3-IP-Bereichsprüfungen ein-/ausschalten |
| `--azure-ip-ranges` / `--no-azure-ip-ranges` | `AZURE_IP_RANGES` | Azure Storage-IP-Bereichsprüfungen ein-/ausschalten |
| `--rate-limit N` | `RATE_LIMIT` | Max. DNS-Anfragen/s pro Client-IP (`0` = deaktiviert) |
| `--cache-size N` | `CACHE_SIZE` | Max. zwischengespeicherte DNS-Antworten (`0` = deaktiviert) |
| `--max-cname-depth N` | – | Maximale CNAME-Kettentiefe (Standard: 10) |

Beispiel:

```bash
sudo python s3dns.py -l 0.0.0.0 -u 1.1.1.1 --rate-limit 200 --no-azure-ip-ranges
```

### Umgebungsvariablen

| Variable | Standard | Beschreibung |
|---|---|---|
| `DEBUG` | `false` | Ausführliche Debug-Ausgabe aktivieren |
| `AWS_IP_RANGES` | `true` | AWS S3-IP-Bereichsprüfungen aktivieren |
| `AZURE_IP_RANGES` | `true` | Azure Storage-IP-Bereichsprüfungen aktivieren |
| `REAL_DNS_SERVER_IP` | `1.1.1.1` | Upstream-DNS-Resolver für die Weiterleitung von Anfragen |
| `LOCAL_DNS_SERVER_IP` | `0.0.0.0` | Lokale Schnittstelle zum Lauschen |
| `BUCKET_FILE` | `buckets.txt` | Pfad zum Schreiben entdeckter Bucket-Domains |
| `RATE_LIMIT` | `100` | Max. DNS-Anfragen pro Sekunde pro Client-IP (`0` = deaktiviert) |
| `CACHE_SIZE` | `1000` | Max. zwischengespeicherte DNS-Antworten (`0` = deaktiviert) |

#### ⚠️ Hinweis zu Azure-IP-Bereichen

Da Microsoft die IP-Bereiche für Azure Blob Storage nicht explizit benennt, verwendet S3DNS **alle öffentlich bereitgestellten Azure Storage-IP-Adressen**. Dies kann zu Fehlalarmen führen. Erwäge, diese Prüfung zu deaktivieren, falls Probleme auftreten:

```bash
AZURE_IP_RANGES=false
```

### Eigene Muster hinzufügen

Füge YAML-Dateien zum Verzeichnis `patterns/` hinzu. Dateien mit dem Präfix `regex_` werden als Regex-Muster behandelt; alle anderen als Teilzeichenfolgen-Suche.

---

### Debug-Modus

**Python:**

```bash
sudo su
export DEBUG=true
python s3dns.py
```

**Docker:**

```bash
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  -e "DEBUG=true" \
  --name "s3dns" \
  ozimmermann/s3dns:latest
```

Mehrere Umgebungsvariablen in Docker setzen:

```bash
docker run --rm -p 53:53/udp -p 53:53/tcp \
  -v "./bucket_findings/:/app/buckets/" \
  -e "LOCAL_DNS_SERVER_IP=0.0.0.0" \
  -e "REAL_DNS_SERVER_IP=1.1.1.1" \
  -e "RATE_LIMIT=200" \
  -e "CACHE_SIZE=2000" \
  --name "s3dns" \
  ozimmermann/s3dns:latest
```

---

## Beispielausgabe

![Beispielausgabe Docker](https://raw.githubusercontent.com/olizimmermann/s3dns/main/images/output.jpg)

---

## Mitwirken

Beiträge sind willkommen – neue Cloud-Anbieter-Muster, Fehlerbehebungen und Verbesserungen. Siehe [CONTRIBUTING.md](https://github.com/olizimmermann/s3dns/blob/main/CONTRIBUTING.md) für Richtlinien.

Musterdateien befinden sich in `patterns/`. Die Unterstützung für einen neuen Anbieter hinzuzufügen ist so einfach wie das Hinzufügen eines YAML-Eintrags – kein Python erforderlich.

---

## 📄 Lizenz

MIT-Lizenz – Frei verwendbar, verbesserbar und teilbar.

---

## ⚠️ Haftungsausschluss

Verwende es verantwortungsvoll. Scanne nur Domains, die dir **gehören** oder für die du **ausdrückliche Erlaubnis** zur Analyse hast.

Unbefugter Zugriff oder Testen kann illegal sein.
Tool herunterladen