Saltar al contenido
Red Team

Contraseñas débiles

La contraseña no se adivina, se lee: cuentas de fábrica en el manual, paneles por HTTP y por qué probar una lista es caro y ruidoso.

35 min de lectura

Son las once de la noche de un jueves y el encargo de hoy es Radio Onda Norte, la emisora de la noche de las copias. No paran nunca —siempre hay algo en antena—, así que la ventana va de las 23:00 a las 03:00, cuando acaba el último directo. Y el contrato trae una línea que no estaba en los anteriores, subrayada por el cliente: no se toca lo que emite. Dejar una emisora fuera del aire es el daño que un auditor no puede causar, por mucho que encuentre.

Los dos primeros temas iban de mirar desde fuera: qué equipos hay, qué puertos, qué versiones. Hoy la auditoría entra en algo por primera vez —el panel del estudio— y el tema es cómo se entra de verdad, que casi nunca es como en las películas. La idea que lo resume: la contraseña no se adivina, se lee.

La contraseña no se adivina, se lee

El panel del estudio, donde se sube la parrilla y los programas, pide usuario y contraseña. La tentación es imaginar a alguien «descifrándola». Lo que pasa de verdad, casi siempre, es más aburrido: la contraseña está escrita en algún sitio. En un manual, en un correo de alta, en una pegatina bajo el teclado, en la documentación que el propio fabricante publica. Son las cuentas de fábrica: las que vienen puestas de serie, con la nota de «cámbiela en la primera entrada» que nadie cambió.

El cliente te entrega, con el encargo, el manual del panel. Y el manual dice:

el manual del panel (lo entrega el cliente)
auditor@pc-auditoria:~$ cat ~/encargo/manual-panel.txt
MANUAL DEL PANEL DEL ESTUDIO            Radio Onda Norte

El panel se abre en /estudio/ del servidor de la emisora.

Cuenta de fabrica (primera entrada):
usuario:     estudio
contrasena:  onda2019

IMPORTANTE: cambie esta contrasena en la primera entrada.

No hay que adivinar nada: la cuenta está ahí. Se prueba con curl -u usuario:contraseña, y el panel se abre:

curl 7.81 (captura)
auditor@pc-auditoria:~$ curl -sS -u estudio:onda2019 http://192.0.2.98/estudio/
<!doctype html>
<title>Panel del estudio</title>
<h1>Radio Onda Norte - panel</h1>
<p>Subir programa, parrilla, avisos. Marcador del panel: SQ{panel-por-defecto-…}</p>

Ese SQ{…} es la flag: el marcador que prueba que entraste. Como en los retos de Hack The Box, donde la auditoría gana acceso o lee algo que no debería, la evidencia no es una captura de pantalla que podrías falsear, es un marcador que solo está ahí dentro. Se pega en el tablero y queda demostrado.

Es el hallazgo crítico del encargo: con una contraseña que es pública se entra al panel entero desde Internet, sin nada en medio. La recomendación: cambiar la contraseña de fábrica en la primera entrada y, además, dejar el panel solo para la red del estudio y la VPN. Cambiarle la ruta al panel, quitar su enlace de la portada o poner una contraseña un poco más larga pero igual de conocida no cierran nada.

Ejercicio

La contraseña está escrita en el manual

