Penetration Testing: Tecniche e tipologie del Pen Test

Penetration Testing: Tecniche e tipologie del Pen Test

Penetration Testing: Tecniche e tipologie del Pen Test

Penetration Testing

Il penetration testing (o informalmente pen test) è un’attività che serve a scoprire ed individuare le problematiche di un determinato sistema. È quindi un’analisi effettuata dall’interno o dall’esterno del sistema che ci permette di rilevare le vulnerabilità che questa area analizzata possiede e sfruttare le sue debolezze. Vengono valutati così tutti i componenti dell’infrastruttura IT, le applicazioni, i dispositivi di rete e la sicurezza fisica. Si può anche pensare al penetration testing cercando di immedesimarsi nella mente di un hacker. Si utilizzano tecniche che questo personaggio malevolo potrebbe a sua volta sfruttare simulando i suoi comportamenti. Vengono infatti definiti hacker, nella terminologia più comune, tutti coloro che senza alcuna autorizzazione hanno l’accesso ad una infrastruttura IT. È infatti questa la grande e maggiore differenza fra un pentester ed un hacker, entrambi sfruttano le stesse metodologie e tecniche per intervenire in un sistema, i pentester però sono persone autorizzate che non possono permettersi di distruggere l’infrastruttura del proprio cliente. Differenza anche essa molto importante tra pentester e hacker è che il primo deve trovare tutte le vulnerabilità presenti in un sistema, non solo quelle che gli permettono di avere accesso privilegiato al sistema.

Andiamo dunque ad esaminare più dettagliatamente il penetration testing e come prima cosa vediamo che ci sono due tipologie alla base di approccio a questa attività: black-box testing e white-box testing. La differenza principale tra queste due tipologie di approccio è la quantità di informazioni che un penetration tester possiede sui sistemi da testare.

Definizione, caratteristiche e funzionamento del Penetration Testing

Black-box testing

Tipologia di testing in cui viene simulato un attacco reale dal mondo esterno, infatti viene anche chiamato “test esterno”. Un tester, non avendo informazioni dettagliate dell’infrastruttura, simula ciò che un attaccante potrebbe fare sfruttando le vulnerabilità rilevate. Si determina così se l’accesso al sistema è possibile, e in caso affermativo, quanti dati possono essere compromessi.

White-box testing

Conosciuto anche come “test interno”, i tester simulano un attacco avendo la completa conoscenza dell’infrastruttura da testare. In questo modo i tester con i proprietari possono concentrarsi su un particolare obiettivo, verificando così l’integrità delle organizzazioni.
La combinazione di questi due tipi di penetration testing ha come risultato il Grey-box testing. In questo approccio i tester sono forniti di qualche conoscenza, risparmiando tempo per scoprire informazioni pubblicamente disponibili.
I penetration test possono essere condotti come “teaming blu” cioè con la conoscenza e il consenso del personale IT dell’organizzazione o “teaming rosso” cioè solo con la conoscenza e l’autorizzazione della gestione superiore. Il teaming rosso è più costoso e complesso da gestire, ma può fornire una migliore indicazione della sicurezza quotidiana, poiché gli amministratori di sistema non ne sono a conoscenza.

Tipologie di Penetration Testing

Oltre alla classificazione tra white-box e black-box i penetration test di differenziano anche a seconda della tipologia di penetration testing. Esistono infatti i network penetration testing, web application penetration testing e system penetration testing. La differenza sostanziale tra le varie tipologie di penetration testing sono gli oggetti che si vogliono esaminare.

Penetration Testing - Tecniche e tipologie del Pen Test in informatica

Web application penetration testing

Spesso le applicazioni web compongono la maggior parte della superficie di attacco esposta verso internet. Le applicazioni web girano sui server web, quindi testare se un server web è sicuro da un attacco interno o esterno è fondamentale. Trovandosi il server web sulla porta 80/TCP, nota per i numerosi exploit che esistono, è importante prestare molta attenzione e apportare al server numerose protezioni. L’exploit è una tipologia di script che permette l’esecuzione di codice malevolo sfruttando una specifica vulnerabilità.
In questo ambito, dobbiamo prestare molta cura ai meccanismi di autenticazione scadenti, ai difetti logici, alla divulgazione involontaria dei contenuti e soprattutto a tenere sempre aggiornato il nostro server web, perché la maggior parte delle vulnerabilità più importanti vengono date da sistemi operativi non aggiornati o dall’installazione di applicazioni.
Sono SQL injection e Cross-site-Scripting (XSS) le vulnerabilità più importanti per le applicazioni web.

