Cybersécurité

Phishing : reconnaître et neutraliser les tentatives d’hameçonnage

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

Ce que vous saurez faire

  1. Reconnaître les signaux de phishing
  2. Tester une URL suspecte sans cliquer
  3. Analyser .eml en profondeur
  4. Playbook compte compromis

Étape 1 — Anatomie d’un phishing moderne

1. Reconnaissance (OSINT LinkedIn, leaks)
2. Préparation (typosquat domaine, clone page)
3. Livraison (email, SMS, Teams, WhatsApp)
4. Exécution (vol identifiants, malware)
5. Exfiltration (accès mail, virements)
6. Persistance (règles transfert, MFA backdoor)

Étape 2 — Signaux techniques

Email:
  From: "Wave Support" <support@wave-sn.icu>   domaine .icu suspect
  Reply-To: différent du From
  Return-Path: anonyme (noreply@protonmail...)
  Homographe: exampIe.sn (I majuscule)
  Pièce jointe: factur.zip, RIB.html, invoice.xlsm

SMS:
  Lien raccourci (bit.ly, tinyurl)
  Expéditeur alphanumérique non vérifié
  Message générique sans votre nom

Étape 3 — Tester URL sans cliquer

# Expansion URL courte
curl -sI "https://bit.ly/XXXX" | grep -iE '^location:'

# VirusTotal réputation
curl -s "https://www.virustotal.com/api/v3/urls/$(echo -n 'suspect.com' | base64 | tr -d '=')" \
     -H "x-apikey: $VT_KEY" | jq .data.attributes.last_analysis_stats

# Âge domaine
whois suspect-site.com | grep -iE '(creation|registrar)'

Étape 4 — Analyse .eml

import email, re

with open("suspect.eml","rb") as f:
    msg = email.message_from_bytes(f.read())

print("From:", msg["From"])
print("Return-Path:", msg["Return-Path"])
print("Reply-To:", msg["Reply-To"])
print("Auth:", msg["Authentication-Results"])

# Extraire URLs
body = "".join(p.get_payload(decode=True).decode(errors='ignore')
               for p in msg.walk()
               if p.get_content_type() in ("text/html","text/plain"))

urls = re.findall(r'https?://[^\s<>"\)]+', body)
for u in urls: print("-", u)

Étape 5 — URLScan pour analyse sans risque

import requests, os

for u in urls:
    r = requests.post("https://urlscan.io/api/v1/scan/",
        headers={"API-Key": os.environ["URLSCAN_KEY"],
                 "Content-Type":"application/json"},
        json={"url": u, "visibility":"unlisted"})
    print(u, "→", r.json().get("result"))

Étape 6 — M365 compromis playbook

Connect-ExchangeOnline

# Voir règles malveillantes
Get-InboxRule -Mailbox user@itsc.sn | Format-List Name,ForwardTo,RedirectTo,DeleteMessage

# Supprimer règle suspecte
Remove-InboxRule -Mailbox user@itsc.sn -Identity "Regle suspecte"

# Voir transferts externes
Get-Mailbox user@itsc.sn | Select ForwardingSMTPAddress, ForwardingAddress

# Révoquer TOUS les tokens
Revoke-AzureADUserAllRefreshToken -ObjectId "user@itsc.sn"

Étape 7 — Google Workspace compromis

Admin Console → Security → Alert Center
  Login géo improbable
  Account suspended system
  Data exfiltration (Drive massif)

Admin → Users → user → Security:
  - Force password change
  - Revoke all OAuth tokens
  - Sign out all sessions
  - Désactiver + audit 90j history

Étape 8 — Enquête scope

Questions clés:
1. Date/heure compromission (login suspect)
2. Durée avant détection
3. Emails envoyés frauduleusement
4. Règles transfert/copie
5. Accès tiers (Drive, GitHub, banque en ligne)
6. Mots de passe réutilisés ailleurs

Communication:
- Tous destinataires emails frauduleux
- Partenaires/clients qui auraient "nouveau RIB"
- RGPD/LPDP si données perso touchées

Étape 9 — Défense deepfake audio

Code secret par demande financière (phrase challenge)
Double validation virements > 5M FCFA
JAMAIS se fier à la voix seule
Logs appels + vérification canal alternatif
Former équipe compta EN PRIORITÉ

Étape 10 — Détection temps réel

Microsoft Defender Phishing:
- Safe Links (URL rewriting)
- Safe Attachments (sandboxing)
- Anti-phishing AI