El cliente te entrega el manual del panel en /home/auditor/encargo/manual-panel.txt. Léelo, saca la cuenta de fábrica y abre con ella el panel del estudio (http://192.0.2.98/estudio/). No hay que adivinar nada.

Preparando la máquina…

Una contraseña por HTTP viaja en claro

Hay un detalle en la orden de antes que merece una parada: el panel se abre por HTTP, no por HTTPS. Pídele sus cabeceras sin dar cuenta y mira por dónde contesta:

curl 7.81 (captura)
auditor@pc-auditoria:~$ curl -sS -D - http://192.0.2.98/estudio/
HTTP/1.1 401 Unauthorized
Server: nginx/1.18.0 (Ubuntu)
Content-Type: text/html
Content-Length: 188
WWW-Authenticate: Basic realm="Panel del estudio"

El 401 con WWW-Authenticate: Basic es el servidor diciendo «para entrar aquí hace falta cuenta». Y Basic quiere decir que, cuando la mandes, el usuario y la contraseña van pegados y en texto (codificados en base64, que no es cifrar: se deshace de memoria). Por HTTP eso viaja en claro: cualquiera que vea pasar el tráfico —en la misma wifi, en un router por el camino— se queda con la cuenta sin esfuerzo.

Pedir contraseña por HTTP es pedirla en voz alta. Lo que la protege no es que la pidas, es que el canal vaya cifrado (HTTPS): entonces lo que viaja va dentro del túnel y no se puede leer al vuelo.

Es un hallazgo de gravedad alta: a quien vea pasar el tráfico le basta eso para tener la cuenta. La recomendación es servir el panel solo por HTTPS y redirigir el HTTP al cifrado, para que la cuenta no viaje nunca en claro. Cifrar solo la portada, cambiar Basic por un formulario sin salir de HTTP o confiar en que la red del estudio es de fiar dejan la contraseña igual de expuesta.

Ejercicio

Pide contraseña, pero sin cifrar

Pídele al panel sus cabeceras sin dar cuenta (curl -D -). Fíjate en dos cosas: te contesta 401 pidiendo la contraseña, y lo hace por HTTP. Una cuenta por HTTP viaja en claro.

Preparando la máquina…

Probar una lista cuesta y se oye

¿Y si no hubiera manual? Entonces sí se podría probar una lista de contraseñas comunes contra el panel, una tras otra, hasta que una entre. Es lo que hace una herramienta como Hydra. Existe, y en una auditoría de verdad tiene su momento. Pero conviene saber lo que cuesta, porque casi nunca es el primer paso:

  • Es lento. Una lista de las de verdad tiene millones de combinaciones. Aunque el servidor no frene nada, mandar y esperar millones de intentos lleva su tiempo —y la ventana del encargo son cuatro horas—.
  • Se oye. Cada intento es una petición que queda en los registros del servidor. Un chorro de cientos de fallos seguidos es justo lo que el SOC del cliente está mirando: salta el aviso y, si insistes, te cortan el acceso. En la sala, el medidor de ruido se dispara con Hydra como con nada.
  • Muchas veces no hace falta. Si la contraseña estaba en el manual, la lista solo te confirma lo que ya sabías, habiendo hecho ruido para nada.

Lo que el informe de Hydra demuestra, en esta emisora, es que el panel no frena los intentos: no corta, no espera, no bloquea la cuenta tras unos fallos. Eso es un hallazgo de por sí —una contraseña sin nada que proteja los intentos es una contraseña que se puede probar entera—, de gravedad media: no abre nada por sí mismo, pero deja la puerta a quien insista. La recomendación es frenar los intentos (un límite por minuto y un bloqueo temporal tras varios fallos) y apuntar los fallos para verlos. Temporal, no para siempre: bloquear la cuenta para siempre al tercer fallo deja que cualquiera la deje fuera a propósito. Es la misma idea que el límite del SSH del tema 1: lo que se frena es el ritmo.

Lo que canta la cabecera del servidor

Lo mismo que en el tema anterior, y por eso va en corto: la cabecera Server de la respuesta dice la versión exacta del servidor web (nginx/1.18.0 (Ubuntu)). No abre nada por sí sola, pero le ahorra el trabajo a quien busque qué fallos tiene justo esa versión. Se apunta como hallazgo de baja gravedad, y la recomendación es tener el servidor al día y quitar el número de la cabecera.

Cuando la auditoría entra, la flag

Hasta ahora, la evidencia de un hallazgo era lo que contestó la máquina: una línea de nmap, una cabecera de curl. Cuando la auditoría entra —abre un panel, lee algo restringido, gana acceso a una cuenta—, esa evidencia es una flag: un marcador puesto donde solo llega quien ha entrado de verdad (SQ{…}). Pegarla en el tablero es la prueba de que llegaste, y no se puede falsear desde fuera porque no se ve desde fuera.

Es la misma idea de los CTF y de plataformas como Hack The Box: demostrar el acceso con el gesto justo —leer el marcador— y parar ahí. Un auditor entra para probar que se puede, lo documenta y no toca nada más; lo que haría alguien con malas intenciones después no es parte del trabajo ni de este juego.

En la sala del tema

Estás en el mismo puesto de la auditoría, de noche: la ventana va de las 23:00 a las 03:00. El alcance es el servidor de la emisora, 192.0.2.98, y de su bloque público 192.0.2.96/29 solo se puede barrer para ver quién vive. Excluido, como siempre, el router del proveedor (192.0.2.97). Y la cláusula de este cliente, bien presente: no se toca lo que emite; tirar la emisión sería la peor falta posible.

En el puesto, además del cuaderno, tienes el manual del panel: ahí está la cuenta de fábrica, que es por donde se entra. Y en el cajón, la herramienta de probar listas (Hydra), para cuando quieras ver —o el cliente te lo pida— qué pasa si se aporrea el panel: subirá el medidor de ruido, y con eso entenderás por qué leer el manual era mejor idea. Cada hallazgo va al tablero con su evidencia, su gravedad y su recomendación, y al final entregas el informe y te llevas la nota en estrellas.

Ejercicio

Lo que el servidor cuenta de sí mismo

Lee la cabecera Server del panel (curl -D -). El servidor canta su versión exacta sin que nadie le pregunte: eso no abre nada, pero le ahorra el trabajo a quien busque sus fallos.

Preparando la máquina…