Visualizzazione post con etichetta Nmap. Mostra tutti i post
Visualizzazione post con etichetta Nmap. Mostra tutti i post

martedì 7 luglio 2015

Kali Linux: Verificare i protocolli di cifratura utilizzati da un server su connessioni SSL/TLS tramite nmap

Conoscere l'elenco dei protocolli di cifratura supportati da un server può essere utile per scovare falle di sicurezza dovute all'utilizzo di protocolli obsoleti e/o vulnerabili.

Per elencare i protocolli di cifratura utilizzati da un server si può utilizzare lo script ssl-enum-ciphers tramite nmap. Da terminale di Kali Linux eseguire il comando:
nmap --script ssl-enum-ciphers -p 443 glubrano.com
sostituendo glubrano.com con il nome del server/dominio che si intende interrogare.

In output vengono elencati tutti i protocolli supportati sulle connessioni SSL/TLS. Lo script è piuttosto invasivo, avvia numerose connessioni SSLv3/TLS tentando ogni volta con un nuovo protocollo di cifratura ottenendo, in questo modo, l'elenco del protocolli supportati dal server. Per ciascun protocollo viene indicato anche il livello di sicurezza della connessione. Lo script, inoltre, mette in evidenza eventuali vulnerabilità note sui protocolli supportati dal server (come ad es. PODDLE, certificati firmati con un algoritmo debole come MD5, ecc).

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.

Protocolli di cifratura supportati
FIG 1 - Protocolli di cifratura supportati


lunedì 22 giugno 2015

Kali Linux: Host discovering tramite Nmap

In questo nuovo articolo riguardante Kali Linux illustrerò come effettuare un semplice host discovering per trovare host attivi in una rete utilizzando l'utilissimo e versatile Nmap.

Se interessa solo verificare le postazioni attive all'interno della rete possiamo utilizzare l'opzione -sn di Nmap. Tale tecnica è conosciuta anche come ping scan ed è tra le meno invadenti consentendo una prima mappatura della rete senza attrarre molta attenzione da parte degli amministratori.

Spesso questa funzionalità di Nmap viene utilizzata anche dagli amministratori di sistema per verificare gli host disponibili sulla rete o tenere sotto osservazione la disponibilità di un server. In questo caso si parla di ping sweep che risulta più affidabile di un ping all'indirizzo broadcast in quanto molti host non rispondono alle richieste di questa categoria.

L'opzione -sn invia un pacchetto ICMP (Internet Control Message Protocoldi tipo echo request, un pacchetto TCP SYN alla porta 443, un pacchetto TCP ACK alla porta 80 e un pacchetto ICMP di tipo timestamp request.

Per effettuare la scansione dei primi 10 ip della rete 192.168.0.0 possiamo utilizzare il comando
nmap -sn 192.168.0.0-9


Nmap -sn
FIG 1 - Nmap -sn
Come è possibile vedere dalla FIG 1, Nmap fornisce informazioni sugli host che hanno risposto mettendo in evidenza l'IP, il MAC address e il produttore della scheda di rete.

Per maggiori dettagli nei risultati possiamo aggiungere l'opzione -v
nmap -sn 192.168.0.0-9 -v

giovedì 18 giugno 2015

Kali Linux: Verificare tramite Nmap se il sistema è vulnerabile a Heartbleed

Heartbleed è il nome dato ad un errore di programmazione CVE-2014-0160  che affligge la libreria OpenSSL (dalla versione 1.0.1 alla 1.0.1f incluse) utilizzata per proteggere le comunicazioni sensibili e per l'autenticazione. 
La falla, resa pubblica il 7 aprile 2014, è stata scoperta indipendentemente da due gruppi di ricercatori: dal gruppo di Codenomicon (Riku, Antti e Matti) e Neel Mehta di Google Security.
Questa vulnerabilità consente ad un aggressore di acquisire dati riservati trasmessi dai siti che usano OpenSSL o spacciarsi per un sito attendibile utilizzando HTTPS e facendo visualizzare al browser della vittima l'icona del lucchetto chiuso (che indica una connessione sicura).

La vulnerabilità risale al 2012 quando con OpenSSL 1.0.1 è stato introdotto il supporto di RFC6250 ed è stato implementato l'heartbeat sulle connessioni TLS (Transport Layer Security protocol). L'heartbeat (chiamato anche keep-alive) viene utilizzato per evitare che client e server debbano rinegoziare la connessione in caso di temporanea inattività e mantiene il canale utilizzato dalla comunicazione aperto.  Per mantenere il canale aperto vengono inviati pacchetti dati senza informazioni al fine di resettare i contatori di inattività ma, a causa di un bug all'interno del codice, è possibile, tramite un pacchetto heartbeat opportunamente modificato, accedere ad informazioni di vario tipo.

Il protocollo prevede che il client invii al server un pacchetto di heartbeat, al massimo di 16K (anche se in realtà i pacchetti inviati sono  molto più piccoli), e che questo risponda con un pacchetto contenente la copia di quello ricevuto dal client. 
Andando nel dettaglio, il pacchetto heartbeat è composto da:

  • 0x01 costante che identifica TLS1_HB_REQUEST
  • 2 byte che indicano la dimensione del pacchetto
  • 2 byte che indicano il numero di sequenza del pacchetto
  • 16 byte di dati casuali
  • altri 16 byte casuali utilizzati come richiesto dal documento RFC6250

Il server, ricevuta la richiesta, copia i dati ricevuti e li rispedisce al client. Il codice affetto dalla vulnerabilità è il seguente:
/* Allocate memory for the response, size is 1 byte
 * message type, plus 2 bytes payload length, plus
 * payload, plus padding
 */
buffer = OPENSSL_malloc(1 + 2 + payload + padding);
bp = buffer;
/* Enter response type, length and copy payload */
*bp++ = TLS1_HB_RESPONSE;
s2n(payload, bp);
memcpy(bp, pl, payload);

Nel codice payload rappresenta la dimensione del pacchetto e viene dichiarata dal mittente (non viene verificata dal server). Se il mittente, anzichè dichiarare la vera dimensione del pacchetto, invia 0xFFFF (valore massimo esprimibile per 2 byte senza segno) il server copierebbe i 34 byte del pacchetto più altri 65501 byte prelevati dalla memoria. Proprio questi ultimi byte potrebbero contenere dati sensibili come la chiave di cifratura delle comunicazioni utilizzata dal server.

Dopo questa lunga premessa, di seguito mostrerò come testare se il proprio sistema è affetto dalla falla utilizzando Nmap su Kali Linux.
Nmap è un software libero (GNU GPL) creato per eseguire il port scanning, cioè individuare le porte aperte su un sistema e i relativi servizi attivi. Il software è incluso in Kali Linux pertanto per utilizzarlo non è necessario effettuare alcuna installazione.

Dalla finestra terminale digitare il seguente comando
nmap -d --script ssl-heartbleed --script-args vulns.showall -sV [HOST]
dove [HOST] rappresenta il nome o l'indirizzo ip della macchina che si intende verificare. 
Ad es. nel caso volessimo testare se il server con indirizzo IP 192.168.0.11 è vulnerabile possiamo digitare il comando

nmap -d --script ssl-heartbleed --script-args vulns.showall -sV 192.168.0.11

Nmap test Heartbleed
FIG 1 - Nmap test Heartbleed


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.