Hijacking
Le mot hijacking signifie en informatique la prise de contrôle, le détournement ou l'usurpation
d'une ressource, d'une session, d'un flux, d'un compte, d'un navigateur, d'un domaine, d'une requête ou d'un appareil.
C'est un terme générique utilisé surtout en cybersécurité.
Définition simple
Un hijacking se produit lorsqu'un attaquant réussit à se placer à la place d'un utilisateur, d'un site,
d'un programme ou d'une communication légitime afin d'en tirer un avantage : accès non autorisé, vol d'information,
interception, redirection, manipulation ou fraude.
Idée centrale
L'attaquant ne casse pas toujours tout le système. Il détourne souvent la confiance :
cookie de session, DNS, onglet du navigateur, route réseau, compte utilisateur, jeton d'authentification,
extension, presse-papiers, session SSH, appel API, etc.
Objectifs fréquents
- Voler des comptes ou des sessions
- Rediriger vers un faux site
- Intercepter des données
- Exécuter des actions à la place d'un utilisateur
- Installer de la publicité, du spyware ou du malware
- Contourner l'authentification
1. Session hijacking
C'est le détournement d'une session authentifiée. Si un attaquant récupère un cookie de session
ou un jeton valide, il peut agir comme l'utilisateur sans connaître son mot de passe.
- Vol de cookie
- Session ID prévisible
- Session non régénérée après connexion
- Cookie exposé par XSS
- Transport non chiffré
2. Browser hijacking
Le navigateur est détourné par une extension, un logiciel ou une configuration malveillante.
Cela peut changer la page d'accueil, le moteur de recherche, injecter de la publicité ou suivre l'utilisateur.
3. DNS hijacking
Les requêtes DNS sont redirigées vers une mauvaise adresse IP. L'utilisateur croit aller sur le bon site
alors qu'il arrive ailleurs.
4. Clickjacking
L'utilisateur clique sur un bouton qu'il ne voit pas vraiment, souvent caché sous une couche visuelle trompeuse.
On détourne son clic vers une action inattendue.
5. Account hijacking
Le compte lui-même est pris en main après vol d'identifiants, réinitialisation frauduleuse, phishing,
fuite de données ou faible sécurité du compte.
6. URL / domain hijacking
Détournement d'URL, de domaine, de sous-domaine ou de redirection afin d'envoyer les visiteurs vers une autre ressource.
Exemples de contextes touchés
- Applications web avec cookie de session mal protégé
- Wi-Fi public non sécurisé
- Navigateurs avec extensions douteuses
- DNS du routeur modifié
- Messagerie ou compte cloud sans MFA
- API utilisant des jetons trop longs ou mal stockés
- Ordinateur infecté par malware ou keylogger
Conséquences possibles
- Usurpation d'identité numérique
- Vol de données privées
- Transferts financiers frauduleux
- Publication ou suppression de contenu
- Propagation latérale dans un système
- Perte de confiance des utilisateurs
- Compromission réglementaire ou contractuelle
- Accès à des emails, CRM, panneaux d'admin
- Persistance furtive de l'attaquant
- Collecte de cookies, tokens, secrets
Signes d'alerte
- Déconnexions ou reconnexions étranges
- Historique ou paramètres du navigateur qui changent seuls
- Redirections inattendues
- Connexion depuis un appareil ou un pays inhabituel
- Emails de sécurité non sollicités
- Extensions inconnues installées
- Activité API ou back-office anormale
Prévention côté web / PHP
- Forcer HTTPS partout
- Configurer les cookies avec
HttpOnly, Secure et SameSite
- Régénérer l'ID de session après authentification avec
session_regenerate_id(true)
- Définir un timeout d'inactivité
- Lier la session à un contexte raisonnable (sans bloquer abusivement les utilisateurs légitimes)
- Protéger contre XSS, car XSS peut voler les sessions
- Ajouter une MFA sur les comptes sensibles
- Journaliser les connexions et actions sensibles
- Valider les redirections et URLs de retour
- Utiliser des en-têtes anti-clickjacking comme
X-Frame-Options ou frame-ancestors via CSP
Bon réflexe : pour PHP, le point essentiel est souvent la protection de la session, du cookie et du navigateur.
Exemple PHP de configuration de session
<?php
session_set_cookie_params([
'lifetime' => 0,
'path' => '/',
'domain' => '',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
]);
session_start();
if (empty($_SESSION['created_at'])) {
session_regenerate_id(true);
$_SESSION['created_at'] = time();
}
$timeout = 1800;
if (!empty($_SESSION['last_seen']) && (time() - $_SESSION['last_seen']) > $timeout) {
session_unset();
session_destroy();
exit('Session expirée.');
}
$_SESSION['last_seen'] = time();
Cet exemple est défensif et pédagogique. Il ne remplace pas une architecture complète de sécurité.
Liens entre hijacking et autres attaques
- XSS : peut permettre le vol de cookie ou de jeton
- Phishing : peut mener à l'account hijacking
- MITM : peut favoriser l'interception d'une session
- Malware : peut détourner navigateur, presse-papiers ou authentification
- CSRF : fait exécuter des actions à un utilisateur connecté, mais ne vole pas forcément sa session
- Session fixation : pousse la victime à utiliser un identifiant de session connu par l'attaquant
Mesures pour utilisateurs
- Utiliser des mots de passe uniques
- Activer la double authentification
- Éviter les extensions douteuses
- Se méfier des liens reçus par email ou messagerie
- Déconnecter les sessions sur appareils partagés
- Mettre à jour navigateur, OS et antivirus
- Vérifier régulièrement les appareils connectés au compte
Mesures pour administrateurs / développeurs
- Rotation et révocation des sessions et jetons
- Surveillance des anomalies de connexion
- Réduction de la durée de vie des jetons sensibles
- Protection des cookies et en-têtes HTTP stricts
- Détection de comportements anormaux
- Durcissement DNS, routeur, panneaux d'admin et comptes email
- Séparation des privilèges et moindre privilège
Important : connaître le hijacking sert à mieux s'en protéger. Toute tentative de détourner des comptes,
sessions, navigateurs ou flux de tiers sans autorisation est illégale et dangereuse.