La SQL injection è quindi una tecnica che mira a mandare del codice malevolo, sfruttando il mancato controllo sui dati ricevuti in input, ad una web app che fa uso di un database di tipo sql. Questo tipo di vulnerabilità ci permette ad esempio di autenticarci ai massimi livelli in aree riservate del sito senza essere in possesso delle credenziali di accesso e di visualizzare o alterare dati sensibili.
Per sfruttare la SQL injection bisogna prima identificare il punto di iniezione (injection point) e poi si può costruire il payload che permette di turbare una query costruita dinamicamente. Identificare l’injection point significa testare ogni input utente (parametri GET, POST, header HTTP…) che viene usato dall’applicazione web.

La maggior parte delle applicazioni web vengono analizzate utilizzando l’analisi black box. Il pentester quindi esamina l’applicazione dalla prospettiva di un hacker provando a comprometterla con l’utilizzo di un gran numero di tools esistenti per il web application penetration testing.

Network penetration testing

Un network penetration test ha come scopo quello di identificare le vulnerabilità che si trovano nelle aree di maggior interesse per il business di un azienda.
Questa tipologia di test, infatti, ci permette di esaminare l’intera rete e alcune infrastrutture di rete critiche come firewall, server di database o server web.
L’attività di Network Penetration Test, aiuta quindi ad ottenere una definita sicurezza all’interno di un’azienda utilizzando determinati strumenti che permettono al meglio di identificare quali sono le problematiche e le falle individuate all’interno della rete utilizzando strumenti e processi che permetto di individuare tutte le vulnerabilità che potrebbero essere sfruttate da un eventuale attaccante.
In questo ambito quando si parla di vulnerabilità e di punti deboli individuati ci si può riferire sia a dati, sistemi compromessi o alterati da Exploit, Virus, Trojan, attacchi Denial of Service ecc… Si può far riferimento, però, anche ad altre tipologie di vulnerabilità che possono essere introdotte da patch e aggiornamenti o da errori sui Server, Router e Firewall.

Software penetration testing

I penetration testing software sono considerati abbastanza difficili da gestire, in quanto i software possono avere delle problematiche sia a livello di implementazione, sia a livello di progettazione.

Possiamo infatti individuare in questo ambito due tipologie di test:

  1. i test funzionali, che verificano che una determinata funzionalità esegua correttamente una specifica attività
  2. i test di sicurezza, che devono sondare direttamente e profondamente nei rischi di sicurezza per determinare come si comporta il sistema sotto attacco.
    I test di sicurezza pongono una sfida molto più elevata rispetto ai test funzionali. Questo è dovuto perchè, essendo i test di sicurezza effettuati per vedere se il sistema commette errori, essi vengono pianificati per portare il sistema a produrre l’errore. Vengono alla fine sagnalate se e in quali circostanze si verifica l’errore. Se questi test non rilevano errori, abbiamo dimostrato che non esistono errori in determinate condizioni di prova, ma non che non esistono in nessun modo difetti.

Il penetration testing è un’attività molto comune e di norma viene utilizzata come test finale nel ciclo di vita (lifecycle) di un’applicazione. Questo però potrebbe essere un difetto per il software, in quanto, come abbiamo detto la maggior parte dei difetti vengono riscontrati a livello di progettazione e di implementazione.

Un modello tipico per il software penetration testing consiste normalmente in quattro passaggi:

  1. costruire un modello di minaccia a seconda delle classi di minaccia ( spoofing di identità, manomissione dei dati, elevazione del privilegio…)
  2. creare un buon ambiente di test
  3. eseguire i casi di test
  4. reporting problem.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *