¿Cómo se reconoce un ataque en la red?
Un ataque deja rastro en el tráfico y en los registros. Puede ser una cadena que nadie escribiría a mano o una cantidad de intentos que ninguna persona haría. Reconocerlo es mirar esos rastros con dos ideas: la firma y la tasa.
Una gestoría ve en su registro mil intentos de contraseña fallidos en dos minutos, desde una sola dirección. Nadie escribe tan rápido.
Al final de esta lección
Nota
Puedo reconocer un ataque en el tráfico y en los registros.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Firma | un patrón conocido que delata un ataque | ../ |
| Tasa | cuántos eventos ocurren en un tiempo dado | |
| Fuerza bruta | probar muchas contraseñas hasta acertar | |
| Falso positivo | una alarma por algo que no es un ataque | |
| Registro | el archivo donde un servicio apunta lo que ocurre |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una firma es un patrón conocido
Muchos ataques repiten una huella reconocible. Una petición web con ../ intenta salir de la carpeta de la web y leer otros archivos. Una cadena como UNION SELECT aparece en un intento de inyección en una base de datos.
Un detector por firmas busca esos patrones. Acierta mucho con lo que ya conoce y no ve lo que es nuevo.
Ejemplo resuelto: firmas en un registro
| Qué buscas | Qué intenta el atacante | Dónde lo ves |
|---|---|---|
| ../ en la dirección pedida | Leer archivos fuera de la web | Registro del servidor web |
| UNION SELECT en un parámetro | Sacar datos de la base de datos | Registro del servidor web |
| Failed password para root | Adivinar la clave de administración | Registro de SSH |
| Un programa de escaneo en la cabecera | Preparar un ataque | Registro del servidor web |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Busca una firma en un registro de ejemplo
printf "GET /index.html\nGET /../../etc/passwd\nGET /precios.html\n" | grep -F "../"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
La tasa delata lo que ninguna persona haría
Otros ataques no tienen una cadena especial. Lo raro es la tasa: mil intentos en dos minutos, o un mismo origen que toca cien puertos en un segundo.
Un detector por tasa cuenta eventos por origen y por tiempo, y avisa cuando se pasa un umbral que tú eliges. Detecta ataques nuevos, a costa de algún aviso falso.
Ejemplo resuelto: contar intentos por dirección
| Origen | Intentos fallidos en 2 minutos | Umbral: 20 | ¿Alerta? |
|---|---|---|---|
| 203.0.113.50 | 1000 | Lo pasa de lejos | Sí |
| 198.51.100.7 | 2 | No lo alcanza | No |
| 192.0.2.20 | 22 | Lo pasa por poco | Sí, a revisar |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cuenta intentos por dirección de origen
printf "203.0.113.50 22\n203.0.113.50 23\n203.0.113.50 25\n198.51.100.7 443\n" | awk '{print $1}' | sort | uniq -cSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cuenta las contraseñas fallidas
printf "Failed password for root from 203.0.113.50\nAccepted password for ana from 198.51.100.7\nFailed password for root from 203.0.113.50\n" | grep -c "Failed password"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Qué cuentan esos dos Run
El primero separa cada línea en dos columnas, se queda con la primera y cuenta cuántas veces sale cada dirección. Imprime un 1 para 198.51.100.7 y un 3 para 203.0.113.50.
El segundo cuenta las líneas con «Failed password» y imprime 2. Dos fallos de una misma cuenta no son un ataque, pero mil sí.
Un escaneo toca muchos puertos
Un escaneo de puertos deja un rastro claro: una misma dirección de origen que toca muchos puertos distintos en poco tiempo. Una persona normal usa un puerto por servicio.
Para verlo, haz tú mismo un mini escaneo. Pruebas cinco puertos seguidos de la máquina lan, que es tu laboratorio privado.
Prueba cinco puertos seguidos de tu propia máquina
sudo ip netns exec lan nc -zv -w 1 127.0.0.1 78-82Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cómo se ve un escaneo desde dentro
La orden imprime cinco líneas, una por puerto. Cuatro dicen Connection refused y una dice succeeded!, la del puerto 80, que sirve la página de la máquina.
Un monitor de esa máquina vería cinco intentos de un mismo origen en un segundo. Es justo el patrón que busca un detector por tasa.
Un error frecuente
Advertencia
Mucha gente cree que una dirección con muchos fallos es siempre un atacante. Si todo un instituto sale a internet con una sola dirección, veinticinco alumnos que se equivocan de clave suman muchos fallos. Antes de bloquear, mira si detrás de la dirección hay mucha gente.
Tras detectar: avisar, limitar, revisar
Un aviso no es una sentencia. Primero se avisa a una persona con los datos: quién, a qué, cuántas veces y cuándo.
Si el ataque es claro, se limita la dirección durante un rato con una regla de cortafuegos, y se revisa después si fue un error. Bloquear para siempre rara vez compensa.