Google Workspace Advanced Protection Program
Cloudflare Email Security (gratuit jusqu'à 50 users)
Proofpoint/Mimecast/Abnormal Security (enterprise)

Étape 11 — CDP Sénégal + RGPD

Loi 2008-12:
- CDP notifiée dans 72h
- Si données perso: notifier personnes
- Garder preuves (logs, emails, forensic)

RGPD (clients UE):
- CNIL dans 72h
- Sanctions jusqu'à 4% du CA

Playbook avocat spécialisé prêt à l'avance

Étape 12 — Formation anti-phishing

Mois 1: sensibilisation générale 15 min
Mois 2: simulation Gophish réaliste
Mois 3: formation ciblée cliqueurs
Mois 4-12: simulation mensuelle

Mesurer:
- Taux clic (< 5%)
- Taux signalement (> 50%)
- Temps moyen signalement (< 10 min)

Checklist

✓ SPF/DKIM/DMARC strict
✓ Email security gateway
✓ FIDO2 pour admins
✓ Règles transfert surveillées
✓ Runbook compromission écrit
✓ Simulations mensuelles
✓ Code secret virements
✓ Notification CDP sous 72h si incident

Hébergement recommandé pour les lecteurs

Si vous n’avez pas encore d’hébergeur, Hostinger est celui que nous utilisons et que nous recommandons après plusieurs années d’usage.

Profiter de l’offre →

Lien d affiliation. Si vous achetez via ce lien, le blog reçoit une petite commission sans surcoût pour vous.

Étape A — Anatomie d’un phishing 2026 (kit-as-a-service)

Le phishing en 2026 n’est plus l’email Nigerian Prince mal écrit. Les attaquants opèrent désormais via des Phishing-as-a-Service comme Tycoon 2FA, Mamba 2FA ou EvilProxy : pour 200 à 500 USD/mois, l’attaquant obtient un kit clé en main qui contourne le 2FA Microsoft 365 et Google Workspace via reverse proxy en temps réel. Le mail légitime arrive sur votre Outlook, vous cliquez, vous voyez la vraie page Microsoft, vous validez votre 2FA — l’attaquant capture votre cookie de session en parallèle et garde l’accès même si vous changez le mot de passe ensuite.

Pour le marché ouest-africain, les vagues observées en 2025–2026 ciblent surtout : DGI Sénégal (faux remboursements), Wave et Orange Money (faux blocage de compte), banques (UBA, Ecobank, BICIS), Microsoft 365 d’ONG opérant sur Dakar et Abidjan. Le pattern : email parfaitement traduit en français, logo officiel, URL en sous-domaine compromis (souvent un site WordPress ouest-africain piraté), formulaire qui exfiltre vers un serveur Cloudflare Workers ou DigitalOcean.

Étape B — Cinq signaux techniques à vérifier en 30 secondes

Avant de cliquer sur quoi que ce soit, ouvrez les en-têtes complets de l’email (Outlook : … → View → View message source ; Gmail : trois points → Show original). Vérifiez cinq lignes :

1. Authentication-Results: spf=pass dkim=pass dmarc=pass (header.from=domaine-officiel.com)
2. Return-Path: doit matcher le domaine annoncé dans le From
3. Received: from doit avoir une cohérence géographique
4. Reply-To: si différent du From, signal d'alerte fort
5. List-Unsubscribe: présent et pointant vers le vrai domaine

Sortie attendue : si SPF, DKIM et DMARC sont tous PASS et que le header.from matche le domaine officiel attendu, le mail vient bien du domaine annoncé. Si DMARC=fail ou que le Reply-To pointe vers un Gmail/ProtonMail random, c’est un phishing avec 95 % de probabilité.

Étape C — Tester une URL sans cliquer (sandbox publique)

Pour analyser une URL suspecte sans risquer votre poste, utilisez quatre outils gratuits :

  • urlscan.io — soumet l’URL, capture screenshot, analyse JS, géolocalisation IP. Réponse en 10 à 20 secondes.
  • VirusTotal — agrège 70+ moteurs antivirus et reputation engines. Privilégier l’onglet Relations qui montre les domaines liés.
  • any.run — sandbox interactive Windows pour observer le comportement d’un installer ou d’un .exe.
  • browser sandbox local — un VM Windows snapshot ou un container browser-in-docker pour ouvrir l’URL sans contaminer votre poste.

Sortie attendue : urlscan.io vous montre les requêtes sortantes et le rendu visuel — si la page singe Microsoft 365 mais que les ressources sont chargées depuis random-cdn.workers.dev, le verdict est sans appel.

Étape D — Analyser un fichier .eml en local sans l’ouvrir

Si vous recevez un .eml suspect en pièce jointe, ne le double-cliquez jamais. Ouvrez-le avec un éditeur texte ou avec emldump de Didier Stevens :

pip install oletools
emldump.py suspect.eml
emldump.py -s 1 suspect.eml | grep -iE "from|to|subject|return-path|reply-to"

Cette commande extrait les headers sans déclencher le rendu HTML qui pourrait charger un tracker invisible (pixel 1×1) et confirmer à l’attaquant que votre adresse est valide. Sortie attendue : la liste des en-têtes en clair, les pièces jointes listées en base64, prêtes à être extraites pour analyse VirusTotal.

Étape E — Playbook réponse Microsoft 365 compromis

Si un compte M365 est compromis (login soudain depuis le Vietnam, règles Outlook qui forwardent vers une adresse externe), agissez dans cet ordre strict :

1. Reset password via portal.azure.com (admin)
2. Revoke all sessions: Get-AzureADUser -Filter "UPN eq 'user@org.com'" | Revoke-AzureADUserAllRefreshToken
3. Audit règles Outlook: Get-InboxRule -Mailbox user@org.com | Where {$_.Enabled -eq $true}
4. Supprimer règles malveillantes: Remove-InboxRule -Identity "Forward to attacker"
5. Vérifier app consents: Get-AzureADUserOAuth2PermissionGrant -ObjectId <userId>
6. Rotation MFA: réinscrire un nouvel authenticator app

Sortie attendue : les sessions actives sont coupées en moins de 60 secondes, l’attaquant perd l’accès même s’il avait volé un cookie de session via reverse proxy. La rotation MFA évite qu’il enregistre son propre device.

Étape F — Playbook réponse Google Workspace compromis

Sur Google Workspace, l’équivalent passe par admin.google.com et gcloud. Procédure :

1. Suspend le compte: Users → user → Suspend
2. Reset password obligatoire au prochain login
3. Sign out from all devices: User account → Security → Sign out
4. Audit Filters Gmail: Settings → Filters and Blocked Addresses (UI) — chercher forward malveillant
5. Audit App passwords: Security → App passwords — révoquer tous les non reconnus
6. Audit OAuth tokens: myaccount.google.com/permissions — supprimer apps suspectes

Pour les organisations sénégalaises et ivoiriennes qui dépendent de Google Workspace, formalisez ce playbook dans une fiche de 1 page A4 affichée près du poste de l’admin IT. En situation de stress, personne ne lit un wiki de 30 pages.

Étape G — Défense deepfake audio sur appels WhatsApp et téléphone

Les attaques par deepfake audio ciblent les CFO et trésoriers : un attaquant clone la voix du directeur via 3 secondes d’extrait LinkedIn, appelle le service comptable pour ordonner un virement urgent. Trois mesures simples :

  • Mot de passe verbal partagé entre direction et comptabilité, jamais écrit, changé tous les trimestres.
  • Procédure de rappel obligatoire : tout virement > 1 million FCFA déclenche un rappel sur le numéro officiel enregistré, jamais sur celui de l’appel entrant.
  • Délai d’attente forcé : aucun virement urgent dans la même heure que la demande, même si le « directeur » insiste.

Sortie attendue : un appel deepfake bien fait peut tromper l’oreille humaine à 90 %. Mais l’attaquant ne connaît jamais le mot de passe verbal interne. Cette friction de 3 minutes a sauvé des dizaines de millions de FCFA en 2025.

Étape H — Formation continue et test de phishing interne

Aucun outil ne remplace la formation. Mettez en place trois rituels :

  • Campagne phishing simulée trimestrielle via GoPhish (open source) ou KnowBe4 (commercial). Mesurez le clic-rate, l’objectif est <5 % à 12 mois.
  • Brief mensuel de 15 min : un cas réel de phishing capté ce mois-ci, capture d’écran, indices, ce qu’il fallait voir.
  • Bouton « Signaler phishing » dans Outlook et Gmail, qui forwarde vers une boîte SOC interne, et chaque signalement reçoit un retour personnalisé sous 24h.

Dans la continuité, voir nos tutoriels CrowdSec pour applications self-hosted et Plausible Analytics sur Hetzner avec Coolify pour outiller votre stack défensive complète.

مشاركة