Lancer une simulation d’hame√ßonnage √† vis√©e p√©dagogique sur un Tenant Microsoft 365 avec Gophish

Mon objectif

Afin de sensibilis√© les utilisateurs du tenant Microsoft 365 que j’utilise, j’ai cherch√© comment cr√©er une campagne de Phishing (hame√ßonnage) pour les “pi√©ger” et d√©clencher une formation sur ce sujet.

Les messages de pr√©vention et les campagnes d’hygi√®ne num√©rique ne suffisent pas, il faut un fait concret pour tenter de d√©clencher une prise de conscience.

Disclaimer

Au risque de me r√©p√©ter, mon objectif n’est pas de lancer de campagne de publipostage ni de phishing, c’est bien √† vis√©e p√©dagogique.

A noter que les √©l√©ments expliqu√©s ci-dessous ne fonctionneront pas si vous n’√™tes pas administrateur du Tenant √† attaquer puisqu’il faut autoriser l’IP de GoPhish, sans cette autorisation, la campagne de phishing est bloqu√© par les syst√®mes de s√©curit√© de Microsoft (Merci !!)


Outils utilisés

  • Evidemment, j’utilise le Tenant Microsoft 365 √† qui je vais demander d’autoriser l’IP d’envoi de ma campagne ainsi que le fameux 5321.MailFrom (ou exp√©diteur d’enveloppe).

  • GoPhish dans sa version 0.12.1 au jour d’√©criture de ce RetEx

  • La plateforme AWS d’Amazon et plus sp√©cifiquement les instances EC2

Je crée un compte Amazon AWS 

Passer les 5 étapes puis :

Je crée une instance sur EC2

Tout ce que j’explique sur cette partie est totalement gratuite, on peut b√©n√©ficier de l’offre 1 an, cela est suffisant pour mon besoin.


Il faut avoir créé un compte sur AWS puis aller sur Amazon EC2

puis


Je télécharge le fichier de clé, attention de bien prendre un fichier ppk et non pem.

Une fois tout install√© et lanc√©, j’ai tout au vert :

Je configure le groupe de sécurité de mon instance

Par mesure de s√©curit√©, j’ai d√©j√† r√©serv√© l’acc√®s SSH √† ma seule adresse IP via l’assistant de cr√©ation de l’instance, il faut maintenant que je configure les ports devant √™tre utilis√©s par GoPhish.

Je vais dans Réseau et sécurité puis Groupes de sécurité, je sélectionne le groupe launch-wizard, règles entrantes, modifier les règles entrantes

J’ajoute une entr√©e TCP personnalis√© avec un num√©ro de port autre que 3333 qui sera le num√©ro de port que j’utiliserai pour GoPhish, je mets 8531 par exemple.

J’utilise une Adresse IP Elastic (facultatif)

Pour avoir toujours la m√™me adresse IP, j’utilise cette fonctionnalit√©.

J’installe Putty¬†

Putty va me permettre de me connecter en SSH à mon instance EC2, cela de manière sécurisé avec un jeu de clé (privée/publique).

Il me faut r√©cup√©rer les param√®tres de connexion sur l’instance.

Pour cela, je fais un clic droit sur l’instance, puis “se connecter” / Client SSH.

Je note le DNS public qui m’est donn√©, il me servira pour le host de Putty

Je lance Putty, j’ajoute le Host :

puis je spécifie le fichier de clé privé créé plus haut :

Pour que ce soit plus simple, j’ajoute le user ubuntu comme Auto-login dans Connection/Data

Je lance la connexion, c’est bon, j’ai la ligne de commande d’Ubuntu.

J’installe GoPhish

Je vais chercher la derni√®re version qui doit √™tre t√©l√©charg√©e sur le d√©p√īt Github officiel.

Au jour de création de ce RetEx, la dernière version est ici :
https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip

Sur la ligne de commande d’Ubuntu, je charge le fichier zip et je le d√©compresse dans opt/ :

wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip
sudo apt install unzip
unzip gophish-v0.12.1-linux-64bit.zip -d ./gophish
rm gophish-v0.12.1-linux-64bit.zip
sudo chmod +x ./gophish/gophish


Je vais devoir configurer l’IP de gophish et son port.
Pour cela, je modifie le fichier config.json

cd gophish
vim config.json

Je remplace 127.0.0.1:3333 par 0.0.0.0:8531 sur la ligne listen_url

Je lance gophish

./gophish

J’obtiens un message d’erreur, probablement une s√©curit√© sur l’√©coute du port 80 par un utilisateur non root, j’ai rapidement essay√© de corriger cela avec ipfw mais il n’est pas sur ma machine et avec iptables, je n’ai rien eu de plus satisfaisant. C’est plut√īt moche et non conseill√©, mais comme mon instance Ec2 ne restera pas en prod, je lance un :

sudo ./gophish

C’est bon, mon GoPhish est lanc√©¬†

dans le texte de la ligne de commande, je r√©cup√®re le mot de passe qui m’est donn√© sur la ligne

