Di seguito utilizzerò Kali Linux, una distribuzione Linux, basata su Debian GNU/Linux, pensata per l’informatica forense e spesso utilizzata per Penetration Testing, Ethical Hacking e per test relativi alla sicurezza della rete.
ATTENZIONE:
Danneggiare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.
Per installare SlowHTTPTest in Kali Linux basta utilizzare apt-get
apt-get install slowhttptest
Di seguito riporto alcuni esempi di attacchi eseguiti tramite SlowHTTPTest
Slow message body mode
slowhttptest -c 1000 -B -i 110 -r 200 -s 8192 -t FAKEVERB -u https://myserver/loginform.html -x 10 -p 3se vogliamo che i risultati vengano salvati in un file e in modalità grafica
slowhttptest -c 1000 -B -g -o body_result -i 110 -r 200 -s 8192 -t FAKEVERB -u https://myserver/loginform.html -x 10 -p 3
slowloris mode
slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u https://myserver/index.html -x 24 -p 3
per i risultati in modalità grafica
slowhttptest -c 1000 -H -g -o header_result -i 10 -r 200 -t GET -u https://myserver/index.html -x 24 -p 3
Slow read mode passando per un proxy
slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://someserver/somebigresource -p 5 -l 350 -e x.x.x.x:8080
x.x.x.x:8080 è il proxy (con relativa porta) da cui si intende passare
Utilizzando l'opzione -g i risultati vengono generati in formato CSV e HTML. All'interno del file HTML è contenuta anche una rappresentazione grafica del test (basata su Google Chart tool). Un esempio delle statistiche in formato HTML è riportato nella seguente figura.
FIG 3 - SlowHTTPTest opzione -g |
I dati contenuti all'interno del file CSV possono essere utilizzati per generare un grafico con un tool di proprio gradimento (come Ms Excel, Google Docs ecc).
L'ultimo messaggio visualizzato è quello della condizione di uscita dal test che potrebbe essere uno dei seguenti:
L'ultimo messaggio visualizzato è quello della condizione di uscita dal test che potrebbe essere uno dei seguenti:
Hit test time limit | Raggiunto il limite di tempo specificato tramite l'opzione -l |
No open connections left | Il peer ha chiuso tutte le connessioni |
Cannot establish connection | Nessuna connessione stabilita entro i primi N secondi del test (dove N equivale a 10 secondi se non specificato diversamente tramite l'opzione -i). Questo può verificarsi se l'host non è raggiungibile oppure spento. |
Connection refused | La connessione è stata rifiutata dal destinatario. In questi casi possiamo provare ad utilizzare un proxy. |
Cancelled by user | Annullato premendo CTRL+C |
Unexpected error | Errore inatteso. |
In tabella le opzioni accettate da SlowHTTPTest
-a | Per specificare il valore iniziale per il test range header |
-b | Specifica il numero di bytes per il test range header |
-c | Permette di specificare il numero di connessioni (fino a 65539) |
-d | Permette di indirizzare tutto il traffico attraverso un proxy e relativa porta. Ad es. -d proxy:port |
-e | Permette di indirizzare solo il traffico dei probe attraverso un server proxy. Ad es. -e proxy:port |
-H, B, R o X | Specifica il tipo di slow down: -H per la sezione header, -B per la sezione Body del messaggio. -R abilita il range test, -X abilita il test slow read |
-g | Permette di generare statistiche in formato CSV e HTML |
-i | Permette di specificare ogni quanti secondi inviare dati per ciascuna connessione. |
-k | Per il test di slow read permette di specificare quante volte ripetere la richiesta nella stessa connessione (se il server supporta HTTP pipelining). |
-l | Per specificare la durata, in secondi, del test |
-n | Per specificare l'intervallo, in secondi, tra le operazioni di lettura dal buffer in ricezione |
-o | Specifica un file di output (incluso di path). Utilizzato insieme all'opzione -g |
-p | Tempo di attesa (espresso in secondi) di una risposta HTTP su connessione probe dopo il quale il server è considerato non raggiungibile |
-r | Connection rate. Numero di connessioni per secondo |
-s | Valore in byte del Content-Length header, se l'opzione -B è definita |
-t | Permette di specificare un verb personalizzato |
-u | Per specificare URL target del test (nello stesso formato utilizzato dai browser) |
-v | Verbosity. Specifica il livello di dettaglio del log (valori da 0 a 4). |
-w | Inizio del range, espresso in byte, da cui la dimensione della finestra visualizzata viene prelevata. |
-x | massima lunghezza, in byte, dei dati |
-y | fine del range, espresso in byte, da cui la dimensione della finestra visualizzata viene prelevata. |
-z | Byte da leggere dal buffer in ricezione con una singola operazione di lettura |