Il modo migliore per verificare l’efficacia dei controlli di sicurezza di un sistema informatico è sicuramente quello di “stressarlo” mediante un penetration test, la cui esecuzione può essere suddivisa in sei fasi principali:
- raccolta delle informazioni;
- scansione ed enumerazione;
- ottenimento dell’accesso;
- privilege escalation;
- mantenimento dell’accesso;
- copertura delle tracce.
È evidente che la fase più importante è sicuramente quella della raccolta delle informazioni in quanto, mediante un approccio sistematico, consente all’esperto di sicurezza informatica che effettua il penetration test di “localizzare” e conoscere il sistema target.
Definita anche come “foot-printing”, la fase di raccolta delle informazioni è inoltre quella che necessita di più tempo per essere svolta in quanto utilizza molteplici tool di scansione e richiede l’utilizzo di particolari tecniche di analisi che includono l’ingegneria sociale, la ricerca su internet e il cosiddetto “Dumpster-Diving”.
Nel seguito scopriremo quindi cosa significa raccogliere le informazioni su un sistema target, come vengono condotte le analisi e quali sono gli strumenti utilizzati dal pen tester.
Indice degli argomenti
Raccogliere le informazioni giuste
La prima domanda da porsi quando si effettua un penetration test è: cosa stiamo cercando?
Le prime informazioni da ricercare sono nominativi del personale all’interno dell’azienda, indirizzi e-mail (che potremmo in seguito utilizzare per testare attacchi di phishing, whaling o spear phishing), numeri di telefono di dirigenti e responsabili aziendali (utilizzabili per la pubblicazione), scansione dei sistemi utilizzati dai PC aziendali come Windows o Linux, e infine le offerte di lavoro o eventuali curriculum vitae.
Si potrebbe pensare che le offerte di lavoro pubblicate su Internet rappresentino uno strano punto di partenza per un penetration test: in realtà, le informazioni contenute possono essere una vera e propria miniera d’oro.
Dovendo cercare un nuovo lavoro come amministratore di rete, ad esempio, sarebbe utile sapere quale sistema operativo viene utilizzato dall’azienda. Se la compagnia dovesse avere bisogno di competenze specifiche su determinati sistemi, metterebbe degli annunci di lavoro dettagliati sui sistemi utilizzati. Tutte queste informazioni che l’azienda pubblica su Internet possono aiutare a trovare o creare in seguito specifici exploit per ottenere l’accesso ai sistemi aziendali.
L’analisi dei dati presenti nei CV può aiutare, inoltre, a reperire informazioni sul nostro target. Ad esempio, il curriculum di una persona che in passato ha lavorato per l’azienda target quasi certamente riporta anche informazioni sui sistemi utilizzati, sulle dimensioni della rete interna, se utilizza sistemi di virtualizzazione o se presenta vendor specializzati in sicurezza per la configurazione di VPN/DMZ (solitamente questi vendor richiedono certificazioni particolare presenti nel CV della persona).
È inutile sottolineare quanto tutte queste informazioni siano estremamente preziose per il pen tester.
Passiamo ora allo studio dei tool open source che possono essere utilizzati nella fase di raccolta delle informazioni di un penetration test.
Ecco una piccola lista di alcuni strumenti che andremo poi ad analizzare:
- Nslookup
- Traceroute
- Ping
- Whois
- Harvester
- Social networking.
Nslookup: alla ricerca dell’indirizzo IP del target
Nslookup è un programma per interrogare i server dei nomi di dominio presenti su Internet. Ha due modalità di funzionamento: interattiva e non interattiva.
La modalità interattiva consente all’utente di interrogare i server dei nomi per informazioni su vari host e domini o per stampare un elenco di host in un dominio. La modalità non interattiva viene utilizzata per stampare solo il nome e le informazioni richieste per un host o dominio.
La sua principale funzione è quella di risolvere un nome di un dominio in un indirizzo IP. Ad esempio, se si digita nslookup www.google.com, l’uso di base di Nslookup restituirà l’indirizzo IP 8.8.8.8.
Traceroute: monitoriamo il traffico di rete verso il target
Traceroute è un ottimo strumento per seguire il “ping” prima che raggiunga il sistema che si sta provando a pingare, visualizza il percorso tra il pen tester e il suo target ed è ottimo per mostrare qualsiasi firewall e router, che identifica nei vari “hops”, consentendo di ottenere un quadro più dettagliato sulla situazione dell’obiettivo.
Una cosa che lo rende molto utile è il Time-to-Live (TTL). Per dirla semplicemente, i primi tre pacchetti di dati inviati verso il sistema target avranno solo un valore TTL pari a uno, i tre successivi avranno un valore pari a 2 e così via fino a quando non arrivano all’obiettivo. In questo modo è possibile analizzare quanti “hops” i pacchetti hanno preso prima di raggiungere il target.
Se è già il primo pacchetto a colpire il target, il pen tester potrà conoscere il tempo necessario per colpire il sistema di destinazione.
Il tempo necessario per raggiungere il target consente di recuperare informazioni molto utili sulla tipologia di linea utilizzata. Ecco alcuni esempi:
- Linea ISDN: 40-50 ms;
- Modem cellulare: 50-150 ms;
- Modem satellitare: 650-750 ms;
- Fibra: 5- 40 ms;
- Modem via cavo: 15-100ms.
Traceroute si dimostra un ottimo strumento per una prima analisi dei sistemi di connettività utilizzati dal target del penetration test.
Ping: controlliamo la connettività di rete del target
Il comando ping non ha bisogno di troppe presentazioni: serve per controllare la connettività tra due dispositivi e viene principalmente utilizzato nella risoluzione dei problemi di rete.
Su un sistema Linux, il ping viene eseguito finché gli utenti non lo interrompono. Per quanto riguarda i sistemi Mac o Windows ci sono invece alcuni comandi che è necessario conoscere.
- ping -c www.google.com: effettuerà un ping di 10 volte verso l’indirizzo specificato, quindi si fermerà;
- ping -6 www.google.com: eseguirà il ping solo degli indirizzi IPv6.
Uno degli attacchi più utilizzati e riprodotti durante un penetration test è chiamato ping of dead e consiste nell’inviare pacchetti di dati al di sopra del limite massimo (65.536 byte) consentito dal protocollo TCP/IP. La frammentazione TCP/IP spezza i pacchetti in piccoli blocchi che vengono inviati al server. Poiché i pacchetti di dati inviati sono più grandi di quelli che il server può gestire, il server può bloccarsi o riavviarsi.
Whois: individuiamo l’indirizzo del server
Whois fornisce informazioni sul proprietario del dominio stesso con informazioni come indirizzi dei server, numeri di telefono, nome e indirizzo del proprietario.
È poi possibile sfruttare queste informazioni mediante tecniche di ingegneria sociale: il più delle volte, infatti, il proprietario del dominio è l’amministratore del sito, quindi sarà una persona privilegiata a cui rivolgersi.
I risultati di questo strumento consentono di fornire i dati dei provider di servizi Internet e di dominio che possono essere utilizzati per azioni di phishing mirate.
Oltre a tool di ricerca online, si possono trovare applicazioni per PC gratuite che possono fornire tutte le informazioni necessarie su un particolare dominio o indirizzo IP. Alcuni dei migliori strumenti Whois gratuiti sono Whois di Nsasoft, IP WhoIs Lookup e WHOIS Utility che viene eseguito attraverso prompt dei comandi.
Harvester: alla ricerca degli indirizzi e-mail del target
Harvester è un tool che crea un elenco di indirizzi mail degli utenti che lavorano presso l’azienda target. L’elenco degli indirizzi mail verrà quindi verificato per confermare che sono validi.
Per poterlo utilizzare bisogna lanciare lo script Python theHarvester.py che consente di trovare gli indirizzi mail relativi all’azienda. Lo script memorizza il nome del dominio e cerca su servizi come Google, Bing, server PGP e altri per recuperare gli indirizzi mail, indirizzi IP, sottodomini e qualsiasi host virtuale su qualsiasi indirizzo IP condiviso.
Quando si avvia lo script bisogna specificare il dominio di destinazione con il flag -d. Il flag -b permette invece di specificare le origini da interrogare, mentre la combinazione del comando all con il flag -f consente di salvare i risultati in un file HTML.
Google: una fonte inesauribile di informazioni
Google è la migliore fonte per trovare informazioni su un’azienda.
Ci sono molte informazioni rintracciabili attraverso gli strumenti di Google hacking, nello specifico utilizzando le Google dork che forzano il motore di ricerca a restituire un tipo specifico di risultato.
La dork è una stringa di ricerca che utilizza gli operatori personalizzati di Google per filtrare i risultati della ricerca. Se utilizzati in modo investigativo, questi filtri possono restituire informazioni che sono state censite per non essere trovate.
Ad esempio, una delle stringhe di ricerca è filetype:. Con questa stringa di ricerca potranno essere ricercati file con specifiche estensione (.doc, .pdf ecc.) che riguardano documenti aziendali.
Riuscire a recuperare un file pdf o xls dalla società target potrebbe aiutare ad ottenere informazioni molto utili sull’azienda.
Riuscire a recuperare un documento pdf di una società potrebbe essere un’arma utilizzabile da un potenziale hacker infatti aggiungendo del codice malevolo al documento è possibile inviarlo nuovamente alla società tramite un attacco di phishing.
Senza soffermarsi troppo sull’utilizzo delle dork di Google, ecco le principali voci di ricerca utilizzabili;
- intitle: consente a un hacker di cercare pagine con testo specifico nel loro titolo HTML. Quindi intitle: “login page” aiuterà un hacker a perlustrare il web per le pagine di accesso;
- allintitle: simile all’operatore precedente, ma restituisce solo i risultati per le pagine che soddisfano tutti i criteri della parola chiave;
- inurl: consente a un hacker di cercare pagine basate sul testo contenuto nell’URL (ad esempio “login.php”);
- allinurl: simile all’operatore precedente, ma restituisce solo le corrispondenze per gli URL che soddisfano tutti i criteri di corrispondenza;
- filetype: aiuta un hacker a restringere i risultati della ricerca a tipi specifici di file come i tipi di file PHP, PDF o TXT;
- ext: molto simile al filetype, ma cerca i file in base all’estensione del file;
- intext: questo operatore ricerca l’intero contenuto di una determinata pagina per le parole chiave fornite dall’hacker;
- allintext: simile all’operatore precedente, ma richiede una pagina che corrisponda a tutte le parole chiave fornite;
- site: limita l’ambito di una query a un singolo sito web.
Social media: le informazioni che non ti aspetti
I social media sono una miniera d’oro assoluta per l’informazione ed un ottimo modo per lanciare campagne di spear phishing contro obiettivi personali presso l’azienda target.
Con Facebook, LinkedIn, Twitter, Pinterest, Tumblr e molti altri scoial, tutto ciò che serve per lanciare un attacco di successo è recuperare più informazioni possibili sul target, come ad esempio su un fornitore utilizzato per l’acquisto della merce.
Queste informazioni possono essere facilmente utilizzate per inviare mail alla ricerca contenente un link malevolo.
Conclusioni
Ora che abbiamo utilizzato alcune tecniche e strumenti di ricerca, è tempo di mettere insieme tutte queste informazioni per andare avanti con successo nel penetration test.
A questo punto dovremmo aver raccolto una grande quantità di informazioni come:
- nomi e cognomi dei dipendenti;
- numeri di telefono;
- indirizzi e-mail;
- sistemi di destinazione;
- forza della rete di destinazione approssimativa (la durata del test TTL ha determinato quanto “spessa” la rete deve raggiungere il sistema di destinazione;
- indirizzi del server;
- indirizzi del server di posta;
- documenti legali.
Informazioni, queste, che possono essere utilizzate per creare attacchi di phishing e vishing molto pericolose in quanto è possibile sostituire i nomi dei dipendenti reali utilizzando la mail aziendale e molte altre informazioni per riuscire nell’attacco.
Non serve aggiungere altro per comprendere perché la fase di raccolta delle informazioni è la più importante di un penetration test.