Comment créer une campagne de phishing avec Gophish ?
Sommaire
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 :
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.).
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
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.
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.
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. 😉
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.
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'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" /> </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.
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.
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.
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]
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.
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.