Please login with the username admin and the password xxx

Je souhaite utiliser Gophish sans garder ma fenêtre SSH ouverte (facultatif)

J’ajoute ce paragraphe ici pour plus de coh√©rence mais il peut √™tre ex√©cut√© plus tard quand Gophish fonctionnera manuellement.

J’autorise le lancement de Gophish sans √™tre root (sudo)

Pour √©viter d’avoir √† utiliser une commande sudo pour lancer Gophish, je vais autoriser l’utilisateur ubuntu √† interagir sur le port 80 qui est un port privil√©gi√©. En effet la commande cap_net_bind_service permet √† cet ex√©cutable (gophish) de lier des sockets r√©seau √† des ports dont le num√©ro est inf√©rieur ou √©gal √† 1024, m√™me s’il n’est pas ex√©cut√© en tant qu’utilisateur root.

sudo setcap 'cap_net_bind_service=+ep'  /home/ubuntu/gophish/gophish

Ainsi, à partir de maintenant, inutile de taper sudo pour lancer gophish, la commande peut être :

./gophish

Je déclare gophish comme un service

Je vais ajouter un fichier gophish.service dans /etc/systemd/system/gophish.service

[Unit]
Description=GoPhish Service
After=network.target

[Service]
ExecStart=/home/ubuntu/gophish/gophish
Type=simple
PIDFile=/var/run/gophish
User=ubuntu
WorkingDirectory=/home/ubuntu/gophish

[Install]
WantedBy=default.target

Pour ne pas avoir √† tout taper, j’ai mis cela sur un gist, pour le r√©cup√©rer directement :

sudo wget https://gist.githubusercontent.com/sigalou/267349eada979e07c99dc5944253169c/raw/e5d8769bb86b40e15ad0c4631629d575e440199a/gophish.service -O /etc/systemd/system/gophish.service

Cela peut être testé par :

systemctl daemon-reload
systemctl enable gophish
systemctl start gophish
systemctl status gophish

Je relance mon instance, c’est bon, Gophish se lance automatiquement.

Je lance GoPhish

De retour dans mon navigateur, je rel√®ve l’ip √©lastique ou ip public de l’instance, je colle cette adresse suivi de :8531 qui est le port d√©finit plus haut

Je vais donc par exemple sur https://13.36.81.72:8531

Ici on utilise donc “admin” et le mot de passe relev√© en ligne de commande au moment du lancement. Imm√©diatement GoPhish demande de changer le mot de passe et on est ainsi connect√© sur GoPhish.

J’ajoute un utilisateur “pi√©geur” sur le Tenant 365

En me connectant en administrateur ayant les droit de g√©rer les utilisateurs, j’ajoute un nouvel utilisateur.

J’ai choisi d’utiliser un utilisateur que je maquille comme si c’√©tait un compte officiel de microsoft de gestion des comptes.

Je lui ai même mis un joli logo qui fait sérieux.

Evidemment, je lui affecte une licence qui permet d’avoir un compte mail puis je vais dans l’onglet Courrier de cet utilisateur puis logiciels de courrier et je vais cocher au minimum la case SMTP authentifi√©.

(Facultatif) Pour me simplifier la vie et ne pas √† avoir √† ajouter cette boite au lettre, j’ai mis un transfert de tous les mails re√ßus sur cette boite vers mon adresse mail dans Courrier/Transfert des courriers.

Je configure Microsoft Defender pour autoriser GoPhish

Microsoft a tout prévu. Ils ont pensé à proposé sur une licence payante une campagne de phishing pédagogique (licence Defender Plan 2) mais ils ont aussi pensé aux bidouilleurs désargentés en permettant de manuellement autoriser cela.

Je lance Microsoft Defender.

Puis Stratégies et règles

Puis Stratégies de menace / Remise avancée

Et enfin Onglet Simulation d’hame√ßonnage

Merci Sigalou !!! Il fallait le trouver cet onglet 

Ensuite, il faut configurer le domaine et l’IP.

Le Domaine est l’adresse du domaine qui va envoyer le mail, cela correspond au domaine du SMTP From que je vais sp√©cifier dans GoPhish.

L’IP est l’IP √©lastique ou public de l’instance.

Je configure le SMTP de GoPhish

De retour dans GoPhish, je vais dans Sending Profiles et je vais cr√©er un profil d’envoi des messages :

Grace au bouton Send Test Email, je peux vérifier que tout fonctionne parfaitement, je reçois un message

A ce stade, c’est d√©j√† une tr√®s belle victoire personnelle, j’ai su configurer une machine virtuelle, y installer GoPhish, le configurer, trouver comment ne pas se faire coincer par les s√©curit√©s de Microsoft en autorisant cette manipulation et victoire… le mail de test arrive !!! Pour ceux qui d√©couvrent mes RetEx, n’imaginez pas que cela s’est fait le temps d’√©crire cette page, c’est des heures de manip (et d’apprentissage).

Je vais récupérer tous les utilisateurs du Tenant Microsoft 365

