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.

Cross-tenant impersonation Okta : la persistance par IdP

Comment un attaquant ajoute un IdP entrant à une organisation Okta pour se connecter en tant que n'importe qui, les logs qui le trahissent, et son retrait.

Publié le 6 min de lecture

TL;DR. Avec des droits d'administration, un attaquant peut ajouter un fournisseur d'identité qu'il contrôle comme IdP entrant de confiance, faire correspondre ses noms d'utilisateur à de vrais utilisateurs, puis se connecter en tant que ces utilisateurs depuis l'extérieur, sans leur mot de passe ni leur MFA. Dans le System Log, cherchez system.idp.lifecycle.create et system.idp.lifecycle.activate par un acteur inattendu, suivis de connexions user.authentication.auth_via_IDP via cet IdP. Désactiver l'IdP est urgent, mais capturez d'abord sa configuration et chaque utilisateur sous l'identité duquel il a permis de se connecter.

La technique

Okta peut faire confiance à des fournisseurs d'identité externes pour la connexion : l'IdP SAML d'un partenaire, une connexion sociale ou une autre organisation Okta. Cette fédération entrante est une fonctionnalité légitime. Entre les mains d'un attaquant disposant d'un accès administrateur, elle devient un passe-partout.

Okta Security a documenté ce schéma en 2023 sous le nom de cross-tenant impersonation. Après avoir pris le contrôle de comptes Super Administrator grâce à l'ingénierie sociale du helpdesk, l'acteur malveillant a configuré un second fournisseur d'identité, sous son contrôle, comme IdP « source » dans une relation de fédération entrante (parfois appelée Org2Org), et a modifié le nom d'utilisateur des cibles dans cet IdP source pour qu'il corresponde à de vrais utilisateurs de l'organisation victime. Résultat : du SSO vers les applications de la victime en tant que ces utilisateurs (Okta Security : Cross-Tenant Impersonation). Le même article précise que les comptes Super Administrator compromis ont servi à accorder des privilèges à d'autres comptes et, dans certains cas, à retirer l'exigence de second facteur des politiques d'authentification.

MITRE ATT&CK classe ce type de modification de confiance sous T1484.002, Domain or Tenant Policy Modification: Trust Modification.

Pourquoi c'est une persistance si efficace : réinitialiser les mots de passe et les facteurs des admins compromis n'y change rien. L'IdP continue de fonctionner jusqu'à ce que quelqu'un le supprime.

Ce que l'on voit dans le System Log

OrdreeventTypeActeurCibleÀ capturer
1user.session.access_admin_appadmin compromisAdmin ConsoleIP, ASN, session
2system.idp.lifecycle.createadmin compromisl'IdPnom, id, requestUri
3system.idp.lifecycle.activateadmin compromisl'IdPl'heure de mise en service
4system.idp.lifecycle.update, system.idp.key.createadmin compromisl'IdPmodifications ultérieures, nouvelles clés de signature
5user.authentication.auth_via_IDPutilisateur usurpél'IdPchaque utilisateur connecté ainsi
6user.session.startutilisateur usurpé—session créée par l'assertion
7user.authentication.ssoutilisateur usurpéapplicationsce qu'il a atteint

La liste des événements à surveiller publiée par Okta Security pour cette campagne comprend system.idp.lifecycle.create et user.authentication.auth_via_IDP (source). Les modifications des règles de routage et des réglages de liaison de comptes ou de provisioning just-in-time comptent aussi : elles déterminent en tant que quels utilisateurs un IdP peut connecter. Leurs noms d'événements exacts dépendent de la façon dont la modification a été faite ; examinez donc tout ce qu'a fait la session d'administration de l'attaquant, pas seulement les événements d'IdP.

Le nom ne vous aidera pas. Un attaquant donne à l'IdP un nom plausible (« Partner SSO », « Azure AD backup »). Ce qui le trahit, c'est qui l'a créé, d'où et quand, par rapport au reste de l'incident.

Comment l'analyseur le signale

RègleÉvénementsSévérité
persistence.idp_createdsystem.idp.lifecycle.create, system.idp.lifecycle.activateélevée
persistence.idp_modifiedsystem.idp.lifecycle.update, system.idp.key.create, system.idp.key.update, system.idp.lifecycle.read_client_secretmoyenne
app.sso_after_suspiciousSSO vers une application sensible par un utilisateur impliqué dans un constat élevé, dans les 24 hélevée

Un nouvel IdP est toujours signalé, car c'est assez rare dans la plupart des organisations pour qu'un humain confirme chacun. Combiné à une autre règle élevée (un octroi Super Administrator, une réinitialisation par le helpdesk suivie d'un enrôlement), il fait passer le verdict à Compromission probable. La démonstration sur l'exemple fictif montre un IdP « Partner SSO » créé depuis un VPS et utilisé pour se connecter en tant que compte de service.

Checklist d'enquête

  1. Inventoriez tous les IdP dans l'Admin Console (Security › Identity Providers) et comparez avec les événements system.idp.lifecycle.create de votre export. Un IdP de plus de 90 jours n'apparaîtra pas dans le journal ; interrogez son propriétaire.
  2. Pour chaque IdP suspect, capturez : les événements de création et d'activation, l'acteur, sa configuration (émetteur, certificat, correspondance des noms d'utilisateur, liaison de comptes et JIT) et les règles de routage qui pointent vers lui. Faites des captures ou un export avant de toucher quoi que ce soit.
  3. Listez chaque user.authentication.auth_via_IDP passé par lui, avec les utilisateurs cibles. Chacun est une identité usurpée dont il faut examiner les actions.
  4. Suivez chaque session usurpée : externalSessionId → cibles SSO → journaux des applications en aval. Si AWS ou Microsoft 365 ont été atteints, poursuivez avec AWS Forensics ou M365 Forensics.
  5. Cherchez les utilisateurs créés en JIT : les nouveaux utilisateurs provisionnés par l'IdP apparaissent comme des événements de cycle de vie autour de la première connexion.

Remédiation

  1. Désactivez puis supprimez l'IdP malveillant, après avoir capturé sa configuration.
  2. Revoyez les règles de routage des IdP et les réglages de liaison de comptes pour qu'aucun IdP externe ne puisse connecter des utilisateurs existants, sauf si c'est voulu et documenté.
  3. Supprimez les sessions de chaque utilisateur connecté via cet IdP, et révoquez leurs sessions dans les applications en aval.
  4. Retirez l'accès d'administration qui l'a rendu possible (voir rôles et jetons d'API).
  5. Restaurez toute politique de connexion ou de MFA affaiblie par l'attaquant.

En prévention, les recommandations d'Okta pour cette campagne incluent une authentification résistante au phishing pour les admins, la réauthentification lors des connexions d'administration, les Protected Actions pour les opérations sensibles, et des rôles d'admin personnalisés plutôt que des droits Super Administrator permanents (Okta Security). Une alerte sur system.idp.lifecycle.create dans votre SIEM ne coûte rien et se déclenche rarement.

Pour aller plus loin

Articles liés

Repérer dans le System Log Okta les octrois de rôles d'admin, jetons d'API, politiques affaiblies et accès du support, puis retirer la persistance laissée.
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.

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.