Skip to content

Cet outil n'est ni affilié à Okta, Inc., ni approuvé ou sponsorisé par elle. Okta est une marque d'Okta, Inc. Les autres noms sont des marques de leurs propriétaires respectifs.

Détournement de session Okta : repérer les cookies volés

Détecter un détournement de session Okta dans le System Log : un externalSessionId vu depuis plusieurs ASN ou navigateurs, itinérance, et bruit VPN ou mobile.

Publié le 6 min de lecture

TL;DR. Un cookie de session Okta volé permet à l'attaquant de sauter entièrement le mot de passe et la MFA : il n'y a donc aucun échec de connexion à trouver. Ce que l'on peut trouver, c'est une session utilisée depuis deux endroits : le même authenticationContext.externalSessionId associé à deux valeurs différentes de securityContext.asNumber, ou à deux user agents différents, en quelques heures. Ajoutez les événements security.session.detect_client_roaming d'Okta, puis écartez les VPN d'entreprise et les téléphones qui passent du Wi-Fi aux données mobiles avant de conclure au vol.

Comment les sessions sont volées

Après une connexion réussie, le navigateur détient un cookie de session. Quiconque présente ce cookie est l'utilisateur jusqu'à la fin de la session. Okta Security décrit les deux façons courantes dont les cookies quittent la machine de la victime : des logiciels malveillants de type infostealer qui extraient les cookies du navigateur, et des sites d'hameçonnage adversary-in-the-middle qui relaient la vraie connexion et capturent la session obtenue (Okta Security : se défendre contre le détournement de session). MITRE ATT&CK répertorie le vol sous T1539, Steal Web Session Cookie et la réutilisation sous T1550.004, Web Session Cookie.

Les artefacts de session fuient aussi par des canaux moins évidents. Lors de l'incident d'octobre 2023 touchant le système de support d'Okta, un acteur malveillant a accédé à des fichiers joints à des tickets ; certains étaient des fichiers HAR contenant des jetons de session, utilisés pour détourner les sessions de cinq clients (Okta Security : cause racine et remédiation). Nettoyer les fichiers HAR avant de les partager est une leçon pour tous les processus de support, pas seulement celui d'Okta.

Les champs qui identifient une session

ChampUsage
authenticationContext.externalSessionIdl'identifiant de session (externalSessionId) ; regroupez dessus
authenticationContext.rootSessionIdla racine de la session interactive ; Okta Security note que externalSessionId peut être régénéré après des événements du cycle de vie des facteurs alors que la racine persiste (article rootSessionId)
securityContext.asNumber, asOrgle réseau (ASN) d'où vient la requête
client.ipAddressla source exacte
client.userAgent.rawUserAgentnavigateur et système

L'idée clé : les requêtes légitimes de la victime et les requêtes rejouées par l'attaquant partagent un identifiant de session, mais diffèrent par le réseau et, en général, par le navigateur.

Les signaux, du plus fort au plus faible

SignalPourquoi c'est importantRègle de l'analyseurSévérité
Même session, 2 ASN ou plus en 12 hle cookie est utilisé depuis un autre réseausession.multi_asnélevée
Même session, 2 user agents ou plus en 12 hun autre navigateur détient le cookiesession.multi_user_agentmoyenne
security.session.detect_client_roamingOkta a lui-même signalé la session comme itinérantesession.roamingmoyenne
Activité de session depuis un hébergeur ou un anonymiseurles attaquants rejouent depuis des VPS et des proxysaccess.hosting_provider, access.anonymizermoyenne
SSO vers des applications sensibles depuis le nouveau réseaul'attaquant utilise ce qu'il a voléapp.sso_after_suspiciousélevée

Sur les organisations Identity Engine, cherchez aussi user.session.context.change (le contexte de la session a assez changé pour justifier une réévaluation des politiques) et policy.auth_reevaluate.fail, tous deux listés dans le catalogue des event types d'Okta. L'analyseur ne les utilise pas encore comme détections ; le tableau des événements les affiche.

Dérouler une alerte

