ITSkillsCenter
Cybersécurité

Phishing par WhatsApp : comment former vos employés

15 دقائق للقراءة

Lecture : 12 minutes · Niveau : intermédiaire · Mise à jour : avril 2026

⚠️ Disclaimer : Toute simulation de phishing décrite ici suppose une autorisation écrite de la direction et un cadre RH conforme. Ne jamais cibler des employés tiers ou des partenaires sans accord explicite.

WhatsApp est le canal pro n°1 dans la majorité des PME ouest-africaines — et donc la cible de fraude la plus rentable pour les attaquants. Ce tutoriel monte une plateforme de simulation de phishing en local, fournit des scénarios reproductibles, mesure l’efficacité de la formation, et automatise les rappels. Tout est testable sur un VPS à quelques milliers de FCFA par mois ou sur une VM locale.


Sommaire

  1. Architecture d’une campagne de phishing simulée
  2. Installer Gophish en 10 minutes
  3. Créer un template d’email phishing
  4. Cloner une page de login pour landing
  5. Lancer une campagne de test
  6. Scénarios WhatsApp prêts à l’emploi
  7. Mesurer : taux de clic, soumission, signalement
  8. Briefing post-campagne (script formateur)
  9. Automatiser les rappels mensuels (n8n)
  10. Checklist de déploiement en PME
  11. FAQ

1. Architecture d’une campagne de phishing simulée

[Gophish Server] ─── envoie email ───> [Boîtes employés]
       │                                       │
       │                                       │ clic
       │                                       ▼
       └────── reçoit événements <─── [Landing page clonée]
                                                │
                                                ▼
                                       [Page formation]

Composants à monter :
Serveur Gophish (open-source, Go, gratuit)
Domaine d’envoi (idéalement un domaine secondaire ressemblant à votre légitime, ex. entreprise-rh.com)
SMTP relay (Mailgun, SendGrid, ou serveur Postfix dédié)
Landing page de capture + redirection éducative


2. Installer Gophish en 10 minutes

Sur un VPS Ubuntu 22.04 minimum (1 vCPU, 2 Go RAM) :

# 1. Télécharger la dernière release
cd /opt
wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip
unzip gophish-v0.12.1-linux-64bit.zip -d gophish
cd gophish
chmod +x gophish

# 2. Configurer pour exposer l'admin sur 0.0.0.0 (NB : firewall obligatoire)
nano config.json

Modifier config.json :

{
  "admin_server": {
    "listen_url": "0.0.0.0:3333",
    "use_tls": true,
    "cert_path": "gophish_admin.crt",
    "key_path": "gophish_admin.key"
  },
  "phish_server": {
    "listen_url": "0.0.0.0:80",
    "use_tls": false
  }
}
# 3. Lancer en service systemd
sudo nano /etc/systemd/system/gophish.service
[Unit]
Description=Gophish
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/gophish
ExecStart=/opt/gophish/gophish
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now gophish
sudo systemctl status gophish

# 4. Récupérer le mot de passe admin initial
sudo journalctl -u gophish | grep "Please login with"

Sortie type :

Please login with the username admin and the password 0123abcd

Accéder à l’admin : https://VOTRE-IP:3333 → changer le mot de passe immédiatement.

⚠️ Restreindre l’IP de l’admin :

sudo ufw allow from VOTRE-IP-BUREAU to any port 3333
sudo ufw allow 80
sudo ufw enable

3. Créer un template d’email phishing

Dans Gophish > Email Templates > New Template :

Subject : URGENT - Confirmation paie mars (action sous 24h)

HTML :

<!DOCTYPE html>
<html>
<body style="font-family: Arial, sans-serif; padding: 20px;">
  <p>Bonjour {{.FirstName}},</p>

  <p>Suite à la mise à jour du portail RH, nous vous demandons de
  <strong>vérifier votre fiche de paie</strong> du mois de mars
  avant le {{.URLDateLimit}} sans quoi le paiement pourrait être suspendu.</p>

  <p style="text-align:center; margin: 30px 0;">
    <a href="{{.URL}}"
       style="background:#0066cc; color:#fff; padding:12px 24px;
              text-decoration:none; border-radius:4px;">
       Vérifier ma fiche de paie
    </a>
  </p>

  <p style="color:#666; font-size:12px;">
    Service RH — {{.From}}<br>
    Cet email a été envoyé à {{.Email}}
  </p>

  {{.Tracker}}
</body>
</html>

