guida completa al denial of service (dos, ddos, drdos)

Upload: stefano-nudo-novelli

Post on 02-Mar-2016

493 views

Category:

Documents


0 download

DESCRIPTION

Info su http://www.inforge.net/community/dos-ddos-guide/356711-guida-completa-al-dos-ddos-drdos.html

TRANSCRIPT

  • Guida Completa al Denial of Service 1

  • Indice

    0) Prefazione

    0.1) A chi rivolto questo DOC

    0.2) Come leggere questo DOC

    0.3) Licenza dUso

    1) Fondamentali

    1.1) Il Computer

    1.2) Reti

    1.2.1) Sistema Client Server

    1.2.2) Servizi e Porte

    1.2.3) Pacchetti

    2) Denial of Service

    2.1) La teoria del DoS

    2.2) Negazione del Servizio

    2.2.1) I pericoli del DoS

    2.2.2) Sistemi vulnerabili ai DoS

    2.2.3) Conseguenze di un attacco DoS

    2.3) Tipologie di attacchi DoS

    2.3.1) Categorie di DoS

    2.3.2) Attacchi DoS Volumetrici/Protocollo

    2.3.2) DDoS e DrDoS

    2.3.2.1) Distributed Denial of Service

    2.3.2.2) Distributed Reflected Denial of Service

    2.4) UDP/ICMP Flood

    2.4.1) Simulare un attacco UDP/ICMP Flood

    2.4.2) Mitigare un attacco UDP/ICMP Flood

    2.5) SYN Flood

    2.5.1) Simulare un attacco SYN Flood

    2.5.2) Mitigare un attacco SYN Flood

    2.6) HTTP Flood

    2.6.1) Simulare un attacco HTTP Flood

    2.6.2) Mitigare un attacco HTTP Flood

    2.7) Slowris

    2.7.1) Simulare un attacco Slowris

    2.7.2) Mitigare un attacco Slowris

    Guida Completa al Denial of Service 2

  • Autore

    Stefano > murdercode < Novelli, 24 anni, programmatore e ricercatore di sicurezza informatica.Fondatore della community www.inforge.net e ideatore dellebook.

    Collaboratori

    Marco > ecvz < Padovan, 29 anni, programmatore e sistemista informatico.Fondatore dellhosting www.hiperz.net

    > Max Fridman Nhoya < Giordano, 19 anni, membro Staff diwww.inforge.net

    Claudio > Sharu < Sciortino, 16 anni, membro Staff diwww.inforge.net

    > B4ckdoor

  • Questo ebook distribuito da

    INFORGE.NET

    Guida Completa al Denial of Service 4

  • 0) PrefazioneIn questa primo capitolo parleremo delletica e dei motivi che ci hanno spinto a scrivere questo documento. Si

    consiglia la lettura cos da fruire nel migliore dei modi delle informazioni riportate in seguito.

    0.1) A chi rivolto questo DOCLobiettivo di questo documento quello di spiegare, attraverso concetti semplici e alla portata di

    tutti, il fenomeno del Denial of Service e di tutto ci che lo circonda.

    0.2) Come leggere questo DOCQuesto documento stato scritto usando un linguaggio il pi semplice e chiaro possibile.

    Ci potrebbe tuttavia far storcere il naso agli esperti di settore; sappiamo quanto loro ci tengano ad

    essere tecnicamente incomprensibili.

    Consigliamo quindi a tutti di non limitarsi in buona fede delle nostre parole ma di informarsi sempre

    e comunque su ci che diciamo, di confrontarlo e di discuterlo allinterno del forum

    http://www.inforge.net/ .

    Il documento strutturato in modo da poter essere letto sia in maniera lineare (dallinizio alla fine)

    sia a pezzi. Ci nonostante, consigliamo perlomeno la lettura dei Fondamentali (cap. 1), per

    riuscire a cogliere appieno tutta la terminologia e i tecnicismi del caso.

    Guida Completa al Denial of Service 5

  • Leggenda delle Icone

    Questa icona rappresenta un argomento di natura tecnica che potrebbe non essere

    comprensibile a chi non esperto del settore.

    Le parti tutte in corsivo saranno invece scaglioni di codice di programmazione.

    Verranno tutte commentate, ma si da per ipotesi che il lettore conosca un minimo di

    programmazione.

    0.3) Licenza dUsoGUIDA COMPLETA al DENIAL OF SERVICE un ebook ideato e curato da Stefano murdercode

    Novelli.

    Le azioni e le informazioni che otterrete sono da riternersi per puro scopo informativo e

    illustrativo.

    Qualunque atto vada contro la legge informatica n.23 art. 1,2,3,4,5,6,7,8,9,10,11,12,13

    perseguibile e punibile penalmente.

    Le azioni riportare nel documento sono state testate su macchine di propriet.

    Guida Completa al Denial of Service 6

  • 1) FondamentaliIn questo capitolo cercheremo di riportare tutte le informazioni fondamentali per apprendere al meglio gli argomenti

    pi avanzati della lettura.

    1.1) Il ComputerIniziamo ovviamente dal concetto pi essenziale: il Computer.

    Non limitiamoci per a vederlo come il computer fisso o il portatile che tutti noi abbiamo in casa (si

    spera!) ma pi come a un qualunque dispositivo in grado di eseguire calcoli matematici, restituendo

    un output grazie al risultato delle istruzioni che elaborano i dati proveniente da un input esterno..

    Ok un attimo: cosa significa?

    Un input pu essere un valore o una serie di valori che vengono inviati al nostro computer.

    Possono essere valori numerici, parole, azioni compiute.

    Un esempio pu essere il movimento del mouse: nella sua versione analogica (quella con la palletta

    insomma) il mouse invia dati in input al computer; questi dati sono i due assi verticale e orizzontale,

    e sono valori numerici.

    Listruzione invece il software che elabora il dato: senza listruzione, i valori inviati dal nostro

    mouse sarebbero completamente inutili. Listruzione invece raccoglie i dati, li riconosce come valori

    del mouse e li prepara per mostrare il risultato.

    Loutput appunto il risultato dellunione input+istruzione: possiamo quindi dire che loutput il

    cursore che si muove allinterno del nostro schermo.

    Tutto chiaro?

    Bene, torniamo a noi.

    Dicevamo che non dobbiamo limitarci a vedere il computer come al PC Desktop o il Notebook ma a

    Guida Completa al Denial of Service 7

  • qualunque dispositivo in grado di elaborare un input e mostrare un output.

    Quindi teniamo conto anche dei tablet, degli smartphone e dei router: insomma, allarghiamo i nostri

    orizzonti.

    1.2) RetiLa rete informatica un insieme di computer collegati tra di loro, rendendoli in grado di trasmettersi

    informazioni e condividersi periferiche e risorse.

    La rete pu avere uno o pi seguenti di questi scopi:

    Condividere delle risorse (file, applicazioni o hardware, connessioni a internet etc...) Comunicare fra persone (email, chat etc...) Lavorare sullo stesso progetto Videogiocare e tanto altro.

    Le reti possono poi essere classificate in base alla loro dimensione geografica:

    LAN: reti di superficie ridotta (una stanza o un edificio) caratterizzata da alte prestazioni emezzi di trasmessione molto veloci.

    WAN: reti di superficie media MAN: reti di grandi dimensioni, ai livelli di unarea urbana (es. fibra ottica)

    Le reti possono essere di due tipi di gerarchie: Client/Server e P2P (Peer to Peer).

    Guida Completa al Denial of Service 8

  • Internet, la pi grande rete mai creata, attualmente fa affidamento ad entrambe le tipologie di

    gerarchia.Tuttavia nella navigazione nel World Wide Web (www, con protocollo di comunicazione

    http) si fa affidamento principalmente alla struttura Client/Server, che tratteremo in questo

    documento.

    1.2.1) Sistema Client Server

    La tipologia Client-Server indica unarchitettura di rete nella quale genericamente un computer

    (Client) si collega ad un altro computer (Server).

    Il Client, collegandosi al Server, potr fruire di tutti i servizi che gli vengono concessi.

    Tali servizi possono essere:

    Pagine Web Invio/Ricezione Mail Server di trasferimento dati Server di gioco e, ovviamente, molto altro.

    Ricapitoliamo:

    Client riceve servizi dal Server

    Guida Completa al Denial of Service 9

  • Questo concetto dovete tenerlo a mente, poich sar la base di tutto quello che diremo in questo

    documento.

    Sia i server che i client hanno inoltre un indirizzo identificativo nella rete chiamato IP.

    Tale indirizzo unico e rappresenta il computer nella rete (un p come un numero di cellulare che

    rappresenta la SIM).

    1.2.2) Servizi e Porte

    Come abbiamo gi accennato, i servizi di un server possono essere svariati (pagine web, email, chat,

    server di gioco etc...).

    Per poter smistare e riconoscere tutti i servizi, il Server utilizza le porte.

    Possiamo immaginarle come a delle corsie di unautostrada; ogni corsia dedicata ad un solo tipo di

    autovettura. Allo stesso modo, ogni servizio viaggia allinterno della propria corsia (la porta,

    appunto).

    NB: sia Server che Client hanno porte di comunicazione, tuttavia i client spesso le hanno chiuse e/o

    filtrate.

    Guida Completa al Denial of Service 10

  • Le porte sono spesso standard, eccone una lista delle pi comuni di un Server:

    Porta Protocollo Porta Protocollo

    21 FTP 465 SMTP (SSL)

    22 SSH 993 IMAP (SSL)

    23 TELNET 995 POP3 (SSL)

    25 SMTP 1080 SOCKS Proxy

    53 DNS 1994 OpenVPN

    80 HTTP 3306 MySQL

    110 POP3 5432 PostgreSQL

    137 NetBIOS 6667 IRC

    443 HTTPS 8080 HTTP (web cache)

    Lista completa su Wikipedia

    Come possibile vedere, ad ogni porta corrisponde un protocollo.

    I protocolli di comunicazione sono regole utilizzate da due computer per comunicare tra di loro: come

    un giapponese ed un italiano, due computer che non parlano la stessa lingua difficilmente

    riusciranno a capirsi.

    Tutti questi protocolli sono definiti dal modello di riferimento OSI (Open System Interconnection).

    Il modello OSI contiene le regole e gli standard che consentono a qualsiasi sistema di

    comunicare con altrettanti sistemi. Questi protocolli sono strutturati in sette livelli, e

    ognuno ha un compito ben preciso.

    I sette livelli OSI sono:

    1. Livello Fisico: trasmissione di flussi di dati raw

    2. Livello data-link: trasferimento di dati da due punti

    3. Livello di rete: indirizzamento e trasferimento dati

    4. Livello di trasporto: trasmissione affidabile dei dati

    5. Livello di sessione: stabilimento e mantenimento della connessione

    Guida Completa al Denial of Service 11

  • 6. Livello di presentazione: presentazione dati, cifratura e compressione

    7. Livello di applicazione: esecuzione delle applicazioni

    1.2.3) Pacchetti

    I pacchetti sono contenitori di dati che viaggiano allinterno di una rete, sfruttando il metodo di

    trasferimento a commutazione di pacchetto (approfondimento pacchetti di rete).

    Ve lo rispiego in linguaggio volgare: un pacchetto contiene le informazioni da passare a un altro

    computer. Meglio? :)

    Essi sono formati da tre parti:

    Header: contiene tutte le informazioni necessarie alla trasmissione (mittente, destinatarioetc...).

    Data: contiene le informazioni da scambiare Checksum: un codice di controllo per la verifica dellintegrit del pacchetto

    I pacchetti viaggiano continuamente da un computer ad un altro.

    Viaggiano quando siamo connessi in una LAN (magari tra uno switch e un notebook), viaggiano

    quando siamo connessi su Skype oppure quando stiamo navigando su Facebook.

    E possibile che il vostro router di casa invii pacchetti al vostro tablet per vedere se ancora

    connesso.

    Nello specifico, ogni pacchetto contiene implementazioni dei protocolli dei 7 livelli

    OSI.

    Ogni livello viene avvolto dal livello soprastante a m di cipolla, definendo cos degli

    strati livello; questo serve per permettere la lettura di alcune informazioni solo a chi

    ne ha necessit (es. il router avr bisogno di leggere solo le informazioni del Livello 3

    aka Livello di Rete).

    Tale processo viene definito incapsulamento.

    Ogni pacchetto ha una lunghezza massima di dati (MTU) e una lunghezza minima.

    In caso di superamento della lunghezza massima, il pacchetto verr frammentato in pi segmenti.

    In caso di non raggiungimento di una lunghezza minima, il pacchetto verr riempito (padding).

    Guida Completa al Denial of Service 12

  • 2) Denial of ServiceNegazione di servizio: dalle sue prime versioni a quelle attuali. Metodi di attacco e di difesa di uno delle tecniche di

    cyber-terrorismo pi in voga negli ultimi anni.

    2.1) La teoria del DoSImmaginate una lunga coda al casello dellautostrada; come molti di voi sapranno, ogni corsia in

    grado di contenere e gestire una macchina per volta.

    Ora, tutti i caselli delle autostrade sono il vostro server.

    Gli utenti (i Client) sono le macchina sono in coda.

    Immaginiamo a questo punto di prendere 10.000 macchine e farle andare tutte assieme a fare la fila.

    Qual il risultato? Che la fila si intasa.

    E proprio come in unautostrada, dove ogni corsia corrisponde ad un servizio, se si effettua una

    richiesta massiccia di quel servizio (come la coda), tale servizio si blocca.

    2.2) Negazione del ServizioOra che abbiamo capito il concetto base del DoS (Denial of Service, appunto Negazione del Servizio)

    entriamo un p pi nel vivo dellargomento.

    Prima abbiamo parlato di 10.000 persone, ma cosa sono queste persone? Sono Computers?

    Guida Completa al Denial of Service 13

  • No, sono richieste e, come ben sappiamo, una richiesta si fa attraverso linvio e la ricezione di un

    pacchetto (vedi 1.2.3).

    La teoria dellattacco vuole quindi che generando milioni e milioni di richieste ad un server, questo

    cessa di erogare servizi.

    2.2.1) I pericoli del DoS

    Come pu una tipologia di attacco avere un cos grande successo a distanza di anni dalla sua

    ideazione?

    Sono stati creati anti-virus, anti-trojan, anti-malware, anti-qualunquecosa ma non mai stato

    inventato un anti-ddos, neanche dopo il boom del DoS nel 2011 (e in continua crescita).

    Cosa si pu fare per fermarli?

    La soluzione al problema varia di caso in caso, tuttavia pi avanti cercheremo di trattare a fondo il

    tema.

    Purtroppo per non possiamo assicurarvi nulla: la rete stessa ad avere un sistema marcio, che non

    garantisce laffidabilit di ogni informazione scambiata.

    Essendo progettata come rete affidabile, Internet permette alla maggior parte dei dispositivi di

    scambiare qualunque informazione senza un controllo sulla veridicit dello scambio di informazioni.

    Come mai gli attacchi DoS sono in rapida crescita?

    Con la disponibilit sempre maggiore di nuovi computer, ma anche (e soprattutto) di VPS sempre pi

    potenti e meno costose (cos come anche le linee di connessione), chiunque pu effettuare attacchi

    massicci.

    Inoltre, gli attacchi di basso livello sono alla portata di tutti: basterebbe fare una piccola ricerca su

    qualunque motore di ricerca e restare meravigliati dalle varianti dei software che permettono di fare

    ci, il tutto ovviamente senza avere un briciolo di conoscenza sul tema.

    2.2.2) Sistemi vulnerabili ai DoS

    Come gi accennato, la tipologia pi comune di attacco DoS consiste nellinondare le risorse di un

    server con tante richieste. Questo tipo di attacco sovraccarica la coda di gestione delle risorse di un

    Guida Completa al Denial of Service 14

  • server, o nei casi pi blandi, rallenta i tempi di risposta in modo significativo.

    Per adesso per ci siamo limitati a parlare di Server, ergo si suppone che solo questi siano vulnerabili

    agli attacchi di DoS.

    In realt possibile attaccare un computer specifico, una porta o un servizio, unintera rete o il

    componente del sistema; pu anche avere come obiettivi sistemi di comunicazione fra persone

    (telefoni, portatili, allarmi, fax, stampanti etc...)

    2.2.3) Conseguenze di un attacco DoS

    Come ovviamente avrete intuito, lo scopo di tale attacco quello di non permettere pi ad un

    dispositivo di inviare e/o ricevere informazioni allinterno di una rete (locale o internet).

    Di per s lattacco non causa alcun danno permanente allinterno della struttura del sistema vittima:

    tuttavia le conseguenze causate da tale attacco possono ripercuotersi nelle altre aree dei gestori del

    servizio.

    Un esempio avvenuto recentemente quello dellattacco subito ai danni di Mt.Gox, cambio valute di

    livello internazionale, famoso soprattutto per la vendita e lacquisto di bitcoin, la pi utilizzata valuta

    elettronica.

    Dopo un attacco di ben 12 ore la valuta perde il 40% del suo valore reale.

    Ci nonostante, i server una volta riavviati erano rimasti cos come erano stati lasciati.

    Ok, forse intasati dai log di accesso, tuttavia i database, le password e i dati sensibili non erano stati

    compromessi. Nessun danno strumentale ma un danno enorme a livello economico.

    Quindi se la vostra domanda : si pu distruggere un computer, un server o qualunque altra cosa

    connessa a Internet con un DoS?, la risposta no, ma ci non significa che il disservizio non crei

    danni.

    2.3) Tipologie di attacchi DoSNel corso degli anni sono state ideate nuove tipologie di attacco che sfruttano la teoria del Denial of

    Service.

    Guida Completa al Denial of Service 15

  • Alcune di queste sono state gi risolte poich facevano affidamento a tecnologie superate, altre

    invece sono nate grazie allintroduzione di nuove tecnologie.

    2.3.1) Categorie di DoS

    Come gi accennato, il DoS consiste nellinondare un target di richieste.

    Tuttavia le richieste non sono limitate ad una sola tipologia, ma possono far parte di migliaia di

    varianti che dipendono ovviamente dal tipo di target che si tenta di attaccare.

    Diamo per scontato che il computer target sia di vostra propriet e pertanto ne conosciate gi gli

    strumenti installati.

    Possiamo allora suddividere i tipi di attacchi in 3 grandi categorie:

    Attacco Volumetrico: tipologia riferita ad attacchi che consistono nellinondare il target conenormi quantit di traffico. Lobiettivo finale dellattacker quello di saturare la banda del

    server.

    Si misura in bits per secondo (Bps).

    Attacco a Protocollo: include attacchi SYN, pacchetti frammentati, Ping of Death, Smurf DDoSe altro. Questi tipi di attacchi consumano le risorse di sistema e tutti quei dispositivi che

    fanno da tramite tra Client e Server, come ad esempio i routers.

    Si misura in pacchetti per secondo.

    Attacco a Livello Applicazione: include Slowloris e tutti gli 0day che colpiscono software esistemi operativi installati. Sono i pi pericolosi (e i pi complessi) poich non vengono

    riconosciuti da firewall o strumenti di difesa.

    Si misura in richieste al secondo.

    Gli attacchi a Protocollo viaggiano nel Livello 4 della pila ISO/OSI mentre gli attacchi a

    livello Applicazione agiscono al livello 7.

    La differenza consiste nel fatto che mentre nel Livello 4 (Transport Level) vi una

    saturazione di servizio mediante grosse quantit di dati (e quindi pi facili da

    identificare), nel Livello 7 (Application Level) per arrivare alla saturazione del servizio

    bastano poche quantit di dati in ingresso, che non sono riconoscibili poich

    considerate legittime dal sistema.

    Guida Completa al Denial of Service 16

  • Insomma, quante varianti esistono? Infinite.

    Affinch il nostro documento (e il lettore) non vadano a finire in uno stato confusionale,

    approfondiremo solo alcune di queste tecniche, tralasciando quelle obsolete e oramai inefficaci.

    2.3.2) Attacchi DoS Volumetrici/Protocollo

    Lincubo di ogni hoster (e di ogni webmaster!), lattacco DoS di tipo volumetrico ha lo scopo di

    saturare la banda disponibile di un host.

    Come gi saprete i siti web e i server in generale vengono affittati mensilmente; i loro prezzi

    vengono ovviamente scelti in base alle loro caratteristiche: CPU, RAM, Spazio etc...

    Unaltra caratteristica per importante (e spesso nascosta dallo stesso venditore) durante la scelta di

    un server la banda. Questo numero ndica la quantit di dati (in Gb o pi) che un server pu ricevere

    o trasmettere in un determinato periodo (solitamente un mese).

    Assieme al traffico bisognerebbe prendere in considerazione anche la velocit di traffico, ossia la

    velocit di trasferimento dei dati (in Mbit/s).

    Ora, sappiamo che lattacco DoS di tipo volumetrico punta a saturare la banda, quindi la quantit di

    dati che un server pu erogare.

    Se per esempio il limite di banda mensile di un server viene superato possono accadere due

    situazioni:

    1. alcune societ a pagamento, e tutte quelle gratuite, bloccano il server.

    2. le altre societ limitano la velocit di traffico.

    Nella prima situazione capirete che un grandissimo disagio per il webmaster non poter accedere al

    suo server fino al mese successivo.

    In questo caso le societ che erogano il servizio (chi vi affitta il server insomma) fanno presssioni

    affinch voi acquistiate pacchetti di categoria superiore (passando da un hosting a una vps o

    addirittura a un dedicato).

    Nella seconda situazione solitamente vi un rincaro dei prezzi di banda. Solitamente i limiti sono

    abbastanza alti, e le societ pi serie prendono a carico una notifica di attacco (vedi Hetzner), ma

    molti altri preferiscono che ve la sbrighiate da soli.

    Guida Completa al Denial of Service 17

  • La scelta delle tipologie di attacco verr basata sul seguente diagramma a torta, prodotto da

    Kaspersky Lab, che si riferisce al secondo quadrimestre degli attacchi DoS/DDoS dellanno 2011.

    Diagramma di Securelist.com

    Come possibile notare, la fetta maggiore detenuta dagli attacchi HTTP (88.9%); le richieste

    effettuate al server sono per un breve periodo, il che non permette di filtrare le richieste cattive da

    quelle buone.

    In seconda posizione troviamo il SYN Flood (5,4%). Durante questo attacco vengono inviati molteplici

    pacchetti al web server al fine di effettuare una connessione TCP. Nellattacco, questo pacchetti

    vengono manipolati, in modo da lasciare semi-aperta la connessione. Poich un server pu manetere

    un numero limitato di connessioni nello stesso momento, e una botnet (vedremo poi cos) pu

    generarne moltissime in breve tempo, il server sar costretto a bloccare le connessioni dallesterno.

    In ultimo posto troviamo i DDoS su DNS (0,2%). Pochi, ma pericolosi.

    Il DNS ha il compito di convertire i domini in indirizzi IP, quindi se cade gi un server DNS, tutti i

    computer connessi al server DNS non potranno pi navigare. Gran figata eh?

    Guida Completa al Denial of Service 18

  • 2.3.2) DDoS e DrDoS

    Fino ad ora abbiamo spiegato la teoria dellattacco ma ancora non abbiamo accennato allevoluzione

    degli attacker con tale tecnica.

    Se da una parte si lavora notte e giorno per creare nuovi metodi sempre pi efficaci per creare il

    disservizio verso una macchina, dallaltra si cercano i modi per ampliare il numero di attacker ad una

    macchina vittima.

    Ipotesi

    Un computer attacker manda un attacco ad un computer vittima di 500.000 pacchetti. Il server

    potrebbe mantenere nonostante tutto i servizi attivi, in quanto riuscirebbe a vagliarli tutti.

    Se i computer attacker fossero 10, lattacco si moltiplicherebbe con la semplice funzione matematica:

    10 x 500.000 = 5.000.000

    E probabile che la macchina server non riesca a vagliare tutti questi servizi e quindi sia costretto a

    bloccare ogni uscita.

    La domanda : dove diavolo si trovano 10 macchine capaci di attaccare per 500.000 pacchetti?

    2.3.2.1) Distributed Denial of Service

    Lattacker ha bisogno di 10 dispositivi che attacchino ma ci significherebbe avere 10 computer

    dislocati in 10 reti diverse.

    Che si pu fare?

    Si possono infettare 10 computer, ad esempio.

    Il controllo remoto di una macchina ci permetterebbe di inviare ci che vogliamo a chi vogliamo.

    Pacchetti, ad esempio...

    I target possono essere computer client ma gli obiettivi pi succulenti sono server, VPS e tutte quelle

    macchine in grado di generare tanta potenza di calcolo e richieste via internet senza troppi intoppi.

    Una volta ottenuto il controllo delle macchine infette (che si identificano come zombie) si potr

    attuare lattacco, da qui il nome di Distributed Denial of Service.

    2.3.2.2) Distributed Reflected Denial of Service

    Un attacco DrDoS utilizza la forza di calcolo di altri server per buttarne gi uno. In che modo?

    Guida Completa al Denial of Service 19

  • Immaginate di fare un ordine di 100 pizze a nome di Guido la Vespa (nome a caso). Avete gi capito.

    Questo il DrDoS, n pi n meno.

    Ci sono vari servizi sfruttati per lanciare DrDoS che vengono scelti in base a due fattori essenziali:

    fattore di moltiplicazione (ad una domanda piccola i servizi possono rispondere con risposte pi o

    meno grandi) numero di host sfruttabili/vulnerabili.

    Ad oggi il DrDoS pi diffuso quello che sfrutta il servizio DNS grazie all'ampissima disponibilit di

    host vulnerabili e all'altissimo fattore di moltiplicazione offerto da tale servizio

    Altro servizio spesso usato chargen, tipico di macchine windows e alcune stampanti di rete.

    il vantaggio dei DrDoS rispetto ad un DDoS tradizionale che anche a fronte di una scarsa banda

    disponibile permette di generare un volume di traffico molto alto (addirittura fino al 100x).

    2.4) UDP/ICMP FloodUDP un protocollo di tipo connectionless, una pratica che rende loperazione di comunicazione tra

    due dispositivi molto veloce e che non richiede una connessione costante tra due elementi.

    Ogni pacchetto UDP quindi ipoteticamente uninformazione plausibile, ed da l che lattacco ha

    inizio.

    Lattacco UDP Flood un attacco di tipo protocollo che pu iniziare con un gran

    numero di richieste verso un host remoto e si verificheranno i seguenti processi:

    - Controllo della presenza del servizio richiesto (tramite richiesta UDP)

    - Verifica che il servizio non esiste

    - Invio del messaggio di stato ICMP Destination Unreachable (Destinazione non

    disponibile)

    Il server, costretto a dover vagliare le richieste UDP e ad elaborare tantissime risposte

    ICMP si intaser con conseguente negazione del servizio in uscita.

    Variante di UDP/ICMP Flood con IP Spoofing

    Lultimo passaggio, che prevede la risposta in ICMP, ovviamente arriver al mittente che ha inviato le

    richieste ICMP (cosa non buona, almeno per lattacker!).

    Guida Completa al Denial of Service 20

  • La variante di questo attacco prevede lo spoofing dellIP.

    Ok, fermi tutti: lIP sappiamo gi cos ma... cos lo spoofing?

    E quella pratica che prevede la modifica della richesta con informazioni falsate.

    Volete un esempio? Detto fatto.

    Immaginate lUDP Flooding come linviare centinaia di cartoline tutte insieme allo stesso

    destinatario. Sapete gi che il DoS prevede il riempimento della casella postale fino a che nessuna

    lettera verr recepita. Una lettera per essere consegnata deve avere due campi: Mittente e

    Destinatario; lo stesso vale per un pacchetto UDP. Ma voi sareste cos ingenui da scrivere il vostro

    nome e cognome su tutte le cartoline? Ovviamente farete una firma falsa.

    Analogalmente, in informatica farete lo spoofing del mittente (dellindirizzo IP quindi) e lo

    nasconderete al destinatario; da qui lespressione IP Spoofing.

    2.4.1) Simulare un attacco UDP/ICMP Flood

    Per simulare un attacco UDP/ICMP Flood faremo affidamento a UDP Unicorn, un software sviluppato

    per Win32 che utilizza le Winsock per creare socket UDP e floodare il target.

    Guida Completa al Denial of Service 21

  • Lutilizzo tanto semplice quanto scontato: basta indicare target e porta (random o scelta), la

    grandezza dei pacchetti (gestibile anche qui in maniera random), il delay (il tempo tra un pacchetto e

    laltro) e il numero di socket inviati per thread.

    Come vedete, UDP Unicorn non prevede lo spoofing dellIP (pratica che inutile ai fini di un

    semplice testing) pertanto lutilizzo del software consigliato solo ed esclusivamente sulle macchine

    di vostra propriet (o dove ne avete il permesso). In caso contrario, sarete esposti a facili controlli dai

    tecnici del server.

    Dulcis in fundo, UDP Unicorn un software opensource: se avete le conoscenze di programmazione

    giuste potrete capirne il funzionamento dal codice sorgente. Inoltre ha una funzione di

    multithreading che permette di sfruttare pi thread del processore e quindi viaggiare pi

    velocemente.

    2.4.2) Mitigare un attacco UDP/ICMP Flood

    Come per tutti gli attacchi ci sono vari modi per mitigare.

    Generalmente le strade sono due: o si possiede un importante know how sia lato applicativo che lato

    Guida Completa al Denial of Service 22

  • sistemistico e si fa mitigazione direttamente prima che arrivi al servizio; se attacco troppo

    pesante o non si hanno le competenze per sviluppare in autonomia una struttura filtrante ci si

    appoggia ad appliance hardware pronte.

    In entrambi i casi filtrare UDP flood molto banale quando si erogano servizi TCP (http, games etc...)

    meno banale invece quando si erogano servizi UDP.

    Generalmente la tattica usata per filtrare flood UDP fingerprinting prima e, una volta individuato il

    pattern usato, effettuare ratelimiting.

    Non chiaro? Andiamo con ordine.

    Per fingerpriting intendiamo la pratica di riconoscere quali sono le fonti che stanno

    effettuando lattacco. Solitamente possibile analizzarli direttamente nei log di

    sistema; potremmo ritrovarci con una o pi fonti dattacco, in quel caso, bene

    stilare una lista degli ip attacker.

    Il pattern lo schema utilizzato dallattacker per effettuare lattacco. Un pattern pu

    essere composto da valori fissi o randomizzati: nel primo caso il riconoscimento

    dellattacco semplice, in quanto se abbiamo tot. pacchetti inviati di grandezza fissa

    riusciremo in un batter docchio a bloccarli. Diverso invece il discorso dei random in

    quanto si potrebbero avere delle difficolt nel riconoscere lattacker.

    Per ratelimiting intendiamo la pratica di filtraggio delle connessioni al nostro

    client/server che verranno applicate agli attacker riconosciuti durante la fase di

    fingerprinting.

    Gran parte degli UDP flood che vengono lanciati attualmente sono facilmente

    identificabili e filtrabili, oltre al sempreverde DNS reflected (variante dellattacco)

    anche quello facilmente bloccabile senza aver bisogno di fare ratelimiting.

    Guida Completa al Denial of Service 23

  • 2.5) SYN FloodEccoci allora al SYN Flood, uno degli attacchi di tipo protocollo che hanno fatto la storia del web.

    Quando si erogano servizi TCP (http e games per esempio) SYN flood ancora un grosso pericolo in

    assenza di protezioni.

    Il problema maggiore dei SYN flood generato dai SYN COOKIES che molti amministratori di sistema

    attivano credendo che facciano miracoli mentre in realt hanno effetto opposto facendo diventare la

    macchina attaccata a sua volta attaccante (ma lo vedremo pi avanti).

    Per spiegarne il funzionamento dobbiamo prima conoscere il funzionamento di una connessione

    TCP.

    Una parte del collegamento TCP composta da 4 passaggi fondamentali:

    1) Il client richiede una connessione ad un server; per farlo, invia un messaggio SYN (sync o

    synchronize)

    2) Il server risponde a sua volta con un messaggio SYN-ACK

    3) Il client, ricevuta la risposta, risponder a sua volta con un messaggio ACK

    4) Il client e il server possono comunicare

    Tale processo si chiama TCP three-way handshake ed alla base di ogni connessione

    che utilizza il protocollo TCP/IP.

    Come si applica il SYN Flood?

    In questa tipologia di attacco, il client invia il SYN, il server risponde con SYN-ACK e il client non

    invier lACK, il quale chiuderebbe lhandshake e quindi darebbe inizio alla comunicazione.

    Che succede quando non viene inviato lACK?

    Il server mantiene attiva la connessione per un lasso di tempo e, solo dopo un tempo ragionevole,

    decider di chiudere lo scambio dei messaggi.

    Alcuni potrebbero pensare: scusa, ma se invio il pacchetto SYN il server mi rimanda il SYN-ACK e

    quindi io sono costretto a bloccare gli ACK in uscita dal mio pc?

    Vero, ma essendo una cosa altamente improbabile, perch non spoofare lindirizzo IP? (vedere

    variante di attacchi UDP con spoofing ip).

    Guida Completa al Denial of Service 24

  • 2.5.1) Simulare un attacco SYN Flood

    Lattacco si pu fare in migliaia di modi (SynGUI per Windows un esempio), quello che vedremo noi

    luso di un tool per i sistemi GNU/Linux chiamato hping3.

    Diamo per ipotesi il seguente comando:

    sudo hping3 -i u1 -S -p 22 192.168.2.1

    Hping uno di quei programmi che permettono una completa gestione delle connessioni in entrata

    ed in uscita di un sistema operativo. A differenza di altri OS, siamo in grado di manovrare le

    connessioni con i nostri parametri e, ovviamente, le nostre intenzioni.

    Studiamoci questo comando.

    sudo il comando necessario per lanciare hping3 con i permessi di root, questo perch hping3 ha

    necessit di creare pacchetti raw (cosa fattibile solo con i privilegi pi alti).

    hping3 ovviamente il nome del nostro tool.

    -i u1 indica lintervallo di tempo in millisecondi tra i pacchetti (in questo caso 1 millisecondo)

    -p 22 indica la porta dove destinare lattacco (ipotizziamo sulla 22, quindi sul servizio di default SSH).

    192.168.2.1 lip destinatario che ricever lattacco.

    Esistono poi dei parametri come ad esempio -a che permettono lo spoofing dellIP e la

    randomizzazione di tutto quello che si vuole (facendo figurare lattacco come se arrivasse da altre

    infrastrutture).

    Consigliamo lo studio del manuale avanzato del software alla pagina ufficiale

    hping.org/manpage.html .

    2.5.2) Mitigare un attacco SYN Flood

    Anche in questo caso se si parla di rate bassi (sotto i 500mila pacchetti al secondo) basta fare un po' di

    fingerprinting + relativo ratelimiting.

    Generalmente sono tutti spoofed e quindi il fingerprinting risulta agevole e permette di indivuare

    caratteristiche molto specifiche ed esatte generando pochi falsi positivi.

    Se invece si parla di rate pi alti (o non si hanno le competenze sistemistiche per gestire filtraggio

    Guida Completa al Denial of Service 25

  • direttamente sulla macchina) ci si affida ad appliance hardware a parte che fanno da SYN proxy.

    Prima si diceva che i SYN COOKIES potessero essere unarma a doppio taglio, eppure sono stati

    concepiti per essere un deterrente per questo attacco. Perch?

    Come dice il nostro esperto Marco Padovan: I Syn Flood sono sempre spoofed e se tu usi i cookies

    mandi syn ad ognuno degli ip spoofed, quindi le vittime potrebbero segnalarti al tuo operatore e

    sospenderti il servizio. Claro?

    2.6) HTTP FloodBenvenuti allHTTP Flood, il denial of service creato appositamente per i servizi HTTP!

    Questa tipologia di attacco va a complicare la vita al servizio pi famoso e utilizzato del web,

    sfruttandone la bont di calcolo durante le richieste GET/POST e intasandone quindi la coda dei

    processi vagliabili.

    La teoria: il client HTTP (chiamato anche Web Browser) fa una richiesta al server HTTP (il Web Server)

    e gli invia una richiesta che pu essere di diversi tipi, i pi importanti: GET e POST.

    Una richiesta GET pu essere riassunta con un link del genere:

    http://sito.it/cerca.php?keyword=hacking

    La parte in grassetto un parametro che pu essere inviato alla pagina vittima, la quale,

    probabilmente la utilizzer per eseguire un processo interno (ad esempio cercare nel proprio

    database tutti i contenuti con la parola chiave hacking).

    Se da una parte, e cio dal client HTTP, il browser dovr inviare una semplice richiesta di un url,

    dallaltra parte, e cio dal Web Server, il sistema dovr effettuare calcoli interni per vagliare la

    richiesta. Immaginate di chiedere a un server: Mi cerchi 1.000.000 di parole chiave dentro il tuo

    database? - il server Ma certo! Aspetta solo un momento Ok, penso di aver detto tutto.

    Laltro tipo di richiesta, denominato POST, fa affidamento allo stesso principio di richiesta con la sola

    differenza che i dati non passano per la querystring (in gergo umano, lindirizzo web).

    Quindi se ipotizziamo il seguente url:

    http://sito.it/cerca.php

    E possibile inviare parametri arbitrari alla pagina senza dover inviarne i dati in chiaro ma allinterno

    dellintestazione dellheader.

    Guida Completa al Denial of Service 26

  • Ovviamente, possibile fare attacchi di tipo HTTP senza dover specificare parametri o quantaltro, in

    quanto il Web Server gi di suo deve vagliare una richiesta interna di recupero di una pagina web,

    eseguirne il calcolo e i processi e rimandarli al mittente.

    2.6.1) Simulare un attacco HTTP Flood

    Per simulare un attacco HTTP Flood utilizzeremo il rinomato B4ckself, di cui lautore ci ha fornito i

    codici sorgenti (in parte) da poter esaminare e commentare assieme.

    Il B4ckself stato scritto in Python ed presente alla pagina di download da Inforge.net, pertanto per

    utilizzarlo occorrer avere installato nel proprio terminale un interprete Python.

    Sorvolando la parte sul Come si utilizza (che potete comunque trovare nella pagina di download)

    studiamone il funzionamento interno.

    Il software prevede linserimento di un parametro arbitrario da parte nostra (un url) e il numero di

    Guida Completa al Denial of Service 27

  • threads da inviare al sito vittima.

    Tale processo riassunto in questo codice:

    url = raw_input("Enter url to DoS (enter nothing to exit): ")

    if url == "":

    exit(1)

    try:

    urllib.urlopen(url)

    except IOError:

    print("Could not open url specified.")

    Una volta ottenuti i parametri corretti andremo ad utilizzare la funzione che il cuore del B4ckdoor:

    def run(self):

    global COMMAND

    global CANCEL

    global LOCK

    LOCK.acquire()

    print("Starting thread #{0}".format(self.num))

    LOCK.release()

    while COMMAND != CANCEL:

    try:

    urllib.urlopen(self.url)

    except Exception:

    pass

    LOCK.acquire()

    print("Exiting thread #{0}".format(self.num))

    LOCK.release()

    2.6.2) Mitigare un attacco HTTP Flood

    Generalmente si pu optare per un aumento del numero massimo di client web collegabili al server

    web e limitare quindi il numero di connessioni che un solo IP pu fare, imponendo restrizioni alla

    velocit di trasferimento minimo di connessione e limitare il periodo di tempo di un client che pu

    rimanere in contatto.

    Guida Completa al Denial of Service 28

  • In Apache esistono alcuni moduli che fanno tutto questo in automatico e sono:

    mod_limitipconn mod_qos mod_evasive mod_security mod_noloris (dedicato a slowris) mod_antiloris (anche questo solo per slowris)

    2.7) SlowrisSlowris uno di quei tipi di attacchi nati come PoC (proof of concept) e si evolve come un metodo

    dattacco denial of service.

    Lo Slowris unisce la potenza degli attacchi a protocollo con quelli a livelli applicazione, creando

    appunto una nuova variante di attacchi DoS.

    Come funziona:

    Slowris apre delle connessioni inviando richieste HTTP parziali e continua ad inviare le intestazioni

    successive a intervalli regolari per mantenere aperta la connessione col web server.

    Lattacco si potr dichiarare concluso quando il server non avr pi slot per permettere di far

    fuoriuscire tutte le richieste.

    Slowris inoltre introduce una caratteristica di stealthing che permette allattacker di inviare differenti

    host header contemporaneamente: stando a quanto si evince dalla descrizione del software in

    inglese, tale operazione non permette al virtual host di scrivere nei file log, cos da garantire il

    completo anonimato in fase di attacco.

    Quando per una delle richieste scadr, il server andr a scrivere nei log il risultato delloperazione

    con stato di errore 400 (e relative fonti della richiesta).

    Questo tipo di attacco non pu essere definito TCP DoS in quanto non esegue una completa

    connessione TCP ma esegue solo una connessione parziale tramite richiesta HTTP.

    E lequivalente di un attacco SYN Flood ma con il protocollo HTTP.

    Slowris non neanche un flooder HTTP in metodo GET in quanto fa solo richieste regolari HTTP per

    Guida Completa al Denial of Service 29

  • lungo tempo.

    Slowris stato testato con successo sulle seguenti macchine:

    Apache 1.x Apache 2.x (la maggior parte dei web server nel mondo!) dhttpd GoAhead WebServer

    mentre non sono affetti i seguenti web server:

    IIS 6.0 IIS 7.0 lighttpd Squid nginx Cherokee Netscaler Cisco CSS

    Come specifica il sito del produttore, questa lista solo indicativa e comunque rispecchia solo test

    effettuati su webserver di prova.

    Slowris potrebbe per via ipotetica essere modificato in qualunque modo si voglia per amplificarne

    lattacco e mandare in tilt diversi tipi di webserver e infrastrutture.

    2.7.1) Simulare un attacco Slowris

    Eccoci qui a spiegare brevemente il funzionamento di Slowris.

    Una volta scaricato il tool dal sito ufficiale (e aver scaricato anche il compilatore perl, con cui Slowris

    stato costruito*) lanceremo il seguente comando:

    perl slowloris.pl -dns example.com

    * per una conoscenza approfondita sul tool possibile lanciare il comando perldoc slowloris.pl

    Guida Completa al Denial of Service 30

  • Il tool a sua volta risponder con qualcosa del genere:

    *Slowris funziona solo se sono installati anche i moduli IO::Socket::INET, IO::Socket:SSL e GetOpt::Long.

    Inoltre, Slowris lavorer meglio se attivo il multithreading.

    2.7.2) Mitigare un attacco Slowris

    Attualmente non esistono configurazioni attendibili per i server web colpiti da Slowris, tuttavia ci

    sono metodi per mitigare in parte o ridurre comunque limpatto di un tale attacco.

    Per Apache gli sviluppatori raccomandano inoltre il mod_reqtimeout come soluzione ufficiale per

    ridurre il tempo di connessione ai client.

    Altri metodi di mitigazione prevedono la costituzione di reverse proxy, firewalls, load balancers,

    oppure (soluzione drastica) migrare a Web Server che non sono affetti da questo attacco, come ad

    esempio lighttpd e nginx.

    Guida Completa al Denial of Service 31

  • Il resto delle regole da adottare sono le stesse presentate nel capitolo Mitigare un attacco HTTP

    Flood.

    3)ConsiderazioniLa pratica del Denial of Service una lotta che va avanti da decenni. Oggi il peso della bilancia a

    favore degli attacker e sono pochi i servizi che riescono a contrastare questo fenomeno ma forse

    domani qualcosa cambier.

    Noi siamo white hats e difendiamo il web libero da ogni crimine.

    Con questo libro speriamo che il fenomeno del Denial of Service venga a galla e che diventi un

    argomento di cui parlare in futuro e non limitarlo ai soli bulli del web, spesso ragazzini adolescenti

    che sfogano le proprie frustrazioni contro i pi deboli.

    Crediamo fermamente che la conoscenza sia un valore importante per la comunit e la condividiamo

    per il benessere collettivo, non per il piacere e il gioco di pochi.

    Lavoreremo sodo per contribuire ogni giorno a combattere per questi ideali, fuori da ogni

    pregiudizio, perch lhacking non un crimine. E conoscenza, ma soprattutto, divertimento.

    Stefano murdercode Novelli

    Guida Completa al Denial of Service 32