Introduzione
Abbiamo già parlato di Nmap in un precedente articolo a proposito delle tecniche di firewall evasion. Dal 1997, anno in cui fu rilasciata la prima versione, Nmap ne ha fatta di strada, giungendo da pochi giorni alla release 6.00, che contiene una nutrita serie di miglioramenti (oltre 600 rispetto alla versione 5.00, secondo quanto riportato dal relativo changelog). In questo articolo andremo ad analizzarne i più significativi, anche perchè prenderli in considerazione tutti sarebbe davvero impossibile.
Complessivamente, almeno a parere di chi scrive, si ha l'impressione che gli sivluppatori, oltre ad aver introdotto enhancements sia a livello di funzionalità che di performance, abbiano anche impresso una vera e propria "sterzata" nella direzione del Vulnerabilitiy Assessment e del Penetration Testing, potenziando ad esempio l'integrazione con i db pubblici che tengono traccia delle vulnerabilità scoperte, come CVE, OSVDB e BID già a livello di librerie, attraverso la library vulns.
Nmap Scripting Engine
L'Nmap Scripting Engine (NSE) è il motore di scripting su cui è costruito Nmap e permette agli utenti di scrivere e condividere con la community i propri script. Ad oggi, nella versione 6.00 si contano oltre 348 script, mentre nella versione 5.00 erano "solo" 59. Poichè Nmap nasce innanzitutto per l'attività di information gathering, sono stati realizzati una serie script di broadcast in grado di riconoscere nuovi servizi in ascolto, che spaziano dal DNS Service Discovery Protocol (DNS-SD) al discovery di servizi che annunciano la presenza in rete di applicazioni come dropbox, pc-anywhere o Microsoft SQL Server o ancora servizi ben noti come dhcp, netbios e ping. Sono stati inoltre aggiunti script in grado di riconoscere 44 nuovi protocolli, tra cui alcuni be noti come UPnP, vnc o iscsi e addirittura bitcoin e altri un pò più "oscuri" ai più come hadoop, drda o acarsd. Si noti invece, per tornare un attimo a ciò che si accennava in Introduzione circa il penetration testing, la presenza di script per il rilevamento di backdoors come BackOrifice o NetBus.
Sempre a proposito di pentest, NSE integra ora 53 script per il bruteforcing di altrettanti servizi di autenticazione, tra cui alcuni notissimi. Oltre a script per il bruteforcing di servizi di rete "classici" come ftp-brute, http-brute, pop3-brute o telnet-brute, vale certamente la pena di citare quelli scritti per testare web applications, come http-joomla-brute, http-wordpress-brute o DBMS come ms-sql-brute, mysql-brute, oracle-brute (e oracle-sid-brute) e addirittura exploitation tools come nessus-xmlrpc-brute e metasploit-xmlrpc-brute.
Oltre al bruteforcing puro vi è ora anche la possibilità di sferrare attacchi a dizionario utilizzando una lista di 5000 password che a prima vista potrebbero sembrare pochissime per chi è abituato ad utilizzare dizionari ben più corposi o rainbow-tables. La particolarità di tale dizionario però risiede nel fatto che è stato costruito utilizzando le 635.546 password esposte a seguito di noti episodi di compromissione come quello relativo al sito di gossip Gawker, descritto su slashdot
e combinando tali risultati con quelli venuti fuori da altri leaks come quelli relativi a MySpace, PHPBB e così via. Si tratta quindi di un dizionario di password "di qualità", cioè delle 5000 password risultate essere le più utilizzate in assoluto, proprio a seguito dell'analisi delle utenze compromesse di cui sopra. Le utenze compromesse grazie a questi tipi di attacco, inoltre, possono ora essere conservate in una "credentials storage library" sia per usi futuri che per generare una reportistica delle credenziali compromesse.
Web Scanning
A seguito della continua proliferazione di servizi esposti via HTTP, anche Nmap si è adeguato aumentando il numero degli script focalizzati sul web scanning, che sono passati da 6 a 54. Tra questi ce ne sono alcuni che in realtà possono essere sostituiti da semplici chiamate GET via telnet come http-title, che determina la pagina di default di un web server e altri invece che si rivelano certamente più interessanti, come ad esempio http-backup-finder, che setaccia un sito web alla ricerca di copie di backup utilizzando filename noti come index.bak, index.html~, default.bak e così via. Analogamente, può risultare sicuramente utile lo script http-enum che scansiona l'albero delle directory di un sito web testando oltre 2000 possibili URI o http-email-harvest che effettua una ricerca di indirizzi e-mail.
Front-end e performance
Come ben sanno gli utenti abituali, Nmap è dotato da tempo di una GUI cross-platform chiamata Zenmap, scaricabile - come Nmap - dal sito nmap.org. Uno dei miglioramenti apportati nella versione 6.00 al modulo network topology viewer (che consente l'esplorazione interattiva della rete scansionata), visibile in fig. 1, riguarda la possibilità di poter selezionare degli script e relativi argomenti attraverso un'interfaccia grafica raggiungibile dal menu "Profile-->Edit Selected Profile" e selezionando la tab "Scripting".
In questo modo è possibile decidere di volta in volta quali script applicare in una scansione a seconda dei risultati che si vogliono ottenere. In figura è visibile l'interfaccia per la selezione degli script.
Ad esempio, selezionando lo script http-brute è possibile effettuare, durante la scansione, il bruteforcing di un form di autenticazione basato su http. Il comando nmap corrispondente a tale script è il seguente:
nmap --script http-brute -p 80
Ogni script è ampiamente commentato e l'utilizzo risulta davvero agevole.
Per quanto riguarda invece l'aspetto delle performance, oltre al pieno supporto al protocollo IPv6, sono state apportati significativi miglioramenti in tal senso. Innanzitutto è stato completamente riscritto il traceroute che risultava essere, nelle versioni precedenti, uno dei comandi più "time-consuming" in assoluto. Con l'avvento della versione 6.00, ad esempio, per il trace di 110 host in una sottorete /24 in Internet, il tempo impiegato per effettuare l'intera operazione è passato - secondo quanto affermato dagli sviluppatori di Nmap - da 95 secondi a 7.6 secondi. E' stato inoltre migliorato l'output viewer di Zenmap, che ora mostra i risultati man mano che vengono ottenuti in un tempo costante, mentre prima il sistema poteva portare addirittura al "freezing" dell'intera interfaccia con occupazione della CPU al 100%. Last but not least, è stato notevolmente migliorato il meccanismo di gestione della memoria centrale, il cui utilizzo è stato ridotto in alcuni processi addirittura del 90%.
Nuovi strumenti integrati
Un discorso a parte meritano certamente i nuovi tool che Nmap integra ora al suo interno e di cui pure si è accennato in un precedente articolo. Il primo di questi è Nping. Come si intuisce dal nome, Nping non è solo un'utility per il rilevamento degli host attivi, ma un vero e proprio strumento di analisi che consente la generazione di pacchetti per condurre stress test, ARP poisoning, attacchi DoS e altro. Nping offre inoltre una particolare modalità operativa chiamata "echo mode", che consente agli utenti di poter osservare come cambiano i pacchetti in transito, rivelando le differenze tra pacchetti inviati e pacchetti ricevuti. In figura 3 è visibile il risultato dell'esecuzione di Nping sul sito html.it, ove l'opzione --tcp indica il TCP Probe Mode e le porte testate (opzione -p) sono la 80 e la 433. Per una descrizione completa delle possibilità offerte da Nping si veda la relativa documentazione.
Un altro strumento interessante è Ncat, da non confondere con il ben più noto Netcat, di cui costituisce un'evoluzione. Essenzialmente Ncat è un tool a riga di comando che consente di leggere, scrivere, ridirezionare e criptare dati in transito su una rete. Ncat può essere utilizzato come TCP/UDP/SCTP/SSL client per interagire con webservers, mail servers, telnet servers o qualsiasi altro servizio disponibile nella pila TCP/IP. Di contro, può agire anche da server TCP/UDP/SCTP/SSL o da SOCKS/HTTP proxy. Oltre ad essere multiplatform (Linux, Windows, Mac OS X), Ncat supporta IPv6 e consente di poter concatenare sessioni Ncat tra loro, ridirezionando tutto il traffico TCP e UDP a piacimento.
Conclusioni
Sono molti i miglioramenti apportati nella versione 6.00 di Nmap e trattarli tutti puntualmente esula certamente dagli scopi del presente articolo. Per una descrizione più approfondita si rimanda al sito nmap.org, che contiene anche tutta la documentazione di supporto, nonchè una Wiki.