Immagina di assumere un ladro professionista per testare la sicurezza della tua sede. Gli chiedi di provare ad entrare, di trovare i punti deboli, di documentare ogni vulnerabilità, e poi di riferirti tutto in un report dettagliato, prima che lo faccia davvero qualcuno con cattive intenzioni. Questo è, in sostanza, il penetration testing applicato alla cybersecurity.
Il penetration test (o pentest) è un attacco informatico simulato, condotto da esperti autorizzati, con l'obiettivo di identificare le vulnerabilità reali di un sistema prima che possano essere sfruttate da attaccanti malintenzionati. Non è un esercizio teorico: i professionisti usano le stesse tecniche, gli stessi strumenti e la stessa mentalità dei criminali informatici, con la differenza fondamentale di avere un mandato esplicito e un obiettivo costruttivo.
La distinzione critica che molti non colgono è quella tra penetration testing e vulnerability scanning. Un vulnerability scan è un processo automatizzato che identifica vulnerabilità note confrontando la configurazione di un sistema con un database di problemi conosciuti. È utile e necessario, ma ha limiti precisi: non può sfruttare le vulnerabilità per verificarne l'impatto reale, non valuta le combinazioni di debolezze che un attaccante saprebbe concatenare, e non tiene conto del fattore umano. Il penetration test va oltre: un professionista esperto non solo trova le falle, ma dimostra concretamente cosa succederebbe se venissero sfruttate.
I 5 tipi di penetration testing
Il penetration testing non è una categoria monolitica. Esistono diverse tipologie, ciascuna focalizzata su una superficie di attacco specifica. La scelta dipende dal contesto aziendale, dagli asset da proteggere e dagli obiettivi del test.
- Network penetration testing: è il tipo più classico. Riguarda l'infrastruttura di rete (firewall, router, switch, server, VPN, sistemi di autenticazione). L'obiettivo è identificare configurazioni errate, porte esposte, servizi non aggiornati e percorsi di movimento laterale all'interno della rete. Si divide tipicamente in test external (dalla prospettiva di internet) e internal (dalla prospettiva di un insider o di un sistema già compromesso).
- Web application penetration testing: focalizzato sulle applicazioni web (portali, e-commerce, API, applicazioni SaaS). Segue metodologie come OWASP Testing Guide e mira a identificare vulnerabilità come SQL injection, cross-site scripting (XSS), broken authentication, insecure direct object reference e molte altre. Con l'esplosione delle applicazioni web, questo è spesso il tipo di test più richiesto e più rilevante per le PMI.
- Mobile application penetration testing: le app mobile hanno superficie di attacco propria: comunicazioni insicure, archiviazione locale di dati sensibili, bypass dell'autenticazione, vulnerabilità nelle API backend. Il test analizza sia il client (app iOS o Android) che le interazioni con i server. Essenziale per aziende che offrono servizi tramite app ai propri clienti.
- Social engineering testing: la tecnologia è spesso l'anello più forte della catena. L'anello più debole è quasi sempre il fattore umano. Il test di social engineering valuta la resistenza del personale ad attacchi come phishing (email fraudolente), vishing (chiamate telefoniche ingannevoli), smishing (SMS malevoli) e pretexting (impersonificazione). I risultati sono spesso sorprendenti, e utili per orientare la formazione.
- Physical penetration testing: un test spesso sottovalutato. Un attaccante fisicamente presente in ufficio può accedere a sistemi non protetti, inserire dispositivi malevoli in porte USB, rubare credenziali scritte su post-it, o accedere a sale server non adeguatamente protette. Il test fisico verifica controlli di accesso, badge, procedure di verifica identità e sicurezza delle aree sensibili.
Black box, grey box, white box: quale scegliere
Oltre alla tipologia di target, i penetration test si distinguono per il livello di informazione fornito al team di test. Questa classificazione riflette diverse prospettive di attacco e ha implicazioni dirette su costi, profondità e finalità del test.
Black box: il tester non ha nessuna informazione preventiva sull'infrastruttura target: niente credenziali, niente architetture, niente documentazione. Simula fedelmente la prospettiva di un attaccante esterno che parte da zero. Il vantaggio è il realismo; lo svantaggio è che richiede più tempo (e quindi più costo) per la fase di reconnaissance, e potrebbe non coprire in profondità tutte le aree critiche se alcune rimangono "nascoste" durante la ricognizione.
Grey box: il tester riceve informazioni parziali: magari credenziali di un utente standard, o la descrizione generale dell'architettura, o l'elenco degli indirizzi IP nel perimetro. Simula uno scenario ibrido: un dipendente malintenzionato, un attaccante che ha già ottenuto accesso limitato, o semplicemente un test più efficiente che si concentra sui componenti critici. È spesso il compromesso migliore per le PMI: buona copertura a costi più contenuti rispetto al black box puro.
White box: il tester ha accesso completo alla documentazione: codice sorgente, architetture di rete, credenziali di amministratore, configurazioni dei sistemi. Questo approccio permette la massima profondità di analisi e individua vulnerabilità che potrebbero sfuggire a un test black box. È particolarmente utile per applicazioni software, dove la revisione del codice può rivelare bug di sicurezza strutturali. Lo svantaggio è che non simula la prospettiva di un attaccante esterno ignaro dell'architettura.
Non esiste un approccio "migliore" in assoluto: la scelta dipende dall'obiettivo. Per testare la visibilità esterna della propria infrastruttura, il black box è più realistico. Per verificare la resilienza complessiva in modo efficiente, il grey box offre il miglior rapporto valore/costo. Per analizzare in profondità un'applicazione critica o per uno sviluppo sicuro, il white box è insostituibile.
Come si svolge un penetration test: le fasi
Un penetration test professionale segue una metodologia strutturata, non è un'attività improvvisata. Ogni fase ha obiettivi precisi e produce output che alimentano le fasi successive.
- 1. Pianificazione e scoping: prima di toccare qualsiasi sistema, si definisce il perimetro: quali sistemi sono in scope, quali sono esplicitamente esclusi, quali tecniche sono autorizzate, quali no. Si formalizza il mandato con un documento firmato (regole di ingaggio) che protegge sia il cliente che il tester. Si concordano finestre temporali, punti di contatto in caso di incidente reale durante il test, e obiettivi specifici.
- 2. Reconnaissance (ricognizione): raccolta di informazioni sul target utilizzando tecniche passive (OSINT, Open Source Intelligence) e attive. Include l'analisi di DNS, WHOIS, certificate transparency logs, profili LinkedIn dei dipendenti, informazioni tecniche esposte pubblicamente, e molto altro. Spesso questa fase rivela già informazioni preziose per un attaccante: email aziendali, tecnologie utilizzate, nomi di dipendenti con ruoli tecnici.
- 3. Scanning e enumerazione: identificazione attiva dei sistemi nel perimetro, delle porte aperte, dei servizi in esecuzione, delle versioni software. Strumenti come Nmap, Nessus, Burp Suite vengono utilizzati per creare una mappa dettagliata dell'infrastruttura e identificare potenziali punti di attacco. Le vulnerabilità note vengono mappate rispetto ai sistemi identificati.
- 4. Exploitation: il cuore del penetration test. Il tester tenta di sfruttare le vulnerabilità identificate per ottenere accesso non autorizzato ai sistemi. Questa fase richiede competenze tecniche elevate e creatività: spesso le vulnerabilità più critiche emergono dalla combinazione di più debolezze individuali, ciascuna delle quali da sola sembrerebbe innocua. L'obiettivo non è fare il massimo danno possibile, ma dimostrare l'impatto reale di ogni vulnerabilità sfruttata.
- 5. Post-exploitation: una volta ottenuto l'accesso, il tester simula cosa farebbe un attaccante reale: movimento laterale verso altri sistemi, escalation dei privilegi, accesso a dati sensibili, persistenza nell'infrastruttura. Questa fase permette di valutare la profondità di una potenziale compromissione e l'efficacia dei controlli di sicurezza interni.
- 6. Reporting: tutto viene documentato in un report strutturato che costituisce il deliverable principale del test. La qualità del report è ciò che distingue un pentest professionale da uno approssimativo.
Cosa contiene un report di penetration testing
Il report è il prodotto finale del penetration test e deve essere utile a due audience molto diverse: il management aziendale e il team tecnico. Un buon report si articola su più livelli.
Executive Summary: una sintesi in linguaggio non tecnico destinata al management. Descrive il contesto del test, i principali risultati, il livello di rischio complessivo e le priorità di intervento. Deve essere leggibile da chi non ha background tecnico e deve rispondere alla domanda: "Quanto è esposta la nostra azienda e cosa dobbiamo fare?"
Findings tecnici: ogni vulnerabilità identificata viene documentata in dettaglio: descrizione tecnica, metodo di sfruttamento utilizzato, prove (screenshot, output di strumenti, log), impatto potenziale e raccomandazioni di remediation specifiche. Non basta dire "il sistema è vulnerabile a SQL injection": bisogna mostrare come è stato sfruttato e cosa un attaccante avrebbe potuto fare.
CVSS scoring: ogni vulnerabilità viene classificata secondo il Common Vulnerability Scoring System (CVSS), uno standard internazionale che assegna un punteggio da 0 a 10 basato su fattori come la complessità dello sfruttamento, i privilegi richiesti, l'impatto sulla riservatezza/integrità/disponibilità dei dati. Questo consente di prioritizzare le remediation in modo oggettivo e confrontabile.
Piano di remediation: le raccomandazioni non si limitano a identificare il problema, ma indicano soluzioni concrete (patch da applicare, configurazioni da correggere, controlli da implementare) con indicazione di priorità e complessità stimata. Alcune organizzazioni richiedono anche un test di verifica (retest) dopo le remediation, per confermare che le vulnerabilità siano state effettivamente risolte.
Quanto costa un penetration test in Italia
È la domanda che tutti vogliono fare ma pochi fanno direttamente. La risposta onesta è: dipende da molti fattori, ma esistono range di riferimento utili per orientarsi.
Per un test di rete esterno su un perimetro medio (20-50 IP), i prezzi di mercato in Italia variano tipicamente tra 2.000 e 6.000 euro. Un web application penetration test su un'applicazione di complessità media oscilla tra 3.000 e 10.000 euro, con costi che aumentano significativamente per applicazioni complesse con molte funzionalità e API. Un red team engagement completo (che combina più vettori di attacco e simula un avversario persistente) può facilmente partire da 15.000-20.000 euro per engagement di qualità.
I fattori che influenzano il prezzo sono:
- Perimetro e complessità: più sistemi, più applicazioni, più funzionalità da testare, più alto il costo.
- Tipo di test: black box richiede più tempo di ricognizione; white box permette maggiore efficienza ma richiede preparazione della documentazione.
- Esperienza del provider: un team di seniority elevata e con certificazioni riconosciute (OSCP, CEH, CREST) costa di più, e vale di più. Un pentest economico condotto con strumenti automatizzati ha valore limitato.
- Scope geografico e modalità: test in presenza (per physical testing o per accesso a sistemi non raggiungibili remotamente) comportano costi aggiuntivi di trasferta.
- Retest: la verifica delle remediation dopo il test è spesso proposta come servizio separato.
Attenzione alle offerte eccessivamente economiche: un penetration test a poche centinaia di euro è quasi certamente un vulnerability scan automatizzato con un report generato da tool, non un test manuale condotto da un professionista esperto. La differenza in termini di valore è abissale.
Ogni quanto va fatto un penetration test
La frequenza dipende dal settore, dal profilo di rischio e dalla velocità con cui l'infrastruttura evolve. Come regola generale, un penetration test annuale è il minimo consigliato per qualsiasi organizzazione che abbia sistemi esposti su internet o che gestisca dati sensibili.
Tuttavia, ci sono eventi specifici che dovrebbero sempre innescare un test, indipendentemente dalla frequenza pianificata:
- Lancio di una nuova applicazione web o servizio digitale: prima del go-live, un pentest è fondamentale per non mettere in produzione vulnerabilità note.
- Cambiamenti significativi all'infrastruttura: migrazione cloud, adozione di nuovi sistemi ERP, ristrutturazione della rete: ogni cambiamento importante modifica la superficie di attacco.
- Dopo un incidente di sicurezza: per capire se la compromissione ha lasciato backdoor, e per identificare le vulnerabilità che hanno permesso l'attacco.
- Fusioni e acquisizioni: quando si integra una nuova azienda, si eredita anche la sua postura di sicurezza, e i suoi problemi.
- Prima di audit di conformità: NIS2, ISO 27001, PCI DSS richiedono o consigliano fortemente test di sicurezza regolari. Fare il pentest prima dell'audit permette di risolvere le vulnerabilità prima che le trovino i certificatori.
Penetration testing e conformità normativa
Il penetration testing non è solo una best practice tecnica: in molti contesti è un requisito esplicito o fortemente raccomandato dalle normative e dagli standard di settore.
PCI DSS (Payment Card Industry Data Security Standard): lo standard che regola la sicurezza dei sistemi che trattano dati di carte di pagamento richiede esplicitamente penetration test annuali e dopo ogni cambiamento significativo all'infrastruttura. La versione PCI DSS 4.0, entrata in vigore nel 2024, ha reso i requisiti ancora più stringenti, includendo test specifici su applicazioni web e API.
ISO 27001: lo standard internazionale per i sistemi di gestione della sicurezza delle informazioni non prescrive esplicitamente il penetration testing, ma l'Annex A include controlli relativi alla verifica tecnica della sicurezza che nella pratica vengono soddisfatti attraverso vulnerability assessment e penetration test. Gli auditor ISO 27001 tipicamente si aspettano evidenza di test tecnici periodici.
NIS2: come abbiamo visto nell'articolo dedicato, la Direttiva NIS2 richiede l'adozione di "misure tecniche e organizzative adeguate e proporzionate per gestire i rischi". Sebbene non menzioni esplicitamente il penetration testing per nome, l'ACN e le linee guida europee includono il test di sicurezza tra le misure attese da parte dei soggetti essenziali e importanti. Le organizzazioni soggette alla NIS2 che non conducono test tecnici periodici avranno difficoltà a dimostrare l'adeguatezza delle proprie misure di sicurezza in caso di ispezione.
GDPR: il Regolamento europeo sulla protezione dei dati richiede che le organizzazioni adottino "misure tecniche e organizzative adeguate" per proteggere i dati personali. Sebbene il penetration testing non sia citato direttamente, è uno dei modi più efficaci per dimostrare concretamente l'adeguatezza delle misure adottate, e per identificare vulnerabilità che potrebbero portare a data breach notificabili.
Conclusione
Il penetration testing è l'unico modo per sapere con certezza cosa succederebbe se un attaccante prendesse di mira la vostra organizzazione. Non è un lusso riservato alle grandi corporation: le PMI italiane sono bersagli frequenti proprio perché spesso meno protette, e un incidente può avere conseguenze devastanti su reputazione, operatività e finanze.
Investire in un pentest professionale significa comprare informazioni: sapere esattamente dove sono le vulnerabilità, qual è il loro impatto reale, e dove concentrare le risorse per ridurre il rischio in modo efficace. È un investimento che si ripaga spesso con un singolo incidente evitato.
Se vuoi capire come strutturare un piano di test di sicurezza per la tua azienda, che tu stia partendo da zero o voglia migliorare quello che hai già, contattaci per una consulenza gratuita. Analizzeremo insieme la tua situazione e ti proporremo un approccio proporzionato ai tuoi rischi e al tuo budget.