Phishing : méthodologie, techniques courantes et outils

On ne peut pas parler d’ingénierie sociale sans évoquer le phishing. De même, l’email est incontournable quand il s’agit de phishing. Bien qu’il existe d’autres techniques d’ingénierie sociale, comme le vishing, et de multiples vecteurs de phishing, comme le SMS (smishing), l’email reste en effet l’outil préféré des attaquants.

Dans cet article, nous présenterons trois outils couramment utilisés pour réaliser des campagnes de phishing : Gophish, Evilginx et Evilgophish.

Avant de plonger dans les détails pratiques et de compromettre un compte Dropbox de trois manières différentes (un compte de test, bien sûr), prenons un peu de recul pour expliquer deux approches du phishing sur lesquelles reposent ces outils.

Plan détaillé de l’article :

Techniques de phishing : clone et Man in the Middle (MitM)

Quelques précisions avant de commencer. Dans la suite de l’article, nous parlerons de phishing d’identifiants pour obtenir un accès Dropbox. Cela dit :

  • Tous les emails de phishing ne visent pas à récupérer des mots de passe de connexion au VPN ou au webmail d’une l’entreprise.
  • Toutes les tentatives de phishing ne ciblent pas seulement les employés d’une même entreprise. Certaines attaques visent à distribuer massivement des logiciels malveillants, comme le stealer RedLine il y a quelques années. La plupart des attaques de phishing sont d’ailleurs opportunistes.
  • À la fin de l’article, nous aborderons le smishing, qui est du « phishing par SMS ». Comme mentionné en introduction, plusieurs vecteurs peuvent être utilisés pour le phishing (email, SMS, Teams, Discord, etc.); l’email étant le plus courant. Le phishing est souvent associé à l’email, mais le canal importe peu. On devrait plutôt parler de « *-ishing ». Dans la suite de l’article, nous préciserons « phishing par mail » lorsque c’est important.

Le principe du phishing par clone est simple. L’attaquant copie un formulaire de connexion connu (comme la page d’authentification VPN de l’entreprise), l’héberge sur son serveur, puis envoie des liens frauduleux (par email, par exemple) redirigeant vers ce faux formulaire.

Cependant, cette méthode a des inconvénients. Copier l’interface est facile. L’attaquant télécharge les ressources (HTML, JS, CSS) du formulaire légitime et remplace les références au site d’origine pour rendre le clone indépendant. Mais ce processus peut être plus ou moins fastidieux selon le nombre de ressources.

De plus, toute modification de l’interface légitime doit être répliquée sur le clone pour maintenir une copie exacte et un scénario réaliste.

Un autre défi est l’authentification en plusieurs étapes (sans même parler d’authentification multifacteur); une première page pour l’adresse email, puis une seconde pour le mot de passe. Dans ce cas, l’attaquant doit cloner chaque page et les chaîner, ce qui complique la tâche. Néanmoins, cloner la page de saisie du mot de passe suffit généralement pour récupérer ce dernier; l’adresse email étant généralement connue.

L’inconvénient principal du phishing par clone est l’authentification forte. Les méthodes de double authentification (codes envoyés par SMS, générés par une application mobile, etc.) posent un problème.

Si le formulaire cloné nécessite une double authentification, l’attaquant doit aussi cloner le formulaire de saisie du code à usage unique (OTP pour One-Time Password). Alternativement, il peut ajouter un champ pour l’OTP sur le faux formulaire, mais cela peut éveiller les soupçons.

Après avoir récupéré l’OTP saisi sur le faux formulaire, l’attaquant doit rapidement le rejouer sur le site légitime pour accéder au compte de la victime. Les OTP, souvent des TOTP (Time-based One-Time Password), sont valides pour une période limitée (30 ou 60 secondes); réduisant la fenêtre d’action de l’attaquant.

En résumé, le phishing par clone est efficace si le formulaire cible n’est pas trop complexe et n’a pas de double authentification.

Toutefois, l’attaquant n’a pas besoin de s’authentifier à la place de sa victime. Il peut capturer ses jetons de session (cookies par exemple). Cette idée est à la base d’une technique de phishing plus avancée et de plus en plus répandue : le phishing en mode Man in the Middle (MitM).