Variables Gophish disponibles :
{{.FirstName}}, {{.LastName}}, {{.Email}} : depuis la liste de cibles
{{.URL}} : URL trackée vers la landing page
{{.Tracker}} : pixel invisible mesurant l’ouverture
{{.From}} : expéditeur configuré dans la campagne

Astuce template WhatsApp : créer un second template imitant une notification WhatsApp Web (logo, ton « Vous avez une nouvelle demande de connexion ») pour les scénarios où le canal initial est WhatsApp et l’attaquant pousse vers un faux login email.


4. Cloner une page de login pour landing

Méthode 1 : import depuis URL (Gophish UI)

Landing Pages > New Landing Page > Import Site → coller l’URL légitime de votre intranet (avec autorisation interne) → Gophish importe le HTML.

Méthode 2 : créer manuellement

Page de capture login + redirection éducative :

<!DOCTYPE html>
<html>
<head>
  <title>Portail RH - Connexion</title>
  <style>
    body{font-family:Arial;background:#f4f4f4;display:flex;
         justify-content:center;align-items:center;height:100vh;margin:0}
    .box{background:#fff;padding:40px;border-radius:8px;
         box-shadow:0 2px 10px rgba(0,0,0,.1);width:340px}
    input{width:100%;padding:10px;margin:8px 0;border:1px solid #ddd;
          border-radius:4px;box-sizing:border-box}
    button{width:100%;padding:12px;background:#0066cc;color:#fff;
           border:none;border-radius:4px;cursor:pointer;font-size:14px}
  </style>
</head>
<body>
  <form class="box" method="POST" action="">
    <h2>Portail RH</h2>
    <input type="email" name="username" placeholder="Email" required>
    <input type="password" name="password" placeholder="Mot de passe" required>
    <button type="submit">Se connecter</button>
  </form>
</body>
</html>

Cocher dans Gophish : Capture Submitted Data + Capture Passwords (uniquement en interne pour la mesure ; les hashes ne sont jamais conservés au-delà du briefing).

Redirection après soumission : une page /formation.html expliquant qu’il s’agissait d’un test, montrant les indices qu’ils auraient dû repérer, et liant vers la documentation interne.

<!DOCTYPE html>
<html>
<body style="font-family:Arial;max-width:600px;margin:50px auto;padding:20px">
  <h1 style="color:#cc0000">⚠️ Vous venez de cliquer sur un email de phishing simulé</h1>
  <p>Bonne nouvelle : c'était un test interne. Aucun mot de passe n'a été transmis.</p>
  <h2>Ce que vous auriez dû remarquer :</h2>
  <ul>
    <li>L'email vient de <code>rh-paie-corp.com</code> et non du domaine officiel</li>
    <li>Le ton urgent ("sous 24h") est un signal classique de phishing</li>
    <li>Le bouton ne pointe pas vers l'intranet officiel</li>
  </ul>
  <p>Formation complète : <a href="/wiki/phishing">Reconnaître le phishing</a></p>
</body>
</html>

5. Lancer une campagne de test

1. Importer la liste des cibles (Users & Groups > New Group > Bulk Import Users) — CSV format :

First Name,Last Name,Email,Position
Aïcha,Diop,aicha.diop@entreprise.sn,Comptabilité
Ousmane,Ba,ousmane.ba@entreprise.sn,Logistique

2. Configurer le Sending Profile (SMTP) — recommandé : compte Mailgun dédié simulation.

Name: Phishing Test Mailgun
SMTP From: rh@entreprise-rh.com
Host: smtp.mailgun.org:587
Username: postmaster@entreprise-rh.com
Password: [API key Mailgun]

Tester avec Send Test Email avant de lancer la campagne.

