Guida Cosa è un Penetration Test e quali sono le sue fasi

0xbro

Super Moderatore
24 Febbraio 2017
4,464
179
3,755
1,825
Ultima modifica:
Guida dedicata alla spiegazione delle principali fasi di un penetration test, ai principali strumenti d'analisi e al suo funzionamento generale​

tuv-rheinland-de20_i07_2000640_keyvisual_pentesting_core_2_2_1.jpg






1    Il Penetration Test

Un pentest è un atto volto a identificare e documentare tutte le falle e le vulnerabilità di un determinato obiettivo (che potrà essere un sito, un dominio o una rete). Per riuscire nell'impresa serve un approccio metodico, che permetta di collezionare tutte le informazioni possibili e organizzarle in maniera ordinata e facilmente consultabile.

Un pentest quindi può essere visto come una sequenza di azioni utili a ottenere informazioni, che saranno poi utilizzate per exploitare (se previsto) l'obiettivo. Non sempre però viene richiesto di exploitare l'obiettivo, talvolta la richiesta è un semplice Vulnerability Assessment, per cui viene meno la fase di exploiting.

Il processo di testing può essere visto come una fase ciclica (nel caso fosse previsto l'exploiting) o lineare (nel caso si trattasse di un vulnerabilty assessment).​

Il processo può venir schematizzato nel seguente modo:
36332
Se è richiesta la fase di exploit si esegue il report e si ritorna alla fase di information gathering, mentre se non è richiesto l'exploit della vulnerabilità si passa subito alla fase di reporting.

Il ciclo di test finisce quando tutte le vulnerabilità sono state documentate.

ATENZIONE:
A differenza delle CTF l'obiettivo non è quello di ottenere il root. Un pentester deve documentare TUTTE le vulnerabilità, indicandone il grado di rischio e le possibili problematiche, oltre che ovviamente come correggere la vulnerabilità.

2    Le fasi di un Penetration Test

​Analizziamo ora un passo alla volta tutte le fasi:

2.1    Engagement

Questa fase può esser considerata la "Fase 0". Qua si dettagliano i bisogni del cliente, si decidono i target e i metodi di approccio per l'attacco (white-box, gray-box, black-box). Viene poi steso il "Rule of engagement", il documento contenente tutte le regole e i dettagli del penetration test e i contatti dei tecnici in caso ci fossero problemi non calcolati in fase di exploit.


2.2    Information Gathering

Questa è la prima fase del nostro attacco. Il nostro scopo per il momento è ottenere il maggior numero di informazioni generali sull'azienda / target. Si cercheranno in questa fase quindi tutti i nominativi, gli indirizzi email, gli eventi, i progetti in corso e tutte le informazioni utili (potranno essere impiegate per attacchi di ingegneria sociale, se permessi da contratto). Una volta collezionati tutti questi dati generali, si potrà passare alle informazioni strutturali, quindi cercare di ottenere tutti gli indirizzi IP e i relativi DNS. Lo scopo è quello di dare un senso compiuto ad ogni indirizzo IP. Le pratiche più adottate sono quelle di utilizzare servizi come WHOIS, DNS e Ping Sweep per reperire il maggior numero di informazioni sui nostri target. Se ci troveremo davanti ad una Web Application, dovremo inoltre cercare di reperire informazioni su Domini e sottodomini, pagine web presenti (web crawling), tecnologie usate (PHP, .NET ecc), Framework o CMS ecc.

Le principali risorse di questa fase sono i social network (Facebook, LinkedIn e Twitter), i siti ufficiali dell'azienda o del target, i siti pubblici open come crunchbase su cui si possono trovare numerose informazioni e il servizio WHOIS.

Per l'enumerazione dei domini e sottodomini invece l'approccio standard è manuale, tramite ricerca su google (google dorks), appoggiandosi a servizi come dnsdumpster o tramite l'utilizzo di tools come sublist3r, con cui si enumerano i DNS di diversi motori di ricerca in cerca di tutti i sottodomini. L'approccio automatico invece può essere effettuato tramite tools come subbrute o websploit (approfondimenti su "Hacklog vol.2 web hacking")

2.3    Footprinting & Scanning

Questa fase è strettamente correlata a quella precedente. Il nostro compito sarà quello di approfondire ogni aspetto degli indirizzi IP trovati in precedenza. Dovremo quindi investigare sul sistema operativo in uso, sulle porte aperte e su quali servizi, con quale versione, girano su ogni porta.

Per ottenere i vari IP, sia manualmente che automaticamente, ci sono diverse pratiche e metodologie (approfondimenti su "Hacklog vol.2 web hacking"). Mi sento di consigliare di utilizzare fping oppure nmap per eseguire il Ping Sweep di tutti gli host attivi di una determinata rete. Un'altra ottima alternativa, da accoppiare all'utilizzo di nmap è masscan, più veloce di nmap ma meno preciso. Per scoprire il sistema operativo si può sempre utilizzare nmap, o in alternativa p0f.

2.4    Vulnerability Assessment

Dopo aver ottenuto tutte le informazioni che ci servivano, siamo pronti per andare ad analizzare la presenza di vulnerabilità sul nostro target. Questo processo può essere eseguito manualmente o automaticamente, tramite appositi programmi che effettueranno tutti i test necessari. L'approccio generale è quello però di effettuare entrambi i test, in modo da sventare eventuali falsi-positivi.

I principali scanner utilizzati in questa fase sono Nessus, OpenVAS e NexPose, ma ne esistono anche altri. Il funzionamento è sempre lo stesso: impostate le opzioni di scansione, il programma cerca per ogni host di identificare le vulnerabilità note, prese dal DB del creatore del programma e in continuo aggiornamento, in modo da restar sempre al passo con le novità.

ATTENZIONE: Se si sta testando un'applicazione Personalizzata, occorrerà eseguire una scansione manuale, poichè probabilmente non esisteranno vulnerabilità note per quell'app. Lo stesso vale per i dispositivi smart e iOT.

2.5    Exploitation

Se prevista da accordi, questa è la fase in cui si ottiene accesso alla macchina tramite l'exploiting delle varie vulnerabilità documentate nella fase precedente. Ogni vulnerabilità, su ogni target, dovrà venir exploitata e documentata successivamente. Dopo aver exploitato con successo un target, si apriranno nuove strade, che ci permetteranno di raggiungere nuovi target, sui quali sarà nuovamente necessario eseguire il processo di information gathering fino alla fase di exploiting, e via così fino alla fine delle vulnerabilità.​

Gli attacchi e le metodologie qua si differenziano in base al tipo di servizio che si sta attaccando:
  • Web attacks: si dovranno testare gli HTTP verbs e il comportamento della web application in risposta, tramite programmi come Netcat, openssl o Burpsuite. Sarà inoltre necessario eseguire l'enumerazione di directory e file con programmi come Dirbuster o Dirb, ma anche effettuare ricerche tramite Google dorks in cerca di pagine non indicizzate ma contenenti informazioni utili.
    E' inoltre fondamentale testare il sito in cerca di vulnerabilità XSS e SQLi.​
  • System attacks: Gli attacchi ai singoli sistemi vengono intrapresi solitamente tramite malware di ogni genere (Trojan, Backdoors, RootKit ecc) e tramite attacchi Brute Force o a Dizionario. Molto utili sono per questo tipo di attacco tools come John-the-ripper, Hashcat e ophcrack. Ottime wordlist si possono trovare su SecLists.
    Gli attacchi per eccellenza vengono però effettuati tramite vulnerabilità Buffer Overflow, che possono permettere di modificare il normale flusso di esecuzione di un programma e fare in modo di controllarne l'andamento, dando la possibilità di eseguire del codice remoto a un attaccante.
    Per sapere come funziona questo tipo di attacco potete far riferimento a quest'altra guida: https://www.inforge.net/forum/resources/buffer-overflow-base-su-sistemi-x64.15169/
  • Network attacks: Sono gli attacchi che vengono eseguiti sui demoni che presentono vulnerabilità, oppure sui servizi in rete mal-configurati (vedi per esempio Windows Shares e i server SAMBA). Re di questa tipologia di attacchi troviamo Metasploit, il quale contiene numerosi moduli ed exploit per sfruttare la stra-grande maggioranza di vulnerabilità. Un attacco molto diffuso per intercettare pacchetti scambiati tra due host invece è il MITM (Man-in-the-middle), e può esser performato con l'ausilio di tools come arpspoof. Talvolta vengono anche tentati attacchi a dizionario sui login di diversi servizi come SSH, telnet ecc. tramite applicazioni come Hydra.

    Ricordate che questa è solo una spiegazione generale e a grandi linee di ciò che è realmente un attacco. Esistono infiniti attacchi, exploit e metodologie, più o meno semplici, su più o meno applicazioni. serve metodologia, ma anche fantasia per riuscire a portare a termine un attacco. Non prendete ciò che c'è scritto come oro, ma come basi generali su cui progredire.

2.6    Report

Questa è la fase finale. Per ogni vulnerabilità si deve documentare il tipo, la pericolosità, la potenzialità e il grado di rischio (come si determina la gravità di una vulnerabilità informatica? Leggi il seguente articolo).
E' inoltre fondamentale indicare il processo da eseguire per "sanare" tale vulnerabilità, in modo da mettere in sicurezza il sistema. Concluso il processo e scaduta la tempistica di penetration test, il documento deve venir mantenuto criptato e al sicuro, o ancora meglio deve venir distrutto.​