Le phishing en mode Man in the Middle (MitM), ou phishing en mode reverse-proxy, consiste pour l’attaquant à placer son serveur entre la victime et le site légitime.

L’utilisateur interagit presque normalement, mais l’attaquant accède à tout le trafic, y compris les mots de passe et les codes de double authentification.

Après l’authentification, un jeton de session est délivré à l’utilisateur. Ce jeton est également accessible à l’attaquant, qui peut l’importer dans son propre navigateur pour accéder au compte de la victime.

L’attaquant est alors connecté à la même session que l’utilisateur. Si l’un se déconnecte, l’autre le sera aussi. Pour persister sur le compte de la victime (même après déconnexion de celle-ci), l’attaquant peut ajouter un appareil de confiance pour générer des codes de double authentification valides ou récupérer les codes de récupération du compte (si accessibles).

En comparaison du phishing par clone, le phishing en MitM présente plusieurs avantages :

  • Il permet de construire des attaques plus réalistes, même pour des applications avec une authentification en plusieurs étapes.
  • Il n’est pas affecté par les modifications d’interface, car l’utilisateur interagit directement avec le site légitime via le serveur de l’attaquant.
  • Le phishing en MiTM permet de contourner la plupart des méthodes de double authentification. L’attaquant n’a pas besoin de s’authentifier à la place de la victime puisqu’il a accès aux jetons de session. Cependant, certaines méthodes d’authentification forte, comme les clés hardware (YubKey) ou software (passkeys), prennent en compte l’identité du site distant et offrent une protection efficace. Par exemple, s’authentifier sur dropbox.fake.com n’est pas la même chose que sur dropbox.com.

Mise en pratique des techniques de phishing : vols d’identifiants Dropbox

Passons maintenant aux choses sérieuses en présentant quelques outils mettant en pratique les techniques présentées.

Voici un bref aperçu du scénario inspiré d’un de nos audits. Notre objectif est d’accéder à un compte Dropbox de test, sur lequel la double authentification est activée. L’email de phishing envoyé à la « victime » mentionne la fin de l’abonnement Dropbox et la perte de synchronisation des fichiers pour l’inciter à s’authentifier. Le domaine malveillant utilisé est « dropbox.fake.com ». Voyons comment ce scénario se décline selon la technique utilisée.

Gophish est une solution open source conçue pour aider les pentesters et les entreprises à mener des simulations de phishing. Elle offre une interface web permettant de configurer et d’envoyer facilement une campagne.

Plutôt qu’un long discours, voici une vidéo montrant le déroulement complet de l’attaque avec Gophish :

Attaque de phishing avec Gophish

Détaillons l’attaque étape par étape (la vidéo commence à l’étape 3) :

  1. Clonage de l’interface d’authentification : l’attaquant clone l’interface de connexion de Dropbox. Il existe deux formulaires : le premier pour l’adresse email, et le second pour le mot de passe. L’attaquant clone seulement le deuxième formulaire en préremplissant l’adresse mail connue (récupérée lors de la phase de reconnaissance) pour gagner en crédibilité.
  2. Configuration de la campagne dans Gophish : l’attaquant configure la campagne, indiquant les adresses email cibles, le contenu de l’email, la configuration SMTP, et le formulaire d’authentification cloné.
  3. Envoi de l’email malveillant : l’attaquant envoie l’email depuis Gophish, contenant un prétexte incitant la victime à s’authentifier rapidement et un lien vers le faux formulaire.
  4. Réception de l’email par la victime : la victime reçoit l’email et clique sur le lien en raison du prétexte convaincant et/ou d’un manque de sensibilisation.
  5. Soumission du mot de passe par la victime : la victime entre son mot de passe sur la fausse page d’authentification (hébergée sur « dropbox.fake.com »). Après la saisie, la victime reste bloquée sur le formulaire ou est redirigée vers une page d’erreur pour maintenir l’illusion.
  6. Récupération du mot de passe par l’attaquant : l’attaquant récupère le mot de passe dans Gophish et tente de s’authentifier sur le site légitime « dropbox.com ».
  7. Blocage par la double authentification : la double authentification étant activée, l’attaquant ne peut pas compléter l’authentification, car il ne peut pas produire un code 2FA valide sans accès au téléphone de la victime. Sans double authentification, le compte aurait été totalement compromis.