Deux mani√®res de r√©cup√©rer les utilisateurs, le plus simple avec l’interface graphique du centre d’administration de M365, sinon cela peut se faire avec une commande powershell.

Je ne vais pas expliquer cette seconde mani√®re de faire, Florian l’a expliqu√©e sur son excellent tuto.

Je prends la formule la plus simple, je vais dans le panneau d’administration puis Utilisateurs actifs puis Exporter les utilisateurs.

L’export se passe bien, je travaille un peu le fichier dans Excel pour supprimer les colonnes inutiles et les lignes qui ne sont pas des utilisateurs. J’ai donc un fichier Excel parfait avec 4 colonnes, je lance un enregistrement en CSV avec une virgule en s√©parateur pour pouvoir effectuer l’import dans GoPhish.

J’injecte les utilisateurs dans un groupe GoPhish

J’ajoute un nouveau groupe, je lance l’import de mon fichier CSV.

J’ai maintenant un nouveau groupe tout pr√™t !

Je configure le mail de phishing

Il s’agit du mail que vont recevoir les destinataires de la campagne.

Pour cela, je suis all√© demander √† Microsoft de m’envoyer un message, j’ai gard√© ainsi le format du message. Au final, cela donne :

Je rappelle que c’est √† vertu p√©dagogique, ne me demandez pas le code HTML de la page, je consid√®re que c’est √† chacun de faire le travail.

Je configure la page de hameçonnage

Appel√©e Landing page, cette page de hame√ßonnage est la page sur laquelle l’utilisateur qu’on souhaite pi√©ger va atterrir quand il cliquera sur le lien qui lui est propos√© dans le mail qu’il a re√ßu.

Je suis all√© chercher des mod√®les pour ne pas r√©inventer l’eau chaude (merci souleiman)

Voici le meilleur lien qui m’a √©t√© utile pour faire la page de connexion M365 la plus r√©aliste possible.

Je pense bien √† la fin de la configuration de la landing page √† cocher la r√©cup√©ration de l’email et du mot de passe. J’ai dans l’id√©e de pouvoir afficher les deux premiers caract√®res par exemple et le dernier des mots de passe “vol√©s” lors de la formation/sensibilisation des utilisateurs. A noter que les mots de passe r√©cup√©r√©s sont donn√©s en clair, je vais donc d√©clencher un changement de tous les mots de passe de tous les utilisateurs quelques jours apr√®s la campagne de phishing p√©dagogique.

Quand l’utilisateur clique sur le lien reconnecter ou sur le bouton bleu Se reconnecter, il atterrit sur :

Ne me demandez pas plus le code HTML de cette page.

Je lance la campagne d’hame√ßonnage

Pour r√©sumer, j’ai cr√©√© un groupe d’utilisateurs, un mod√®le de mail, une page d’hame√ßonnage, je peux donc aller dans Campagnes pour lancer la campagne.

Quand j’appuie sur Launch Campaign, les mails partent…

 

Je reviens dans quelques temps donner des nouvelles de la campagne ici…

Bibliographie

Utiliser une VM de Synology pour Automatiser un flux Powerautomate sous W10

  • Dans le tuto Automatiser la diffusion du journal local sur Teams j’ai utilis√© un ordinateur domotique (celui de ma cuisine) qui affiche Jeedom en permanence, mais quand je pars en vacances, j’√©teins cet ordinateur, je voulais que la r√©cup√©ration du journal continue √† fonctionner
  • ayant un NAS Synology, j’ai donc d√©cid√© d’utiliser ses VM pour r√©cup√©rer le journal

Voici donc mes notes pour créer cette VM

Sur le Synology, on utilise Virtual Machine Manager

  • La cr√©ation de la VM est tr√®s simple

Puis on suit ce tuto très bien fait.

Une fois lancé, on fait un grand grand ménage pour supprimer tout ce qui est inutile, il suffit de lire le paragraphe optimisation du tuto Réinstaller Windows 10

 

  • On t√©l√©charge puis installe Setup.Microsoft.powerAutomate.exe
  • Pour l’autolog de la session windows (puisqu’il faut imp√©rativement un mot de passe), voici le tuto de microsoft

Si les services UIFlowService et UIFlowAgentLauncherService ne se lance pas, faire un petit bat avec :

  • Net start UIFlowService¬†
  • Net start UIFlowAgentLauncherService¬†

et le lancer au démarrage de la VM

 

 

Réinstaller Windows 10

Depuis les derni√®res versions de Windows 10, l’installation qui se veut simple s’est finalement assez complexifi√©e. Ce tuto permet de r√©sumer les √©tapes pour avoir une installation la plus op√©rationnelle possible (et la plus √©pur√©e).

Se créer une clé USB bootable avec Windows 10

Avec la multiplication des versions pirates (et souvent v√©rol√©es), Microsoft a enfin d√©cid√© d’offrir un outil complet de cr√©ation d’une cl√© usb d’installation, inutile de fournir de CD original ou de fichier iso, tout se fait tout seul dans l’installateur.

Lire la suite