Penetration test:
cos’è e come si svolge

Il penetration test è una componente fondamentale nello sviluppo di una strategia di cybersecurity, poiché valuta la solidità e l’adeguatezza della sicurezza dell’infrastruttura di un’organizzazione.

Il motivo è chiaro: per prevenire che gli attaccanti sfruttino le vulnerabilità nei software o nelle reti, è essenziale individuarle il prima possibile.

Un proverbio inglese dice: “It takes a thief to catch a thief”, ci vuole un ladro per catturare un ladro. O per lo meno qualcuno che sia in grado di pensare come lui.

L’obiettivo, detto in altri termini, è anticipare gli attacchi anziché aspettare che si verifichino, consentendo ai responsabili della sicurezza di essere più proattivi.

Anche se può sembrare insolito per chi non è nel settore della sicurezza, le aziende assumono professionisti per testare la vulnerabilità dei propri sistemi ed individuare eventuali punti deboli.

Sono hacker etici, o penetration tester, e aiutano le organizzazioni a essere un passo avanti rispetto alle tattiche usate dai criminali.

Cerchiamo dunque di comprendere cosa sia il penetration test e quale è il suo ruolo nelle strategie di sicurezza delle imprese.

Penetration Test

Il penetration test (detto anche pen test), o test di penetrazione, è fondamentalmente una forma controllata di hacking nel quale un esperto, lavorando per conto di un’organizzazione, sonda le reti e le applicazioni per individuare le debolezze che potrebbero essere sfruttate da un criminale informatico.

I penetration tester spesso sfruttano configurazioni errate del sistema, inviano e-mail di phishing al personale dell’organizzazione, utilizzano tecniche di social engineering o violano il perimetro fisico dell’organizzazione.

Il livello di accesso all’infrastruttura IT concesso all’attaccante dipende dall’obiettivo di test che l’organizzazione sta perseguendo.

In alcune circostanze, i dipendenti sono informati in anticipo sui test in corso. In altre situazioni l’organizzazione e gli ethical hacker decidono di non avvisarli preventivamente; questo permette di verificare in tempo reale le azioni e le reazioni.

Sulla base delle evidenze che emergono dal test, le organizzazioni sono in grado di implementare difese adeguate per mitigare i rischi o eliminare del tutto le vulnerabilità.

Rilevare le vulnerabilità nella sicurezza di un sistema tramite un attacco simulato può offrire alle aziende informazioni sui vari metodi con cui gli hacker possono accedere in modo non autorizzato a dati sensibili o personali, causando potenziali violazioni dei dati. E quest’ultime possono essere estremamente costose per le organizzazioni.

Con l’evolversi delle minacce, le organizzazioni spesso incaricano penetration tester di condurre azioni a lungo termine per individuare schemi sfruttabili nel tempo.

I penetration test possono essere eseguiti su diversi componenti dell’infrastruttura IT di una organizzazione:

  • Client side,
  • Network services,
  • Social engineering,
  • Phisical penetration test,
  • Web application,
  • Wireless.

Ogni tipo di test richiede conoscenze specifiche, metodologie e strumenti per essere eseguito e dovrebbe allinearsi a un obiettivo aziendale specifico.

Il penetration testing lato client è utilizzato per scoprire vulnerabilità o debolezze di sicurezza nelle applicazioni lato client.

Queste potrebbero includere programmi o applicazioni, client di posta, browser web (ad esempio Chrome, Firefox, Safari, ecc.)…

Si eseguono i test lato client per identificare specifici attacchi, come cross-site scripting, clickjacking, condivisione delle risorse cross-origin (CORS), hijacking dei moduli, iniezione HTML, reindirizzamento aperto e infezione da malware.

Il penetration testing sui servizi di rete, o infrastructure testing, è uno dei tipi di test di penetrazione più comuni.

L’obiettivo è individuare le vulnerabilità e le debolezze di sicurezza nell’infrastruttura di rete di un’organizzazione per prevenirne lo sfruttamento.

I test di penetrazione della rete dovrebbero essere eseguiti per proteggere l’azienda dagli attacchi comuni basati sulla rete.

