Détournement de session (Hijacking)

I. Concept d’une session de Hijacking


I.1 Définition

C’est le fait d’attendre que la victime se connecte sur une session, et tu prends le contrôle de cette dernière. Autrement dit, l’attaquant va prendre le contrôle d’une session de communication TCP entre deux machines.

En effet, un attaquant peut avoir accès à une communication en interceptant la session TCP sans problème, dans la mesure où l’authentification se fait uniquement à l’ouverture de la session.

Ainsi, l’attaquant pourra écouter la communication entre les deux entités pour voler des informations sensibles telles que des login et mot de passe, mener des actions frauduleuses, etc. Ce type d’attaque peut permettre à l’attaquant de mener aussi des attaques de type DoS ou autres sur la victime.

Malheureusement, la plupart des systèmes favorise la réussite de ce type d’attaque du fait que :

  • Il n’y a aucun verrouillage de compte pour les ID de sessions non valides ;
  • Le temps d’expiration de session est souvent indéfini ;
  • Les algorithmes qui génèrent les identifiants de sessions sont souvent faibles ou génèrent de petits identifiants ;
  • La plupart des machines utilisant TCP/IP sont vulnérables ;
  • La gestion des identifiants de session n’est pas sécurisé ;
  • La plupart des contremesures ne fonctionne pas à moins d’utiliser un cryptage.

I.2 Types de Détournement de session

On distingue deux (2) manières de Hijacking, à savoir :

I.2.1 Le Hijacking actif

Cela consiste à prendre directement le contrôle d’une session active.

Dans ce cas de figure, l’attaquant va cibler directement sa victime pour prendre possession de sa session active. Il va désactiver la cible et prendre sa place dans sa communication avec l’autre machine (le serveur en général).

Cette attaque peut permettre à l’attaquant de faire tout ce qu’il désire sur le réseau, notamment créer de faux identifiants de connexion pour avoir accès, sans piratage, sur l’ensemble du réseau, etc.

I.2.2 Le Hijacking passif

Cela consiste à surveiller le trafic réseau, le renifler pour intercepter d’éventuelles informations sensible, à savoir des mots de passe ou d’autres informations compromettantes.

Ces mots de passe pourront servir pour lancer des requêtes vers une cible (un serveur par exemple).

I.3 Différence entre Spoofing et Hijacking

Le Hijacking s’appuie sur l’établissement de la connexion par un utilisateur légitime. C’est à partir de là que l’attaquant va prendre le contrôle de la session TCP.

Par contre, le Spoofing consiste à l’attaquant d’usurper l’identité de cet utilisateur afin d’établir la connexion lui-même.

II. Le Détournement de session avec le modèle OSI


II.1 Détournement de session de niveau Application

Avec ce détournement la session va être volée ou un jeton valide va être prédit pour obtenir un accès non autorisé au serveur web.

On distingue différentes manières de réussir un détournement de niveau Application :

II.1.1 Reniflement de session

Cela consiste à renifler le réseau pour capturer un jeton de session valide ou un identifiant de session.

Ce jeton pourra être utilisé par l’attaquant pour obtenir un accès non autorisé sur le serveur web.

II.1.2 Jeton de session prévisible

Du fait que des algorithmes faibles sont souvent utilisés pour générer les identifiants de session, l’attaquant peut prédire les identifiants et les utiliser pour se faire passer pour un utilisateur légitime.

Il peut aussi analyser différentes sections pour déterminer la structure des identifiants, utiliser des outils de la Cryptanalyse ou collecter un grand nombre d’identifiants de session simultanées.

La plupart des serveurs Web utilisent des algorithmes personnalisés ou un modèle prédéfini pour générer des identifiants de session.

Pour facilement prédire un identifiant de session : http://www.heyhey.com/view/JBEX{12092019}{125530}, avec {12092019} la date et {125530} l’heure.

II.1.3 Attaque de type l’homme du milieu (Man in the middle)

Une fois la connexion établie, l’attaquant va s’introduire entre les deux systèmes pour intercepter les messages échangés.  Il va utiliser différentes techniques pour couper ma connexion entre le client et le serveur. De ce fait, les connexions seront du Client –> Attaquant et de l’Attaquant –> Serveur.

Ces messages interceptés peuvent être l’objet de modifications et l’attaquant peut y introduire des codes malveillants.

II.1.4 Attaque de type l’homme du Navigateur (Man in the browser)

