¿Qué es el secuestro de sesión?

Publicado: 2023-04-27

El secuestro de sesión es un tipo de ciberataque que los propietarios de sitios de WordPress deben conocer. También conocido como secuestro de sesión TCP, el secuestro de sesión hace que los atacantes parezcan usuarios registrados correctamente. El atacante se hace cargo de una sesión de usuario al obtener su ID de sesión sin el conocimiento o permiso válido del usuario. Después de que un atacante haya robado la ID de sesión de un usuario, puede hacerse pasar por el usuario objetivo. El atacante podrá hacer todo lo que el usuario autorizado puede hacer después de que el usuario autorizado inicie sesión en el mismo sistema.

Una de las peores cosas que pueden hacer los piratas informáticos con una sesión secuestrada es obtener acceso a una aplicación web o controles de servidor sin autenticación. Cuando un atacante secuestra la sesión de un usuario, no necesita autenticarse mientras la sesión esté activa. La aplicación que generó la sesión cree que es el usuario autenticado cuya sesión ha secuestrado.

En otras palabras, el hacker disfrutará del mismo acceso que el usuario al que ha comprometido. Dado que el usuario legítimo ya autenticó su sesión antes de que ocurriera el ataque, un secuestro exitoso le permite al atacante eludir por completo la autenticación.

En esta guía, profundizaremos en los detalles del secuestro de sesiones. Le mostraremos exactamente lo que debe hacer para evitar que le suceda a su sitio de WordPress.

¿Qué es exactamente una sesión?

Una sesión es simplemente una serie de interacciones entre puntos finales de comunicación que ocurren a lo largo de una sola conexión HTTP.

El Protocolo de transferencia de hipertexto (HTTP) es fundamental para la web. Es lo que le permite usar enlaces de hipertexto y cargar páginas web. HTTP también es un protocolo de capa de aplicación para pasar información entre dispositivos en una red.

Una característica clave de HTTP es que es "sin estado". Eso significa que no guarda ningún dato sobre los clientes (como usted y su navegador) que abren una sesión con un sitio web. Cada sesión es completamente nueva. HTTP no conserva datos sobre los usuarios de sus sesiones anteriores.

Lidiando con la apatridia

Las aplicaciones web como WordPress necesitan realizar un seguimiento del estado entre múltiples conexiones del mismo y diferentes usuarios. Necesita identificar la sesión de cada usuario, una vez que hayan iniciado sesión, potencialmente en más de un dispositivo o navegador.

Cuando un usuario inicia sesión en una aplicación como WordPress, el servidor crea una sesión. La sesión mantendrá el "estado" de la conexión para el usuario almacenando parámetros que son únicos para él. Las sesiones se mantienen activas en el servidor durante todo el período en que el usuario inicia sesión en la aplicación.

Una sesión finaliza cuando un usuario cierra sesión en el sistema o después de un período predefinido sin actividad. Cuando finaliza la sesión de un usuario, la aplicación debe eliminar sus datos de la memoria del servidor.

Identificadores de sesión

Los ID de sesión (o "claves" o "tokens") son los identificadores de sesión únicos. Por lo general, son largas cadenas alfanuméricas aleatorias que el servidor y el cliente se transmiten entre sí. La aplicación de autenticación normalmente almacena ID de sesión en URL, cookies o campos ocultos en páginas web.

Si bien los ID de sesión son útiles para mantener el estado en un sistema sin estado, también conllevan algunos riesgos potenciales para la seguridad. Por ejemplo, si entendemos los algoritmos que generan ID de sesión para una aplicación web, podemos generarlos nosotros mismos. Además, si la aplicación web no utiliza el cifrado SSL para cifrar HTTP como HTTPS, transmitirá los ID de sesión sin cifrar. En una red pública, cualquiera puede espiar conexiones sin cifrar y robar ID de sesión.

¿Cómo funciona exactamente el secuestro de sesiones en la práctica?

Un ataque de secuestro de sesión exitoso es extremadamente sigiloso. Por lo general, se realizan en redes muy ocupadas con muchas sesiones de comunicación activa.

Algunas de las formas más comunes de secuestro de sesión hacen uso de:

  • ID de token de sesión predecibles
  • Sesión de olfateo
  • Secuencia secundaria
  • Malware de hombre en el navegador
  • Secuencias de comandos entre sitios
  • fijación de sesión

Echemos un vistazo a cada uno de estos vectores de amenazas individualmente.

ID de token de sesión predecibles

Muchos servidores web usan algoritmos personalizados o patrones predefinidos para generar sus ID de sesión. Cuanto mayor sea la previsibilidad general de un token de sesión único, más débil será.

Y más fácil es para un hacker predecir.

Sesión de olfateo

El rastreo de sesiones es uno de los métodos más simples y básicos que usan los piratas informáticos para secuestrar sesiones en la capa de aplicación.

Un atacante utilizará un rastreador de paquetes, como Wireshark, o un proxy como OWASP Zed para capturar el tráfico de la red. Si este tráfico contiene identificaciones de sesión sin cifrar para conexiones entre clientes y un sitio web, las identificaciones pueden ser robadas. Los piratas informáticos pueden usar la identificación o el token válidos para obtener rápidamente acceso no autorizado al sitio y a las cuentas de sus usuarios.

Sesión Sidejacking