Supposons que l'analyseur signale « Session utilisée depuis plusieurs réseaux » pour a.user :

  1. Ouvrez les preuves et triez par date. Où la session a-t-elle commencé ? Le user.session.start (et la MFA) devrait venir du réseau habituel de l'utilisateur. Les requêtes ultérieures depuis un second ASN sont le rejeu candidat.
  2. Caractérisez le second réseau. Un asOrg qui est un FAI résidentiel dans la ville de l'utilisateur, c'est probablement son propre téléphone ou son domicile. Un fournisseur cloud, un hébergeur de VPS, ou un pays où l'utilisateur n'est jamais allé, non.
  3. Vérifiez le user agent. La même chaîne de navigateur sur les deux réseaux suggère un utilisateur qui se déplace ; un système ou un navigateur différent sur le second réseau suggère une copie du cookie.
  4. Listez ce qu'a fait le second réseau. Cibles SSO, actions d'administration, enrôlement de facteur. Un attaquant qui a détourné une session enrôle souvent un facteur ou crée un jeton pour persister au-delà de la durée de vie de la session.
  5. Vérifiez la machine de l'utilisateur. Un vol de cookie par infostealer signifie que le poste est compromis ; réinitialiser le mot de passe Okta ne le nettoie pas.

Les faux positifs que vous rencontrerez

  • Des téléphones qui passent du Wi-Fi aux données mobiles. Deux ASN (le FAI du domicile et l'opérateur mobile) dans une session, même user agent. Très fréquent.
  • Un VPN d'entreprise connecté en cours de session. La session démarre sur le FAI du domicile et continue depuis la sortie du VPN. Si votre VPN sort par un fournisseur cloud, cela déclenche aussi la règle sur les hébergeurs.
  • Des proxys de sécurité et passerelles web qui sortent par leur propre ASN pour une partie du trafic seulement.
  • Des mises à jour du navigateur pendant une longue session modifient la chaîne du user agent.

C'est pourquoi la règle multi-ASN produit un constat élevé, pas critique. L'article sur le réglage explique comment les traiter ; en bref, connaissez les ASN de sortie de votre VPN et vos opérateurs mobiles, et vérifiez-les en premier.

Confinement

  1. Supprimez les sessions de l'utilisateur et révoquez ses jetons : cela invalide le cookie volé dans Okta.
  2. Révoquez les sessions dans les applications en aval atteintes par l'attaquant. Elles sont indépendantes de celles d'Okta.
  3. Considérez le poste comme compromis si un infostealer est plausible : réinstallez-le, puis réinitialisez tous les identifiants utilisés dessus.
  4. Réinitialisez mot de passe et facteurs si l'attaquant a aussi enrôlé un facteur ou si vous ne pouvez pas exclure un vol d'identifiants.

Prévention

Les recommandations d'Okta Security contre le rejeu de cookies incluent la liaison des sessions d'administration au réseau (IP ou ASN), la réauthentification pour les ressources sensibles, des authentificateurs résistants au phishing (qui neutralisent l'hameçonnage adversary-in-the-middle), des exigences de gestion des appareils et des durées de session plus courtes là où les données sont sensibles (Okta Security). Après l'incident des fichiers HAR, Okta a aussi présenté une liaison des sessions d'administration à l'emplacement réseau comme amélioration du produit (article sur la cause racine).

Pour aller plus loin

Articles liés

Pourquoi les détections Okta se trompent sur les VPN d'entreprise, les réseaux mobiles et le helpdesk, ce que l'analyseur ne voit pas, et comment vérifier.
Une intrusion Okta fictive lue événement par événement : reset par le helpdesk, facteur de l'attaquant, Super Admin, IdP malveillant, AWS, et les constats.
Détecter password spraying, force brute et credential stuffing sur Okta : échecs par IP et par utilisateur, événements ThreatInsight et le succès à rechercher.

Cet outil n'est ni affilié à Okta, Inc., ni approuvé ou sponsorisé par elle. Okta est une marque d'Okta, Inc. Les autres noms sont des marques de leurs propriétaires respectifs.