L’objectif principal est de causer des pertes financières en manipulant des transactions bancaires qui se font souvent par Internet.

Cela se fait en installant un cheval de Troie qui va agir entre le navigateur et ses mécanismes de sécurité.

Voici les différentes étapes :

  1. Infecte avec le cheval de Troie.
  2. Le cheval de Troie installe le code malveillant (Extensions) et le sauvegarde dans la configuration du navigateur.
  3. Redémarre le navigateur.
  4. L’extension va créer un gestionnaire qui va contenir l’historique de toutes les visites sur la page web.
  5.  L’extension utilise un URL et le fait correspondre avec une liste de sites ciblées pour l’attaque.
  6. Se connecte en toute sécurité au site Web.
  7. Il enregistre un gestionnaire d’événements de bouton, lorsque le chargement d’un page spécifique est détecté pour un modèle donné, et le compare avec une liste de cibles.
  8. Lorsque l’utilisateur clique sur un bouton, l’extension utilise une interface DOM pour extraire toutes les données des formulaires et modifier les valeurs.
  9. Le navigateur envoie le formulaire et les données modifiées au serveur.
  10. Le serveur ne pourra pas faire la distinction entre les valeurs originales et celles modifiées.
  11. Après la transaction, un reçu est généré (valeurs originales).
  12. L’utilisateur va croire que la transaction originale a été reçue par le serveur sans aucune interception.

II.1.5 Attaque de type XSS (Cross Site Scripting)

L’attaquant va développer un petit script en JavaScript contenant ses intentions malveillantes. Ce script va être envoyé au client à travers un lien. Et si ce dernier clique sur le lien, l’attaquant pourra avoir accès, à son navigateur par exemple, et prendre le contrôle de ce dernier.

Il peut même prendre le contrôle sur de nombreuses applications sur la machine du client, le Webcam par exemple, en fonctions de ce qu’il a autorisé au script de faire.

II.1.6 Attaque de type falsification de requêtes intersites

Ce type d’attaque exploite la session active de la victime depuis un site de confiance en ajoutant un lien malveillant sur le site qui permettra de rediriger la victime vers un autre site compromettant afin de détourner sa session.

II.1.7 Attaque de type relecture de session

L’attaquant va renifler le trafic réseau et écouter les flux transitant entre le client et le serveur afin de capturer le jeton d’authentification entre ces deux.

II.1.8 Attaque de type fixation de session

L’attaquant va exploiter les vulnérabilités du serveur qui va permettre à l’utilisateur d’utiliser un SID fixé.

L’attaquant va inciter à la victime à utiliser un SID valide. Ce SID pourra être récupéré par l’attaquant à travers un argument dans un URL, un champ de formulaire dissimulé, dans un cookie, etc., pour s’authentifier lui-même à une session.

II.1.9 Attaque utilisant les serveurs Proxy

L’attaquant va leurrer la victime pour qu’il clique sur un faux lien afin qu’il soit redirigé vers le serveur de l’attaquant.

Ce serveur va se comporter comme un Proxy pour la victime e ce dernier va envoyer ses requêtes au serveur légitime.

Dans ce cas de figure, l’attaquant à détourner la session entre le client et le serveur légitime en se servant d’un serveur Proxy.

II.1.10 Attaque de type CRIME (Compression Ratio Info-leak Made Easy)

C’est le fait d’exploiter les vulnérabilités trouvées dans les compressions de données telles que TLS, SSL, HTTPS, SPDY, etc.

L’attaquant peut l’utiliser pour récupérer le contenu des cookies d’authentification secrète afin d’effectuer son détournement de session sur une application web.

II.1.11 Attaque interdite

C’est comme le Man In The Middle utilisé pour détourner les sessions HTTPS.

Il exploite la réutilisation de la cryptographie durant le Handshake TLS.

Après le détournement de session HTTPS, l’attaquant peut injecter un contenu malveillant qui va inciter la victime à divulguer ses informations bancaires (numéro de compte, mot de passe, etc.).

II.2 Détournement de session de niveau Réseau

Ce type de détournement dépend du détournement des protocoles transport et internet utilisés par les applications web dans la couche Application.

Il va laisser à l’attaquant de collecter quelques informations critiques qui seront utilisées dans une attaque de détournement de session de niveau application.

On en distingue différents types :

II.2.1 Détournement de session TCP/IP

Pour ce type d’attaque, il est nécessaire que l’attaquant et la victime soient sur le même réseau.