Ne sono un esempio: configurazione errata del firewall e bypass del firewall, IPS/IDS, attacchi ai router, attacchi a livello DNS, attacchi SSH, attacchi ai server proxy, attacchi a porte aperte non necessarie, attacchi ai database, attacchi “Man in the Middle” (MITM), attacchi FTP/SMTP.

Questo test dovrebbe essere eseguito almeno una volta all’anno.

Il penetration testing di ingegneria sociale è un tipo di test in cui un attore malintenzionato tenta di persuadere o ingannare gli utenti per ottenere informazioni sensibili, come username e password.

I tipi comuni di attacchi di ingegneria sociale utilizzati dai penetration tester includono phishing, vishing, smishing, tailgating, fake, name dropping, pretexting, dumpster diving, intercettazioni e via discorrendo.

È un tipo di test particolarmente importante: gli utenti interni rappresentano una delle maggiori minacce per la sicurezza delle reti.

Per questo è importante che il test sia accompagnato anche da un’azione successiva di formazione e sensibilizzazione per mitigare rischi futuri.

Il penetration test fisico simula una minaccia reale in cui un penetration tester tenta di compromettere le barriere fisiche per accedere all’infrastruttura, ai sistemi o ai dipendenti di un’azienda.

Le barriere fisiche sono spesso un aspetto secondario per la maggior parte delle aziende; tuttavia, se un attore malintenzionato riesce a ottenere l’accesso fisico, ad esempio, a una sala server, potrebbe controllare l’intera rete.

Il principale beneficio di questo test è esporre le debolezze e le vulnerabilità nei controlli fisici (serrature, barriere, telecamere o sensori) in modo che possano essere rapidamente risolte.

Il penetration testing delle applicazioni web è utilizzato per scoprire vulnerabilità o debolezze di sicurezza nelle applicazioni basate sul web.

Utilizza diverse tecniche di penetrazione e attacchi con l’obiettivo di violare l’applicazione stessa.

L’ambito comune di questo tipo di test comprende le applicazioni web, i browser e i loro elementi come ActiveX, plugin, Silverlight, scriptlet e applet.

I test dettagliati e mirati sono considerati più complessi in quanto richiedono una notevole quantità di tempo ed impegno. Dalla pianificazione all’esecuzione dei test e alla stesura del report, queste fasi richiedono tecniche in continua evoluzione per essere allineate con lo sviluppo delle minacce.

Il penetration testing wireless coinvolge l’identificazione e l’analisi delle connessioni tra tutti i dispositivi collegati al wi-fi dell’azienda, non solo laptop, tablet, smartphone ma anche qualsiasi altro dispositivo dell’internet delle cose (IoT).

Questa tipologia di test è in genere eseguita nella sede dell’azienda, poiché il penetration tester deve essere nel raggio del segnale wireless per accedervi.

Prima di eseguire un test di penetrazione wireless, è essenziale:

  • Identificare tutti i punti di accesso;
  • Comprendere le metodologie di crittografia utilizzate;
  • Verificare se i dati in transito sono criptati e come;
  • Controllare l’esistenza di sistemi di monitoraggio per individuare utenti non autorizzati;
  • Verificare che il team IT non abbia configurato erroneamente o duplicato una rete wireless;
  • Esaminare le attuali misure di sicurezza della rete wireless;
  • Assicurarsi che tutti i punti di accesso wireless utilizzino il protocollo WPA.

C’è una ulteriore differenziazione fondamentale, quando si parla di penetration test: i pen test “internal” e quelli “external”.

La principale differenza tra un penetration test interno e uno esterno riguarda la prospettiva e l’accesso alla rete dell’organizzazione.

Si esegue un penetration test interno per valutare cosa potrebbe ottenere un attaccante una volta che ha già ottenuto l’accesso iniziale alla rete. Questo tipo di test può simulare minacce interne, come dipendenti che compiono azioni dannose intenzionalmente o accidentalmente.

Al contrario, un penetration test esterno è progettato per verificare l’efficacia dei controlli di sicurezza perimetrali nel prevenire e rilevare attacchi, oltre ad identificare le debolezze negli asset esposti a Internet, come server web, di posta e FTP.

