Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
s3dns — Servidor DNS pasivo que detecta buckets de almacenamiento en la nube expuestos (AWS S3, GCP, Azure) resolviendo solicitudes DNS, rastreando cadenas CNAME y marcando posibles secuestros de subdominio durante el reconocimiento. | Kitploit
Herramientas/GitHubGitHub/olizimmermann/s3dns
OSINT (Inteligencia de Fuentes Abiertas)ReconocimientoAnálisis de VulnerabilidadesRecopilación de InformaciónPruebas de PenetraciónSeguridad en la NubeEnumeración de SubdominiosAnálisis de DNS
GitHubolizimmermann/s3dns

s3dns

Servidor DNS pasivo que detecta buckets de almacenamiento en la nube expuestos (AWS S3, GCP, Azure) resolviendo solicitudes DNS, rastreando cadenas CNAME y marcando posibles secuestros de subdominio durante el reconocimiento.

1291332hace 1 díaRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver RepositorioSitio web

S3DNS

s3dns es un servidor DNS ligero que ayuda a descubrir buckets de almacenamiento en la nube (AWS S3, Google Cloud Storage y Azure Blob) resolviendo solicitudes DNS, rastreando CNAMEs y coincidiendo con patrones conocidos de URLs de buckets.

Es un compañero útil para pentesters, cazadores de recompensas por bugs y analistas de seguridad en la nube que quieran detectar buckets en la nube expuestos durante el análisis de tráfico DNS.

Si S3DNS te ahorra tiempo en una sesión de reconocimiento, considera darle una ⭐️ — ayuda a que otros encuentren el proyecto.



🆕 Actualización 2026/03/06

  • Soporte TCP/53 — S3DNS ahora escucha tanto en UDP como en TCP puerto 53. Los clientes que reintentan vía TCP después de una respuesta UDP truncada se manejan correctamente, reenviando la consulta upstream por TCP para obtener la respuesta completa.
  • Buffer DNS más grande — Buffer de recepción UDP incrementado de 512 a 4096 bytes. Las opciones EDNS0 del cliente se transmiten sin cambios al resolutor upstream.
  • Caché de respuestas — Caché LRU basada en TTL para respuestas DNS compartida entre los caminos UDP y TCP. Reduce la carga upstream y la latencia durante sesiones activas de reconocimiento. Configurable mediante CACHE_SIZE (por defecto: 1000 entradas, poner 0 para deshabilitar).
  • Límite de tasa — Límite de solicitudes por IP de cliente para prevenir abusos. Configurable mediante RATE_LIMIT (por defecto: 100 req/s, poner 0 para deshabilitar).
  • Detección de subdominios tomables — Cuando un dominio coincide con un patrón de almacenamiento en la nube pero devuelve NXDOMAIN, S3DNS lo marca como un posible subdominio tomable. Esto indica un registro DNS colgante que apunta a un bucket no reclamado que un atacante podría registrar.
  • Verificación de rangos IP IPv6 — Los registros AAAA ahora también se resuelven y verifican contra rangos IP conocidos de almacenamiento en la nube. Los prefijos IPv6 de AWS S3 se cargan junto con los rangos IPv4.
  • Límite de profundidad CNAME — El seguimiento recursivo de cadenas CNAME ahora tiene un límite (por defecto: 10 saltos) para evitar bucles infinitos en registros maliciosos o cíclicos. Configurable mediante el parámetro max_cname_depth.

Actualización 2025/08/19

  • Añadidos rangos IP offline de AWS como archivo JSON.
  • Añadidos rangos IP offline de Azure Storage como archivo JSON.
  • Añadida la opción de deshabilitar la verificación de rangos IP para cada servicio usando:
    • AZURE_IP_RANGES=false o AWS_IP_RANGES=false (por defecto es true).
  • Movidos regex_patterns y patrones codificados a la carpeta patterns como archivos YAML. Puedes añadir tus propios patrones.
    • Los patrones regex deben comenzar con regex_.
  • Añadidos múltiples proveedores de nube más:
    • IBM Cloud Object Storage
    • Oracle Object Storage
    • Alibaba OSS
    • Backblaze B2
    • Linode Object Storage
    • Scaleway Object Storage
    • Vultr Object Storage
    • Cloudflare R2