L’attaquant utilisera des paquets usurpés pour mener le détournement de session.

Il va faire tomber la connexion de la victime et prend sa place dans la communication.

II.2.2 Usurpation d’adresse IP : Paquets routes à la source

Pour avoir un accès non autorisé :

  1. l’attaquant va usurper l’adresse IP d’un hôte afin de pouvoir envoyer des paquets au serveur après avoir établi une session avec l’adresse usurpée.
  2. Une fois la session établie, l’attaquant injecte des paquets contrefaits avant que l’hôte ne réponde au serveur.
  3. Les paquets provenant de l’hôte usurpé vont être perdus, car le serveur a déjà établi un numéro de séquence, pour le paquet qu’il doit recevoir, avec l’attaquant. Donc si un paquet vient avec un autre numéro de séquence, il va l’ignorer.
  4. Les paquets de l’attaquant seront routés à la source à destination de l’adresse IP spécifiée par le pirate.

II.2.3 Détournement de session RST

Ce type de détournement consiste à injecter un paquet RST authentique en usurpant l’adresse IP source. L’attaquant va aussi prédire le numéro d’acquittement de ce paquet.

L’attaquant peut réinitialiser la connexion de la victime s’il utilise un numéro d’acquittement correct.

La victime va croire que c’est vraiment la source qui a envoyé le paquet RST, alors il va réinitialiser la connexion.

Il y a de nombreux outils qui pourront aider à faire ce type de détournement, parmi lesquels on peut citer : Packet crafting tool, Colasoft Packet Builder, TCP/IP analysis tool, tcpdump.

II.2.4 Détournement de session Blind

L’attaquant peut injecter les données malveillantes dans la session TCP interceptée même si le routage à la source est désactivé.

Il peut envoyer des requêtes mais ne peut pas voir les réponses.

II.2.5 Détournement de session UDP

Lorsque le détournement sera lancé, le serveur compromis (de l’attaquant) va répondre à la victime avec des requêtes UDP avant que le bon serveur ne réponde. L’attaquant va utiliser l’attaque MITM pour intercepter les réponses du serveur légitime et envoyer ses propres réponses falsifiées.

II.2.6 Man In The Middle, utilisant ICMP et ARP

On peut utiliser une interface pour renifler le réseau afin de détecter les paquets qui transitent entre le client et le serveur.

L’usurpation d’ARP consiste à berner l’hôte en diffusant la requête ARP et en modifiant ses tables ARP à travers des réponses ARP falsifiées.

Les paquets du serveur et de l’utilisateur sont routés à travers l’hôte du pirate.

Le protocole ICMP : c’est une extension d’IP qui permet d’envoyer des messages d’erreurs. L’attaquant peut l’utiliser pour envoyer des messages pour berner le client et le serveur.

Le protocole ARP : il est utilisé pour mapper les adresses de la couche réseau (adresses IP) aux adresses de la couche liaison de données (adresses MAC).

III. Protection et prévention contre le Détournement de session


III.1 Méthodes de protection standard

  1. Utiliser SSH
  2. Implémenter les fonctionnalités de déconnexion.
  3. Générer un Identifiant de session et n’accepter que les identifiants générés par le serveur.
  4. Crypter les données qui transitent sur le réseau et implémenter des mécanismes de défense en profondeur.
  5. Utiliser des chaines ou des nombres aléatoires longs comme clé de session.
  6. Utiliser des noms d’utilisateur et mots de passe différents pour vos comptes.
  7. Utiliser la fonction timeout() pour détruire les sessions expirées.
  8. Ne pas transporter un identifiant de session dans une chaine de requête.
  9. S’assurer que le logiciel de protection, coté client et coté serveur, est activé et à jour.
  10. Utiliser une authentification robuste ou un VPN Peer-to-Peer.
  11. Configurer les règles d’usurpation internes et externes appropriées sur les passerelles.
  12. Utiliser des IDS ou des surveillances ARP pour surveiller les caches ARP.
  13. Utiliser l’épinglage de clé publique http pour authentifier les serveurs web.
  14. Vérifier l’authenticité du site web en utilisant des serveurs notaires du réseau.

III.2 Méthodes de protection pour les développeurs Web

  1. Utiliser des clés de session avec des nombres aléatoires ou de longues chaines pour qu’elles soient difficiles à deviner.
  2. Régénérer l’identifiant après une connexion réussie pour prévenir les attaques de type Fixation.
  3. Crypter les données et les clés de session.
  4. Faire expirer la session très tôt.
  5. Prévenir l’espionnage au sein du réseau.
  6. Réduire les durées de vie des cookies.
  7. S’assurer d’utiliser http uniquement lorsque vous utilisez des cookies pour les identifiants de session.
  8. Implémenter une vérification continue des appareils pour identifier qui a établi la session.
  9. Vérifier la session en cours provenant de la même adresse IP et du même agent utilisateur.
  10. Ne pas créer de sessions pour des utilisateurs non vérifiés.

III.3 Méthodes de protection pour les utilisateurs

  1. Ne pas cliquer sur les liens.
  2. Utiliser des pare-feu.
  3. Restreindre les cookies.
  4. Vérifier la certification des sites (autorités de certification).
  5. Effacer l’historique, le contenu hors ligne, les cookies.
  6. Préférer HTTPS.
  7. Se déconnecter correctement.
  8. Ne pas enregistrer les mots de passe.

III.4 Approches de prévention contre le détournement de session

III.4.1 Jeton

Lorsqu’un utilisateur se connecte sur une application web, cette dernière génère un cookie contenant un identifiant de session appelé Jeton.

Ce jeton peut être utilisé pour prévenir le détournement de session.

III.4.2 IPSec

IPSec est un protocole conçu pour sécuriser les communications IP en authentifiant et en cryptant chaque paquet IP.

Il est largement déployé pour implémenter les réseaux VPN, accès utilisateur à distance via une connexion bas débit aux réseaux privés.

Il utilise deux services de sécurité différents, à savoir l’authentification et la confidentialité :

Authentication Header (AH) : fournit une authentification sur les données de l’expéditeur

Encapsulation Security Payload (ESP) : fournit une authentification et un cryptage.

III.4.3 HSTS (HTTP Strict Transport Security)

HSTS est une directive qui permet de mieux sécuriser les connexions HTTPS en utilisant le chiffrement. Il se paramètre au tout début de la conversation, à travers un entête.

III.4.4 HPKP (HTTP Public Key Pinning)

HPKP est une extension du protocole http qui permet de spécifier la clé publique lorsqu’un client accède pour la première fois au serveur web. De ce fait, il saura à quelle clé publique il faut faire confiance à l’avenir ; c’est ce qu’on appelle Trust on First Use (faire confiance au premier accès).

III.4.5 OUTILS DE PREVENTION CONTRE LE DETOURNEMENT DE SESSION :

CxSAST, FIDDLER

IV. Test de pénétration pour le Détournement


Étape 1 : Localiser la session

Étape 2 : L’identifiant de session est-il utilisé dans l’URL ? —————— (Oui) –> aller à l’étape 4, —————— (Non) –> aller à l’étape 3.

Étape 3 : Renifler le trafic réseau entre deux machines.

Étape 4 : La session est-elle cryptée ? —————— (Non) –> aller à l’étape 6, —————— (Oui) –> continuer.

Étape 5 : Interrompre ou utiliser un cheval de Troie pour effectuer le détournement de session.

Étape 6 : L’identifiant de session est-il récupéré ? ———> utiliser des outils d’automatisation pour détourner les sessions.

Étape 7 : L’identifiant de session est-il crypté ? —————— (Non) –> aller à l’étape 9.

Étape 8 : Craquer le cryptage de l’identification de session.

Étape 9 : Utiliser l’hameçonnage à travers les emails pour faire la fixation de session.

Étape 10 : Se connecter normalement avec une des machines.

Étape 11 : Collecter plusieurs identifiants de session.

Étape 12 : Prédire un nouvel identifiant de session.

Étape 13 : Relancer avec le nouvel identifiant de session.

Étape 14 : Connexion établie ? (Oui) –> aller à l’étape 16.

Étape 15 : Récupérer les identifiants de session par la méthode force brute.

Étape 16 : Documenter les résultats.

OUTILS POUR MENER UN DETOURNEMENT DE SESSION :

LogRhythm, Wireshark, BURP SUITE, OWASP ZAP. BETTERCAP, SSLSTRIP

MOBILES : DROIDSHEEP, DROIDSNIFF, FACENIFF.

Sont vulnérables au détournement de session :

TELNET, RLOGIN – SSH

FTP – SFTP, FTPS, MFT

HTTP – SSL

IP – IPsec

ANY REMOTE CONNECTION – VPN

SMB – SMB SIGNING

HUB NETWORK – Switch network