Lega Nerd

Denial of Service

A fine Febbraio Github, il più famoso servizio di hosting per progetti software, è stato protagonista di uno spiacevole record: è stato vittima del più grande attacco DDoS della storia.

Il volume dell’attacco è stato di 1.35 Terabit per secondo (Tbps). Record che è stato poi nuovamente infranto qualche giorno dopo, quando un ISP statunitense è stato colpito da un attacco da 1.7 Tbps.

 

 

 

Cos’è un DoS

Il DoS, o Denial of Service, è una tipologia di attacco che punta a rendere inutilizzabile un determinato servizio e per raggiungere questo scopo punta a far esaurire le risorse (di vario tipo, come vedremo) del server che mette a disposizione tale servizio.

Diciamo che è come se qualcuno non volesse che voi riceviate telefonate e per impedirvelo continui a chiamarvi a ripetizione in modo che nessun altro riesca a contattarvi. In questo esempio il servizio è la vostra compagnia al telefono e la risorsa è la linea libera.

 

Giustamente dopo un po’ vi incazzate…
Un DoS può essere di vari tipi, e la differenza sta principalmente nel tipo di risorse che tenta di consumare al bersaglio.

I principali sono:

Un esempio banale di DoS che mira al consumo di risorsa è il SYN Flood attack.
Prima un breve cenno su come si instaura una connessione TCP: una macchina A che voglia connettersi ad una macchina B invia un segnale chiamato SYN, a cui la macchina B risponde con un segnale chiamato SYN-ACK e resta in attesa di un ultimo segnale ACK da parte della macchina A. questo è il Three Way Handshake.

È come se qualcuno non volesse che voi riceviate telefonate, e per impedirvelo continua a chiamarvi a ripetizione in modo che nessun altro riesca a contattarvi.

Nel SYN Flood attack un attaccante inizia tantissime (da qui il Flood) connessioni con il server vittima, eseguendo però il Three Way Handshake solo in modo parziale: invia il SYN, ma non invia l’ACK in risposta al SYN-ACK che proviene dal server. In questo modo il server resta in attesa del segnale e tiene occupate risorse per quella connessione. Con un numero sufficientemente alto di connessioni iniziate “a metà”, il server potrebbe finire le risorse e non essere più in grado di accettare connessioni da client legittimi. Un esempio calzante può essere quello delle telefonate a ripetizione menzionato prima.

Un attacco che mira a consumare la banda è invece il DNS amplification attack.
I server DNS sono quelli che quando si digita leganerd.com nella barra degli indirizzi vanno a recuperare l’ip corrispondente e altri dati vari.

In questo scenario un attaccante, sotto certe condizioni, interroga un server DNS chiedendo la risoluzione di un dominio. La dimensione della risposta del server DNS è più grande del pacchetto inviato dall’attaccante per interrogarlo, e si parla quindi di amplificazione.
In aggiunta, l’attaccante falsifica il proprio indirizzo ip (ip spoofing, in gergo) cambiandolo in quello del suo bersaglio.

Questo attacco può essere pensato come un tale che telefona a un ristorante e dice “vorrei ordinare uno di tutto, richiamatemi e elencatemi tutto quello che ho preso”.

Per comprendere meglio il concetto di amplificazione questo attacco può essere pensato come un tale che telefona a un ristorante e dice “vorrei ordinare uno di tutto, richiamatemi e elencatemi tutto quello che ho preso” e come numero per essere richiamato da quello di qualcun altro.

L’amplificazione della risposta, inoltre, può essere maggiormente valorizzata dall’attaccante utilizzando una Botnet, ossia una rete di computer compromessi di cui lui ha il controllo (perchè infettati da un suo malware magari).

Una botnet comandata da un attaccante centrale assalta contemporaneamente lo stesso bersaglio durante un DDoS.

 

Una delle più recenti e famose botnet è quella creata da Mirai, malware al momento della sua scoperta nel 2016 aveva preso il controllo di un numero tra gli 800000 e i 2.5 milioni di dispositivi IoT.