Comme nous l’avons vu, le phishing par clone (avec Gophish par exemple) ne permet pas facilement de contourner la double authentification. Pour une méthode plus efficace, les attaquants peuvent se tourner vers le phishing en mode Man in the Middle.

Evilginx est un kit de phishing de type reverse-proxy destiné aux pentesters et red teamers. Il permet de contourner la double authentification en se concentrant sur les jetons de session des utilisateurs. Depuis la version 3.3, Evilginx peut s’intégrer avec Gophish pour utiliser son interface web et faciliter l’envoi des campagnes.

Voyons comment se déroule la même attaque, cette fois avec Evilginx :

Attaque de phishing avec Evilginx
  1. Configuration et envoi de l’email : après avoir configuré la campagne dans Gophish, l’attaquant envoie un email contenant un lien vers Evilginx.
  2. Clic de la victime : la victime reçoit l’email et clique sur le lien qui mène à Evilginx.
  3. Interaction via Evilginx : Evilginx fonctionne comme un reverse-proxy entre le navigateur de la victime et le site légitime « dropbox.com ». La victime saisit son adresse email, son mot de passe, et valide la double authentification dans l’interface habituelle de Dropbox. Pendant ce temps, l’attaquant a accès à tout le trafic.
  4. Récupération des jetons : une fois la victime authentifiée, l’attaquant récupère les jetons de session dans le terminal d’Evilginx (non montré dans la vidéo) et les importe dans son propre navigateur.
  5. Accès au compte : l’attaquant ouvre le site Dropbox légitime et accède automatiquement au compte de la victime grâce aux cookies volés.

Comme démontré, le phishing en mode MitM permet de contourner la double authentification (dans la plupart des cas). Cependant, la double authentification reste un mécanisme de sécurité crucial, notamment contre le phishing par clone. En fin d’article, nous aborderons aussi les mécanismes de protection contre le phishing en mode MitM.

Voyons maintenant la même attaque en mode MitM, mais cette fois-ci délivrée par SMS, avec Evilgophish.

Evilgophish combine Evilginx et Gophish, en ajoutant des fonctionnalités comme l’envoi de SMS via l’API Twilio.

Voici comment l’attaque se déroule du côté de la victime :

Attaque de smishing avec Evilgophish (vue utilisateur)

Du point de vue de l’attaquant maintenant, après avoir récupéré les cookies de session dans Evilginx :

Attaque de smishing avec Evilgophish (vue attaquant)

Le comportement diffère légèrement de celui d’Evilginx :

  • Une erreur s’affiche dans le navigateur de la victime après qu’elle a saisi le code 2FA. Toutefois, Evilginx a déjà récupéré les cookies de session, donc cette erreur n’est pas bloquante.
  • Une deuxième erreur apparaît lorsque l’attaquant tente d’accéder au compte de la victime après avoir importé les cookies volés. Cependant, l’authentification par mot de passe seul devient possible grâce au cookie délivré si l’utilisateur a coché la case « Appareil de confiance ». Même si la victime n’a pas coché cette case (comme montré dans la vidéo), l’attaquant, contrôlant le trafic, peut forcer certains paramètres, contournant ainsi les choix de l’utilisateur.

Protections techniques pour contrer le phishing

Pour conclure, prenons un moment pour voir comment une application peut se protéger contre le phishing par clone et, plus particulièrement, contre le phishing en mode MitM.

Une première idée est d’implémenter des protections dans le code JavaScript de l’application, s’exécutant dans le navigateur du client.

Une protection classique consiste à vérifier l’identité du site sur lequel le code s’exécute, par exemple :

function validateHostname() {
  return window.location.hostname.endsWith("dropbox.com");
}

Le domaine de phishing étant généralement différent du domaine légitime (par exemple, dropbox.fake.com), la vérification échouera si l’utilisateur visite le site frauduleux.

