> For the complete documentation index, see [llms.txt](https://g4b0.gitbook.io/g4b0-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://g4b0.gitbook.io/g4b0-docs/documentation/cheatsheets/quickstart/dns.md).

# DNS

Descubrimiento de IP

```bash
dig +short hackthebox.com
```

Subdominios

```bash
dnsenum --enum inlanefreight.com -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -r
```

```bash
gobuster vhost -u http://inlanefreight.htb:81 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --append-domain
```

Certificates Transparency

```bash
curl -s "https://crt.sh/?q=facebook.com&output=json" | jq -r '.[] | select(.name_value | contains("dev")) | .name_value' | sort -u
```

&#x20;Zonas de Transferencia

```bash
dig axfr @nsztm1.digi.ninja zonetransfer.me
```

## Atacando DNS

* DNS traduce nombres de dominio (ej. `hackthebox.com`) a IPs numéricas (ej. `104.17.42.72`), operando por defecto en **UDP/53** con fallback a **TCP/53** para paquetes demasiado grandes
* DNS siempre fue diseñado para usar ambos puertos desde el inicio; la tendencia es que TCP/53 se use cada vez más
* Dado que prácticamente todas las aplicaciones de red dependen de DNS, los ataques contra servidores DNS son de los más prevalentes y significativos hoy en día

### Enumeración

DNS contiene información valiosa sobre la organización: cómo opera, qué servicios provee, y qué proveedores de terceros usa (incluyendo email). Las opciones `-sC` (scripts por defecto) y `-sV` (detección de versión) de Nmap permiten una enumeración inicial:

```bash
nmap -p53 -Pn -sV -sC 10.10.110.213
```

* `-p53` — Escanea solo el puerto 53
* `-Pn` — Omite el host discovery (útil si el target bloquea ICMP)
* `-sV` — Detecta la versión del servicio
* `-sC` — Ejecuta scripts NSE por defecto

**Output esperado:**

```
PORT    STATE  SERVICE     VERSION
53/tcp  open   domain      ISC BIND 9.11.3-1ubuntu1.2 (Ubuntu Linux)
```

### DNS Zone Transfer

Una *DNS zone* es una porción del namespace DNS administrada por una organización. Los servidores DNS usan *zone transfers* para replicar su base de datos a servidores secundarios. Si el servidor **no está configurado para restringir qué IPs pueden solicitar transferencias**, cualquiera puede pedir una copia completa del namespace sin autenticación. El protocolo no requiere credenciales.

> El servicio DNS normalmente corre en UDP, pero para zone transfers usa **TCP** para garantizar transmisión confiable de datos.

#### DIG — AXFR Zone Transfer

```bash
dig AXFR @ns1.inlanefreight.htb inlanefreight.htb
```

* `AXFR` — Tipo de query DNS que solicita una transferencia de zona completa
* `@ns1.inlanefreight.htb` — Servidor DNS al que se envía la query
* `inlanefreight.htb` — Dominio objetivo

**Output esperado:**

```
inlanefrieght.htb.         604800  IN  SOA   localhost. root.localhost.
inlanefrieght.htb.         604800  IN  A     10.129.110.22
admin.inlanefrieght.htb.   604800  IN  A     10.129.110.21
hr.inlanefrieght.htb.      604800  IN  A     10.129.110.25
support.inlanefrieght.htb. 604800  IN  A     10.129.110.28
;; XFR size: 8 records (messages 1, bytes 289)
```

Expone subdominios internos, IPs privadas y la estructura completa del namespace, ampliando significativamente la superficie de ataque.

#### Fierce — Enumeración de servidores DNS y prueba de zone transfer

```bash
fierce --domain zonetransfer.me
```

* `--domain` — Dominio objetivo a escanear

**Output esperado:** Lista completa de registros DNS si la zone transfer tiene éxito — registros A, MX, NS, TXT, SRV, PTR, HINFO, registros de geolocalización LOC, y más. Fierce también puede revelar subdominios de redes internas (`internal`) con sus propios nameservers.

* **Remediación:** Configurar el servidor DNS para restringir las zone transfers únicamente a los servidores secundarios autorizados mediante ACLs por IP.

### Domain Takeover & Subdomain Enumeration

El *domain takeover* consiste en registrar un dominio expirado para tomar control sobre activos de otra organización. El *subdomain takeover* ocurre cuando un registro CNAME apunta a un servicio de terceros (AWS, GitHub, Akamai, Fastly, CDNs) cuyo dominio expiró o fue eliminado. Cualquiera que registre ese dominio externo obtiene **control total** sobre el subdominio.

**Ejemplo de registro CNAME vulnerable:**

```
sub.target.com.   60   IN   CNAME   anotherdomain.com
```

Si `anotherdomain.com` expira y está disponible, quien lo registre controla `sub.target.com` hasta que el registro DNS sea actualizado.

#### Subfinder — Enumeración de subdominios via fuentes OSINT

```bash
./subfinder -d inlanefreight.com -v
```

* `-d` — Dominio objetivo
* `-v` — Modo verbose (muestra la fuente de cada subdominio: AlienVault, DNSdumpster, etc.)

**Output esperado:**

```
[alienvault] www.inlanefreight.com
[dnsdumpster] ns1.inlanefreight.com
[dnsdumpster] ns2.inlanefreight.com
support.inlanefreight.com
[INF] Found 4 subdomains for inlanefreight.com in 20 seconds 11 milliseconds
```

#### Subbrute — Brute-force de subdominios con resolvers personalizados

Especialmente útil para **pentests internos en hosts sin acceso a Internet**, o cuando es posible cargar herramientas desde un USB en equipos con configuraciones físicas inseguras. Permite usar resolvers DNS propios en lugar de los públicos.

```bash
git clone https://github.com/TheRook/subbrute.git >> /dev/null 2>&1
cd subbrute
echo "ns1.inlanefreight.com" > ./resolvers.txt
./subbrute.py inlanefreight.com -s ./names.txt -r ./resolvers.txt
```

* `-s ./names.txt` — Wordlist de nombres a probar por fuerza bruta
* `-r ./resolvers.txt` — Lista de resolvers DNS a usar (acepta servidores internos)

**Output esperado:**

```
Warning: Fewer than 16 resolvers per process, consider adding more nameservers to resolvers.txt.
inlanefreight.com
ns2.inlanefreight.com
www.inlanefreight.com
ms1.inlanefreight.com
support.inlanefreight.com
```

> Esperar a unos 5 minutos para ver si aparecen más subdominios, hay que darle tiempo a esta herramienta. Si aparece el warning sobre pocos resolvers, agrega más entradas a `resolvers.txt` para mejorar el rendimiento.

#### Host — Verificar registros CNAME y detectar subdomain takeover

```bash
host support.inlanefreight.com
```

**Output esperado:**

```
support.inlanefreight.com is an alias for inlanefreight.s3.amazonaws.com
```

Si al visitar el subdominio en el navegador se obtiene un error `NoSuchBucket`, el subdominio es potencialmente vulnerable — puede tomarse creando un bucket S3 con el mismo nombre del subdominio (`inlanefreight`).

> Referencia: El repositorio [**can-i-take-over-xyz**](https://github.com/EdOverflow/can-i-take-over-xyz) lista qué servicios de terceros son vulnerables a subdomain takeover y provee guías detalladas de evaluación y PoC.

* **Remediación:** Eliminar o actualizar inmediatamente los registros CNAME que apunten a recursos externos inexistentes o expirados. Implementar monitoreo continuo de subdominios y sus recursos asociados.

***

### DNS Spoofing / DNS Cache Poisoning

Consiste en alterar registros DNS legítimos con información falsa para redirigir tráfico hacia sitios fraudulentos. Vectores de ataque principales:

* **MITM:** Interceptar la comunicación entre el usuario y el servidor DNS para redirigirlo a un destino fraudulento
* **Explotación de vulnerabilidades en el servidor DNS:** Tomar control del servidor y modificar directamente sus registros

#### Local DNS Cache Poisoning con Ettercap

**Paso 1 — Editar el archivo de mapeo DNS:**

```bash
# /etc/ettercap/etter.dns
inlanefreight.com      A   192.168.225.110
*.inlanefreight.com    A   192.168.225.110
```

* `A` — Tipo de registro DNS (mapea dominio a IPv4)
* `192.168.225.110` — IP del atacante donde se aloja la página falsa
* `*.inlanefreight.com` — Wildcard que cubre todos los subdominios

**Paso 2 — Ejecutar el ataque en Ettercap (GUI):**

1. Escanear hosts: `Hosts > Scan for Hosts`
2. Agregar IP del target (ej. `192.168.152.129`) a **Target1**
3. Agregar IP del gateway (ej. `192.168.152.2`) a **Target2**
4. Activar el plugin: `Plugins > Manage Plugins > dns_spoof`

**También puede usarse Bettercap** como alternativa a Ettercap para realizar el mismo ataque MITM con DNS spoofing.

**Output esperado:**

Cualquier request al dominio `inlanefreight.com` desde el target `192.168.152.129` es redirigido a `192.168.225.110` (página falsa controlada por el atacante). El ping desde el target confirma el envenenamiento:

```cmd
C:\>ping inlanefreight.com

Pinging inlanefreight.com [192.168.225.110] with 32 bytes of data:
Reply from 192.168.225.110: bytes=32 time<1ms TTL=64
Reply from 192.168.225.110: bytes=32 time<1ms TTL=64
Reply from 192.168.225.110: bytes=32 time<1ms TTL=64
Reply from 192.168.225.110: bytes=32 time<1ms TTL=64

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)
```

* **Remediación:** Implementar **DNSSEC** para validar criptográficamente la autenticidad de respuestas DNS. Usar **DNS over HTTPS (DoH)** o **DNS over TLS (DoT)** para cifrar las consultas. Configurar IDS/IPS para detectar respuestas DNS anómalas en la red local.

## Últimas Vulnerabilidades DNS — Subdomain Takeover

#### Resumen

* En la web existen miles de subdominios que apuntan a servicios de terceros (AWS, GitHub, etc.) que ya no están activos, mostrando errores 404 o páginas vacías.
* Empresas grandes cancelan servicios de terceros pero **olvidan eliminar los registros DNS asociados**, ya que mantener una entrada DNS no genera costos adicionales.
* Plataformas de bug bounty como **HackerOne** listan explícitamente el Subdomain Takeover como categoría con recompensas.
* Existen herramientas en GitHub que automatizan el descubrimiento de subdominios vulnerables y la generación de Proof of Concepts (PoC).

**Estudio RedHuntLabs (2020):**

* 220 millones de dominios estudiados.
* **424,120 subdominios vulnerables** a subdomain takeover identificados.
* **62%** pertenecen al sector e-commerce.
* 33 servicios de terceros son propensos a esta vulnerabilidad.
* 139 dominios dentro del **Alexa Top 1000** afectados.
* Fuente: <https://redhuntlabs.com/blog/project-resonance-wave-1.html>

***

#### Concepto del Ataque

* Si un atacante encuentra un registro **CNAME** en el DNS de una empresa que apunta a un dominio/recurso de tercero que ya **no existe** (HTTP 404), ese subdominio puede ser tomado registrando ese recurso en el proveedor de terceros.
* Al registrar el recurso inexistente, el atacante se convierte en el **propietario efectivo** del subdominio, pudiendo gestionarlo a voluntad con un único cambio DNS.

**Principal vector de abuso — Phishing:**

* Los clientes ven algo como `customer-drive.inlanefreight.com` y confían en el dominio por pertenecer aparentemente a `inlanefreight.com`, sin saber que la página está bajo control del atacante.

**Otros ataques posibles vía Subdomain Takeover:**

* Robo de cookies.
* Cross-Site Request Forgery (**CSRF**).
* Abuso de **CORS**.
* Bypass de **Content Security Policy (CSP)**.

***

#### Aclaración de Conceptos

> **CNAME (Canonical Name Record):** Registro DNS que mapea un subdominio (alias) a otro dominio. Si el dominio destino deja de existir, el subdominio queda "huérfano" y vulnerable a ser reclamado por un tercero.

***

#### Fases del Ataque

**Fase 1 — Iniciación del Subdomain Takeover**

| Paso | Acción                                                                                                                                                                           | Categoría   |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| 1    | Identificar el subdominio en desuso que ya no apunta a un recurso activo.                                                                                                        | Source      |
| 2    | Registrar el recurso en el proveedor de terceros (ej. bucket S3, página de GitHub Pages) y enlazarlo a infraestructura propia.                                                   | Process     |
| 3    | Los privilegios sobre el dominio principal y su DNS siguen siendo del dueño legítimo; el proveedor de terceros **no verifica** si el subdominio debería ser accesible por otros. | Privileges  |
| 4    | El servidor del atacante se convierte en el destino al que apunta el subdominio.                                                                                                 | Destination |

**Fase 2 — Activación del Forwarding**

| Paso | Acción                                                                                                                                                                                         | Categoría   |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| 5    | Una víctima ingresa la URL del subdominio; el registro CNAME desactualizado actúa como fuente.                                                                                                 | Source      |
| 6    | El servidor DNS consulta su lista, encuentra el registro y redirige al usuario al subdominio controlado por el atacante.                                                                       | Process     |
| 7    | Solo los administradores del dominio tienen privilegios para modificar los registros DNS; como el subdominio está en la lista, el servidor DNS lo considera confiable y realiza el forwarding. | Privileges  |
| 8    | La víctima recibe la IP del servidor del atacante y es redirigida.                                                                                                                             | Destination |

***

#### Mitigación

* **Remediación:** Auditar periódicamente todos los registros DNS activos y **eliminar inmediatamente** cualquier registro CNAME que apunte a recursos de terceros que ya no estén en uso o que devuelvan errores. Implementar procesos de offboarding que incluyan la limpieza de registros DNS como paso obligatorio al cancelar servicios externos.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://g4b0.gitbook.io/g4b0-docs/documentation/cheatsheets/quickstart/dns.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