Le sei fasi del Penetration Test

Un penetration test tipico si svolge attraverso diverse fasi ben definite e l‘utilizzo di strumenti specifici.

In letteratura si fa in genere riferimento a sei fasi:

  1. Information Gathering;
  2. Reconnaissance;
  3. Discovery and Scanning;
  4. Vulnerability Assessment;
  5. Exploitation;
  6. Analisi finale e revisione.

Vediamole in dettaglio.

La prima fase è la raccolta delle informazioni, dove l’hacker etico, conosciuto come penetration tester, raccoglie dati e informazioni sulla rete o sull’applicazione target utilizzando tecniche di Open-Source Intelligence (OSINT).

Questo può includere la ricerca di informazioni pubblicamente disponibili sui domini dell’azienda, gli indirizzi IP, i dipendenti e altro ancora.

Segue la fase di ricognizione, in cui il tester approfondisce le informazioni raccolte per scoprire ulteriori dettagli che potrebbero essere stati trascurati o non forniti.

In questa fase, il tester raccoglie quante più informazioni possibili sul sistema target, inclusi la topologia della rete, i sistemi operativi e le applicazioni utilizzate, gli account utente e altre informazioni rilevanti.

L’obiettivo è accumulare una quantità di dati sufficiente per pianificare una strategia di attacco efficace.

La ricognizione può essere classificata come attiva o passiva, a seconda dei metodi utilizzati per raccogliere le informazioni.

La ricognizione passiva si avvale di risorse già pubblicamente disponibili, mentre quella attiva comporta un’interazione diretta con il sistema target per ottenere informazioni.

Solitamente, entrambi i metodi sono necessari per ottenere un quadro completo delle vulnerabilità del target.

Nella fase di scoperta e scansione, il penetration tester utilizza strumenti di scansione per identificare le porte aperte, i servizi attivi e le vulnerabilità potenziali nell’infrastruttura della rete.

Gli strumenti comuni includono scanner di rete e scanner di vulnerabilità.

Dopo aver identificato le vulnerabilità, il tester procede con la valutazione delle stesse per determinare quali potrebbero essere sfruttate per ottenere accesso non autorizzato al sistema.

In questa fase, sono comunemente utilizzati strumenti per attacchi specifici come l’exploit delle vulnerabilità e le analisi delle applicazioni web.

Questa fase è cruciale poiché permette di valutare il rischio delle vulnerabilità scoperte utilizzando risorse come il National Vulnerability Database (NVD), un archivio di dati sulla gestione delle vulnerabilità creato e mantenuto dal governo degli Stati Uniti.

L’NVD analizza le vulnerabilità del software pubblicate nel database Common Vulnerabilities and Exposures (CVE) e ne valuta la gravità utilizzando il Common Vulnerability Scoring System (CVSS).

La fase di sfruttamento è dove il tester utilizza le informazioni e le vulnerabilità identificate per tentare di ottenere l’accesso al sistema bersaglio.

Questo può includere attacchi brute-force, SQL injection, e attacchi di ingegneria sociale come phishing, così come l’utilizzo di hardware specifico come dispositivi USB con malware.

Questa è forse la fase più delicata del penetration test, poiché accedere al sistema target richiede di aggirare le restrizioni di sicurezza. Sebbene i crash del sistema durante il penetration testing siano rari, i tester devono comunque essere cauti per garantire che il sistema non venga compromesso o danneggiato.

Infine, il tester conclude il test coprendo le proprie tracce, rimuovendo qualsiasi hardware inserito e ripristinando il sistema allo stato originale per evitare di essere rilevato.

La fase finale consiste nell’analisi e revisione dei risultati, compilando un report dettagliato che descrive le vulnerabilità scoperte, come sono state sfruttate e le raccomandazioni per mitigare tali rischi.

La creazione di un report di penetration test richiede una chiara documentazione delle vulnerabilità e la loro contestualizzazione, in modo che l’organizzazione possa affrontare i propri rischi di sicurezza.

