Che cos'è il test di penetrazione?

Che cos'è il test di penetrazione (pen test)?

Il test di penetrazione (pen test) è una pratica di cybersecurity in cui persone o aziende autorizzate simulano attacchi informatici su sistemi, reti e applicazioni per identificare le vulnerabilità che gli hacker potrebbero sfruttare. Il test di penetrazione mira a scoprire le vulnerabilità delle misure di sicurezza del sistema prima che i criminali possano sfruttarli.

Il test di penetrazione (o pen test) è un processo approfondito volto a mostrare le vulnerabilità nascoste nelle contromisure e nei controlli di sicurezza di un sistema. Generalmente eseguiti da esterni autorizzati, i test di penetrazione simulano diversi tipi di attacchi su tutti gli elementi di un sistema. L'obiettivo è scoprire le vulnerabilità che i progettisti del sistema, così come i team addetti alla sicurezza, potrebbero aver trascurato.

Chi esegue i test di penetrazione?

I test di penetrazione vengono quasi sempre eseguiti da persone che non hanno un ruolo nella creazione del sistema di destinazione e che, di solito, non lavorano per l'entità che ha creato il sistema per diversi motivi. Da un lato, i membri dei team di sviluppo, QA/test e sicurezza sono troppo simili a ciò che hanno costruito, quindi potrebbero avere lacune nella sicurezza che una persona esterna al sistema senza preconcetti potrebbe rilevare.

Inoltre, il test di penetrazione implica un insieme di competenze distinte che spesso richiede strumenti appositamente creati. In realtà, i test di penetrazione vengono eseguiti da ex hacker "black hat" o criminali che hanno deciso di utilizzare le proprie competenze per scopi legittimi. Come dice il vecchio detto, è necessario un ladro per acciuffare un altro ladro. I test di penetrazione possono includere anche corsi di formazione e certificazioni speciali, ma, nella maggior parte dei casi, i dipendenti dell'organizzazione che hanno creato il sistema non dispongono di tali qualifiche.

Talvolta, gli addetti ai test di penetrazione vengono chiamati "hacker etici", ma i due ruoli sono diversi. A un livello base, gli addetti ai test di penetrazione prendono di mira il bersaglio prefissato in modo etico con un attacco simulato, ossia hanno il permesso di "attaccare" e di scoprire le falle della sicurezza che hanno accettato di non sfruttare.

La differenza è in parte strutturale. Il test di penetrazione, di solito, segue una serie preimpostata di processi con un approccio disciplinato all'identificazione e alla documentazione dei problemi di sicurezza. L'hacking etico, al contrario, tende a essere più aperto. Ad esempio, un hacker etico potrebbe partecipare a un programma "Bug Bounty" e venire ricompensato per aver scoperto una vulnerabilità precedentemente sconosciuta. Tuttavia, ciò non equivale ad eseguire un accurato test di penetrazione e a documentare ciò che il processo ha scoperto.

Le fasi dei test di penetrazione