Actualización 2025/06/21

  • Añadido soporte para AWS GovCloud.

Actualización 2025/04/16

  • Actualizados patrones regex.
  • Actualizada la salida para mejor visibilidad (mostrando el dominio original para CNAMEs, la IP del cliente e indicadores de rango IP).
  • Descarga automática de rangos IP de AWS — ¡ahora también verificándolos!
  • Opción para añadir tus propios rangos IP (ajustar manualmente los patrones o rangos IP en la clase).

Actualización 2025/04/14

  • Añadido soporte regex para buckets de Google Cloud Storage y Azure Blob Storage.

🚀 Características

  • Funciona como servidor DNS en el puerto 53 (UDP y TCP)
  • Detecta posibles buckets de almacenamiento en la nube en solicitudes DNS:
    • AWS S3 (estilo virtual-host y path, incluyendo GovCloud)
    • GCP Buckets
    • Azure Blob Containers
    • DigitalOcean Spaces, Wasabi, IBM COS, Oracle Object Storage, Alibaba OSS, Backblaze B2, Linode, Scaleway, Vultr, Cloudflare R2
  • Sigue cadenas CNAME de forma recursiva (límite de profundidad configurable) para detectar enlaces de buckets enmascarados
  • Marca posibles subdominios tomables — patrones de almacenamiento en la nube que devuelven NXDOMAIN
  • Verifica las IPs resueltas (tanto A como AAAA) contra rangos IP conocidos de AWS S3 y Azure Storage
  • Caché de respuestas con TTL para reducir latencia y carga upstream durante reconocimiento
  • Límite de tasa por IP para prevenir abusos
  • Registra todos los hallazgos en consola y archivo
  • Amigable con contenedores

⚙️ Cómo Funciona

S3DNS escucha en el puerto 53 (UDP y TCP) para consultas DNS. Por cada solicitud:

  1. Extrae el dominio solicitado
  2. Verifica la caché de respuestas — si existe una respuesta en caché válida, se devuelve inmediatamente
  3. Reenvía la solicitud a un resolutor DNS real (ej., 1.1.1.1) — por UDP para clientes UDP, por TCP para clientes TCP
  4. Devuelve la respuesta DNS válida al cliente

En paralelo, realiza lo siguiente:

  • Verifica patrones de buckets de almacenamiento en la nube (coincidencia regex y de hostname codificado)
  • Verifica las IPs resueltas contra rangos conocidos de AWS S3 y Azure Storage (IPv4 e IPv6)
  • Sigue cadenas CNAME recursivamente hasta la profundidad configurada
  • Marca aciertos NXDOMAIN en patrones coincidentes como posibles candidatos a toma de subdominios
  • Registra todos los hallazgos en consola y en s3dns.log

⚡ Úsalo como tu DNS durante el reconocimiento, y detectará pasivamente buckets en la nube y candidatos a toma de subdominios para cada dominio que tus herramientas o navegador resuelvan.


🧱 Prerrequisitos

Solo necesitarás una de las siguientes opciones:

  • Python 3.11+
  • Docker (opcional, pero recomendado)

🔧 Instalación

Solo necesario si quieres ejecutarlo localmente con Python

Clonar el Repositorio

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

Instalar Dependencias

(Se recomienda usar un entorno virtual)

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

🧪 Uso

Ejecutar con Python

El puerto 53 requiere privilegios elevados:

sudo python s3dns.py

Si sudo informa de un módulo faltante, intenta: sudo venv/bin/python s3dns.py

  • Si construyes la imagen tú mismo, asegúrate de etiquetarla igual que la versión de Docker Hub para consistencia: docker build -t ozimmermann/s3dns:latest .

Usar Docker

La forma más fácil de empezar con S3DNS.

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

Construir y Ejecutar con Docker

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

Los hallazgos se guardan:

  • En la terminal, y/o
  • En ./bucket_findings/

Solución de Problemas

Al usar S3DNS en la misma máquina donde realizas el análisis, puede ayudar configurar la bandera --network host:

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

Dado que el puerto 53 requiere privilegios elevados, algunos usuarios (ej., usuarios de Mac) pueden necesitar sudo:

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

🌐 Usando S3DNS en Reconocimiento

Configura el resolutor DNS de tu sistema o herramienta para que apunte a tu instancia de S3DNS.

Descargar herramienta