15/11/2024

Cybersécurité

Comment créer une campagne de phishing avec Gophish ?

I. Présentation

Dans ce tutoriel, nous allons voir comment utiliser le framework open source Gophish pour créer une campagne de phishing (hameçonnage) dans le but d'évaluer le niveau de vigilance des utilisateurs.

Grâce à Gophish, vous allez pouvoir créer différentes campagnes de phishing et les diffuser auprès de vos utilisateurs, dans le but de les sensibiliser, de les entraîner, afin qu'il soit capable d'adopter les bons réflexes lorsqu'ils se retrouvent face à un e-mail douteux.

Visiter le site officiel de Gophish

Voici les fonctionnalités principales de Gophish :

  • Création d'utilisateurs et de groupes d'utilisateurs (cibles)
  • Création de template pour les e-mails de vos campagnes
  • Création de landing page pour vos campagnes (exemple : un formulaire de connexion)
  • Envoyer des campagnes de phishing avec suivi des e-mails (e-mail envoyé, e-mail ouvert, clic sur le lien, données récoltées via le formulaire) pour chaque utilisateur
  • Reporting sur les campagnes
  • API pour interroger Gophish à distance et récupérer des informations

Voici à quoi ressemble le tableau de bord de Gophish, accessible à partir d'un navigateur :

Tableau de bord de Gophish
Tableau de bord de Gophish

Bien sûr, un tel outil peut être détourné pour créer des campagnes malveillantes, mais ce n'est clairement pas l'objectif de cet article.

De nombreuses attaques informatiques débutent par un e-mail malveillant et un utilisateur piégé ! Je vous encourage à utiliser Gophish (ou un autre outil) pour sensibiliser et entraîner vos utilisateurs ! Rien de mieux que la pratique pour vérifier s'ils ont bien compris la session de formation visant à les sensibiliser.

Remarque : via Office 365 / Microsoft 365, Microsoft propose une fonctionnalité qui permet de réaliser des campagnes de phishing pour sensibiliser vos utilisateurs. Cela nécessite d'utiliser des licences Microsoft 365 E5.

II. Rappel : c'est quoi le phishing ?

Le phishing, ou hameçonnage en français, est une technique utilisée dans le cadre d'attaques informatiques pour inciter l'utilisateur à communiquer des informations personnelles (nom d'utilisateur, mot de passe, numéro de carte bancaire, etc.) à partir d'un e-mail, d'un SMS, etc... Qui va rediriger l'utilisateur sur une page Web malveillante.

Par exemple, le pirate informatique va créer une copie de la page de connexion sur Facebook et il va inclure un lien vers cette copie dans l'e-mail qu'il va envoyer aux utilisateurs ciblés. Si l'utilisateur clique sur le lien, accède à la page et saisit ses informations de connexion, le pirate va récupérer les informations saisies par l'utilisateur. Il peut alors usurper l'identité de l'utilisateur et se connecter à son compte Facebook, mais cela fonctionne pour tout autre compte (Google, impôts, banque, etc.).

Exemple d'un e-mail de phishing

III. Installation de Gophish

L'outil Gophish est disponible gratuitement sur Github et il existe des binaires pour Windows, Linux et macOS. Sinon, vous pouvez aussi le compiler vous-même ou utiliser un container Docker pour le tester rapidement.

Pour ma part, je vais utiliser le binaire pour Windows. On obtient un ZIP qu'il suffit de décompresser. Ensuite, il faut exécuter "gophish.exe".

Note : le serveur qui héberge Gophish doit être accessible par les machines de vos utilisateurs pour que la page Web puisse s'afficher lorsqu'ils vont cliquer sur le lien contenu dans l'e-mail.

Par défaut, Gophish s'appuie sur une base de données SQLite, mais il est possible de configurer un serveur MySQL. Le fichier de configuration se nomme "config.json" et il est situé au même endroit que l'exécutable.

Au premier démarrage, il y a quelques informations intéressantes à relever :

  • Le compte par défaut se nomme "admin" et le mot de passe généré aléatoirement est communiqué dans la console (il faudra le changer à la première connexion)
  • L'interface de Gophish pour afficher les pages web de vos campagnes est accessible sur le port 80/HTTP
  • L'interface d'administration de Gophish est accessible en HTTPS sur le port 3333
Démarrage de Gophish
Démarrage de Gophish

Laissez Gophish tourner et connectez-vous sur l'interface d'administration.

IV. Configuration de Gophish

Pour se connecter depuis la machine locale, il suffit d'accéder à l'adresse "https://127.0.0.1:3333" à partir d'un navigateur. Connectez-vous avec le compte admin et modifiez le mot de passe.

Dans cet exemple, mon objectif est de créer une campagne de phishing en reprenant un e-mail d'Instagram qui renvoie vers une page Web avec un formulaire.

Avant de pouvoir envoyer notre première campagne de phishing, il va falloir préparer un certain nombre d'éléments : c'est ce que nous allons faire, étape par étape. Suivez le guide !

A. Création des utilisateurs et des groupes

Nous devons commencer par créer nos utilisateurs et nos groupes. On peut imaginer qu'un groupe correspond aux utilisateurs d'un service ou d'un site. Lorsqu'une campagne de phishing sera envoyée, il faudra cibler un ou plusieurs groupes.

Cliquez sur "Users & Groups" puis sur "New Group".

Nommez votre groupe en renseignant le champ "Name" et ensuite vous avez deux options :

  • Créez vos utilisateurs un par un, en remplissant le formulaire et en cliquant sur "Add". Cela peut vite être chronophage...
  • Créez vos utilisateurs à l'aide d'un fichier CSV que vous pouvez importer avec le bouton "Bulk Import Users". Cela me plaît un peu plus et de toute façon on ne peut pas établir de connexion avec un annuaire externe.
Importer les utilisateurs dans Gophish
Importer les utilisateurs dans Gophish

On va s'intéresser un peu plus à la deuxième option : l'import CSV. Je ne suis pas trop du genre à faire des saisies en boucle pendant des heures...

D'après le template fourni par Gophish, on doit fournir un fichier CSV avec 4 colonnes et la virgule comme séparateur :

"First Name","Last Name","Email","Position"

Je ne sais pas vous, mais j'ai envie de faire une extraction des comptes de l'Active Directory pour importer les comptes dans Gophish. On va dire que "First Name" correspond à l'attribut "givenName", "Last Name" à l'attribut "sn", "Email" à l'attribut "mail" et "Position" à l'attribut "Title" des objets utilisateurs.

Pour ce premier groupe, je vais récupérer les utilisateurs de l'OU "OU=Personnel,DC=it-connect,DC=local" et exporter le résultat vers un fichier CSV ("C:\UsersGophish.csv").

En PowerShell, cela me donne la commande suivante (et tant qu'à faire avec les bons noms de colonnes souhaités par Gophish). Adaptez le paramètre -SearchBase et éventuellement le chemin de sortie du CSV.

Get-ADUser -Filter * -SearchBase "OU=Personnel,DC=it-connect,DC=local" -Properties mail,givenName,sn,title | Select-Object @{n='First Name';e={$_.givenName}},@{n='Last Name';e={$_.sn}},@{n='Email';e={$_.mail}},@{n='Position';e={$_.Title}} | Export-CSV -Path "C:\UsersGophish.csv" -Delimiter "," -NoTypeInformation

J'obtiens un joli CSV que je n'ai plus qu'à importer.

Exemple d'un CSV formaté pour Gophish
Exemple d'un CSV formaté pour Gophish

Note : vous pouvez aussi jeter un œil au script GoLDAP qui sert à importer les utilisateurs d'un annuaire LDAP vers Gophish.

Les utilisateurs, c'est réglé ! Passons à la suite.

B. Créer l'e-mail pour la campagne de phishing

Seconde étape : la création du modèle d'e-mail que l'on va envoyer aux utilisateurs dans le cadre de cette campagne de phishing.

Cliquez à gauche sur "Email Templates" puis sur le bouton "New Template".

Pour créer le modèle, vous pouvez partir de zéro ou importer le code HTML d'un e-mail existant (ce qui est intéressant pour gagner du temps) grâce au bouton "Import Email". Pour cet exemple, j'ai repris un modèle que j'ai trouvé ici et que j'ai traduit en français.

Dans tous les cas, je vous recommande d'utiliser l'éditeur HTML afin de pouvoir modifier les balises. Lorsque vous cliquez sur le bouton "Source", vous pouvez basculer entre l'affichage du code et la prévisualisation de votre e-mail. Le bouton le plus à droite permet de prévisualiser l'e-mail dans un nouvel onglet.

Pour accéder à tous les boutons de l'éditeur de texte, notamment pour insérer des liens, il faut cliquer sur le bouton "Source". Vous pouvez aussi insérer des balises où la valeur sera dynamique, notamment pour reprendre le prénom ou le nom de l'utilisateur : avec un "Bonjour Florian", vous avez plus de chance de piéger l'utilisateur qu'avec un simple "Bonjour". À vous de juger le niveau de difficulté que vous souhaitez pour ce premier essai. 😉

Les champs personnalisés pour Gophish
Les champs personnalisés pour Gophish

Pour renvoyer vers la landing page qui contient le formulaire, il faut ajouter un lien à l'e-mail. Sur ce lien, il faut indiquer l'URL "{{.URL}}" qui sera remplacée par Gophish par la bonne valeur.

Mon e-mail est prêt, voici un aperçu :

C. Créer la landing page pour récupérer les identifiants

Troisième étape : création de la landing page qui sera une page piégée puisque si l'utilisateur complète le formulaire, nous allons le savoir ! S'il clique sur le lien, nous allons le savoir aussi !

Cliquez sur "Landing Pages" sur la gauche du menu puis sur "New Page".

Donnez un petit nom à votre template et ensuite il faut passer à la construction.

Vous pouvez partir de zéro comme pour l'e-mail ou importer un site à partir d'une URL et du bouton "Import Site". Alors, vous pouvez importer la page d'un site existant, mais il faudra adapter le code source : le formulaire que vous allez récupérer ne sera peut-être pas conforme aux attentes de Gophish (notamment les noms des champs du formulaire). C'est la partie la plus délicate (si vous cherchez à copier Instagram, par exemple), mais si vous reprenez un portail de votre entreprise pour cette campagne, ça devrait aller.

Pour ma part, j'ai créé une page très basique pour cette démo.

Si vous souhaitez récupérer les informations saisies par les utilisateurs, cochez les cases "Capture Submitted Data" et "Capture Passwords" pour le mot de passe (même si vis-à-vis du RGPD, je pense qu'il vaut mieux éviter l'option "Capture Passwords"). Il est précisé que le mot de passe sera stocké en clair, mais finalement on peut se passer de la récupération du mot de passe. Sauf si vous souhaitez engueuler l'utilisateur s'il utilise un mot de passe faible (pour ne pas dire autre chose) en plus de s'être fait piéger.

Création d'une landing page Gophish

Voici le code source de ma superbe page :

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="" method="post" name="form"><label>Nom d&#39;utilisateur:</label> <input type="text" /><br />
<label>Mot de passe:</label> <input name="password" type="password" /><br />
<input id="login" type="submit" value="Se connecter" />&nbsp;</form>
</body>
</html>

Si vous arrivez à piéger un utilisateur avec ça, je suis inquiet pour vous. Enregistrez... La page est prête !

D. Configurer le serveur SMTP

Avant de lancer la campagne, il nous reste une dernière étape : la configuration du serveur de messagerie (SMTP). Vous vous en doutez, il va servir à envoyer les e-mails de nos campagnes de phishing.

Sur la gauche, cliquez sur "Sending Profiles" puis sur "New Profile".

Ensuite, vous devez nommer votre profil et renseigner les informations en complétant le formulaire.

Gophish et la configuration du SMTP

Voici quelques indications :

  • From : adresse e-mail utilisée pour envoyer les e-mails, c'est-à-dire l'expéditeur. Si vous effectuez une campagne de sensibilisation axée sur Instagram, il peut être intéressant d'utiliser un nom de domaine trompeur et semblable à "@instagram.com". S'il n'a rien à voir, ce sera plus facile pour les utilisateurs de voir qu'il s'agit d'un piège : mais ce sera aussi l'occasion de voir s'ils ont bien compris qu'il fallait vérifier l'e-mail de l'expéditeur (même si ce n'est pas suffisant).
  • Host : serveur SMTP à utiliser pour envoyer les e-mails, suivi du port (séparé par ":")
  • Username : compte utilisateur pour s'authentifier sur le serveur SMTP
  • Password : le mot de passe de ce compte

Pour valider que ça fonctionne, cliquez sur "Send Test Email". Si c'est bon, vous pouvez continuer.

Note : vous pouvez créer plusieurs profils, car en fonction de la campagne, vous n'allez peut-être pas utiliser la même adresse d'expéditeur.

E. Lancer la campagne de phishing

Tout est prêt ! Nous allons pouvoir créer notre première campagne de phishing et tester nos utilisateurs !

Cliquez sur le menu "Campaigns" puis sur "New Campaign".

Pour créer cette campagne nommée "Instagram n°1", on va réutiliser les éléments créés précédemment : "Email Template", "Landing Page" et "Sending Profile".

Concernant, les autres options :

  • URL : indiquez le nom de domaine ou l'adresse IP (là aussi, essayez de faire en sorte de tromper vos utilisateurs pour les évaluer correctement) où les utilisateurs pourront contacter votre serveur Gophish.
  • Launch Date : date à laquelle envoyer la campagne, par défaut c'est immédiatement. Si vous spécifiez aussi une date pour le champ "Send Emails By", Gophish enverra les e-mails à un moment donné entre la date de début ("Launch Date") et la date de fin ("Send Emails By"). Ainsi, tous les utilisateurs ciblés ne vont pas recevoir l'e-mail en même temps.
  • Groups : sélectionnez un ou plusieurs groupes d'utilisateurs que vous souhaitez cibler avec cette campagne.
Créer une campagne dans Gophish
Créer une campagne dans Gophish

Quand tous les champs sont complétés, cliquez sur "Launch Campaign" pour démarrer la campagne ! Le tableau de bord de la campagne va s'afficher et la section "Details" vous indique la "progression" pour chaque utilisateur.

F. Consulter les résultats de la campagne de phishing

En tant qu'utilisateur ciblé par la campagne de phishing, j'ai reçu l'e-mail ci-dessous, avec le fameux "Bonjour Florian". On peut voir que le lien renvoie vers mon serveur Gophish (et l'adresse IP spécifiée dans la campagne).