La metodologia di un test di penetrazione, in genere, segue cinque fasi:

  1. Ricognizione. Si tratta di una fase di raccolta delle informazioni che si verifica prima di iniziare i test di penetrazione. Il tester apprende i parametri del sistema da "attaccare" e prepara un piano di attacco.
  2. Scansione. Il tester esegue una scansione del bersaglio per determinare in che modo i suoi sistemi di sicurezza delle informazioni reagiranno ai tentativi di violare i controlli e le contromisure in atto. Quasi sempre, grazie a strumenti automatizzati per i test di penetrazione, le scansioni possono trovare porte aperte, server su cui sono ancora attivati gli account amministratore predefiniti, configurazioni errate vulnerabili e altri metodi nascosti nel sistema da "attaccare".
  3. Accesso. È il momento in cui il tester entra nel sistema da "attaccare", in base alle informazioni rilevate durante la fase di scansione. Ciò può comportare l'utilizzo di tecniche come gli attacchi SQLi (SQL injection) per recuperare le credenziali utente dell'amministratore da un database (teoricamente sicuro). Una volta all'interno, il tester illustrerà i danni che un criminale potrebbe fare con questo livello di accesso. Ad esempio, se un tester riesce ad eseguire il movimento laterale da un bersaglio iniziale all'interno dell'infrastruttura di rete e ad accedere a un'applicazione di produzione o a dati sensibili, segnalerà che anche un criminale potrebbe violare tale sistema.
  4. Mantenere l'accesso. Una volta completato correttamente il test di penetrazione, il tester sarà in grado di mantenere l'accesso al sistema "attaccato", riproducendo così la situazione reale, fin troppo comune, in cui i criminali si soffermano all'interno della rete della vittima per mesi. Mantenendo l'accesso, il tester può anche simulare minacce persistenti avanzate (APT).
  5. Analisi e copertura. Il tester conclude il test di penetrazione facendo scomparire dal sistema "attaccato" tutte le tracce della sua presenza. Anche in questo caso, si tratta di una simulazione di un vero attacco informatico, in cui eventuali file eseguibili o eventi del registro non si riescono a rilevare. Ciò viene seguito dalla preparazione di un rapporto dettagliato che documenta i metodi utilizzati, le lacune rilevate e la previsione dell'impatto di una violazione, tra le altre importanti informazioni per il team addetto alla sicurezza.

I vari tipi dei test di penetrazione

L'allineamento del programma dei test di penetrazione a tutti i tipi di sistema pertinenti in un'organizzazione è una saggia pratica di gestione dei rischi. Poiché qualsiasi dispositivo connesso, applicazione o origine dati può far parte di una superficie di attacco, è opportuno utilizzare i test di penetrazione per valutare le relative vulnerabilità che possono essere sfruttate. In generale, non ha senso eseguire un test di penetrazione su un'app web o mobile perché potrebbero rappresentare un percorso di attacco alla cybersecurity per un criminale, da vettori che spaziano dal phishing al social engineering.

I test di penetrazione si suddividono in sei grandi categorie:

Applicazioni. Il tester utilizza strumenti automatizzati e test manuali per eseguire i test di penetrazione allo scopo di individuare eventuali vulnerabilità all'interno delle applicazioni e dei database collegati. Ciò potrebbe significare esaminare i file binari delle applicazioni o i processi di autorizzazione, la crittografia, la vulnerabilità agli attacchi SQLi e a metodi di attacco simili.

Reti. La rete deve essere sottoposta a rigorosi test di penetrazione in quanto si tratta del perimetro di sicurezza dell'organizzazione (almeno in teoria). Il processo, di solito, prevede un esame sistematico dei controlli degli accessi amministrativi, dell'SSL (Secure Socket Layer), dei protocolli di trasporto crittografati, dei certificati, della segmentazione della rete e molto altro ancora.

Cloud. Con il cloud, il tester esamina le configurazioni di sistema, le API (Application Programming Interface) e lo storage. Probabilmente, il tester cerca anche le istanze cloud che sono state configurate senza l'implementazione delle policy standard, un processo più comune di quanto ci si renda conto. Uno sviluppatore ben intenzionato, ma informato male, può distribuire un'applicazione e un database su una piattaforma cloud senza applicare controlli di sicurezza o addirittura senza notificare a nessuno l'esistenza dell'istanza cloud.

Processi di sviluppo del software. Il workflow del DevOps e la pipeline di integrazione/distribuzione continua (CI/CD) sono i processi in cui gli sviluppatori possono incorporare inavvertitamente bug ed errori di codifica nel software, rendendo l'applicazione vulnerabile alle violazioni. Con i test di penetrazione automatizzati del DevOps e della pipeline CI/CD, il tester potrebbe rilevare vulnerabilità nascoste che non possono essere rilevate con una scansione statica del codice. Il tester tenterà inoltre di accedere al workflow dello sviluppatore, verificando se può inserire codice dannoso nel codebase, ed eseguirà azioni simili in relazione ai container, come Docker.