Cependant, il faut garder à l’esprit que toute protection côté client est vulnérable, car l’attaquant peut modifier le code JavaScript de la page. Que l’attaquant soit en position de Man in the Middle ou utilise un clone, il peut retirer l’appel à la fonction validateHostname ou la rendre inopérante (retournant toujours true).

En pratique, le code JavaScript peut être obfusqué, ce qui rend la tâche plus complexe pour l’attaquant, voire impossible. Le coût devient alors trop important pour l’attaquant, qui préférera cibler une autre application.

Une variante plus récente consiste à utiliser des jetons chiffrés pour valider l’identité du site côté serveur. Lorsque l’utilisateur soumet son mot de passe, un jeton chiffré (contenant par exemple la valeur de window.location.hostname) est ajouté à la requête par du code JavaScript. À la réception de la requête, le serveur déchiffre le jeton et vérifie l’identité du site visité par le client initial.

Cette méthode peut également être contournée par l’attaquant s’il identifie le code JavaScript construisant le jeton. Il lui suffirait alors de remplacer window.location.hostname par la chaîne « dropbox.com » lors de la construction du jeton pour passer la validation côté serveur. Cela dit, la complexité et l’obfuscation du code JavaScript peuvent encore une fois rendre cette tâche impossible dans un temps raisonnable pour un attaquant cherchant un profit rapide.

Outre les vérifications JavaScript, il existe plusieurs protections côté serveur contre le phishing en mode MitM.

Par exemple, Microsoft Entra ID (anciennement Azure Active Directory) utilise l’accès conditionnel, basé sur divers facteurs de risque, pour déterminer si une requête d’authentification est légitime (comme la provenance géographique, les caractéristiques du navigateur, etc.).

Cela fonctionne car les requêtes de l’utilisateur légitime sont relayées par le serveur de l’attaquant, qui agit comme client auprès de l’application légitime.

L’adresse IP visible depuis l’application est celle du serveur de l’attaquant, et non celle de la victime. De plus, l’attaquant établissant une nouvelle connexion HTTPS avec l’application, certaines caractéristiques des échanges peuvent être suspectes. Par exemple, les versions de TLS ou les suites de chiffrement proposées par le client malveillant peuvent différer de celles d’un navigateur classique (comme Chrome ou Firefox) qui ont une empreinte connue (empreinte JA4). Cela peut permettre de détecter un serveur de phishing en mode reverse proxy.

En fonction du risque identifié, l’application peut exiger une méthode d’authentification plus forte (comme TOTP ou une clé de sécurité) ou même bloquer l’accès. Par exemple, Microsoft Entra ID peut imposer un niveau d’authentification minimum en fonction du niveau de risque identifié pour un utilisateur tentant de s’authentifier.

Conclusion

Le phishing est l’un des vecteurs les plus utilisés par les attaquants, car il suffit d’envoyer un email ou un SMS pour avoir un impact potentiellement important, voire critique, ou au moins obtenir un accès initial.

Dans le monde cybercriminel, il existe aujourd’hui plusieurs offres de Phishing as a Service, comme Evilproxy (lancée fin 2021, quatre ans après la sortie d’Evilginx), NakedPages ou encore Tycoon. Ces services démocratisent les techniques avancées de phishing, appelées Adversary in the Middle (AitM), permettant à des attaquants moins expérimentés de contourner des protections avancées, comme la double authentification.

C’est une course éternelle entre les offensives des attaquants et les défenses mises en place. Les attaquants innovent constamment avec des techniques de plus en plus sophistiquées, à mesure que les protections deviennent plus robustes, et vice-versa. Les innovations sont d’autant plus rapides que le phishing est un vecteur d’attaque très répandu.

L’élément humain, souvent considéré comme le maillon faible, est en réalité l’un des premiers maillons à sécuriser pour qu’il devienne un atout et non une faiblesse. Une sensibilisation efficace des collaborateurs, combinée à des mesures techniques, permet de réduire significativement le risque de phishing.

Auteur : Benjamin BOUILHAC – Pentester @Vaadata