¿Sabía que un pirata informático puede realizar transferencias bancarias o compras en línea en su nombre sin robar su información de registro?
Asociamos las cookies con el rastreo y los molestos anuncios en línea, pero también almacenan las consultas de búsqueda, permitiéndonos visitar sitios web sin introducir un nombre de usuario y una contraseña.
Sin embargo, si alguien intercepta la cookie, puede producirse un ciberataque catastrófico llamado secuestro de sesión, que puede poner en peligro sus datos confidenciales a manos de atacantes, y puede hacer mucho daño antes incluso de que usted sepa lo que ha ocurrido.
Descubramos qué es y cómo puede evitarlo
¿Qué es el secuestro de sesión?
En el secuestro de sesión, un atacante intercepta y se apodera de una sesión establecida entre un usuario y un host, como un servidor web, una sesión Telnet o cualquier otra conexión basada en TCP. Una sesión comienza una vez que usted se conecta a un sitio web o a una aplicación, por ejemplo, un sitio web de una red social.
Continúa mientras está dentro de la cuenta, comprobando su perfil o participando en un hilo de conversación, y termina cuando se desconecta del sistema. Pero, ¿cómo sabe el servidor web que cada solicitud que realiza procede realmente de usted?
Aquí es donde entran en juego las cookies. Tras iniciar sesión, usted envía sus credenciales al servidor web. Éste confirma quién es usted y le da un identificador de sesión mediante una cookie que se le adjuntará mientras dure la sesión. Por eso no cierra la sesión de una aplicación cada vez que visita el perfil de alguien y por eso la tienda en línea recuerda lo que ha puesto en su cesta de la compra aunque actualice la página.
Pero los atacantes pueden secuestrar la sesión si utilizan técnicas especiales de gestión de sesiones o roban su cookie. Así, pueden engañar al servidor web haciéndole creer que las peticiones proceden de usted, el usuario autorizado.
El fenómeno del secuestro de sesión se hizo famoso a principios de la década de 2000, pero sigue siendo uno de los métodos más utilizados por los piratas informáticos.
Un ejemplo reciente es el Grupo Lapsus$, que este año ha pasado a formar parte de la lista de los más buscados del FBI.
Tipos de secuestro de sesión
El secuestro de sesiones se puede dividir en dos categorías principales, dependiendo de lo que quiera el perpetrador.
Activo: En un ataque activo, el atacante se apodera de su sesión, tomando así la conexión del cliente legítimo al recurso. Dependiendo del sitio de la sesión, el hacker puede realizar compras en línea, cambiar contraseñas o recuperar cuentas. Un ejemplo común de ataque activo es un ataque de fuerza bruta, XSS o incluso DDoS.
Pasivo: En un ataque pasivo, el atacante no se apodera de la sesión ni la altera. En su lugar, vigilan silenciosamente el tráfico de datos entre su dispositivo y el servidor, recopilando toda la información sensible. Por lo general, la suplantación de IP y la inyección de malware se utilizan para llevar a cabo ataques pasivos.
¿Cómo funciona el secuestro de sesión?
HTTP es un protocolo sin estado, lo que significa que el servidor no tiene memoria de la operación del cliente. Cada nueva solicitud HTTP coincide con una nueva unidad de trabajo, o dicho de forma más sencilla, el servidor sirve páginas al cliente sin recordar las solicitudes anteriores de éste.
Sin embargo, cuando navegamos por la web, nos damos cuenta de que lo ideal es que las aplicaciones sepan quién es el cliente (¡incluso demasiado bien!). Gracias a esta «memoria» del servidor, » es posible crear modernas áreas reservadas de sitios web, bancos en línea, servicios de correo web, etc.
Para ello, nació un apéndice que hace que un protocolo sin estado como HTTP tenga estado: las cookies.
Sesiones con estado
Una vez iniciada la sesión, las aplicaciones web que utilizan la sesión con estado dejan caer una cookie de sesión. Esto significa que se basan en esta cookie para rastrear al cliente. Dentro de la cookie se guarda un código único que permite reconocer al cliente, por ejemplo
SESSIONID=ACF3D35F216AAEFC
Cualquiera que tenga el código o identificador de sesión único antes mencionado sería el cliente autenticado para el servidor. Si un atacante pudiera obtener este identificador, como se ve en la imagen inferior, podría explotar la sesión validada inicialmente para su víctima, ya sea husmeando una sesión legítima o incluso apoderándose de la sesión por completo. Este identificador suele estar incrustado en la URL, en el campo oculto de cualquier formulario o en las cookies.
Sesiones sin estado
Con la evolución de la web, han surgido soluciones para gestionar la «memoria» del servidor sin utilizar cookies de sesión. En una aplicación web en la que el frontend y el backend están bien separados y sólo hablan a través de API, la mejor solución podría ser un JWT (JSON Web Token), un token firmado que permite al frontend consumir las API proporcionadas por el backend.
Normalmente, el JWT se guarda en el sessionStorage del navegador, una zona de memoria que el cliente mantiene activa hasta que se cierra la pestaña. En consecuencia, al abrir una nueva pestaña se crea una nueva sesión (a diferencia de lo que ocurre con las cookies).
Robar el token de identificación del cliente permite robar la sesión del usuario y realizar así un ataque de secuestro de sesión. Pero, ¿cómo robar ese token?
Actualmente, los métodos más utilizados por los piratas informáticos son:
#1. Robo de sesión
Este método utiliza redes inseguras para averiguar su identificador de sesión. El atacante utiliza sniffing (un software especial) y suele dirigirse a redes Wi-Fi públicas o a sitios web sin certificado SSL, conocidos por su escasa seguridad.
#2. Fijación de sesión
La víctima utiliza el ID de sesión creado por el atacante. Puede hacerlo con un ataque de phishing (a través de un enlace malicioso) que «fija» su ID de sesión.
#3. Fuerza bruta
El método más lento e ineficaz. Durante este ataque, el hacker no roba sus cookies. En su lugar, intenta todas las combinaciones posibles para adivinar su ID de sesión.
#4. XSS o Cross-site Scripting
Un hacker aprovecha vulnerabilidades en sitios web o aplicaciones para inyectar código malicioso. Cuando un usuario visita el sitio, el script se activa, roba las cookies del usuario y las envía al atacante.
#5. Inyección de malware
El software malicioso puede realizar acciones no autorizadas en su dispositivo para robar información personal. También suele utilizarse para interceptar cookies y enviar información al atacante.
#6. Suplantación de IP
Un ciberdelincuente cambia la dirección IP de origen de su paquete para que parezca que procede de usted. Debido a la IP falsa, el servidor web piensa que es usted y la sesión queda secuestrada.
Ejemplos de secuestro de sesión
#1. Firesheep
Una extensión de Firefox (Firesheep) realizada por los investigadores de seguridad Erik Butler & Ian Gallagher en 2010 puso de relieve la importancia de HTTPS y los peligros de las redes WiFi sin cifrar.
Firesheep permitía a las personas que se encontraban en la misma red WiFi sin cifrar husmear la actividad no HTTPS de los demás. Utilizando esto, uno podía copiar la cookie de sesión y apoderarse de la cuenta en línea de otra persona.
Aunque se hizo para concienciar sobre la seguridad, puso de manifiesto la laguna que estaba a la espera de ser explotada y que podría tener consecuencias desastrosas para muchos usuarios.
Como reacción positiva, muchos sitios web, incluidos Facebook, Twitter (ahora X), etc., hicieron del HTTPS el protocolo de conexión por defecto.
#2. Secuestro de cuentas de YouTube
A lo largo de 2021, los YouTubers con un elevado número de suscriptores fueron el objetivo de esta campaña de robo de cookies.
Los creadores recibían correos electrónicos de phishing que les llevaban a peligrosas réplicas de sitios web legítimos. Algunos cayeron en la trampa y acabaron descargando malware en sus dispositivos, lo que ayudó a los autores a robar las cookies de sesión de sus cuentas de YouTube.
En última instancia, esto provocó que sus cuentas de YouTube fueran tomadas y utilizadas para fines ilícitos, como estafas con criptomonedas. Además, algunas cuentas fueron vendidas en mercados negros en línea por miles de dólares, dependiendo del número de suscriptores.
#3. FlyTrap
En 2021, FlyTrap apareció como un malware para Android que robaba sesiones de Facebook atrayendo a los usuarios para que iniciaran sesión en aplicaciones maliciosas utilizando sus credenciales de Facebook.
Las aplicaciones maliciosas disponibles en la tienda Google Play fueron retiradas desde entonces. Desplegaba tácticas de ingeniería social, como dar cupones, votar por su equipo de fútbol favorito, etc.
En última instancia, los usuarios iniciaban sesión a través de Facebook de forma legítima, pero dentro de un portal de vista web diseñado para secuestrar las cookies de sesión y la información personal. Todo iba a parar a los servidores de FlyTrap, que victimizó aproximadamente a 10K usuarios en más de 140 países.
¿Cómo prevenir el secuestro de sesión?
La posibilidad de que se produzca un secuestro de sesión suele depender de la seguridad de los sitios web o aplicaciones que utilice. Sin embargo, hay medidas que puede tomar para protegerse:
- Evite las redes Wi-Fi públicas, ya que los puntos de acceso gratuitos son ideales para los ciberdelincuentes. Suelen tener una seguridad deficiente y pueden ser suplantados fácilmente por los piratas informáticos. Por no mencionar que siempre están llenos de víctimas potenciales cuyo tráfico de datos se ve constantemente comprometido.
- Cualquier sitio que no utilice un certificado SSL le hace vulnerable, ya que no puede cifrar el tráfico. Compruebe si el sitio es seguro buscando un pequeño candado junto a la URL.
- Instale una aplicación antimalware para detectar y proteger su dispositivo de malware y ratas que puedan robar información personal.
- Evite descargar programas maliciosos utilizando las tiendas de aplicaciones o los sitios web oficiales para descargar aplicaciones.
- Si recibe un mensaje pidiéndole que haga clic en un enlace desconocido, no lo haga. Podría tratarse de un ataque de phishing que puede infectar su dispositivo y robar información personal.
El usuario puede hacer poco contra un ataque de secuestro de sesión. Pero, por el contrario, la aplicación puede darse cuenta de que un dispositivo diferente se ha conectado con el mismo identificador de sesión. Y basándose en ello, puede diseñar estrategias de mitigación como:
- Asociar a cada sesión alguna huella técnica o características del dispositivo conectado para detectar cambios en los parámetros registrados. Esta información debe guardarse en la cookie (para sesiones con estado) o en el JWT (para sesiones sin estado), absolutamente cifrada.
- Si la sesión está basada en cookies, elimine la cookie con el atributo HTTPOnly para hacerla inalcanzable en caso de ataque XSS.
- Configure un sistema de detección de intrusiones (IDS), un sistema de prevención de intrusiones (IPS) o una solución de supervisión de redes.
- Algunos servicios realizan comprobaciones secundarias de la identidad del usuario. Por ejemplo, un servidor web podría comprobar con cada solicitud que la dirección IP del usuario coincide con la última utilizada durante esa sesión. Sin embargo, esto no evita los ataques de alguien que comparta la misma dirección IP y podría ser frustrante para los usuarios cuya dirección IP puede cambiar durante una sesión de navegación.
- Otra posibilidad es que algunos servicios cambien el valor de la cookie con cada solicitud. Esto reduce drásticamente la ventana en la que puede operar un atacante y facilita la identificación si se ha producido un ataque, pero puede causar otros problemas técnicos.
- Utilice diferentes soluciones de autenticación multifactor (MFA) para cada sesión de usuario.
- Mantenga todos los sistemas al día con los últimos parches y actualizaciones de seguridad.
Palabras finales
El secuestro de sesión es un método mediante el cual un pirata informático puede comunicarse con un servidor haciéndose pasar por un usuario auténtico, utilizando el testigo de sesión o la cookie.
La frecuencia de los ataques de secuestro de sesión ha aumentado en los últimos tiempos, por lo que cada vez es más importante comprender este tipo de ataques y seguir medidas preventivas.
Sin embargo, al igual que la tecnología se desarrolla, los ataques también se vuelven más sofisticados; por lo tanto, es esencial crear estrategias activas de mitigación contra el secuestro de sesión.