Ogni computer della botnet farà una richiesta al server DNS spoofando il proprio IP con quello della vittima, che si vedrà quindi arrivare un numero altissimo di risposte voluminose che andranno a congestionare il traffico. Grazie all’amplificazione questo scopo può essere raggiunto anche con botnet  non tanto grandi, nell’ordine di qualche migliaia di macchine.

Parlando di botnet entra in gioco il termine DDoS: significa Distributed Denial of Service e sta ad indicare un attacco DoS proveniente da più sorgenti e non da un unico indirizzo IP.

I DoS ormai, si può dire, sono quasi tutti di tipo Distributed.

 

 

 

Il caso GitHub

Nel caso di GitHub, si è trattato di un DDoS di banda. Come detto a inizio articolo il volume del traffico ha raggiunto la vetta di 1.35 Tbps, ed è stato possibile sfruttando un software mal configurato ed esposto pubblicamente su internet, Memcached.

Memcached (disponibile su GitHub, tra l’altro :D ) è un servizio che ha lo scopo primario di velocizzare servizi che offrono contenuti in rete. Di default ha attivo anche il protocollo UDP, e se viene interrogato Memcached tramite UDP la risposta fornita è circa 10000 volte più grande della richiesta inviata al servizio!

In realtà nella pratica si sono poi viste risposte 51000 volte più grandi della richiesta, e questo ha portato agli enormi volumi di 1.35 Tbps prima e 1.7 Tbps poi!

Una particolarità dell’attacco sferrato a GitHub è che nei payload delle risposte (ossia la parte contenente dati effettivi) era inclusa una richiesta di riscatto per porre fine all’attacco, di circa 50 Monero, che corrispondevano a fine febbraio a circa 15000 dollari, oggi circa 10000.

GitHub fortunatamente ha sofferto un disservizio di soli 10 minuti, ma questi ordini di grandezza sono preoccupanti e paiono destinati a salire.

 

 

 

Chi usa DoS e perché

Come appena detto il DDoS contro GitHub è stato sferrato col fine di monetizzare tramite riscatto, ma si tratta di un caso raro ed è comunque un buon esempio per capire cosa c’è dietro alla psicologia di un DDoS.

Al contrario di altri attacchi, che possono anche passare inosservati e essere scoperti mesi o anni dopo, il DDoS si basa su un assalto totale ed ha un fortissimo impatto. Rende inutilizzabile il servizio, e chiunque sia un utilizzatore se ne accorge immediatamente.

Il DDoS in pratica nasce per far parlare di sé e per causare un danno concreto e immediato all’azienda o società che possiede il servizio bersaglio.

Solitamente i Denial of Service sono effettuati da organizzazioni o gruppi di attivisti (detti anche hacktivists), che puntano a danneggiare economicamente o a livello di immagine aziende e business che vanno contro i loro principi.

Ad esempio gli attivisti di Anonymous hanno eseguito in passato alcune operazioni con l’utilizzo dei software open source LOIC e HOIC (Low e High Orbit Ion Cannon, una figata di nomi ispirati da Command & Conquer), che consentivano di realizzare attacchi DDoS generando una gran quantità di traffico di rete. Venivano utilizzati canali IRC per coordinare l’attacco degli appartenenti verso un unico bersaglio.

 

Interfaccia di una versione del LOIC

 

Gli attacchi DDoS sono anche disponibili come crime-as-a-service, modello di business illecito che si è diffusa molto negli ultimi anni, anche con altre tipologie di minacce.

Ad esempio si è visto che una botnet per un Distributed Denial of Service era “affittabile” al mercato nero (sul Dark Web, per intenderci) per l’irrisorio prezzo di 5$ all’ora.

Con questa tipologia di servizio a prezzi così accessibili, vanno a crollare le barriere che richiedevano un minimo di competenze per sferrare questi attacchi, che quindi diventano alla portata di chiunque.

 

 

Se vi interessa l’argomento, qui sotto trovate qualche link con letture interessanti o approfondimenti: