> For the complete documentation index, see [llms.txt](https://oliver-3.gitbook.io/redteam-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://oliver-3.gitbook.io/redteam-notes/recursos/ejptv2-notas/1.-reconocimiento.md).

# 1. Reconocimiento

La recopilación de información es la primera fase de cualquier test de penetración. El objetivo es obtener toda la información posible sobre el objetivo — tecnologías, infraestructura, servicios, usua

Esta fase se divide en dos partes:

**Recopilación pasiva:** recoger información sin interactuar directamente con el objetivo. Se usan fuentes públicas. El objetivo no sabe que lo estás investigando.

**Recopilación activa:** interactuar directamente con los sistemas del objetivo. Se hacen escaneos de puertos, enumeración de servicios, y sondeos de red. El objetivo podría detectar esta actividad.

La información que se recopila aquí determina los vectores de ataque que se usarán después. Un reconocimiento pobre lleva a intentos de explotación a ciegas. Un reconocimiento bueno lleva a ataques dirigidos con mayor probabilidad de éxito.

***

### Reconocimiento pasivo

***

#### Huella del sitio web

Lo primero que se hace al investigar un objetivo web es recopilar información básica usando un navegador y herramientas pasivas.

**robots.txt**

El archivo `robots.txt` le dice a los motores de búsqueda qué partes del sitio no deben indexar. Al ser un archivo público, expone directorios y rutas que el administrador prefiere que no aparezcan en buscadores. A veces revela paneles de administración, directorios de backups o plugins instalados.

```bash
curl http://target.com/robots.txt
```

**sitemap.xml**

Proporciona a los motores de búsqueda un mapa de la estructura del sitio. Para un pentester, revela la estructura completa sin necesidad de crawlear.

```bash
curl http://target.com/sitemap.xml
```

**Tecnologías del sitio**

Saber qué tecnologías usa el objetivo (CMS, framework, servidor web, lenguaje) ayuda a buscar vulnerabilidades específicas.

```bash
# whatweb — detecta CMS, frameworks, servidores, lenguajes, versiones
whatweb http://target.com
```

Extensiones de navegador alternativas: **Wappalyzer** y **BuiltWith**.

**Información del dominio**

```bash
# whois — registrante, fechas, servidores DNS, datos de contacto
whois target.com

# host — resolución DNS rápida (dominio → IP)
host target.com
```

**Netcraft** (searchdns.netcraft.com) complementa con historial de hosting, tecnologías y ranking.

***

#### Reconocimiento DNS

**Qué es DNS**

DNS (Domain Name System) traduce nombres de dominio legibles ([www.ejemplo.com](http://www.ejemplo.com)) en direcciones IP numéricas (192.0.2.1). Funciona como una agenda telefónica de internet.

**Tipos de registros DNS**

| Registro  | Qué almacena              | Por qué importa para pentesting |
| --------- | ------------------------- | ------------------------------- |
| **A**     | Dirección IPv4            | IP del servidor objetivo        |
| **AAAA**  | Dirección IPv6            | IP alternativa                  |
| **MX**    | Servidores de correo      | Infraestructura de email        |
| **NS**    | Nameservers               | Quién gestiona el DNS           |
| **SOA**   | Autoridad del dominio     | Email del administrador         |
| **TXT**   | Texto libre (SPF, DKIM)   | A veces contienen info sensible |
| **CNAME** | Alias de otro dominio     | Relaciones entre dominios       |
| **PTR**   | DNS reverso (IP → nombre) | Identificar hosts por IP        |

**Enumeración DNS**

```bash
# dnsrecon — enumeración completa de todos los registros
dnsrecon -d target.com

# dnsenum — similar, también intenta transferencia de zona
dnsenum target.com

# dig — consultas específicas
dig target.com ANY
dig target.com MX
dig target.com NS
dig target.com TXT
```

**dnsdumpster.com** muestra registros DNS y genera un mapa visual de la infraestructura.

**Zonas de transferencia DNS**

Una zona de transferencia (AXFR) es un mecanismo para que los servidores DNS repliquen sus registros entre sí. Si está mal configurado y permite transferencias a cualquiera, un atacante obtiene todos los registros DNS del dominio de una sola vez — incluyendo subdominios internos, servidores de desarrollo e IPs internas.

```bash
# Obtener nameservers
dig target.com NS

# Intentar transferencia contra cada nameserver
dig axfr @ns1.target.com target.com
```

***

#### Detección de WAF

Un WAF (Web Application Firewall) filtra y bloquea tráfico malicioso (SQLi, XSS, escaneos). Saber si hay WAF cambia la estrategia de ataque.

```bash
# wafw00f — detecta si hay WAF y lo identifica
wafw00f http://target.com

# Probar contra todos los WAFs conocidos
wafw00f http://target.com -a
```

Si hay WAF: la IP que resuelve el dominio probablemente es la del proxy, no la del servidor real. Los payloads van a ser filtrados.

Si no hay WAF: la IP obtenida es posiblemente la del servidor directamente.

***

#### Enumeración de subdominios

Los subdominios suelen exponer servicios internos: paneles de administración, APIs, entornos de desarrollo con menos protección.

```bash
# sublist3r — enumeración pasiva usando motores de búsqueda
sublist3r -d target.com
sublist3r -d target.com -t 50

# amass — más completo, múltiples fuentes
amass enum -passive -d target.com

# subfinder — alternativa rápida
subfinder -d target.com
```

***

#### Google Dorks

Operadores avanzados de búsqueda en Google para encontrar información expuesta.

| Dork                            | Qué encuentra                          |
| ------------------------------- | -------------------------------------- |
| `site:target.com`               | Todo el contenido indexado del dominio |
| `site:*.target.com`             | Subdominios indexados                  |
| `site:target.com intitle:admin` | Páginas con "admin" en el título       |
| `site:target.com filetype:pdf`  | Documentos PDF                         |
| `site:target.com filetype:sql`  | Archivos SQL expuestos                 |
| `site:target.com filetype:log`  | Archivos de log                        |
| `intitle:"index of"`            | Listado de directorios abiertos        |
| `inurl:passwd.txt`              | Archivos de contraseñas                |
| `inurl:wp-config.bak`           | Backups de configuración de WordPress  |
| `site:target.com inurl:login`   | Páginas de login                       |

Los dorks se combinan: `site:*.target.com intitle:admin filetype:php`

***

#### Email Harvesting

Recolectar emails asociados al dominio. Útil para phishing, enumeración de usuarios y verificación en filtraciones.

```bash
# theHarvester — recolecta emails, subdominios, IPs de fuentes públicas
theHarvester -d target.com -b google
theHarvester -d target.com -b linkedin
theHarvester -d target.com -b all
```

***

#### Credenciales filtradas

Con los emails obtenidos, verificar si aparecen en filtraciones de datos conocidas.

* **haveibeenpwned.com** — verifica si un email aparece en filtraciones públicas
* **dehashed.com** — búsqueda con más detalle (requiere cuenta)

Si un email aparece en una filtración, la contraseña asociada podría funcionar en los sistemas del objetivo si hay reutilización de credenciales.

***

### Reconocimiento activo

A partir de aquí se interactúa directamente con los sistemas. Genera tráfico y puede ser detectado.

***

#### Protocolos TCP y UDP

**TCP (Transmission Control Protocol)**

Protocolo **orientado a conexión** y **fiable**. Establece conexión antes de enviar datos y garantiza la entrega en orden.

**Three-Way Handshake**

TCP establece conexión mediante tres pasos:

**1. SYN** — El cliente envía un paquete SYN al servidor: "Quiero conectarme. Aquí está mi número de secuencia."

**2. SYN-ACK** — El servidor responde con SYN + ACK: "Recibí tu solicitud (ACK) y también quiero conectarme (SYN)."

**3. ACK** — El cliente confirma: "Entendido, conexión establecida."

Los escaneos de puertos se basan en este proceso. Un escaneo SYN (`-sS`) envía solo el primer paso y analiza la respuesta sin completar el handshake.

**UDP (User Datagram Protocol)**

Protocolo **sin conexión** y **no fiable**. Envía datos sin establecer conexión ni verificar entrega. Más rápido que TCP. Usado en DNS, VoIP, streaming, videojuegos.

Los escaneos UDP son más lentos porque no hay forma de saber con certeza si un puerto está abierto o si el paquete se perdió.

**Puertos comunes**

| Puerto | Servicio   | Protocolo |
| ------ | ---------- | --------- |
| 21     | FTP        | TCP       |
| 22     | SSH        | TCP       |
| 23     | Telnet     | TCP       |
| 25     | SMTP       | TCP       |
| 53     | DNS        | TCP/UDP   |
| 80     | HTTP       | TCP       |
| 110    | POP3       | TCP       |
| 135    | MSRPC      | TCP       |
| 139    | NetBIOS    | TCP       |
| 143    | IMAP       | TCP       |
| 443    | HTTPS      | TCP       |
| 445    | SMB        | TCP       |
| 1433   | MSSQL      | TCP       |
| 3306   | MySQL      | TCP       |
| 3389   | RDP        | TCP       |
| 5432   | PostgreSQL | TCP       |
| 5900   | VNC        | TCP       |
| 5985   | WinRM      | TCP       |
| 6379   | Redis      | TCP       |
| 8080   | HTTP Proxy | TCP       |

***

#### Descubrimiento de hosts

Identificar qué máquinas están activas antes de escanear puertos.

**Técnicas de descubrimiento:**

| Técnica      | Ventaja                                                                    | Desventaja                  |
| ------------ | -------------------------------------------------------------------------- | --------------------------- |
| Ping ICMP    | Rápido, ampliamente compatible                                             | Firewalls suelen bloquearlo |
| TCP SYN Ping | Más sigiloso, evade firewalls que permiten HTTP                            | Algunos hosts no responden  |
| TCP ACK Ping | Evade firewalls stateless                                                  | Menos fiable                |
| UDP Ping     | Funciona contra hosts que bloquean ICMP y TCP                              | Lento                       |
| ARP Ping     | El más fiable en red local (capa 2, no bloqueable por firewalls de capa 3) | Solo funciona en red local  |

**Ping Sweeps**

Un barrido de ping aplica estas técnicas a un rango completo de IPs:

1. Se define un rango (192.168.1.1 a 192.168.1.254)
2. Se envía un paquete a cada IP
3. Las que responden están activas

```bash
# ICMP (puede ser bloqueado)
nmap -sn 192.168.1.0/24

# ARP (red local, más fiable)
netdiscover -r 192.168.1.0/24
nmap -sn -PR 192.168.1.0/24

# TCP SYN ping (evade firewalls que bloquean ICMP)
nmap -sn -PS80,443 192.168.1.0/24

# TCP ACK ping
nmap -sn -PA80,443 192.168.1.0/24

# fping (más rápido para rangos grandes)
fping -a -g 192.168.1.0/24 2>/dev/null
```

***

#### Escaneo de puertos con Nmap

**Escaneos básicos**

```bash
# Top 1000 puertos
nmap 10.10.10.1

# Todos los puertos (1-65535)
nmap -p- 10.10.10.1

# Puertos específicos
nmap -p 21,22,80,443,445 10.10.10.1

# Detección de versión
nmap -sV 10.10.10.1

# Scripts + versiones
nmap -sC -sV 10.10.10.1

# Detección de SO
nmap -O 10.10.10.1

# Escaneo completo para CTFs
nmap -p- -T4 --min-rate=3000 -sC -sV 10.10.10.1 -oA nombre
```

**Tipos de escaneo**

| Flag  | Tipo            | Cómo funciona                                                | Cuándo usarlo                           |
| ----- | --------------- | ------------------------------------------------------------ | --------------------------------------- |
| `-sS` | SYN (half-open) | Envía SYN, analiza respuesta sin completar handshake         | Por defecto con root. Rápido y sigiloso |
| `-sT` | TCP connect     | Completa el three-way handshake                              | Sin root                                |
| `-sU` | UDP             | Envía paquetes UDP, espera timeout                           | Servicios UDP (DNS, SNMP)               |
| `-sA` | ACK             | Envía ACK, no determina si está abierto sino si hay firewall | Detectar reglas de firewall             |
| `-sN` | NULL            | Sin flags                                                    | Evasión de firewalls stateless          |
| `-sF` | FIN             | Flag FIN                                                     | Evasión de firewalls stateless          |
| `-sX` | Xmas            | Flags FIN+PSH+URG                                            | Evasión de firewalls stateless          |

**Velocidad**

| Flag           | Efecto                                          |
| -------------- | ----------------------------------------------- |
| `-T0`          | Paranoid — un paquete cada 5 minutos            |
| `-T1`          | Sneaky — uno cada 15 segundos                   |
| `-T2`          | Polite — uno cada 0.4 segundos                  |
| `-T3`          | Normal (default)                                |
| `-T4`          | Aggressive — rápido, para redes fiables         |
| `-T5`          | Insane — máxima velocidad, puede perder puertos |
| `--min-rate=N` | Mínimo de paquetes por segundo                  |

**Output**

```bash
nmap ... -oA nombre      # todos los formatos
nmap ... -oX nombre.xml  # XML (para Metasploit)
nmap ... -oN nombre.txt  # normal
nmap ... -oG nombre.gnmap # grepeable
```

***

#### Evasión de firewalls e IDS

```bash
# Fragmentar paquetes
nmap -f 10.10.10.1

# Datos aleatorios (confunde IDS)
nmap --data-length 200 10.10.10.1

# IPs señuelo (el escaneo parece venir de múltiples hosts)
nmap -D 10.10.10.2,10.10.10.3,ME 10.10.10.1

# Puerto origen específico (simular tráfico DNS o HTTP)
nmap -g 53 10.10.10.1

# Escaneo ACK (detectar reglas de firewall)
nmap -sA 10.10.10.1
```


---

# 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://oliver-3.gitbook.io/redteam-notes/recursos/ejptv2-notas/1.-reconocimiento.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.