I report più utili includono sezioni con una descrizione dettagliata delle vulnerabilità scoperte (inclusi i punteggi CVSS), una valutazione dell’impatto aziendale, una spiegazione della difficoltà della fase di sfruttamento, un briefing sul rischio tecnico, consigli per la mitigazione e raccomandazioni strategiche.

Anche se esiste il rischio di confondere Penetration test e Vulneability Assessment, le due attività sono significativamente differenti tra loro, sia nello scopo sia nella modalità in cui vengono eseguite.

Con il vulnerability assessment si cercano potenziali punti deboli nella sicurezza di una infrastruttura, mentre il penetration testing identifica tali debolezze e tenta di sfruttarle.

C’è spesso confusione tra questi due processi, poiché il vulnearbility assessment è essenzialmente un passo iniziale nel più completo penetration test.

In termini di approccio, l’obiettivo del vulnerability assessment ha un ampio raggio d’azione, poiché coinvolge numerosi asset all’interno dell’infrastruttura IT di un’organizzazione, tra cui server, workstation, database, dispositivi di rete, applicazioni web e persino dispositivi mobili.

L’obiettivo è fornire una panoramica completa dei potenziali punti deboli nel panorama IT.

Per questo motivo – e anche in ragione di un elevato livello di automazione di questa attività – le valutazioni delle vulnerabilità potrebbero mancare di profondità in aree specifiche, richiedendo ulteriori indagini o analisi.

Al contrario, il penetration testing ha un ambito più ristretto, mirato a specifici sistemi, applicazioni o segmenti di rete basati sui rischi e sulle priorità concordate.

Questo approccio consente un’analisi più dettagliata e approfondita delle aree mirate, permettendo alle organizzazioni di comprendere meglio le vulnerabilità specifiche e il potenziale impatto sui sistemi scelti.

In termini di intrusività, i vulnerability assessment non sono intrusivi. Ciò significa che non tentano di sfruttare le vulnerabilità identificate o di interrompere le attività del sistema.

La scansione coinvolge principalmente l’analisi delle configurazioni e delle versioni del software, senza tentare attivamente di ottenere accesso non autorizzato.

Al contrario, il penetration testing è per sua natura approfondito e potenzialmente dirompente.

Gli hacker etici tentano attivamente di sfruttare le vulnerabilità, il che può comportare tentativi di ottenere accesso non autorizzato ai sistemi o ai dati.

Sebbene queste attività siano condotte in un ambiente controllato e con un ambito predefinito, potrebbero richiedere la disattivazione temporanea dei sistemi o avere un impatto sulle operazioni regolari.

Ci sono dunque molteplici motivi per cui una organizzazione dovrebbe condurre regolarmente controlli di sicurezza e penetration test sulla propria infrastruttura IT.

I penetration test aiutano a determinare quanto le misure di sicurezza adottate possano resistere ad un avversario intenzionato ad utilizzare una varietà di vettori di attacco: questo permette di individuare e correggere le falle di sicurezza prima che gli attaccanti le trovino e le sfruttino.

Un penetration test può evidenziare lacune nei piani di sicurezza informatica, focalizzandosi sugli elementi più vulnerabili che potrebbero essere sfruttati. Questo consente di dare priorità ai rischi e di impiegare le risorse in maniera efficiente.

Il test può inoltre individuare vulnerabilità legate al fattore umano, come nel caso dell’ingegneria sociale o degli errori umani, evidenziando così ciò che potrebbe essere migliorato nella formazione sulla sicurezza.

Oltre a rafforzare i processi e le strategie di sicurezza, il penetration testing può ridurre i costi di mitigazione ed il tempo di permanenza delle minacce. Più a lungo i dati sensibili ed il software dannoso rimangono esposti agli hacker, maggiori saranno i danni e le conseguenze che ne derivano.

Infine, il penetration testing è essenziale per aderire alle normative sulla sicurezza e sulla privacy, come HIPAA, PCI-DSS, GDPR, SOC2, ISO 27001, NIS2 … dimostrando che l’organizzazione è diligente nel mantenere la sicurezza delle proprie infrastrutture.