En cybersécurité, l'Account Hijacking, également appelé Account Takeover ou ATO, désigne la prise de contrôle frauduleuse d'un compte utilisateur par une personne non autorisée. Cette compromission peut concerner un compte de messagerie, un réseau social, une plateforme bancaire, un site e-commerce, un système d'administration ou une application professionnelle. L'attaquant cherche à obtenir un accès lui permettant d'utiliser le compte à la place de son propriétaire légitime, parfois sans que celui-ci s'en aperçoive immédiatement.
1. À propos de l'Account Hijacking en cybersécurité
L'Account Hijacking est une forme de compromission dans laquelle un individu malveillant obtient le contrôle d'un compte appartenant à un autre utilisateur.
Cette prise de contrôle peut résulter du vol d'un mot de passe, de l'exploitation d'une session active, d'une attaque d'ingénierie sociale ou d'une faiblesse dans les mécanismes d'authentification et de récupération de compte.
Qu'est-ce qu'un compte utilisateur ?
Un compte utilisateur représente une identité numérique permettant d'accéder à un service ou à une application.
Il peut être associé à plusieurs éléments :
- Un identifiant, comme une adresse e-mail ou un nom d'utilisateur.
- Un mot de passe ou un autre mécanisme d'authentification.
- Des permissions définissant les ressources accessibles.
- Des sessions actives permettant de conserver une connexion.
- Des facteurs d'authentification supplémentaires.
- Des informations personnelles et des paramètres de récupération.
Objectifs des attaquants
La prise de contrôle d'un compte peut poursuivre plusieurs objectifs :
- Voler des informations personnelles ou professionnelles.
- Accéder à des documents confidentiels.
- Effectuer des opérations frauduleuses.
- Usurper l'identité du propriétaire.
- Envoyer des messages frauduleux à ses contacts.
- Modifier les paramètres de sécurité du compte.
- Accéder à d'autres services liés au compte compromis.
- Exploiter des privilèges administratifs.
Exemple simple
Un utilisateur possède un compte de messagerie électronique protégé par un mot de passe faible et réutilisé sur plusieurs sites.
Si ce mot de passe est compromis, un attaquant peut tenter de se connecter à la messagerie.
En cas de réussite, il peut consulter les messages, modifier certains paramètres et éventuellement utiliser les fonctions de récupération d'autres comptes.
Account Hijacking et Account Takeover
Les expressions Account Hijacking et Account Takeover sont généralement utilisées pour désigner une prise de contrôle non autorisée d'un compte.
Le terme Account Takeover est particulièrement fréquent dans les domaines de la fraude numérique, du commerce électronique et de la protection des identités.
Différence entre Account Hijacking et Identity Theft
L'Identity Theft, ou vol d'identité, consiste à utiliser frauduleusement des informations permettant d'usurper l'identité d'une personne.
L'Account Hijacking concerne plus précisément la compromission d'un compte existant.
Les deux phénomènes peuvent être associés, mais ne sont pas identiques.
Différence entre Account Hijacking et Session Hijacking
Le Session Hijacking consiste à prendre le contrôle d'une session authentifiée, par exemple en exploitant un jeton de session compromis.
Il constitue l'une des voies possibles vers la prise de contrôle d'un compte, mais un Account Hijacking peut également résulter d'autres techniques.
2. Les principales techniques de prise de contrôle d'un compte
Les attaquants peuvent utiliser différentes méthodes pour compromettre un compte utilisateur. Certaines exploitent des erreurs humaines, tandis que d'autres ciblent les mécanismes techniques de sécurité.
Phishing
Le Phishing, ou hameçonnage, consiste à tromper une personne pour obtenir des informations sensibles ou l'inciter à effectuer une action dangereuse.
Un message frauduleux peut diriger l'utilisateur vers une fausse page de connexion imitant un service légitime.
Si la victime saisit ses identifiants, ceux-ci peuvent être récupérés par l'attaquant.
Spear Phishing
Le Spear Phishing est une forme de phishing ciblant une personne ou une organisation particulière.
Le message peut utiliser des informations contextuelles pour paraître crédible.
Credential Stuffing
Le Credential Stuffing consiste à tenter d'utiliser des couples identifiant-mot de passe précédemment compromis sur d'autres services.
Cette technique exploite principalement la réutilisation des mots de passe.
Attaque par force brute
Une attaque par force brute consiste à essayer de nombreuses combinaisons de mots de passe afin de trouver une valeur valide.
Les mécanismes de limitation de débit et de détection des tentatives répétées permettent de réduire ce risque.
Password Spraying
Le Password Spraying consiste à essayer un nombre limité de mots de passe courants sur plusieurs comptes.
Cette technique peut chercher à éviter certains mécanismes de verrouillage déclenchés par de nombreux échecs sur un même compte.
Session Hijacking
Le détournement de session peut permettre à un attaquant d'utiliser une session déjà authentifiée.
La protection des cookies, des jetons et des communications constitue un élément important de la prévention.
Malware et logiciels espions
Un malware peut compromettre un appareil et permettre le vol de certaines informations d'authentification.
Les infostealers sont notamment conçus pour rechercher et dérober différents types d'informations sensibles.
SIM Swapping
Le SIM Swapping consiste à obtenir frauduleusement le transfert d'un numéro de téléphone vers une autre carte SIM ou un autre profil mobile.
Cette attaque peut compromettre certains mécanismes d'authentification ou de récupération reposant sur les SMS.
Exploitation des mécanismes de récupération
Une procédure de récupération de compte insuffisamment sécurisée peut permettre une prise de contrôle frauduleuse.
Les liens de réinitialisation, les codes de récupération et les adresses e-mail secondaires doivent être protégés.
Vol de jetons d'authentification
Certains systèmes utilisent des jetons d'accès pour représenter une session ou une autorisation.
Un jeton compromis peut permettre des actions non autorisées selon sa portée, sa durée de validité et les contrôles appliqués.
Applications tierces malveillantes
Une application tierce peut demander des permissions excessives sur un compte.
Dans certains scénarios, un utilisateur peut autoriser une application frauduleuse à accéder à des données ou à réaliser des actions en son nom.
Tableau comparatif
| Technique | Principe | Mesure de protection |
|---|---|---|
| Phishing | Tromper l'utilisateur pour obtenir des identifiants. | Passkeys, MFA résistante au phishing, sensibilisation. |
| Credential Stuffing | Réutiliser des identifiants compromis. | Mots de passe uniques et surveillance. |
| Force brute | Multiplier les tentatives de connexion. | Limitation de débit et détection. |
| Password Spraying | Tester quelques mots de passe sur plusieurs comptes. | MFA et détection globale. |
| Session Hijacking | Exploiter une session compromise. | Protection des jetons et des sessions. |
| Malware | Voler des informations depuis un appareil. | Protection des terminaux et mises à jour. |
| SIM Swapping | Détourner un numéro mobile. | Facteurs d'authentification non fondés sur les SMS. |
| Récupération frauduleuse | Abuser d'une procédure de réinitialisation. | Contrôles de récupération renforcés. |
3. Déroulement, conséquences et signes d'une compromission
Une prise de contrôle de compte peut suivre plusieurs étapes. Leur présence et leur ordre dépendent de la technique utilisée.
Étape 1 : identification du compte ciblé
L'attaquant identifie un compte susceptible de présenter un intérêt, par exemple une messagerie, un compte professionnel ou une interface administrative.
Étape 2 : recherche d'une faiblesse
Il cherche à exploiter une faiblesse humaine ou technique, comme un mot de passe réutilisé, une session compromise ou une procédure de récupération insuffisamment protégée.
Étape 3 : obtention d'un accès non autorisé
L'attaquant parvient à utiliser des identifiants, une session ou un mécanisme de récupération pour accéder au compte.
Étape 4 : utilisation frauduleuse
Le compte compromis peut être utilisé pour consulter des informations, envoyer des messages, effectuer des transactions ou accéder à d'autres ressources.
Étape 5 : tentative de maintien de l'accès
Dans certains incidents, l'attaquant cherche à conserver son accès en modifiant des paramètres de récupération, en ajoutant un mécanisme d'authentification ou en conservant des sessions actives.
Étape 6 : détection et réponse
La compromission peut être détectée grâce aux alertes de connexion, aux journaux, aux changements de paramètres ou aux signalements des utilisateurs.
Conséquences pour un particulier
- Perte d'accès au compte.
- Vol de données personnelles.
- Usurpation d'identité.
- Fraudes financières.
- Compromission d'autres comptes.
- Atteinte à la réputation.
Conséquences pour une entreprise
- Accès non autorisé aux données professionnelles.
- Compromission de comptes administrateurs.
- Fraude au président ou fraude aux paiements.
- Fuite de documents confidentiels.
- Interruption d'activité.
- Propagation de l'incident vers d'autres systèmes.
Signes d'un compte potentiellement compromis
Plusieurs événements peuvent indiquer une possible prise de contrôle :
- Des connexions inconnues ou inhabituelles.
- Des alertes de connexion depuis un nouvel appareil.
- Une modification inattendue du mot de passe.
- Une modification de l'adresse e-mail de récupération.
- Des messages envoyés sans intervention du propriétaire.
- Des transactions inconnues.
- L'apparition d'applications tierces non reconnues.
- Des règles de transfert de messagerie inconnues.
- Des sessions actives non reconnues.
Un événement inhabituel ne prouve pas automatiquement une compromission. Il doit être examiné dans son contexte.
Exemple : compromission d'une messagerie
Un utilisateur découvre que des messages ont été envoyés depuis son compte sans son autorisation.
Il constate également la création d'une règle transférant automatiquement certains courriels vers une adresse inconnue.
Ces éléments justifient une vérification immédiate des sessions, des paramètres de sécurité et des règles de messagerie.
Exemple : compte administrateur WordPress
Un administrateur WordPress remarque la création d'un nouvel utilisateur possédant des privilèges élevés.
Si cette création n'est pas autorisée, elle peut indiquer une compromission du compte, du site ou d'un autre composant disposant de privilèges suffisants.
Il faut examiner les journaux disponibles, les comptes, les extensions, les sessions et l'intégrité du site.
4. Détection et simulation de l'Account Hijacking avec Python
Python permet de développer des exercices pédagogiques pour analyser des événements de connexion, repérer des comportements suspects et simuler des mécanismes de protection contre l'Account Hijacking.
Les programmes suivants utilisent uniquement des données fictives. Ils ne tentent pas de prendre le contrôle de comptes réels.
Exemple 1 : détecter plusieurs échecs de connexion
Le programme suivant analyse un dictionnaire contenant le nombre d'échecs d'authentification observés pour plusieurs comptes. Il signale ceux qui atteignent un seuil de cinq échecs.
1 2 3 4 5 6 7 8 9 10 11 | echecs = { "alice": 2, "bob": 7, "charlie": 5, "admin": 1 } seuil = 5 for utilisateur, nombre in echecs.items(): if nombre >= seuil: print("Compte à surveiller :", utilisateur) print("Nombre d'échecs :", nombre) |
Output :
1 2 3 4 | Compte à surveiller : bob Nombre d'échecs : 7 Compte à surveiller : charlie Nombre d'échecs : 5 |
Dans une application réelle, il faut également prendre en compte la période pendant laquelle les échecs ont été enregistrés.
Exemple 2 : détecter une connexion depuis un nouvel appareil
Le programme suivant compare l'identifiant d'un appareil utilisé pour une connexion avec la liste des appareils précédemment reconnus.
1 2 3 4 5 6 | appareils_connus = ["PC-BUREAU", "LAPTOP-PERSO"] appareil_actuel = "MOBILE-INCONNU" if appareil_actuel in appareils_connus: print("Appareil déjà reconnu") else: print("Alerte : nouvel appareil détecté") |
Output :
1 | Alerte : nouvel appareil détecté |
Un nouvel appareil ne signifie pas nécessairement qu'un compte a été compromis. Il peut néanmoins justifier une notification ou une vérification supplémentaire.
Exemple 3 : analyser une adresse IP inhabituelle
Le programme suivant vérifie si l'adresse IP d'une connexion appartient à un réseau fictif habituellement utilisé par l'organisation.
1 2 3 4 5 6 7 | import ipaddress reseau_habituel = ipaddress.ip_network("192.0.2.0/24") ip_connexion = ipaddress.ip_address("198.51.100.25") if ip_connexion in reseau_habituel: print("Connexion depuis le réseau habituel") else: print("Connexion depuis un réseau inhabituel") |
Output :
1 | Connexion depuis un réseau inhabituel |
Une adresse IP inhabituelle n'est pas une preuve de fraude. Les réseaux mobiles, les VPN et les déplacements peuvent expliquer des changements légitimes.
Exemple 4 : détecter une modification de l'adresse de récupération
Le programme suivant compare deux états fictifs d'un compte afin de détecter un changement de l'adresse e-mail utilisée pour la récupération.
1 2 3 4 5 6 7 8 9 10 | ancienne_configuration = { "email_recuperation": "alice@example.com" } nouvelle_configuration = { "email_recuperation": "autre@example.net" } if ancienne_configuration["email_recuperation"] != nouvelle_configuration["email_recuperation"]: print("Alerte : adresse de récupération modifiée") else: print("Aucune modification détectée") |
Output :
1 | Alerte : adresse de récupération modifiée |
Exemple 5 : détecter une connexion hors des horaires habituels
Le programme suivant vérifie si une connexion administrative fictive intervient en dehors d'une plage horaire définie.
1 2 3 4 5 6 7 | heure_connexion = 23 debut = 8 fin = 18 if debut <= heure_connexion < fin: print("Connexion pendant les horaires habituels") else: print("Alerte : connexion hors horaires habituels") |
Output :
1 | Alerte : connexion hors horaires habituels |
Cette vérification doit tenir compte des fuseaux horaires, du travail à distance et des horaires particuliers.
Exemple 6 : simuler une protection MFA
Le programme suivant représente un contrôle logique exigeant la validation de deux facteurs d'authentification avant d'autoriser l'accès.
1 2 3 4 5 6 | mot_de_passe_valide = True second_facteur_valide = False if mot_de_passe_valide and second_facteur_valide: print("Accès autorisé") else: print("Accès refusé : authentification incomplète") |
Output :
1 | Accès refusé : authentification incomplète |
Cette simulation ne constitue pas une implémentation réelle d'un mécanisme MFA.
Exemple 7 : simuler un verrouillage temporaire
Le programme suivant illustre une politique de verrouillage d'un compte après un nombre déterminé d'échecs de connexion.
1 2 3 4 5 6 | nombre_echecs = 6 seuil = 5 if nombre_echecs >= seuil: print("Compte temporairement verrouillé") else: print("Nouvelle tentative autorisée") |
Output :
1 | Compte temporairement verrouillé |
Dans une application réelle, les verrouillages doivent être temporisés et associés à des protections contre les abus visant à bloquer les comptes légitimes.
Exemple 8 : analyser les changements de paramètres de sécurité
Le programme suivant compare les paramètres de sécurité d'un compte avant et après une modification. Il signale les changements susceptibles de nécessiter une vérification.
1 2 3 4 5 6 7 8 9 10 11 12 13 | avant = { "mfa": True, "email_recuperation": "alice@example.com", "notifications": True } apres = { "mfa": False, "email_recuperation": "alice@example.com", "notifications": False } for parametre in avant: if avant[parametre] != apres[parametre]: print("Paramètre modifié :", parametre) |
Output :
1 2 | Paramètre modifié : mfa Paramètre modifié : notifications |
Exemple 9 : calculer un score de risque
Le programme suivant attribue un score pédagogique à une connexion en fonction de plusieurs événements suspects. Il illustre le principe d'une évaluation contextuelle du risque.
1 2 3 4 5 6 7 8 9 10 11 12 | indicateurs = { "nouvel_appareil": 20, "ip_inhabituelle": 20, "echecs_recents": 30, "mfa_absente": 30 } score = sum(indicateurs.values()) print("Score de risque :", score) if score >= 70: print("Vérification renforcée recommandée") else: print("Surveillance normale") |
Output :
1 2 | Score de risque : 100 Vérification renforcée recommandée |
Les coefficients et le seuil utilisés sont fictifs. Ils ne constituent pas un modèle professionnel validé de détection de fraude.
Exemple 10 : détecter des sessions inconnues
Le programme suivant compare les identifiants de sessions actives avec une liste fictive de sessions reconnues. Les sessions inconnues sont signalées pour vérification.
1 2 3 4 5 | sessions_connues = ["SESSION-A1", "SESSION-B2"] sessions_actives = ["SESSION-A1", "SESSION-B2", "SESSION-X9"] for session in sessions_actives: if session not in sessions_connues: print("Session à examiner :", session) |
Output :
1 | Session à examiner : SESSION-X9 |
Dans une application réelle, les identifiants de session sont des informations sensibles et ne doivent pas être exposés inutilement dans les journaux ou les interfaces.
Exemple 11 : journaliser une alerte de sécurité
Le programme suivant utilise le module standard logging pour enregistrer un événement suspect dans un fichier local.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import logging logging.basicConfig( filename="account_security.log", level=logging.WARNING, format="%(asctime)s - %(levelname)s - %(message)s" ) utilisateur = "alice" evenement = "Nouvel appareil détecté" logging.warning( "Compte=%s Evenement=%s", utilisateur, evenement ) print("Alerte enregistrée dans account_security.log") |
Output :
1 | Alerte enregistrée dans account_security.log |
Les journaux de sécurité doivent être protégés et conservés selon une politique adaptée aux besoins de l'organisation.
Exemple 12 : simuler une décision de sécurité globale
Le programme suivant définit une fonction qui vérifie plusieurs conditions avant d'autoriser l'accès à un compte. Il illustre une logique simplifiée de contrôle d'accès.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def verifier_connexion(demande): if not demande["mot_de_passe_valide"]: return "REFUS : identifiants invalides" if not demande["mfa_valide"]: return "REFUS : MFA nécessaire" if demande["compte_verrouille"]: return "REFUS : compte verrouillé" if demande["risque_eleve"]: return "VERIFICATION SUPPLEMENTAIRE" return "ACCES AUTORISE" demande = { "mot_de_passe_valide": True, "mfa_valide": True, "compte_verrouille": False, "risque_eleve": False } print(verifier_connexion(demande)) |
Output :
1 | ACCES AUTORISE |
Cette fonction illustre uniquement une décision logique. Dans un système réel, les informations de sécurité doivent être obtenues à partir de mécanismes fiables et contrôlés côté serveur.
5. Prévention, protection et récupération des comptes
La prévention de l'Account Hijacking repose sur une combinaison de mesures techniques, organisationnelles et humaines.
Utiliser des mots de passe uniques
Chaque compte doit disposer d'un mot de passe distinct afin de réduire les risques liés à la réutilisation d'identifiants compromis.
Utiliser un gestionnaire de mots de passe
Un gestionnaire de mots de passe permet de générer et de conserver des mots de passe longs et uniques.
Activer l'authentification multifacteur
La MFA ajoute une protection supplémentaire aux comptes.
Les mécanismes résistants au phishing, comme certaines authentifications fondées sur FIDO2 et WebAuthn, sont particulièrement intéressants pour les comptes sensibles.
Utiliser des Passkeys
Les Passkeys permettent une authentification fondée sur des mécanismes cryptographiques et peuvent réduire les risques liés au phishing des mots de passe.
Protéger les appareils
Les ordinateurs et smartphones doivent bénéficier de mises à jour régulières et de mécanismes de protection adaptés.
Surveiller les connexions
Les notifications de connexion et les historiques de sessions peuvent permettre de repérer rapidement certaines activités inhabituelles.
Protéger les procédures de récupération
Les adresses e-mail secondaires, les numéros de téléphone et les codes de récupération doivent être protégés.
Limiter les permissions des applications tierces
Les applications connectées aux comptes doivent être examinées régulièrement. Les autorisations inutiles doivent être révoquées.
Protéger les sessions
Les applications doivent utiliser des communications sécurisées et des mécanismes appropriés de gestion des cookies et des jetons.
Les cookies de session Web doivent notamment être configurés avec des attributs adaptés, comme Secure, HttpOnly et SameSite, selon le contexte applicatif.
Limiter les tentatives automatisées
Les applications doivent mettre en place des mécanismes de Rate Limiting, de surveillance et de protection contre les abus d'authentification.
Former les utilisateurs
La sensibilisation au phishing et aux tentatives d'ingénierie sociale contribue à réduire les risques de divulgation d'identifiants.
Protéger les comptes administrateurs
Les comptes disposant de privilèges élevés doivent faire l'objet de contrôles renforcés.
Le principe du moindre privilège doit être appliqué afin de limiter les conséquences d'une compromission.
Que faire lorsqu'un compte est compromis ?
Lorsqu'une prise de contrôle est suspectée ou confirmée, il faut agir rapidement selon la situation.
- Accéder au service par son site ou son application officielle, sans utiliser les liens contenus dans des messages suspects.
- Changer le mot de passe depuis un appareil considéré comme fiable, si l'accès au compte est encore possible.
- Révoquer les sessions inconnues et les jetons compromis lorsque le service le permet.
- Vérifier les méthodes de récupération et supprimer celles qui sont inconnues.
- Réinitialiser ou renforcer la MFA si ses facteurs ont été compromis.
- Examiner les applications tierces et révoquer les accès suspects.
- Vérifier les modifications effectuées, notamment les règles de transfert, les comptes ajoutés et les opérations sensibles.
- Contrôler la sécurité des appareils susceptibles d'avoir été compromis.
- Prévenir le fournisseur du service si le compte est inaccessible ou si une fraude est constatée.
- Informer les personnes ou services concernés lorsqu'une fuite de données ou une usurpation d'identité est possible.
Dans un environnement professionnel, la réponse doit être coordonnée avec l'équipe de sécurité afin de préserver les preuves et de limiter la propagation de l'incident.
Récupérer un compte devenu inaccessible
Lorsque le propriétaire légitime ne peut plus se connecter, il doit utiliser la procédure officielle de récupération du fournisseur.
Il faut éviter les services non vérifiés prétendant récupérer des comptes en échange d'un paiement ou d'informations sensibles.
Protéger un compte WordPress
Pour un site WordPress, les mesures suivantes sont particulièrement importantes :
- Activer la MFA pour les administrateurs.
- Utiliser des mots de passe uniques.
- Limiter le nombre de comptes administrateurs.
- Maintenir WordPress, les thèmes et les extensions à jour.
- Surveiller les créations de comptes et les changements de rôles.
- Protéger les interfaces d'administration.
- Examiner les journaux et les sessions lorsque les outils disponibles le permettent.
- Effectuer des sauvegardes régulières et tester leur restauration.
Défense en profondeur
La protection contre l'Account Hijacking doit s'intégrer dans une stratégie de défense en profondeur associant l'authentification forte, le contrôle d'accès, la protection des appareils, la surveillance et la réponse aux incidents.
6. À retenir
L'Account Hijacking désigne la prise de contrôle frauduleuse d'un compte utilisateur par une personne non autorisée.
Il peut concerner les messageries électroniques, les réseaux sociaux, les plateformes bancaires, les applications professionnelles et les comptes administrateurs.
Les principales techniques associées comprennent le phishing, le credential stuffing, la force brute, le password spraying, le session hijacking et certaines attaques contre les mécanismes de récupération.
Les conséquences peuvent inclure le vol de données, l'usurpation d'identité, les fraudes financières et la compromission d'autres ressources.
Les connexions inhabituelles, les modifications non autorisées et les sessions inconnues constituent des signes possibles d'une compromission.
Python permet de simuler la détection d'échecs de connexion, l'analyse de sessions, la surveillance des paramètres de sécurité et l'évaluation de certains indicateurs de risque.
Les mots de passe uniques, la MFA et les Passkeys constituent des mesures importantes pour protéger les comptes.
En cas de compromission, il faut rapidement sécuriser l'accès, révoquer les sessions suspectes, vérifier les paramètres de récupération et examiner les actions effectuées.
Les comptes administrateurs doivent bénéficier d'une protection renforcée et respecter le principe du moindre privilège.
Enfin, la prévention de l'Account Hijacking repose sur une combinaison de mesures techniques, de surveillance, de sensibilisation et de défense en profondeur.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