Je décide de cliquer sur le lien : j'arrive bien sur la landing page. Je suis confiant, je vais me connecter comme indiqué dans l'e-mail....

Dans le même temps, sur l'interface de Gophish, on peut voir qu'il y a un utilisateur qui a ouvert l'e-mail, cliqué sur le lien et envoyé des données.

Note : la section "Email Reported" indique le nombre d'utilisateurs qui ont signalé cet e-mail pour dire qu'il était malveillant. Un utilisateur qui a signalé l'e-mail frauduleux au service informatique doit être récompensé ! 😉 - Pour configurer cette fonction, rendez-vous dans "Account Settings" puis "Reporting Settings" : configurez la boîte e-mail qui sert à vos utilisateurs à remonter les incidents de sécurité au service informatique.

En complément, la "Campaign Timeline" nous donne un aperçu des événements dans le temps, avec le nom d'utilisateur et l'action effectuée. C'est plutôt bien fait !

Au niveau de la section "Details", je peux voir que l'utilisateur "Florian Burnel" a envoyé des données via le formulaire ! Je peux même obtenir le détail des actions avec la date et l'heure, c'est très précis !

En affichant tous les détails, je peux également visualiser le mot de passe envoyé par le formulaire de ma landing page : "JeTeDonneMonMotDePasse". Finalement, je crois qu'il m'a démasqué et qu'il s'en amuse ! 😉