Dispositivi. L'hardware può risultare vulnerabile a una violazione tanto quanto una rete o un'applicazione. Eseguendo i test di penetrazione, il tester tenterà di penetrare nel dispositivo utilizzando le vulnerabilità presenti nei file binari delle applicazioni, nel firmware e nel software del sistema operativo, individuando, di solito, i punti deboli dei dispositivi che non hanno installato patch di sicurezza.

API. Un tester utilizza una combinazione di processi di test delle API manuali e automatizzati per determinare se un'API presenta una delle 10 principali vulnerabilità della sicurezza delle API riportate nell'elenco OWASP (Open Worldwide Application Security Project), come la violazione dell'autorizzazione a livello di oggetto (BOLA), oppure se presenta una mancanza di limitazione di velocità o problemi di autenticazione dell'utente.

Vantaggi dei test di penetrazione

Il test di penetrazione offre una varietà di vantaggi che non sono disponibili in altre modalità di test sulla sicurezza. Ciò non sminuisce l'importanza e la necessità di eseguire test delle unità, test funzionali e test simili. Tuttavia, i test di penetrazione consentono di individuare le falle nella sicurezza che altri processi non sono in grado di rilevare.

Inoltre, i test di penetrazione possono mostrare l'intera catena dell'attacco: come il criminale ha scoperto la vulnerabilità, come l'ha sfruttata e come ha ottenuto e mantenuto l'accesso. Di conseguenza, i test di penetrazione consentono ai team addetti alla sicurezza di risolvere problemi di sistema altrimenti invisibili. Un efficace test di penetrazione mostrerà anche quanto sia rigoroso un controllo o una contromisura. Ciò è ancora più significativo alla luce della conformità a varie normative come il PCI DSS e il GDPR.

I vari approcci ai test di penetrazione

I test di penetrazione differiscono in termini di approccio a seconda del numero e della natura degli obiettivi di sfruttamento, del livello di informazioni disponibili o raccolte dal tester e degli strumenti, delle competenze e delle risorse a disposizione del tester. Tra i vari approcci ai test di penetrazione, figurano diversi metodi di test -box:

Test di penetrazione black-box: quando si adotta un approccio "black-box" (detto anche "closed-box" o "single-blind") ai test di penetrazione, il tester non ha alcuna conoscenza precedente del sistema da "attaccare" ed esegue i test solo da una prospettiva esterna per simulare un attacco reale, utilizzando le tattiche più creative e imparziali senza presupporre nulla. 

Test di penetrazione white-box: con questo approccio (detto anche "open-box" o "clear-box"), il tester ottiene un accesso preapprovato alle informazioni di sicurezza dell'azienda, in base alle quali, pertanto, esegue i test di penetrazione. Questo approccio consente al tester di risparmiare tempo, anziché dover avanzare supposizioni, con la possibilità quindi di identificare ulteriori rischi. Inoltre, questo approccio fornisce informazioni complete sul sistema da "attaccare", tra cui diagrammi dell'architettura, codice sorgente e funzionalità. Ciò consente un'analisi approfondita e dettagliata, individuando vulnerabilità più profonde che potrebbero non essere visibili con informazioni limitate. 

Test di penetrazione grey-box: con un approccio "grey-box", il tester dispone di informazioni parziali sul sistema aziendale, di conseguenza, ha maggiori possibilità di identificare le vulnerabilità ad alto rischio e di definirne la priorità.

Un approccio nascosto o "double-blind" si verifica quando gli utenti quotidiani, incluso il personale IT, non sono consapevoli del fatto che il test è in corso. In tal modo, viene verificata la capacità dell'IT di rispondere alle violazioni in tempo reale. I test di questo tipo potrebbero comportare l'obbligo di informare in anticipo le forze dell'ordine in modo da non causare falsi allarmi.

Il test di penetrazione garantisce la continuità aziendale