Un atacante puede usar el rastreo de paquetes para interceptar las cookies de sesión para los usuarios cuando inician sesión en un sitio. Si las páginas de inicio de sesión no están cifradas o se utiliza un cifrado débil, un ciberdelincuente puede secuestrar fácilmente las sesiones de los usuarios de esta manera.

Hombre en el navegador

En este ataque, el atacante tiene que infectar inicialmente la computadora o el navegador de la víctima con malware.

Este malware puede modificar de forma invisible la información de transacciones del navegador y crear transacciones sin que el usuario se dé cuenta. Las solicitudes del navegador dañado son iniciadas por el dispositivo físico de la víctima, por lo que se supone que son válidas.

Secuencias de comandos entre sitios

Un ciberdelincuente puede explotar las vulnerabilidades de la aplicación o del servidor para inyectar código arbitrario en las páginas web de un sitio. Esto hará que los navegadores de los visitantes ejecuten ese código cuando se cargue una página comprometida.

Cuando HTTP-only no está configurado en las cookies de sesión, es posible robar una clave de sesión a través de código inyectado. Esto les daría a los atacantes todo lo que necesitan para secuestrar una sesión de usuario.

Fijación de sesión

Esto utiliza una ID de sesión válida que aún no se ha autenticado. Usando la fijación de sesión, un atacante intentará engañar a un usuario para que se autentique con esta ID en particular.

Una vez que ocurre la autenticación, un atacante ahora tiene acceso completo a la computadora de la víctima.

La fijación de sesión explora una gran limitación en la forma en que la aplicación web administra una ID de sesión.

¿Qué obtiene un hacker del secuestro de sesión?

Cuando un pirata informático secuestra una sesión, puede hacer cualquier cosa que un usuario legítimo estuviera autorizado a hacer en esa sesión activa.

El secuestro de sesión más efectivo y dañino podría resultar en:

  • Cuentas bancarias comprometidas
  • Artículos de compras en línea no autorizados en línea
  • Robo de identidad
  • Robo de datos de sistemas internos de la empresa

¡No es bueno! Una sesión exitosa de secuestro de sesión puede causar mucho daño.

¿Cuáles son algunos ejemplos de secuestro de sesión?

En el otoño de 2012, dos investigadores de seguridad llamados Juliano Rizzo y Thai Duong anunciaron CRIME, un ataque que aprovecha una fuga de información dentro del índice de compresión de solicitudes TLS como canal secundario. Esto les permitió descifrar las solicitudes realizadas por el cliente al servidor.

A su vez, esto les permitió tomar la cookie de inicio de sesión de un usuario y secuestrar la sesión, haciéndose pasar por ellos en destinos en línea de alto valor, como sitios de comercio electrónico y bancos.

Esta demostración mostró cómo un pirata informático podría ejecutar este tipo de ataque para recuperar los encabezados de una solicitud HTTP.

CRIME funciona para descifrar las cookies HTTPS que establecen los sitios web para recordar a los usuarios autenticados mediante la fuerza bruta. El código de ataque obliga al navegador de la víctima a enviar solicitudes HTTPS especialmente diseñadas a un sitio web objetivo y analiza la variación en su longitud después de haber sido comprimidas para determinar el valor de la cookie de sesión de la víctima. Esto es posible porque SSL/TLS usa un algoritmo de compresión llamado DEFLATE, que elimina las cadenas duplicadas, como vimos anteriormente.

El código de ataque no puede leer la cookie de sesión incluida en las solicitudes debido a los mecanismos de seguridad del navegador. Sin embargo, puede controlar la ruta de cada nueva solicitud y puede insertar diferentes cadenas en un intento de hacer coincidir el valor de la cookie.

Los valores de las cookies de sesión pueden ser muy largos. Están construidos con letras mayúsculas y minúsculas y dígitos.

Como resultado, el código de ataque CRIME tiene que iniciar una gran cantidad de solicitudes para descifrarlos, lo que puede llevar varios minutos.

Prevención de secuestro de sesión

Es importante recordar que los atacantes pueden robar y reutilizar ID de sesión (u otros valores de cookies que son confidenciales) cuando se transmiten o almacenan de forma no segura. Si bien una protección del 100 % no es una garantía, el uso del cifrado es una defensa importante.

Cuando los usuarios se autentican, SSL y las cookies seguras deben ser obligatorias. Y cuando los usuarios autenticados visitan más de una página segura, se les debe obligar a usar HTTPS.

Más allá de eso, los propietarios de sitios de WordPress deben usar el complemento de seguridad iThemes Security Pro WordPress para la protección contra el secuestro de sesiones. La función Dispositivos de confianza integrada en iThemes Security Pro funcionará las 24 horas del día, los siete días de la semana, para ayudar a mantener su sitio a salvo de este peligroso ataque. Aprenda a configurarlo para los usuarios de su sitio.

Comprender y prevenir el secuestro de sesiones

Con la información de esta guía, sabe todo lo que necesita para proteger su sitio de WordPress del secuestro de sesión:

  1. Asegúrese de que su sitio esté completamente encriptado con SSL y obligará a los usuarios a permanecer en HTTPS.
  2. Descargue e instale el complemento iThemes Security Pro.

Al seguir estos sencillos pasos, protegerá su sitio contra el secuestro de sesión.