En complément, le bouton "Complete" permet de terminer une campagne et de l'archiver (les résultats restent accessibles). Enfin, vous pouvez exporter un rapport au format CSV en cliquant sur "Export CSV".

Cette démo de Gophish est terminée ! Maintenant, c'est à vous de jouer ! Pensez à former les utilisateurs puis à les tester avec Gophish. Dans la foulée de la campagne, effectuez une seconde session de sensibilisation auprès des utilisateurs qui se font piéger. Sans oublier une piqûre de rappel pour tout le monde, de temps en temps.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Comment créer une campagne de phishing avec Gophish ?

  • Salut, j’ai suivis le tuto jusqu’au bout mais je reçois une erreur au niveau de mon teste pré-campagne:
    Max connection attempts exceeded – 535 5.7.139 Authentication unsuccessful, the user credentials were incorrect. [LO4P123CA0397.GBRP123.PROD.OUTLOOK.COM]

    Répondre
  • Salut.
    Merci pour ce riche tuto.
    Cependant, je rencontre une difficulté lors du lancement de la campagne.

    Message erreur: Max connection attempts exceeded – EOF
    Voudriez-vous svp m’ orienter pour surmonter cette difficulter?
    Cordialement.

    Répondre
    • Max connection attempts exceeded – 535 5.7.139 Authentication unsuccessful, the user credentials were incorrect.

      Dans l’onglet sécurité de votre compter google, il y a possibilité de créer un mot de passe associé à une application.

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.