I test di penetrazione sono un'importante valutazione delle vulnerabilità per contribuire a mantenere una sicurezza di rete solida ed efficace in qualsiasi organizzazione. I test di penetrazione aiutano le aziende a:

  • Rilevare e risolvere i problemi di sicurezza prima che un hacker esterno possa sfruttarli
  • Identificare le aree ad alto rischio nell'infrastruttura IT e allocare in modo oculato i budget per la sicurezza
  • Migliorare i livelli di attenzione e i tempi di risposta del personale IT e degli addetti alla sicurezza interni
  • Colmare le lacune nella privacy dei dati e nella conformità dei sistemi di sicurezza
  • Ridurre l'impatto di violazioni reali quando si verificano

Pertanto, un corretto test di penetrazione è fondamentale per proteggere i carichi di lavoro IT e i dati dei clienti e per garantire un'operatività ininterrotta.

Domande frequenti

Per un'azienda, è fondamentale acquisire familiarità con i diversi strumenti di esecuzione dei test sulla sicurezza, tra cui la scansione delle vulnerabilità e i test di penetrazione.

La scansione delle vulnerabilità è il processo di identificazione delle potenziali vulnerabilità e delle aree sensibili di una rete. Ciò può includere l'analisi di interi router, configurazioni di sistema, server e firewall eventualmente presenti. Un vettore di attacco è più comune nella scansione delle vulnerabilità, in quanto è essenzialmente una mappa di potenziali metodi che consentono di violare un'organizzazione.

I test di penetrazione, d'altro canto, sono più coinvolti e proattivi. Con i test di penetrazione, gli hacker etici possono condurre violazioni tali da rendere visibili potenziali violazioni e/o vulnerabilità dei sistemi di sicurezza. I tester stabiliscono quale superficie di attacco è più adatta per un risultato ottimale. L'utilizzo dei test di penetrazione è ideale per coloro che desiderano saperne di più sulla possibilità di sfruttare le vulnerabilità e sulla sicurezza dei sistemi attualmente in uso.

I test di penetrazione devono essere condotti almeno una o due volte l'anno per identificare le vulnerabilità del sistema di sicurezza. In alcuni casi, potrebbe essere necessario eseguire i test di penetrazione con maggiore frequenza, a seconda delle dimensioni e della portata dell'organizzazione. Con l'aumento degli attacchi informatici e delle violazioni della sicurezza in tutti i settori, le aziende devono mantenersi proattive riguardo alle vulnerabilità digitali e condurre i test di penetrazione con cadenza regolare.

A seconda delle impostazioni correnti, delle misure di sicurezza delle API e della portata dell'operazione, il completamento di un test di penetrazione richiede, generalmente, da una a due settimane. Tuttavia, il tempo necessario per completare un test di penetrazione varia in base all'apparecchiatura, ai firewall e alle reti su cui viene eseguito.

Perché i clienti scelgono Akamai

Akamai è l'azienda di cybersecurity e cloud computing che abilita e protegge il business online. Le nostre soluzioni di sicurezza leader del settore, l'innovativa intelligence sulle minacce e il team presente su scala globale forniscono una difesa approfondita in grado di proteggere applicazioni e dati critici ovunque.

Post del blog correlati

Accelerazione degli obiettivi Zero Trust con l'AI generativa: AI Labeling
Nella prima parte di questa serie di blog costituita da 4 parti, presentiamo AI Labeling, la nuova funzione di etichettatura basata sull'AI generativa di Akamai, che consentirà di accelerare gli obiettivi Zero Trust.
Accelerazione degli obiettivi Zero Trust con l'AI generativa: Guardicore AI (parte 2)
La seconda parte di questa serie di blog costituita da 4 parti si focalizza sul raggiungimento degli obiettivi Zero Trust con Guardicore AI senza richiedere alcun intervento manuale per la microsegmentazione.
I 5 passaggi per la realizzazione del modello Zero Trust
La piattaforma Akamai Guardicore offre un approccio pratico ed efficace all'implementazione del modello Zero Trust. Scoprite i 5 modi con cui potete implementare il modello Zero Trust.

Scoprite tutte le soluzioni per la sicurezza di Akamai

Iniziate la prova gratuita e scoprite quale differenza può fare la piattaforma cloud di delivery più estesa e affidabile al mondo.