Redes

Protocolos de Aplicación y Servicios

HTTP/HTTPS y el handshake TLS, más un recorrido por los servicios que enumerarás una y otra vez en OSCP — SMB, SNMP, SMTP, FTP, SSH, RDP y WinRM.

4 min de lectura
Índice

HTTP: la superficie de ataque número uno

HTTP es un protocolo petición/respuesta de texto plano sobre TCP (puerto 80). El cliente pide, el servidor responde. Entenderlo es imprescindible porque la mayoría de vulnerabilidades del OSCP están en aplicaciones web.

PETICIÓN                                  RESPUESTA
GET /index.html HTTP/1.1                  HTTP/1.1 200 OK
Host: ejemplo.com                         Content-Type: text/html
User-Agent: curl/8.0                      Content-Length: 1256
Accept: */*                               Set-Cookie: session=abc123
                                          <blank line>
<blank line>                              <html>...</html>

Métodos y códigos de estado

MétodoUsoCódigoSignificado
GETPedir un recurso200OK
POSTEnviar datos301/302Redirección
PUTSubir/crear recurso401No autenticado
DELETEBorrar recurso403Prohibido
OPTIONSMétodos permitidos404No existe
HEADSolo cabeceras500Error del servidor

Las cabeceras filtran información: Server:, X-Powered-By: revelan tecnología y versiones; Set-Cookie revela el gestor de sesiones. Míralas siempre: curl -I http://objetivo (solo cabeceras) o con Burp Suite.

HTTPS y el handshake TLS

HTTPS es HTTP dentro de un túnel cifrado TLS (puerto 443). Antes de intercambiar HTTP, cliente y servidor negocian el cifrado por encima del handshake TCP que ya conoces:

[ handshake TCP: SYN → SYN/ACK → ACK ]      ← primero se abre la conexión (Lección TCP)

   Client Hello   → "soporto estas cifras y versiones TLS"
   Server Hello   ← "usaremos esta, y aquí está mi certificado"
   [ intercambio de claves ]
   Finished (ambos) → a partir de aquí, todo va cifrado

[ ahora sí: GET / HTTP/1.1 ... pero cifrado ]

El certificado TLS es una fuente de enumeración: su campo Subject Alternative Name (SAN) suele listar otros dominios y subdominios del objetivo. openssl s_client -connect objetivo:443 o mirar el certificado en el navegador te los revela gratis.

Servicios que enumerarás en (casi) cada máquina

Este es tu mapa de puertos-servicio para OSCP. Aprende el puerto, qué es y cómo se enumera:

ServicioPuerto(s)Qué esEnumeración típica
FTP21Transferencia de ficheroslogin anonymous, ftp, listar
SSH22Shell remota seguraversión, auth por clave, túneles
SMTP25Envío de correoVRFY/RCPT para enumerar usuarios
DNS53Resolución de nombresAXFR, subdominios (ver Lección DNS)
HTTP80Webfuzzing de rutas, vhosts, tecnología
POP3/IMAP110/143Lectura de correocredenciales, buzones
SMB139, 445Compartición Windowsshares, usuarios, null session
SNMP161/udpGestión de redcommunity strings (public)
HTTPS443Web cifradaigual que HTTP + certificado (SAN)
RDP3389Escritorio remoto Windowsacceso con credenciales
WinRM5985/5986Gestión remota Windowsevil-winrm con credenciales

SMB — el más rentable en Windows

SMB (puertos 139/445) comparte ficheros e impresoras en redes Windows. Es un pozo de vectores: shares accesibles, enumeración de usuarios, versiones vulnerables (EternalBlue).

nmap -p445 --script smb-os-discovery,smb-enum-shares 10.10.10.10
smbclient -L //10.10.10.10/ -N          # listar shares sin credenciales (null session)
smbclient //10.10.10.10/share -N        # conectar a un share
netexec smb 10.10.10.10 -u '' -p ''     # enumeración moderna (antes crackmapexec)

SNMP — el olvidado que regala credenciales

SNMP (161/UDP) gestiona dispositivos. Con la community string por defecto (public) suele filtrar procesos, usuarios, software e incluso credenciales.

snmpwalk -v2c -c public 10.10.10.10          # vuelca toda la MIB
onesixtyone -c comunidades.txt 10.10.10.10   # fuerza bruta de community

Metodología OSCP: para cada puerto abierto, pregunta tres cosas — ¿qué servicio y versión es? ¿acepto acceso anónimo/por defecto? ¿hay exploits conocidos para esa versión? Enumerar bien es el 80% del trabajo.

Práctica

Ejercicio 1. Con curl, obtén solo las cabeceras de respuesta de http://example.com e identifica qué servidor web corre.

Ver solución
curl -I http://example.com

Busca la cabecera Server: (p. ej. Server: nginx o Apache/2.4.41). También X-Powered-By: si aparece (revela lenguaje/framework). Esa versión es tu pista para buscar exploits conocidos.

Ejercicio 2. Una máquina tiene 445 abierto. Sin credenciales, ¿cómo compruebas si puedes listar sus carpetas compartidas y qué significa que lo permita?

Ver solución
smbclient -L //10.10.10.10/ -N          # -N = sin contraseña (null session)
netexec smb 10.10.10.10 -u '' -p '' --shares

Si lista los shares con sesión nula, el servidor permite acceso anónimo: es una mala configuración que puede darte lectura (o escritura) de ficheros sin autenticarte. Conéctate a los shares interesantes (smbclient //ip/share -N) y busca credenciales, configs o rutas.

Recursos