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

This commit is contained in:
Translator 2025-09-07 18:16:20 +00:00
parent 171c6d303d
commit 308e81fc7a

View File

@ -1,4 +1,4 @@
# Pentesting Network
# Pentesting di Rete
{{#include ../../banners/hacktricks-training.md}}
@ -6,14 +6,14 @@
## Scoprire host dall'esterno
Questa sarà una **breve sezione** su come trovare **IP che rispondono** da **Internet**.\
Questa sarà una **sezione breve** su come trovare **IP che rispondono** da **Internet**.\
In questa situazione hai un **ambito di IP** (forse anche diversi **intervalli**) e devi solo trovare **quali IP stanno rispondendo**.
### ICMP
Questo è il modo **più semplice** e **veloce** per scoprire se un host è attivo o meno.\
Puoi provare a inviare alcuni pacchetti **ICMP** e **aspettarti risposte**. Il modo più semplice è semplicemente inviare una **richiesta di echo** e aspettare la risposta. Puoi farlo usando un semplice `ping` o usando `fping` per **intervalli**.\
Puoi anche usare **nmap** per inviare altri tipi di pacchetti ICMP (questo eviterà i filtri per le comuni richieste-risposte di echo ICMP).
Puoi provare a inviare alcuni pacchetti **ICMP** e **aspettarti risposte**. Il modo più semplice è inviare una **echo request** e aspettarsi la risposta. Puoi farlo usando un semplice `ping` o usando `fping` per **intervalli**.\
Puoi anche usare **nmap** per inviare altri tipi di pacchetti ICMP (questo eviterà i filtri sulle comuni echo request/response ICMP).
```bash
ping -c 1 199.66.11.4 # 1 echo request to a host
fping -g 199.66.11.0/24 # Send echo requests to ranges
@ -21,50 +21,51 @@ 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.\
Quindi, ciò di cui hai bisogno è uno **scanner di porte veloce** ([masscan](https://github.com/robertdavidgraham/masscan)) e un elenco delle **porte più utilizzate:**
È molto comune trovare che ogni tipo di pacchetti ICMP venga filtrato. Quindi, tutto ciò che puoi fare per verificare se un host è attivo è **provare a trovare open ports**. Ogni host ha **65535 ports**, quindi, se hai un ambito "grande" **non puoi** testare se **each port** di ogni host sia open o meno, ci vorrebbe troppo tempo.\
Quindi, ciò di cui hai bisogno è un **fast port scanner** ([masscan](https://github.com/robertdavidgraham/masscan)) e una lista delle **ports più usate:**
```bash
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24
```
Puoi anche eseguire questo passaggio con `nmap`, ma è più lento e in qualche modo `nmap` ha problemi a identificare gli host attivi.
Potresti anche eseguire questo passaggio con `nmap`, ma è più lento e, in una certa misura, `nmap` ha problemi a identificare i hosts up.
### Scoperta della Porta HTTP
### Scoperta porte HTTP
Questa è solo una scoperta della porta TCP utile quando vuoi **concentrarti sulla scoperta dei servizi HTTP**:
Questa è solo una scoperta delle porte TCP utile quando vuoi **concentrarti sulla scoperta dei** **servizi HTTP**:
```bash
masscan -p80,443,8000-8100,8443 199.66.11.0/24
```
### Scoperta delle porte UDP
### UDP Port Discovery
Puoi anche provare a controllare alcune **porte UDP aperte** per decidere se dovresti **prestare maggiore attenzione** a un **host.** Poiché i servizi UDP di solito **non rispondono** con **alcun dato** a un pacchetto di sondaggio UDP vuoto, è difficile dire se una porta è filtrata o aperta. Il modo più semplice per decidere questo è inviare un pacchetto relativo al servizio in esecuzione, e poiché non sai quale servizio è in esecuzione, dovresti provare il più probabile in base al numero di porta:
Puoi anche provare a verificare se ci sono delle **UDP port open** per decidere se dovresti **prestare più attenzione** a un **host.** Poiché UDP services solitamente **don't respond** con **any data** a una normale empty UDP probe packet è difficile dire se una port sia being filtered o open. Il modo più semplice per deciderlo è inviare un packet relativo al running service, e dato che non sai quale service è in esecuzione, dovresti provare il più probabile in base al numero di port:
```bash
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'**/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._
La riga di nmap proposta prima testerà le **top 1000 UDP ports** in ogni host all'interno della **/24** range, ma anche solo questo richiederà **>20min**. Se hai bisogno dei **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à queste **UDP probes** alla loro **expected port** (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._
### SCTP Port Discovery
### Scoperta porte SCTP
```bash
#Probably useless, but it's pretty fast, why not try it?
nmap -T4 -sY -n --open -Pn <IP/range>
```
## Pentesting Wifi
Qui puoi trovare una bella guida su tutti i noti attacchi Wifi al momento della scrittura:
Qui puoi trovare una buona guida di tutti i ben noti attacchi Wifi al momento della stesura:
{{#ref}}
../pentesting-wifi/
{{#endref}}
## Scoprire host dall'interno
## Scoprire gli host dall'interno
Se sei all'interno della rete, una delle prime cose che vorrai fare è **scoprire altri host**. A seconda di **quanto rumore** puoi/vuoi fare, potrebbero essere eseguite diverse azioni:
Se sei all'interno della rete, una delle prime cose che vorrai fare è **scoprire altri host**. A seconda di **quanto rumore** puoi/vuoi generare, si possono eseguire azioni diverse:
### Passivo
Puoi utilizzare questi strumenti per scoprire passivamente host all'interno di una rete connessa:
Puoi usare questi strumenti per scoprire in modo passivo gli host all'interno di una rete connessa:
```bash
netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log
@ -75,8 +76,8 @@ set net.show.meta true #more info
```
### Attivo
Nota che le tecniche commentate in [_**Scoprire host dall'esterno**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Port Discovery_) possono essere **applicate qui**.\
Ma, poiché sei nella **stessa rete** degli altri host, puoi fare **più cose**:
Nota che le tecniche commentate in [_**Discovering hosts from the outside**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Port Discovery_) possono essere anche **applicate qui**.\
Ma, dato che sei nella **stessa rete** degli altri hosts, puoi fare **più cose**:
```bash
#ARP discovery
nmap -sn <Network> #ARP Requests (Discover IPs)
@ -96,35 +97,36 @@ set net.probe.throttle 10 #10ms between probes sent (default=10)
#IPv6
alive6 <IFACE> # Send a pingv6 to multicast.
```
### Active ICMP
### ICMP Attivo
Nota che le tecniche commentate in _Discovering hosts from the outside_ ([_**ICMP**_](#icmp)) possono essere **applicate qui**.\
Ma, poiché sei nella **stessa rete** degli altri host, puoi fare **più cose**:
Nota che le tecniche commentate in _Scoprire host dall'esterno_ ([_**ICMP**_](#icmp)) possono essere **applicate anche qui**.\
Tuttavia, poiché sei nella **stessa rete** degli altri host, puoi fare **più cose**:
- Se **pinghi** un **indirizzo di broadcast di subnet**, il ping dovrebbe arrivare a **ogni host** e potrebbero **rispondere** a **te**: `ping -b 10.10.5.255`
- Pingando l'**indirizzo di broadcast di rete** potresti persino trovare host all'interno di **altre subnet**: `ping -b 255.255.255.255`
- Usa i flag `-PE`, `-PP`, `-PM` di `nmap` per eseguire la scoperta degli host inviando rispettivamente **ICMPv4 echo**, **timestamp** e **richieste di subnet mask:** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
- Se esegui **ping** a un **subnet broadcast address** il ping dovrebbe arrivare a **ogni host** e potrebbero **rispondere** a **te**: `ping -b 10.10.5.255`
- Eseguendo il ping sull'**indirizzo broadcast di rete** potresti anche trovare host in **altre subnet**: `ping -b 255.255.255.255`
- Usa le flag `-PE`, `-PP`, `-PM` di `nmap` per eseguire host discovery inviando rispettivamente **ICMPv4 echo**, **timestamp**, e **subnet mask requests:** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
### **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 alla porta 9**.\
Se **nessun \[MAC]** è fornito, il pacchetto viene inviato a **broadcast ethernet** (e il MAC di broadcast sarà quello ripetuto).
Wake On Lan viene usato per **accendere** i computer tramite un **messaggio di rete**.\
Il magic packet usato per accendere il computer è semplicemente un pacchetto in cui è fornito un **MAC Dst** e poi esso viene **ripetuto 16 volte** all'interno dello stesso pacchetto.\
Questi tipi di pacchetti vengono solitamente inviati in un **ethernet 0x0842** o in un **pacchetto UDP verso la porta 9**.\
Se **nessun \[MAC]** viene fornito, il pacchetto viene inviato all'**ethernet broadcast** (e il MAC di broadcast sarà quello 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.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0842
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
```
## Scansione degli Host
## Scansione degli host
Una volta che hai scoperto tutti gli IP (esterni o interni) che desideri esaminare in profondità, possono essere eseguite diverse azioni.
Una volta che hai scoperto tutti gli IP (esterni o interni) che vuoi scansionare in profondità, si possono eseguire diverse azioni.
### TCP
- **Porta** aperta: _SYN --> SYN/ACK --> RST_
- **Porta** chiusa: _SYN --> RST/ACK_
- **Porta** filtrata: _SYN --> \[NESSUNA RISPOSTA]_
- **Porta** filtrata: _SYN --> messaggio ICMP_
- **Porta aperta**: _SYN --> SYN/ACK --> RST_
- **Porta chiusa**: _SYN --> RST/ACK_
- **Porta filtrata**: _SYN --> \[NO RESPONSE]_
- **Porta filtrata**: _SYN --> messaggio ICMP_
```bash
# Nmap fast scan for the most 1000tcp ports used
nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>
@ -140,10 +142,10 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
Ci sono 2 opzioni per scansionare una porta UDP:
- Inviare un **pacchetto UDP** e controllare la risposta _**ICMP unreachable**_ se la porta è **chiusa** (in diversi casi ICMP sarà **filtrato** quindi non riceverai alcuna informazione se la porta è chiusa o aperta).
- Inviare dei **datagrammi formattati** per ottenere una risposta da un **servizio** (ad es., DNS, DHCP, TFTP e altri, come elencato in _nmap-payloads_). Se ricevi una **risposta**, allora la porta è **aperta**.
- Inviare un **UDP packet** e controllare la risposta _**ICMP unreachable**_ se la porta è **chiusa** (in molti casi ICMP sarà **filtrato**, quindi non riceverai informazioni se la porta è chiusa o aperta).
- Inviare **datagrammi formattati** per ottenere una risposta da un **service** (es., DNS, DHCP, TFTP e altri, come elencato in _nmap-payloads_). Se ricevi una **risposta**, la porta è **aperta**.
**Nmap** mescolerà entrambe le opzioni utilizzando "-sV" (le scansioni UDP sono molto lente), ma nota che le scansioni UDP sono più lente delle scansioni TCP:
**Nmap** mescola entrambe le opzioni usando "-sV" (le scansioni UDP sono molto lente), ma nota che le scansioni UDP sono più lente delle scansioni TCP:
```bash
# Check if any of the most common udp services is running
udp-proto-scanner.pl <IP>
@ -155,27 +157,27 @@ nmap -sU -sV -sC -n -F -T4 <IP>
nmap -sU -sV --version-intensity 0 -n -T4 <IP>
# You could use nmap to test all the UDP ports, but that will take a lot of time
```
### SCTP Scan
### Scansione SCTP
**SCTP (Stream Control Transmission Protocol)** è progettato per essere utilizzato insieme a **TCP (Transmission Control Protocol)** e **UDP (User Datagram Protocol)**. Il suo scopo principale è facilitare il trasporto di dati telefonici su reti IP, rispecchiando molte delle caratteristiche di affidabilità presenti in **Signaling System 7 (SS7)**. **SCTP** è un componente fondamentale della famiglia di protocolli **SIGTRAN**, che mira a trasportare segnali SS7 su reti IP.
**SCTP (Stream Control Transmission Protocol)** è progettato per essere usato insieme a **TCP (Transmission Control Protocol)** e **UDP (User Datagram Protocol)**. Il suo scopo principale è facilitare il trasporto di dati di telefonia sulle reti IP, replicando molte delle funzionalità di affidabilità presenti in **Signaling System 7 (SS7)**. **SCTP** è un componente fondamentale della famiglia di protocolli **SIGTRAN**, che ha l'obiettivo di trasportare i segnali SS7 sulle reti IP.
Il supporto per **SCTP** è fornito da vari sistemi operativi, come **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS** e **VxWorks**, indicando la sua ampia accettazione e utilità nel campo delle telecomunicazioni e del networking.
Il supporto per **SCTP** è fornito da vari sistemi operativi, come **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS** e **VxWorks**, indicando la sua ampia diffusione e utilità nel campo delle telecomunicazioni e delle reti.
Due diverse scansioni per SCTP sono offerte da nmap: _-sY_ e _-sZ_
Due diverse scansioni per **SCTP** sono offerte da nmap: _-sY_ e _-sZ_
```bash
# Nmap fast SCTP scan
nmap -T4 -sY -n -oA SCTFastScan <IP>
# Nmap all SCTP scan
nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>
```
### Evasione di IDS e IPS
### IDS and IPS evasion
{{#ref}}
ids-evasion.md
{{#endref}}
### **Ulteriori opzioni di nmap**
### **Altre opzioni nmap**
{{#ref}}
@ -184,7 +186,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.
**Misconfigured routers, firewalls, and network devices** a volte rispondono a network probes usando **indirizzi sorgente non pubblici**. **tcpdump** può essere utilizzato per identificare pacchetti ricevuti da indirizzi privati durante i test. In particolare, su Kali Linux, i pacchetti possono essere catturati sull'**eth2 interface**, che è accessibile da Internet pubblico. È importante notare che se la tua configurazione è dietro un NAT o un Firewall, tali pacchetti saranno probabilmente 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
@ -194,9 +196,9 @@ IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
```
## Sniffing
Con lo sniffing puoi apprendere dettagli su intervalli IP, dimensioni delle subnet, indirizzi MAC e nomi host esaminando i frame e i pacchetti catturati. Se la rete è mal configurata o il fabric di switching è sotto stress, gli attaccanti possono catturare materiale sensibile tramite sniffing di rete passivo.
Con Sniffing puoi apprendere dettagli relativi a IP ranges, subnet sizes, MAC addresses e hostnames esaminando frames e packets catturati. Se la rete è mal configurata o la switching fabric è sotto stress, gli attackers possono catturare materiale sensibile tramite passive network sniffing.
Se una rete Ethernet switchata è configurata correttamente, vedrai solo frame di broadcast e materiale destinato al tuo indirizzo MAC.
Se una switched Ethernet network è configurata correttamente, vedrai solo broadcast frames e materiale destinato al tuo MAC address.
### TCPDump
```bash
@ -204,7 +206,7 @@ sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what
tcpdump -i <IFACE> icmp #Listen to icmp packets
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"
```
Si possono anche catturare pacchetti da una macchina remota tramite una sessione SSH con Wireshark come interfaccia grafica in tempo reale.
È anche possibile catturare pacchetti da una macchina remota tramite una sessione SSH con Wireshark come GUI in tempo reale.
```
ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic
@ -222,15 +224,15 @@ set net.sniff.regexp #If set only packets matching this regex will be considered
Ovviamente.
### Cattura delle credenziali
### Captura credenziali
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.
Puoi usare strumenti come [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) per estrarre credenziali da un pcap o da un'interfaccia live.
## Attacchi LAN
### ARP spoofing
L'ARP Spoofing consiste nell'inviare ARP Responses gratuiti per indicare che l'IP di una macchina ha il MAC del nostro dispositivo. Poi, la vittima cambierà la tabella ARP e contatterà la nostra macchina ogni volta che vorrà contattare l'IP spoofato.
ARP Spoofing consiste nell'inviare gratuitous ARPResponses per indicare che l'IP di una macchina ha il MAC del nostro dispositivo. Poi, la vittima aggiornerà la tabella ARP e contatterà la nostra macchina ogni volta che vorrà comunicare con l'IP spoofed.
#### **Bettercap**
```bash
@ -248,23 +250,23 @@ arpspoof -t 192.168.1.2 192.168.1.1
```
### MAC Flooding - CAM overflow
Sovraccarica la tabella CAM dello switch inviando un gran numero di pacchetti con indirizzi MAC sorgente diversi. Quando la tabella CAM è piena, lo switch inizia a comportarsi come un hub (broadcasting tutto il traffico).
Sovraccarica la CAM table dello switch inviando molti pacchetti con diversi source MAC address. Quando la CAM table è piena lo switch inizia a comportarsi come un hub (trasmettendo tutto il traffico in broadcast).
```bash
macof -i <interface>
```
In moderni switch questa vulnerabilità è stata risolta.
Su switch moderni questa vulnerabilità è stata corretta.
### 802.1Q VLAN / Attacchi DTP
### 802.1Q VLAN / DTP Attacchi
#### Trunking Dinamico
#### Dynamic Trunking
Il **Dynamic Trunking Protocol (DTP)** è progettato come un protocollo di livello link per facilitare un sistema automatico di trunking, consentendo ai switch di selezionare automaticamente le porte per la modalità trunk (Trunk) o la modalità non trunk. L'implementazione del **DTP** è spesso vista come indicativa di un design di rete subottimale, sottolineando l'importanza di configurare manualmente i trunk solo dove necessario e garantire una corretta documentazione.
Il **Dynamic Trunking Protocol (DTP)** è progettato come protocollo del livello di collegamento per facilitare un sistema automatico di trunking, permettendo agli switch di selezionare automaticamente le porte per la modalità trunk (Trunk) o modalità non-trunk. La presenza di **DTP** è spesso vista come indicativa di un design di rete subottimale, sottolineando l'importanza di configurare manualmente i trunk solo dove necessario e di mantenere una documentazione adeguata.
Per impostazione predefinita, le porte dello switch sono configurate 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.
Per impostazione predefinita, le porte degli switch sono configurate per funzionare in Dynamic Auto mode, il che significa che sono pronte a iniziare il trunking se sollecitate da uno switch vicino. Una preoccupazione di sicurezza emerge quando un pentester o un attacker si collega allo switch e invia un DTP Desirable frame, costringendo la porta a entrare in modalità trunk. Questa azione permette all'attacker di enumerare le VLAN tramite l'analisi dei frame STP e di aggirare la segmentazione 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, 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.
La presenza di DTP di default su molti switch può essere sfruttata da avversari per emulare il comportamento di uno switch, ottenendo così accesso al traffico di tutte le VLAN. Lo script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) viene usato per monitorare un'interfaccia, rivelando se uno switch si trova in Default, Trunk, Dynamic, Auto o Access mode — quest'ultimo è l'unica configurazione immune ai VLAN hopping attacks. Questo tool 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.
Se viene identificata una vulnerabilità della rete, lo strumento _**Yersinia**_ può essere impiegato per "enable trunking" tramite il protocollo DTP, permettendo l'osservazione dei pacchetti di tutte le VLAN.
```bash
apt-get install yersinia #Installation
sudo apt install kali-linux-large #Another way to install it in Kali
@ -277,20 +279,20 @@ yersinia -G #For graphic mode
```
![](<../../images/image (269).png>)
Per enumerare le VLAN, è anche possibile generare il frame DTP Desirable con lo script [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. Non interrompere lo script in nessuna circostanza. Inietta DTP Desirable ogni tre secondi. **I canali trunk creati dinamicamente sullo switch vivono solo per cinque minuti. Dopo cinque minuti, il trunk scade.**
Per enumerare le VLAN è anche possibile generare il DTP Desirable frame con lo script [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. N**on interrompere lo script in nessun caso. Inietta DTP Desirable ogni tre secondi. **I canali trunk creati dinamicamente sullo switch durano solo cinque minuti. Dopo cinque minuti, il trunk viene rimosso.**
```
sudo python3 DTPHijacking.py --interface eth0
```
Vorrei sottolineare che **Access/Desirable (0x03)** indica che il frame DTP è di tipo Desirable, il che dice alla porta di passare alla modalità Trunk. E **802.1Q/802.1Q (0xa5)** indica il tipo di incapsulamento **802.1Q**.
Vorrei sottolineare che **Access/Desirable (0x03)** indica che il DTP frame è di tipo Desirable, il quale ordina alla porta di passare in Trunk mode. E **802.1Q/802.1Q (0xa5** indica il tipo di incapsulamento **802.1Q**.
Analizzando i frame STP, **apprendiamo dell'esistenza della VLAN 30 e della VLAN 60.**
Analizzando i frame STP, **scopriamo l'esistenza delle VLAN 30 e VLAN 60.**
<figure><img src="../../images/image (124).png" alt=""><figcaption></figcaption></figure>
#### 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.
Una volta noti gli ID VLAN e gli indirizzi IP, puoi **configurare un'interfaccia virtuale per attaccare una VLAN specifica**.\
Se DHCP non è disponibile, usa _ifconfig_ per impostare un indirizzo IP statico.
```
root@kali:~# modprobe 8021q
root@kali:~# vconfig add eth1 250
@ -325,13 +327,13 @@ sudo dhclient -v eth0.30
```
#### Automatic VLAN Hopper
L'attacco discusso di **Dynamic Trunking e creazione di interfacce virtuali per scoprire host all'interno** di altri VLAN è **eseguito automaticamente** dallo strumento: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
L'attacco descritto relativo a **Dynamic Trunking** e la **creazione di interfacce virtuali e la scoperta di host all'interno** di altre VLAN viene **eseguito automaticamente** dallo strumento: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
#### Double Tagging
Se un attaccante conosce il valore del **MAC, IP e VLAN ID dell'host vittima**, potrebbe provare a **doppiare il tag 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, la **migliore opzione per l'attaccante è comunicare via UDP** a protocolli che possono eseguire alcune azioni interessanti (come SNMP).
Se un attacker conosce il valore di **MAC, IP and VLAN ID of the victim host**, potrebbe provare a **double tag a frame** con la VLAN designata e la VLAN della victim e inviare un pacchetto. Poiché la **victim won't be able to connect back** con l'attacker, la **migliore opzione per l'attacker è comunicare via UDP** verso protocolli che possono svolgere 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.
Un'altra opzione per l'attacker è lanciare una **TCP port scan spoofing an IP controlled by the attacker and accessible by the victim** (probabilmente tramite internet). Poi, l'attacker potrebbe sniff sul secondo host da lui posseduto se riceve dei pacchetti dalla victim.
![](<../../images/image (190).png>)
@ -342,134 +344,135 @@ from scapy.all import *
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP()
sendp(packet)
```
#### Bypass della Segmentazione VLAN Laterale <a href="#d679" id="d679"></a>
#### Bypass laterale della segmentazione VLAN <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 **impostare la porta in modalità trunk** (nota anche come trunk), creare interfacce virtuali con gli ID delle VLAN di destinazione e configurare un indirizzo IP. Puoi provare a richiedere l'indirizzo dinamicamente (DHCP) o 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
{{#endref}}
#### Bypass della VLAN Privata Layer 3
#### Bypass di Private VLAN a Layer 3
In determinati ambienti, come le reti wireless per ospiti, vengono implementate impostazioni di **isolamento delle porte (nota anche come VLAN privata)** per impedire ai client connessi a un punto di accesso wireless di comunicare direttamente tra loro. Tuttavia, è stata identificata una tecnica che può eludere queste misure di isolamento. Questa tecnica sfrutta la mancanza di ACL di rete o la loro configurazione errata, consentendo ai pacchetti IP di essere instradati attraverso un router per raggiungere un altro client sulla stessa rete.
In certi ambienti, come le guest wireless, vengono implementate impostazioni di isolamento delle porte (noto anche come private VLAN) per impedire ai client connessi a un access point wireless di comunicare direttamente tra loro. Tuttavia, è stata identificata una tecnica che può aggirare queste misure di isolamento. Questa tecnica sfrutta la mancanza di ACL di rete o la loro configurazione scorretta, permettendo ai pacchetti IP di essere instradati tramite un router per raggiungere un altro client sulla stessa rete.
L'attacco viene eseguito creando un **pacchetto che trasporta l'indirizzo IP del client di destinazione ma con l'indirizzo MAC del router**. Questo fa sì che il router inoltri erroneamente il pacchetto al client target. Questo approccio è simile a quello utilizzato negli Attacchi di Double Tagging, dove la capacità di controllare un host accessibile alla vittima viene utilizzata per sfruttare la vulnerabilità di sicurezza.
L'attacco viene eseguito creando un **pacchetto che trasporta l'indirizzo IP del client di destinazione ma con l'indirizzo MAC del router**. Questo fa sì che il router inoltri erroneamente il pacchetto al client bersaglio. Questo approccio è simile a quello usato nelle Double Tagging Attacks, dove la capacità di controllare un host accessibile alla vittima viene usata per sfruttare la falla di sicurezza.
**Passaggi Chiave dell'Attacco:**
**Passaggi chiave dell'attacco:**
1. **Creazione di un Pacchetto:** Un pacchetto è appositamente creato per includere l'indirizzo IP del client target ma con l'indirizzo MAC del router.
2. **Sfruttamento del Comportamento del Router:** Il pacchetto creato viene inviato al router, che, a causa della configurazione, reindirizza il pacchetto al client target, eludendo l'isolamento fornito dalle impostazioni della VLAN privata.
1. **Creazione del pacchetto:** Viene creato appositamente un pacchetto che include l'indirizzo IP del client destinatario ma con l'indirizzo MAC del router.
2. **Sfruttare il comportamento del router:** Il pacchetto creato viene inviato al router che, a causa della configurazione, reindirizza il pacchetto al client bersaglio, aggirando l'isolamento fornito dalle impostazioni di private VLAN.
### Attacchi VTP
### VTP Attacks
Il VTP (VLAN Trunking Protocol) centralizza la gestione delle VLAN. Utilizza numeri di revisione per mantenere l'integrità del database VLAN; qualsiasi modifica incrementa questo numero. Gli switch adottano configurazioni con numeri di revisione più elevati, aggiornando i propri database VLAN.
VTP (VLAN Trunking Protocol) centralizza la gestione delle VLAN. Utilizza numeri di revisione per mantenere l'integrità del database VLAN; ogni modifica incrementa questo numero. Gli switch adottano configurazioni con numeri di revisione più alti, aggiornando i propri database VLAN.
#### Ruoli del Dominio VTP
#### VTP Domain Roles
- **Server VTP:** Gestisce le VLAN—crea, elimina, modifica. Trasmette annunci VTP ai membri del dominio.
- **Client VTP:** Riceve annunci VTP per sincronizzare il proprio database VLAN. Questo ruolo è limitato dalle modifiche alle configurazioni VLAN locali.
- **VTP Trasparente:** Non partecipa agli aggiornamenti VTP ma inoltra gli annunci VTP. Non è influenzato dagli attacchi VTP, mantenendo un numero di revisione costante di zero.
- **VTP Server:** Gestisce le VLAN—crea, elimina, modifica. Trasmette annunci VTP ai membri del dominio.
- **VTP Client:** Riceve annunci VTP per sincronizzare il proprio database VLAN. Questo ruolo è limitato e non permette modifiche locali alla configurazione delle VLAN.
- **VTP Transparent:** Non partecipa agli aggiornamenti VTP ma inoltra gli annunci VTP. Non è influenzato dagli attacchi VTP e mantiene un numero di revisione costante pari a zero.
#### Tipi di Annunci VTP
#### VTP Advertisement Types
- **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.
- **Summary Advertisement:** Trasmesso dal VTP server ogni 300 secondi, contiene le informazioni essenziali sul dominio.
- **Subset Advertisement:** Inviato a seguito di modifiche alla configurazione delle VLAN.
- **Advertisement Request:** Emesso da un client VTP per richiedere un Summary Advertisement, tipicamente in risposta al rilevamento di un numero di revisione della configurazione più alto.
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.
Le vulnerabilità di VTP sono sfruttabili esclusivamente tramite porte trunk, poiché gli annunci VTP circolano soltanto su di esse. In scenari successivi a un attacco DTP si può passare a VTP. Strumenti come Yersinia possono facilitare attacchi VTP, con l'obiettivo di cancellare il database VLAN, interrompendo di fatto la rete.
Nota: Questa discussione riguarda la versione 1 di VTP (VTPv1).
````bash
%% yersinia -G # Launch Yersinia in graphical mode ```
````
In modalità grafica di Yersinia, scegliere l'opzione per eliminare tutti i VTP vlans per purgare il database VLAN.
Nota: Questa discussione riguarda VTP versione 1 (VTPv1).
```bash
yersinia -G # Launch Yersinia in graphical mode
```
Nella modalità grafica di Yersinia, scegli l'opzione deleting all VTP vlans per purgare il database VLAN.
### Attacchi STP
**Se non riesci a catturare i frame BPDU sulle tue interfacce, è improbabile che tu riesca in un attacco STP.**
**Se non riesci a catturare frame BPDU sulle tue interfacce, è improbabile che tu riesca a portare a termine un attacco STP.**
#### **STP BPDU DoS**
Inviare un gran numero di BPDUs TCP (Topology Change Notification) o Conf (i BPDUs che vengono inviati quando la topologia viene creata) sovraccarica gli switch e smettono di funzionare correttamente.
L'invio di un gran numero di BPDUs TCP (Topology Change Notification) o Conf (i BPDUs che vengono inviati quando la topologia viene creata) sovraccarica gli switch che smettono di funzionare correttamente.
```bash
yersinia stp -attack 2
yersinia stp -attack 3
#Use -M to disable MAC spoofing
```
#### **Attacco STP TCP**
#### **STP TCP Attack**
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.
Quando viene inviato un TCP, la tabella CAM degli switch viene cancellata dopo 15s. Se invii continuamente questo tipo di pacchetti, la tabella CAM verrà ricreata ogni 15s e, quando ciò avviene, 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
```
#### **Attacco STP Root**
#### **STP Root Attack**
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 effettivo.
Un attaccante simula il comportamento di uno switch per diventare lo STP root della rete. In questo modo, più traffico passerà attraverso di lui. Questo è interessante quando sei connesso a due switch differenti.\
Questo viene fatto inviando pacchetti BPDUs CONF che dichiarano che il valore **priority** è inferiore all'effettiva priority dello switch root attuale.
```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
```
**Se l'attaccante è connesso a 2 switch, può diventare la radice del nuovo albero e tutto il traffico tra quegli switch passerà attraverso di lui** (verrà eseguito un attacco MITM).
**Se l'attacker è connesso a 2 switches può diventare il root del nuovo tree e tutto il traffico tra quegli switches passerà attraverso di lui** (verrà eseguito un MITM attack).
```bash
yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing"
ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages
```
### Attacchi CDP
### CDP Attacks
Il CISCO Discovery Protocol (CDP) è essenziale per la comunicazione tra i dispositivi CISCO, consentendo loro di **identificarsi a vicenda e condividere dettagli di configurazione**.
CISCO Discovery Protocol (CDP) è essenziale per la comunicazione tra dispositivi CISCO, permettendo loro di **identificarsi a vicenda e condividere dettagli di configurazione**.
#### Raccolta Dati Passiva <a href="#id-0e0f" id="id-0e0f"></a>
CDP è configurato per trasmettere informazioni attraverso tutte le porte, il che potrebbe comportare un rischio per la sicurezza. Un attaccante, collegandosi a una porta switch, potrebbe utilizzare sniffers di rete come **Wireshark**, **tcpdump** o **Yersinia**. Questa azione può rivelare dati sensibili sul dispositivo di rete, inclusi il suo modello e la versione di Cisco IOS in esecuzione. L'attaccante potrebbe quindi mirare a vulnerabilità specifiche nella versione di Cisco IOS identificata.
CDP è configurato per trasmettere informazioni attraverso tutte le porte, il che potrebbe comportare un rischio per la sicurezza. Un attacker, una volta connesso a una porta dello switch, potrebbe usare sniffers di rete come **Wireshark**, **tcpdump** o **Yersinia**. Questa operazione può rivelare dati sensibili sul dispositivo di rete, incluso il suo modello e la versione di Cisco IOS in esecuzione. L'attacker potrebbe quindi prendere di mira vulnerabilità specifiche nella versione di Cisco IOS identificata.
#### Induzione di Flooding della Tabella CDP <a href="#id-0d6a" id="id-0d6a"></a>
#### Inducing CDP Table Flooding <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 attacco di questo tipo utilizzando Yersinia, uno strumento di rete progettato per i test:
Un approccio più aggressivo prevede il lancio di un Denial of Service (DoS) sovraccaricando la memoria dello switch, fingendo di essere dispositivi CISCO legittimi. Di seguito la sequenza di comandi per avviare tale attacco usando Yersinia, uno strumento di rete progettato per il testing:
```bash
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach:
sudo yersinia -G
```
Durante questo attacco, la CPU dello switch e la tabella dei vicini CDP sono gravemente sovraccaricate, portando a quella che viene spesso definita **“paralisi della rete”** a causa dell'eccessivo consumo di risorse.
Durante questo attacco, la CPU dello switch e la CDP neighbor table sono fortemente sovraccaricate, provocando ciò che viene spesso chiamato **“paralisi della rete”** a causa dell'eccessivo consumo di risorse.
#### Attacco di impersonificazione CDP
#### CDP Impersonation Attack
```bash
sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet
```
Potresti anche usare [**scapy**](https://github.com/secdev/scapy/). Assicurati di installarlo con il pacchetto `scapy/contrib`.
Puoi anche usare [**scapy**](https://github.com/secdev/scapy/). Assicurati di installarlo con il pacchetto `scapy/contrib`.
### Attacchi VoIP e lo Strumento VoIP Hopper
### Attacchi VoIP e lo strumento VoIP Hopper
I telefoni VoIP, sempre più integrati con dispositivi IoT, offrono funzionalità come sbloccare porte o controllare termostati tramite numeri di telefono speciali. Tuttavia, questa integrazione può comportare rischi per la sicurezza.
I telefoni VoIP, sempre più integrati con dispositivi IoT, offrono funzionalità come lo sblocco di porte o il controllo di termostati tramite numeri di telefono speciali. Tuttavia, questa integrazione può comportare rischi per la sicurezza.
Lo strumento [**voiphopper**](http://voiphopper.sourceforge.net) è progettato per emulare un telefono VoIP in vari ambienti (Cisco, Avaya, Nortel, Alcatel-Lucent). Scopre l'ID VLAN della rete vocale utilizzando protocolli come CDP, DHCP, LLDP-MED e 802.1Q ARP.
Lo strumento [**voiphopper**](http://voiphopper.sourceforge.net) è progettato per emulare un telefono VoIP in diversi ambienti (Cisco, Avaya, Nortel, Alcatel-Lucent). Scopre l'ID VLAN della rete voce usando protocolli come CDP, DHCP, LLDP-MED e 802.1Q ARP.
**VoIP Hopper** offre tre modalità per il Cisco Discovery Protocol (CDP):
1. **Modalità Sniff** (`-c 0`): Analizza i pacchetti di rete per identificare l'ID VLAN.
2. **Modalità Spoof** (`-c 1`): Genera pacchetti personalizzati che imitano quelli di un dispositivo VoIP reale.
3. **Modalità Spoof con Pacchetto Pre-fatto** (`-c 2`): Invia pacchetti identici a quelli di un modello specifico di telefono IP Cisco.
1. **Sniff Mode** (`-c 0`): Analizza i pacchetti di rete per identificare l'ID VLAN.
2. **Spoof Mode** (`-c 1`): Genera pacchetti personalizzati che imitano quelli di un dispositivo VoIP reale.
3. **Spoof with Pre-made Packet Mode** (`-c 2`): Invia pacchetti identici a quelli di un modello specifico di telefono IP Cisco.
La modalità preferita per la velocità è la terza. Richiede di specificare:
La modalità preferita per velocità è la terza. Richiede di specificare:
- L'interfaccia di rete dell'attaccante (`-i` parametro).
- Il nome del dispositivo VoIP che si sta emulando (`-E` parametro), seguendo il formato di denominazione Cisco (ad es., SEP seguito da un indirizzo MAC).
- L'interfaccia di rete dell'attaccante (parametro `-i`).
- Il nome del dispositivo VoIP da emulare (parametro `-E`), seguendo il formato di denominazione Cisco (es. SEP seguito da un indirizzo MAC).
In contesti aziendali, per imitare un dispositivo VoIP esistente, si potrebbe:
In contesti aziendali, per imitare un dispositivo VoIP esistente, si p:
- Ispezionare l'etichetta MAC sul telefono.
- Navigare nelle impostazioni di visualizzazione del telefono per visualizzare le informazioni sul modello.
- Collegare il dispositivo VoIP a un laptop e osservare le richieste CDP utilizzando Wireshark.
- Navigare le impostazioni del display del telefono per visualizzare le informazioni sul modello.
- Collegare il dispositivo VoIP a un laptop e osservare le richieste CDP con Wireshark.
Un comando di esempio per eseguire lo strumento in modalità tre sarebbe:
Un comando di esempio per eseguire lo strumento in terza modalità sarebbe:
```bash
voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2
```
### Attacchi DHCP
### DHCP Attacks
#### Enumerazione
```bash
@ -491,99 +494,102 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
```
**DoS**
**Due tipi di DoS** possono essere eseguiti contro i server DHCP. Il primo consiste nel **simulare un numero sufficiente di host falsi per utilizzare tutti gli indirizzi IP possibili**.\
Questo attacco funzionerà solo se puoi vedere le risposte del server DHCP e completare il protocollo (**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server)). Ad esempio, questo **non è possibile nelle reti Wifi**.
**Due tipi di DoS** possono essere eseguiti contro i DHCP servers. Il primo consiste nel **simulare abbastanza fake hosts da occupare tutti gli indirizzi IP disponibili**.\
Un altro modo per eseguire un DoS DHCP è inviare un **pacchetto DHCP-RELEASE utilizzando come codice sorgente ogni possibile IP**. In questo modo, il server penserà che tutti abbiano finito di utilizzare l'IP.
Questo attacco funzionerà solo se puoi vedere le risposte del DHCP server e completare il protocollo (**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server)). Per esempio, questo non è possibile nelle reti Wifi.
Un altro modo per effettuare un DHCP DoS è inviare un pacchetto DHCP-RELEASE usando come IP sorgente ogni possibile indirizzo IP. In questo modo il server penserà che tutti abbiano terminato l'uso degli indirizzi IP.
```bash
yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed
```
Un modo più automatico per farlo è utilizzare lo strumento [DHCPing](https://github.com/kamorin/DHCPig)
Un modo più automatico per farlo è usare 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 responsivi. Quindi, quando i legittimi tentano di riconnettersi, **puoi servire valori malevoli menzionati nel prossimo attacco**.
Puoi usare gli attacchi DoS menzionati per costringere i client a ottenere nuovi lease all'interno dell'ambiente e esaurire i server legittimi rendendoli non reattivi. Così quando i legittimi tenteranno di riconnettersi, **potrai fornire i valori malevoli menzionati nell'attacco successivo**.
#### Imposta valori malevoli
#### Impostare valori malevoli
Un server DHCP non autorizzato può essere configurato utilizzando lo script DHCP situato in `/usr/share/responder/DHCP.py`. Questo è utile per attacchi di rete, come la cattura del traffico HTTP e delle credenziali, reindirizzando il traffico a un server malevolo. Tuttavia, impostare un gateway non autorizzato è meno efficace poiché consente solo di catturare il traffico in uscita dal client, mancando le risposte dal vero gateway. Invece, si consiglia di impostare un server DNS o WPAD non autorizzato per un attacco più efficace.
Un rogue DHCP server può essere configurato usando lo script DHCP situato in `/usr/share/responder/DHCP.py`. Questo è utile per attacchi di rete, come la cattura del traffico HTTP e delle credenziali, reindirizzando il traffico verso un server malevolo. Tuttavia, impostare un rogue gateway è meno efficace poiché permette solo di catturare il traffico in uscita dal client, perdendo le risposte dal gateway reale. È invece raccomandato impostare un rogue DNS o un server WPAD per un attacco più efficace.
Di seguito sono riportate le opzioni di comando per configurare il server DHCP non autorizzato:
Di seguito le opzioni di comando per configurare il rogue DHCP server:
- **Il nostro indirizzo IP (Annuncio del Gateway)**: Usa `-i 10.0.0.100` per pubblicizzare l'IP della tua macchina come gateway.
- **Nome di Dominio DNS Locale**: Facoltativamente, usa `-d example.org` per impostare un nome di dominio DNS locale.
- **IP del Router/Gateway Originale**: Usa `-r 10.0.0.1` per specificare l'indirizzo IP del router o gateway legittimo.
- **IP del Server DNS Primario**: Usa `-p 10.0.0.100` per impostare l'indirizzo IP del server DNS non autorizzato che controlli.
- **IP del Server DNS Secondario**: Facoltativamente, usa `-s 10.0.0.1` per impostare un IP del server DNS secondario.
- **Netmask della Rete Locale**: Usa `-n 255.255.255.0` per definire la netmask per la rete locale.
- **Interfaccia per il Traffico DHCP**: Usa `-I eth1` per ascoltare il traffico DHCP su una specifica interfaccia di rete.
- **Indirizzo di Configurazione WPAD**: Usa `-w “http://10.0.0.100/wpad.dat”` per impostare l'indirizzo per la configurazione WPAD, assistendo nell'intercettazione del traffico web.
- **Spoof dell'IP del Gateway Predefinito**: Includi `-S` per falsificare l'indirizzo IP del gateway predefinito.
- **Rispondi a Tutte le Richieste DHCP**: Includi `-R` per far sì che il server risponda a tutte le richieste DHCP, ma fai attenzione che questo è rumoroso e può essere rilevato.
- **Il nostro indirizzo IP (annuncio del gateway)**: Usa `-i 10.0.0.100` per pubblicizzare l'IP della tua macchina come gateway.
- **Nome dominio DNS locale**: Opzionalmente, usa `-d example.org` per impostare un nome di dominio DNS locale.
- **IP del router/gateway originale**: Usa `-r 10.0.0.1` per specificare l'indirizzo IP del router o gateway legittimo.
- **IP del server DNS primario**: Usa `-p 10.0.0.100` per impostare l'IP del server DNS malevolo che controlli.
- **IP del server DNS secondario**: Opzionalmente, usa `-s 10.0.0.1` per impostare un IP di server DNS secondario.
- **Maschera di rete della rete locale**: Usa `-n 255.255.255.0` per definire la netmask per la rete locale.
- **Interfaccia per il traffico DHCP**: Usa `-I eth1` per ascoltare il traffico DHCP su una specifica interfaccia di rete.
- **Indirizzo di configurazione WPAD**: Usa `-w “http://10.0.0.100/wpad.dat”` per impostare l'indirizzo della configurazione WPAD, utile per intercettare il traffico web.
- **Falsificare l'IP del gateway predefinito**: Includi `-S` per falsificare l'indirizzo IP del gateway predefinito.
- **Rispondere a tutte le richieste DHCP**: Includi `-R` per far sì che il server risponda a tutte le richieste DHCP, ma tieni presente che questo è rumoroso e può essere rilevato.
Utilizzando correttamente queste opzioni, può essere stabilito un server DHCP non autorizzato per intercettare efficacemente il traffico di rete.
Usando correttamente queste opzioni, è possibile stabilire un rogue DHCP server per intercettare efficacemente il traffico di rete.
```python
# Example to start a rogue DHCP server with specified options
!python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R
```
### **Attacchi EAP**
Ecco alcune delle tattiche di attacco che possono essere utilizzate contro le implementazioni 802.1X:
Ecco alcune tattiche di attacco che possono essere usate contro implementazioni 802.1X:
- 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)
- Brute-force attivo delle password via EAP
- Attaccare il server RADIUS con contenuto EAP malformato _\*\*_(exploits)
- Cattura dei messaggi EAP e cracking offline delle password (EAP-MD5 e PEAP)
- 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
- Iniettare traffico di rete dannoso al momento dell'autenticazione usando un hub o simili
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:
Se l'attaccante si trova tra la vittima e il server di autenticazione, potrebbe tentare di degradare (se necessario) il protocollo di autenticazione a EAP-MD5 e catturare il tentativo di autenticazione. Successivamente, potrebbe eseguire un brute-force usando:
```
eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt
```
### Attacchi FHRP (GLBP & HSRP) <a href="#id-6196" id="id-6196"></a>
### FHRP (GLBP & HSRP) Attacks <a href="#id-6196" id="id-6196"></a>
**FHRP** (First Hop Redundancy Protocol) è una classe di protocolli di rete progettati per **creare un sistema di routing ridondante attivo**. Con FHRP, i router fisici possono essere combinati in un unico dispositivo logico, aumentando la tolleranza ai guasti e aiutando a distribuire il carico.
**FHRP** (First Hop Redundancy Protocol) è una classe di protocolli di rete progettati per **creare un sistema di routing ridondante e attivo**. Con FHRP, router fisici possono essere combinati in un unico dispositivo logico, aumentando la tolleranza ai guasti e aiutando a distribuire il carico.
**Gli ingegneri di Cisco Systems hanno sviluppato due protocolli FHRP, GLBP e HSRP.**
{{#ref}}
glbp-and-hsrp-attacks.md
{{#endref}}
### 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 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.
Si conoscono tre versioni del Routing Information Protocol (RIP): RIP, RIPv2 e RIPng. I datagrammi vengono inviati ai peer tramite UDP sulla porta 520 da RIP e RIPv2, mentre i datagrammi vengono broadcastati sulla porta UDP 521 tramite multicast IPv6 da RIPng. RIPv2 ha introdotto il supporto per l'autenticazione MD5. D'altra parte, RIPng non include autenticazione nativa; si fa invece affidamento agli header IPsec AH e ESP in 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.
- **RIPng:** Utilizza la porta UDP 521 per il broadcast dei datagrammi via multicast 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.
Nota che RIPv2 supporta l'autenticazione MD5 mentre RIPng non include autenticazione nativa, facendo affidamento su IPsec AH e ESP in IPv6.
### Attacchi EIGRP
**EIGRP (Enhanced Interior Gateway Routing Protocol)** è un protocollo di routing dinamico. **È un protocollo a vettore di distanza.** Se non c'è **autenticazione** e configurazione di interfacce passive, un **intruso** può interferire con il routing EIGRP e causare **avvelenamento delle tabelle di routing**. Inoltre, la rete EIGRP (in altre parole, il sistema autonomo) **è piatta e non ha segmentazione in zone**. Se un **attaccante inietta una rotta**, è probabile che questa rotta si **diffonda** in tutto il sistema EIGRP autonomo.
**EIGRP (Enhanced Interior Gateway Routing Protocol)** è un protocollo di routing dinamico. **È un protocollo a vettore di distanza.** Se non è presente alcuna autenticazione e non sono configurate interfacce passive, un **intruso** può interferire con il routing EIGRP e causare **routing tables poisoning**. Inoltre, la rete EIGRP (in altre parole, l'autonomous system) **è piatta e non ha segmentazione in zone**. Se un **attacker injects a route**, è probabile che questa route si **diffonda** in tutto l'autonomous EIGRP system.
Attaccare un sistema EIGRP richiede **stabilire un vicinato con un router EIGRP legittimo**, il che apre molte possibilità, dalla ricognizione di base a varie iniezioni.
Per attaccare un sistema EIGRP è necessario **stabilire un neighbourhood con un router EIGRP legittimo**, il che apre molte possibilità, dalla ricognizione di base a varie injection.
[**FRRouting**](https://frrouting.org/) permette di implementare **un virtual router che supporta BGP, OSPF, EIGRP, RIP e altri protocolli.** Basta deployarlo sul sistema dell'attaccante e si può effettivamente fingersi un router legittimo nel dominio di routing.
[**FRRouting**](https://frrouting.org/) consente di implementare **un router virtuale che supporta BGP, OSPF, EIGRP, RIP e altri protocolli.** Tutto ciò che devi fare è distribuirlo sul sistema dell'attaccante e puoi effettivamente fingere di essere un router legittimo nel dominio di routing.
{{#ref}}
eigrp-attacks.md
{{#endref}}
[**Coly**](https://code.google.com/p/coly/) ha capacità per intercettare le trasmissioni EIGRP (Enhanced Interior Gateway Routing Protocol). Consente anche l'iniezione di pacchetti, che possono essere utilizzati per alterare le configurazioni di routing.
[**Coly**](https://code.google.com/p/coly/) ha capacità di intercettare broadcast EIGRP (Enhanced Interior Gateway Routing Protocol). Permette anche l'injection di pacchetti, che possono essere utilizzati per alterare le configurazioni di routing.
### OSPF
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_.
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 crackare hash MD5, esponendo la chiave di autenticazione. Una volta ottenuta questa chiave, può essere usata per introdurre nuove informazioni di routing. Per configurare i parametri di route e impostare la chiave compromessa si utilizzano rispettivamente le tab _Injection_ e _Connection_.
- **Catturare e Decifrare Hash MD5:** Strumenti come Loki e John the Ripper sono utilizzati a questo scopo.
- **Configurare i Parametri della Rotta:** Questo avviene tramite la scheda _Injection_.
- **Impostare la Chiave Compromessa:** La chiave è configurata sotto la scheda _Connection_.
- **Cattura e cracking di hash MD5:** Strumenti come Loki e John the Ripper sono usati a questo scopo.
- **Configurazione dei parametri di route:** Viene fatta tramite la tab _Injection_.
- **Impostazione della chiave compromessa:** La chiave è configurata sotto la tab _Connection_.
### Altri Strumenti e Risorse Generiche
### Other Generic Tools & Sources
- [**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).
- [**Above**](https://github.com/c4s73r/Above): Tool per scansionare il traffico di rete e trovare vulnerabilità
- Puoi trovare ulteriori **informazioni sugli network attacks** [**qui**](https://github.com/Sab0tag3d/MITM-cheatsheet).
## **Spoofing**
@ -594,11 +600,11 @@ yersinia dhcp -attack 2 #More parameters are needed
```
### ARP Spoofing
Controlla la [sezione precedente](#arp-spoofing).
Vedi la [previous section](#arp-spoofing).
### ICMPRedirect
ICMP Redirect consiste nell'inviare un pacchetto ICMP di tipo 1 codice 5 che indica che l'attaccante è il modo migliore per raggiungere un IP. Quindi, quando la vittima vuole contattare l'IP, invierà il pacchetto attraverso l'attaccante.
ICMP Redirect consiste nell'invio di un ICMP packet type 1 code 5 che indica che l'attacker è la via migliore per raggiungere un IP. Quindi, quando la victim vuole contattare l'IP, invierà il packet attraverso l'attacker.
```bash
Ettercap
icmp_redirect
@ -606,7 +612,7 @@ hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw
```
### DNS Spoofing
L'attaccante risolverà alcuni (o tutti) i domini che la vittima richiede.
L'attaccante risolverà alcuni (o tutti) dei domini che la vittima richiede.
```bash
set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on
```
@ -617,7 +623,7 @@ dig @localhost domain.example.com # Test the configured DNS
```
### Gateway locali
Spesso esistono più percorsi verso sistemi e reti. Dopo aver creato un elenco di indirizzi MAC all'interno della rete locale, utilizza _gateway-finder.py_ per identificare gli host che supportano l'inoltro IPv4.
Spesso esistono più rotte verso sistemi e reti. Dopo aver compilato una lista di MAC addresses all'interno della rete locale, usa _gateway-finder.py_ per identificare gli host che supportano IPv4 forwarding.
```
root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
root@kali:~# cd gateway-finder/
@ -635,37 +641,37 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
[+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
```
### [Spoofing LLMNR, NBT-NS, e mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
### [Spoofing LLMNR, NBT-NS, and 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 **Linux zero-configuration** utilizzano **Multicast DNS (mDNS)** per scoprire sistemi all'interno di una rete. A causa della natura non autenticata di questi protocolli e del loro funzionamento su UDP, inviando messaggi di broadcast, possono essere sfruttati da attaccanti che mirano a reindirizzare gli utenti a servizi malevoli.
Per la risoluzione dei nomi locali quando le query DNS non hanno successo, i sistemi Microsoft si affidano a **Link-Local Multicast Name Resolution (LLMNR)** e al **NetBIOS Name Service (NBT-NS)**. Analogamente, le implementazioni **Apple Bonjour** e **Linux zero-configuration** 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, che prevede l'invio di messaggi broadcast, possono essere sfruttati da attackers che mirano a reindirizzare gli utenti verso 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).
Puoi impersonare servizi cercati dagli host usando Responder per inviare risposte false.\
Read here more information about [how to Impersonate services with Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
I browser utilizzano comunemente il **protocollo Web Proxy Auto-Discovery (WPAD) per acquisire automaticamente le impostazioni del proxy**. Questo comporta il recupero dei dettagli di configurazione da un server, specificamente attraverso un URL come "http://wpad.example.org/wpad.dat". La scoperta di questo server da parte dei client può avvenire attraverso vari meccanismi:
I browser comunemente impiegano il **Web Proxy Auto-Discovery (WPAD) protocol per acquisire automaticamente le impostazioni del proxy**. Questo comporta il recupero delle impostazioni di configurazione da un server, tipicamente tramite un URL come "http://wpad.example.org/wpad.dat". La scoperta di questo server da parte dei client può avvenire tramite diversi meccanismi:
- Tramite **DHCP**, dove la scoperta è facilitata utilizzando un codice speciale 252.
- 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.
- Through **DHCP**, dove la scoperta è facilitata dall'utilizzo di una voce speciale con codice 252.
- By **DNS**, che comporta la ricerca di un hostname etichettato _wpad_ all'interno del dominio locale.
- Via **Microsoft LLMNR and NBT-NS**, che sono meccanismi di fallback usati nei casi in cui le query 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 comportandosi come un **malicious WPAD server**. Usa DHCP, DNS, LLMNR e NBT-NS per indurre in errore i client e farli connettere a esso. To dive deeper into how services can be impersonated using Responder [check this](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [Spoofing SSDP e dispositivi UPnP](spoofing-ssdp-and-upnp-devices.md)
### [Spoofing SSDP and UPnP devices](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 **trick a user** e indurlo a inserire delle **plain-text credentials**. **More information about this attack in** [**Spoofing SSDP and UPnP Devices**](spoofing-ssdp-and-upnp-devices.md)**.**
### Spoofing dei vicini IPv6
### IPv6 Neighbor Spoofing
Questo attacco è molto simile allo Spoofing ARP ma nel mondo IPv6. Puoi far credere alla vittima che l'IPv6 del GW abbia il MAC dell'attaccante.
Questo attacco è molto simile a ARP Spoofing ma nel mondo IPv6. Puoi far credere alla vittima che l'IPv6 del GW abbia il MAC dell'attacker.
```bash
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
```
### IPv6 Router Advertisement Spoofing/Flooding
Alcuni sistemi operativi configurano per impostazione predefinita il gateway dai pacchetti RA inviati nella rete. Per dichiarare l'attaccante come router IPv6 puoi usare:
Alcuni OS configurano per impostazione predefinita il gateway in base ai pacchetti RA inviati nella rete. Per dichiarare l'attaccante come router IPv6 puoi usare:
```bash
sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0
@ -673,20 +679,20 @@ fake_router6 wlan0 fe80::01/16
```
### IPv6 DHCP spoofing
Per impostazione predefinita, alcuni sistemi operativi cercano di configurare il DNS leggendo un pacchetto DHCPv6 nella rete. Quindi, un attaccante potrebbe inviare un pacchetto DHCPv6 per configurarsi come DNS. Il DHCP fornisce anche un IPv6 alla vittima.
Di default alcuni OS cercano di configurare il DNS leggendo un pacchetto DHCPv6 sulla rete. Quindi, un attacker potrebbe inviare un pacchetto DHCPv6 per configurarsi come DNS. Il DHCP fornisce inoltre un indirizzo IPv6 alla victim.
```bash
dhcp6.spoof on
dhcp6.spoof.domains <list of domains>
mitm6
```
### HTTP (pagina falsa e iniezione di codice JS)
### HTTP (fake page and JS code injection)
## Attacchi Internet
### sslStrip
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**.
In pratica quello che fa questo attacco è che, nel caso in cui l'**utente** provi ad **accedere** a una pagina **HTTP** che viene **reindirizzata** alla versione **HTTPS**, **sslStrip** **manterrà** una **connessione HTTP con** il **client e** una **connessione HTTPS con** il **server**, così da poter **sniff** la connessione in **testo in chiaro**.
```bash
apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
@ -695,29 +701,29 @@ 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 [qui](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
Ulteriori informazioni [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
### sslStrip+ e dns2proxy per bypassare HSTS
### sslStrip+ and dns2proxy per aggirare 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** via https con **www.facebook.com**.
La **differenza** tra **sslStrip+ and dns2proxy** rispetto a **sslStrip** è che reindirizzeranno per esempio _**www.facebook.com**_ **a** _**wwww.facebook.com**_ (nota la **extra** "**w**") e imposteranno **l'indirizzo di questo dominio come attacker IP**. In questo modo, il **client** si **connetterà** a _**wwww.facebook.com**_ **(the attacker)** ma dietro le quinte **sslstrip+** **manterrà** la **connessione reale** 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 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.
L'**obiettivo** di questa tecnica è **evitare HSTS** perché _**wwww**.facebook.com_ **non** verrà salvato nella **cache** del browser, quindi il browser sarà ingannato a eseguire **facebook authentication in HTTP**.\
Nota che per eseguire questo attacco la vittima deve inizialmente tentare di accedere a [http://www.faceook.com](http://www.faceook.com) e non via https. Questo può essere fatto modificando i link all'interno di una pagina http.
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).
Ulteriori informazioni [here](https://www.bettercap.org/legacy/#hsts-bypass), [here](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) and [here](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", 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`.**
**sslStrip or sslStrip+ non funzionano più. Questo perché ci sono regole HSTS preimpostate nei browser, quindi anche se è la prima volta che un utente accede a un dominio "importante" lo farà via HTTPS. Inoltre, nota che le regole preimpostate e altre regole generate possono usare il flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **quindi l'esempio** _**wwww.facebook.com**_ **di prima non funzionerà più poiché** _**facebook.com**_ **usa HSTS con `includeSubdomains`.**
TODO: easy-creds, evilgrade, metasploit, factory
## TCP ascolta sulla porta
## Ascolto TCP sulla porta
```bash
sudo nc -l -p 80
socat TCP4-LISTEN:80,fork,reuseaddr -
```
## TCP + SSL ascolta sulla porta
## TCP + SSL in ascolto sulla porta
#### Genera chiavi e certificato autofirmato
#### Generare chiavi e certificato auto-firmato
```
FILENAME=server
# Generate a public/private key pair:
@ -727,18 +733,18 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
# Generate the PEM file by just appending the key and certificate files:
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
```
#### Ascolta utilizzando il certificato
#### Ascolta usando un certificato
```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -
```
#### Ascolta utilizzando il certificato e reindirizza agli host
#### Ascolta usando certificate e reindirizza agli hosts
```
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**.
A volte, se il client verifica che la CA sia valida, potresti **servire un certificate di un altro hostname firmato da una CA**.\
Un altro test interessante è servire un c**ertificate del hostname richiesto ma self-signed**.
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 necessita 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.
Altre cose da testare: provare a firmare il certificate con un certificate valido che non è una CA valida. Oppure usare la public key valida, forzare l'uso di un algoritmo come diffie hellman (uno che non richiede di decrypt nulla con la reale private key) e, quando il client richiede una probe della reale private key (come un hash), inviare una probe fasulla e aspettarsi che il client non la verifichi.
## Bettercap
```bash
@ -766,17 +772,17 @@ set wifi.ap.channel 5
set wifi.ap.encryption false #If true, WPA2
wifi.recon on; wifi.ap
```
### Note di Scoperta Attiva
### Note sulla Scoperta Attiva
Tieni presente che quando un pacchetto UDP viene inviato a un dispositivo che non ha la porta richiesta, viene inviato un ICMP (Port Unreachable).
Tieni conto che quando un pacchetto UDP viene inviato a un dispositivo che non ha la porta richiesta viene inviato un ICMP (Port Unreachable).
### **Scoperta ARP**
### **ARP discover**
I pacchetti ARP vengono utilizzati per scoprire quali IP sono in uso all'interno della rete. Il PC deve inviare una richiesta per ogni possibile indirizzo IP e solo quelli in uso risponderanno.
I pacchetti ARP sono usati per scoprire quali IP sono in uso all'interno della rete. Il PC deve inviare una richiesta per ogni possibile indirizzo IP e solo quelli in uso risponderanno.
### **mDNS (DNS multicast)**
### **mDNS (multicast DNS)**
Bettercap invia una richiesta MDNS (ogni X ms) chiedendo **\_services\_.dns-sd.\_udp.local**; la macchina che vede questo pacchetto di solito risponde a questa richiesta. Poi, cerca solo le macchine che rispondono a "services".
Bettercap send a MDNS request (each X ms) asking for **\_services\_.dns-sd.\_udp.local** the machine that see this paket usually answer this request. Then, it only searchs for machine answering to "services".
**Strumenti**
@ -786,18 +792,18 @@ Bettercap invia una richiesta MDNS (ogni X ms) chiedendo **\_services\_.dns-sd.\
### **NBNS (NetBios Name Server)**
Bettercap trasmette pacchetti alla porta 137/UDP chiedendo il nome "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".
Bettercap broadcast packets to the port 137/UDP asking for the name "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".
### **SSDP (Simple Service Discovery Protocol)**
Bettercap trasmette pacchetti SSDP cercando tutti i tipi di servizi (porta UDP 1900).
Bettercap broadcast SSDP packets searching for all kind of services (UDP Port 1900).
### **WSD (Web Service Discovery)**
Bettercap trasmette pacchetti WSD cercando servizi (porta UDP 3702).
Bettercap broadcast WSD packets searching for services (UDP Port 3702).
### Sfruttamento Telecom / Mobile-Core (GTP)
### Telecom / Mobile-Core (GTP) Exploitation
{{#ref}}
@ -807,8 +813,8 @@ telecom-network-exploitation.md
## 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)
- **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**
- **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**
- [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)