Ultima modifica da un moderatore:
Dando per scontato che voi conosciate cos'è un attacco DoS o DDoS, sono qui per parlarvi del DRDoS.
Il DRDoS è una tecnica subdola per effettuare attacchi di tipo DDoS, non richiede una botnet, qualsiasi server in rete è sfruttabile per questo attacco e vi rende praticamente non rintracciabili.
Questo tipo di attacco è in grado di quadruplicare la banda della vostra macchina attaccante verso la vittima.
Vediamo come funziona.
Il DRDoS sfrutta le funzionalità del TCP per scagliare un attacco, quando apriamo una connessione TCP verso una macchina remota viene effettuato un three way handshake
Il pc che richiede di aprire la connessione manda un pacchetto con flag SYN attivata, il server risponde con un pacchetto SYN/ACK e si presuppone che il pc richiedente risponda con un pacchetto ACK, ma cosa succederebbe se quest'ultimo pacchetto non arrivasse?
Il TCP è stato progettato per essere completamente affidabile, quindi in caso di pacchetto mancante gli sviluppatori hanno implementato un'operazione di retrasmissione del pacchetto; supponendo quindi che l'ultimo pacchetto non arrivi mai al server, quest'ultimo crederà che il pacchetto da lui inviato al pc richiedente non sia mai arrivato e verrà quindi ritrasmesso. Il pacchetto, oltre l'invio originale, verrà ritrasmesso fino a 3 volte (quindi un totale di 4 pacchetti inviati).
Supponiamo adesso di inviare un pacchetto di richiesta di connessione dal nostro computer, ma in veci della vittima: noi inviamo un pacchetto, la vittima ne riceve 4. Supponiamo di richiedere la connessione a 1000 server, sempre nelle veci della nostra vittima, noi inviamo 1000 pacchetti, la vittima ne riceve 4000. Un effetto potenzialmente devastante. Ma come fare per inviare pacchetti nelle veci della vittima?
Analizziamo la struttura dei pacchetti di rete
Un pacchetto di rete è composto da più pacchetti nidificati:
1) Il pacchetto più esterno contiene l'indirizzo MAC del dispositivo di origine e del dispositivo di destinazione
2) Il secondo pacchetto più esterno contiene l'indirizzo IP di origine e l'indirizzo IP di destinazione
3) Il terzo e ultimo pacchetto è il pacchetto TCP contentente porta di origine e porta di destinazione.
4) I dati che verranno inviati via rete, contenuti nel pacchetto TCP
Quello che interessa a noi è il pacchetto N. 2, normalmente questo pacchetto viene generato dal sistema operativo, ma utilizzando i Raw Socket è possibile costruirlo a mano: questo significa che è possibile falsificare il mittente del pacchetto e effettuare richieste di apertura di connessione in veci altrui. Questa tecnica si chiama IP Spoofing.
Non vi spiegherò come effettuare questa operazione via codice per evitare lamerate, chi sa programmare e conosce un minimo di TCP sarà in grado di effettuare queste operazioni.
Questo metodo tuttavia ha delle grosse limitazioni:
- Il NAT: se per esempio siete dietro a un router, quest'ultimo ricostruirà automaticamente i pacchetti.
- Alcuni ISP bloccano i pacchetti con IP spoofato, rendendo quindi inefficace questa tecnica di DoS.
Spero di essere stato abbastanza chiaro
Il DRDoS è una tecnica subdola per effettuare attacchi di tipo DDoS, non richiede una botnet, qualsiasi server in rete è sfruttabile per questo attacco e vi rende praticamente non rintracciabili.
Questo tipo di attacco è in grado di quadruplicare la banda della vostra macchina attaccante verso la vittima.
Vediamo come funziona.
Il DRDoS sfrutta le funzionalità del TCP per scagliare un attacco, quando apriamo una connessione TCP verso una macchina remota viene effettuato un three way handshake
Il pc che richiede di aprire la connessione manda un pacchetto con flag SYN attivata, il server risponde con un pacchetto SYN/ACK e si presuppone che il pc richiedente risponda con un pacchetto ACK, ma cosa succederebbe se quest'ultimo pacchetto non arrivasse?
Il TCP è stato progettato per essere completamente affidabile, quindi in caso di pacchetto mancante gli sviluppatori hanno implementato un'operazione di retrasmissione del pacchetto; supponendo quindi che l'ultimo pacchetto non arrivi mai al server, quest'ultimo crederà che il pacchetto da lui inviato al pc richiedente non sia mai arrivato e verrà quindi ritrasmesso. Il pacchetto, oltre l'invio originale, verrà ritrasmesso fino a 3 volte (quindi un totale di 4 pacchetti inviati).
Supponiamo adesso di inviare un pacchetto di richiesta di connessione dal nostro computer, ma in veci della vittima: noi inviamo un pacchetto, la vittima ne riceve 4. Supponiamo di richiedere la connessione a 1000 server, sempre nelle veci della nostra vittima, noi inviamo 1000 pacchetti, la vittima ne riceve 4000. Un effetto potenzialmente devastante. Ma come fare per inviare pacchetti nelle veci della vittima?
Analizziamo la struttura dei pacchetti di rete
Un pacchetto di rete è composto da più pacchetti nidificati:
1) Il pacchetto più esterno contiene l'indirizzo MAC del dispositivo di origine e del dispositivo di destinazione
2) Il secondo pacchetto più esterno contiene l'indirizzo IP di origine e l'indirizzo IP di destinazione
3) Il terzo e ultimo pacchetto è il pacchetto TCP contentente porta di origine e porta di destinazione.
4) I dati che verranno inviati via rete, contenuti nel pacchetto TCP
Quello che interessa a noi è il pacchetto N. 2, normalmente questo pacchetto viene generato dal sistema operativo, ma utilizzando i Raw Socket è possibile costruirlo a mano: questo significa che è possibile falsificare il mittente del pacchetto e effettuare richieste di apertura di connessione in veci altrui. Questa tecnica si chiama IP Spoofing.
Non vi spiegherò come effettuare questa operazione via codice per evitare lamerate, chi sa programmare e conosce un minimo di TCP sarà in grado di effettuare queste operazioni.
Questo metodo tuttavia ha delle grosse limitazioni:
- Il NAT: se per esempio siete dietro a un router, quest'ultimo ricostruirà automaticamente i pacchetti.
- Alcuni ISP bloccano i pacchetti con IP spoofato, rendendo quindi inefficace questa tecnica di DoS.
Spero di essere stato abbastanza chiaro