3. Créer la campagne (Campaigns > New Campaign) :
– Email Template : celui créé étape 3
– Landing Page : celle de l’étape 4
– URL : URL publique du serveur Gophish (http://phishing.entreprise-rh.com)
– Sending Profile : Mailgun configuré
– Groups : la liste importée
– Send Emails By : étalé sur 4h pour ne pas saturer

4. Lancer. Aller dans Campaigns > [Nom] > Results pour voir en temps réel : envoyé, ouvert, cliqué, soumis, signalé.


6. Scénarios WhatsApp prêts à l’emploi

Scénario 1 : faux DG demandant un virement urgent
– Canal : WhatsApp via numéro inconnu prétendant être le DG
– Pretexte : « Je suis en réunion à l’étranger, j’ai besoin d’un virement urgent au fournisseur X — voici l’IBAN »
– Cible : comptable, assistant DG
– Indice de détection : ton urgent + canal inhabituel + IBAN non vérifié

Scénario 2 : faux fournisseur signalant un changement de RIB
– Canal : email + relance WhatsApp
– Pretexte : « Notre RIB a changé, merci de mettre à jour pour les prochaines factures »
– Cible : service achats, comptabilité
– Indice : changement RIB sans appel téléphonique de confirmation

Scénario 3 : faux support Microsoft/Google demandant un mot de passe
– Canal : WhatsApp Web qui sonne avec un « code de connexion »
– Pretexte : « Confirmez ce code reçu pour valider la sécurité de votre compte »
– Cible : tout employé
– Indice : aucun support légitime ne demande de code par message

Scénario 4 : faux CV avec PDF malveillant
– Canal : WhatsApp Business à RH
– Pretexte : « Bonjour, voici mon CV au format PDF » + fichier cv-suspect.pdf.exe
– Cible : RH, recrutement
– Indice : double extension, taille anormale, expéditeur inconnu

Scénario 5 : alerte fausse banque
– Canal : SMS + WhatsApp groupé
– Pretexte : « Tentative de connexion suspecte sur votre compte. Cliquez ici pour bloquer »
– Cible : tous
– Indice : URL non bancaire (bankcheck-secure.tk)

Pour chaque scénario : créer un template Gophish dédié + landing page éducative spécifique + mesure individuelle.


7. Mesurer : taux de clic, soumission, signalement

Métriques clés exportées par Gophish (Campaigns > Export CSV) :

Métrique Cible PME mature
Taux d’ouverture < 30%
Taux de clic < 10%
Taux de soumission credentials < 3%
Taux de signalement à l’IT > 40%

Script Python pour rapport mensuel automatique :

# rapport_phishing.py
import csv
from collections import defaultdict

with open('campaign-results.csv') as f:
    reader = csv.DictReader(f)
    stats = defaultdict(int)
    for row in reader:
        stats['envoyes'] += 1
        if row['Status'] in ['Opened', 'Clicked Link', 'Submitted Data']:
            stats['ouverts'] += 1
        if row['Status'] in ['Clicked Link', 'Submitted Data']:
            stats['cliques'] += 1
        if row['Status'] == 'Submitted Data':
            stats['soumis'] += 1

n = stats['envoyes']
print(f"Envoyés      : {n}")
print(f"Ouverts      : {stats['ouverts']:>3} ({stats['ouverts']/n:.1%})")
print(f"Cliqués      : {stats['cliques']:>3} ({stats['cliques']/n:.1%})")
print(f"Soumis creds : {stats['soumis']:>3} ({stats['soumis']/n:.1%})")
python rapport_phishing.py

Sortie :

Envoyés      : 47
Ouverts      : 28 (59.6%)
Cliqués      : 11 (23.4%)
Soumis creds :  4 (8.5%)

Bouton de signalement Outlook/Gmail : déployer l’add-in Microsoft « Report Message » ou la fonction Gmail native. Tracker l’évolution du taux de signalement campagne après campagne.


8. Briefing post-campagne (script formateur)

Réunion de 30 min, 3-7 jours après la campagne. Script :

1. Annonce honnête (3 min)

« Nous avons mené un test interne. Voici les résultats globaux. Aucun nom n’est nommé. L’objectif est collectif. »

2. Affichage des stats anonymisées (5 min)
– Tableau avec taux par scénario
– Comparaison aux campagnes précédentes
– Comparaison aux benchmarks PME

3. Décortiquer 2 emails (10 min)
– Projeter l’email piège
– Faire pointer les indices par les participants (don’t tell, ask)
– Comparer avec un email légitime équivalent

4. Procédure de signalement (5 min)
– Démonstration du bouton « Report Phishing »
– Adresse email interne phishing@entreprise.sn
– Récompense symbolique pour les meilleurs signaleurs (tirage au sort)

5. Q&R + ressources (7 min)
– Wiki interne, vidéo formation, hotline


9. Automatiser les rappels mensuels (n8n)

Sur n8n auto-hébergé (voir n8n auto-hébergé tutoriel installation), workflow phishing-monthly-reminder :

[Cron 1er du mois 9h]
  → [HTTP Request: Gophish API GET /api/campaigns]
  → [Function: calculer score équipe]
  → [Email broadcast: "Stats sécurité du mois + 1 conseil"]
  → [Slack/Teams: rappel canal #securite]

Exemple node Function n8n (calcul score) :

const campaigns = items[0].json;
const month = new Date().getMonth();

const monthlyResults = campaigns.filter(c => {
  return new Date(c.created_date).getMonth() === month;
});

const totalSent = monthlyResults.reduce((s, c) => s + c.results.length, 0);
const totalClicked = monthlyResults.reduce((s, c) =>
  s + c.results.filter(r => ['Clicked Link', 'Submitted Data'].includes(r.status)).length, 0
);

return [{ json: {
  click_rate: (totalClicked / totalSent * 100).toFixed(1),
  total_sent: totalSent,
  conseil: "Vérifier toujours l'expéditeur réel avant de cliquer"
}}];

10. Checklist de déploiement en PME

[ ] Autorisation écrite direction signée (cadre RH inclus)
[ ] Information préalable du CHSCT/délégués (selon législation)
[ ] Domaine d'envoi dédié acquis (entreprise-rh.com ou similaire)
[ ] Serveur Gophish déployé sur VPS isolé
[ ] Mailgun/SendGrid configuré + DNS SPF/DKIM/DMARC sur domaine simulation
[ ] 5 templates de phishing créés (1 par scénario)
[ ] 5 landing pages éducatives associées
[ ] Liste cibles importée (CSV depuis annuaire)
[ ] Campagne pilote sur 5 testeurs IT pour valider
[ ] Campagne complète planifiée
[ ] Briefing post-campagne planifié dans le calendrier
[ ] Bouton "Report Phishing" déployé dans le client mail
[ ] Wiki interne phishing rédigé
[ ] Workflow n8n rappel mensuel actif
[ ] Procédure d'incident phishing réel documentée

FAQ

Faut-il prévenir les employés qu’une simulation va avoir lieu ?

Recommandation : annoncer un programme de test annuel sans préciser les dates ni les scénarios. Cela respecte le cadre RH et l’éthique sans réduire l’efficacité du test.

Les données capturées (mots de passe) sont-elles légalement utilisables ?

Non. Les credentials soumis ne doivent jamais être stockés en clair ni utilisés. Configurer Gophish pour ne capturer que le fait qu’un mot de passe a été soumis (longueur, pas le contenu) — ou supprimer les enregistrements immédiatement après le débrief.

Comment monter un domaine de simulation crédible ?

Acheter un domaine légèrement modifié (entreprise-rh.com au lieu de entreprise.sn), configurer SPF/DKIM/DMARC pour passer les filtres anti-spam, et chauffer la réputation IP en envoyant graduellement (10, 50, 200 emails sur 2 semaines avant la première campagne).

Que faire si un employé tombe régulièrement dans les pièges ?

Ne jamais sanctionner. Privilégier : formation 1-1 ciblée, mentor « buddy » attentif, scénarios de difficulté graduelle. La culture de la peur produit du non-signalement, ce qui est pire qu’un clic.

Quelle fréquence de campagnes ?

1 campagne par mois sur un sous-groupe rotatif (ex. 30% des effectifs) → chaque employé est testé 3-4× par an sur des scénarios différents. Évite la lassitude tout en maintenant la vigilance.

Comment intégrer le canal WhatsApp réel dans la simulation ?

Gophish n’envoie pas WhatsApp directement. Solutions :
– Option payante : utiliser WhatsApp Business API + script qui envoie un message vers une URL de capture (proxy Gophish via le paramètre URL)
– Option pédagogique : conserver l’envoi par email mais avec un template imitant l’apparence WhatsApp (push, ton, vocabulaire)

Quel budget annuel pour ce dispositif ?

Coûts réels : VPS Gophish (quelques milliers FCFA/mois), domaine simulation (~10k FCFA/an), Mailgun/SendGrid (gratuit jusqu’à quelques milliers d’emails/mois), temps interne pour briefings. Ordre de grandeur très accessible pour une PME.

Que faire si une vraie attaque survient pendant la simulation ?

Procédure :
1. Suspendre la campagne en cours
2. Activer le plan de réponse à incident
3. Communiquer immédiatement aux équipes « vraie alerte »
4. Préserver les preuves
5. Reporter la campagne suivante


Articles liés (cluster Cybersécurité PME)

Voir aussi : Pentesting éthique pour PME pour aller plus loin sur l’offensif autorisé, n8n auto-hébergé tutoriel installation pour l’automatisation des rappels.


Article mis à jour le 25 avril 2026. Pour signaler une erreur ou suggérer une amélioration, écrivez-nous.

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité