complete penetration testing guide with sample test cases
È il processo per identificare le vulnerabilità di sicurezza in un'applicazione valutando il sistema o la rete con varie tecniche dannose. I punti deboli di un sistema vengono sfruttati in questo processo attraverso un attacco simulato autorizzato.
Lo scopo di questo test è proteggere i dati importanti da estranei come gli hacker che possono avere accesso non autorizzato al sistema. Una volta identificata la vulnerabilità, viene utilizzata per sfruttare il sistema per ottenere l'accesso a informazioni sensibili.
Un penetration test è anche noto come pen test e un penetration tester è anche indicato come un hacker etico.
Cosa imparerai:
- Cos'è il Penetration Test?
- Cause delle vulnerabilità
- Strumenti e aziende di penetration test
- Strumenti consigliati per il Penetration Test
- Azienda di Penetration Testing consigliata
- Perché il Penetration Test?
- Cosa dovrebbe essere testato?
- Tipi di test di penetrazione
- Tecniche di test della penna
- Test di penetrazione Esempi di casi di test (scenari di test)
- Conclusione
Cos'è il Penetration Test?
Possiamo individuare le vulnerabilità di un sistema informatico, un'applicazione web o una rete tramite test di penetrazione.
Un test di penetrazione indica se le misure difensive esistenti impiegate nel sistema sono abbastanza forti da prevenire eventuali violazioni della sicurezza. I rapporti sui test di penetrazione suggeriscono anche le contromisure che possono essere adottate per ridurre il rischio di hackeraggio del sistema.
Cause delle vulnerabilità
- Errori di progettazione e sviluppo : Possono esserci difetti nella progettazione di hardware e software. Questi bug possono mettere a rischio di esposizione i tuoi dati business-critical.
- Configurazione del sistema scadente : Questa è un'altra causa di vulnerabilità. Se il sistema è configurato male, può introdurre scappatoie attraverso le quali gli aggressori possono entrare nel sistema e rubare le informazioni.
- Errori umani : Fattori umani come l'eliminazione impropria dei documenti, lasciare i documenti incustoditi, errori di codifica, minacce interne, condivisione di password su siti di phishing, ecc. Possono portare a violazioni della sicurezza.
- Connettività : Se il sistema è connesso a una rete non protetta (connessioni aperte), è alla portata degli hacker.
- Complessità : La vulnerabilità della sicurezza aumenta in proporzione alla complessità di un sistema. Più funzionalità ha un sistema, maggiori sono le possibilità che il sistema venga attaccato.
- Le password : Le password vengono utilizzate per impedire l'accesso non autorizzato. Dovrebbero essere abbastanza forti da non consentire a nessuno di indovinare la tua password. Le password non dovrebbero essere condivise con nessuno a nessun costo e le password dovrebbero essere cambiate periodicamente. Nonostante queste istruzioni, a volte le persone rivelano le loro password ad altri, le annotano da qualche parte e conservano password facili da indovinare.
- Input dell'utente : Devi aver sentito parlare di SQL injection, buffer overflow, ecc. I dati ricevuti elettronicamente tramite questi metodi possono essere utilizzati per attaccare il sistema ricevente.
- Gestione : La sicurezza è difficile e costosa da gestire. A volte le organizzazioni non sono in ritardo nella corretta gestione del rischio e quindi la vulnerabilità viene indotta nel sistema.
- Mancanza di formazione al personale : Questo porta a errori umani e altre vulnerabilità.
- Comunicazione : Canali come reti mobili, Internet, telefono aprono la strada ai furti di sicurezza.
Strumenti e aziende di penetration test
È possibile utilizzare strumenti automatizzati per identificare alcune vulnerabilità standard presenti in un'applicazione. Gli strumenti Pentest scansionano il codice per verificare se è presente un codice dannoso che può portare a una potenziale violazione della sicurezza. Gli strumenti Pentest possono verificare le falle di sicurezza presenti nel sistema esaminando le tecniche di crittografia dei dati e individuando valori hard-coded come nome utente e password.
Criteri per selezionare il miglior strumento di penetrazione:
- Dovrebbe essere facile da distribuire, configurare e utilizzare.
- Dovrebbe scansionare facilmente il tuo sistema.
- Dovrebbe classificare le vulnerabilità in base alla gravità che necessita di una correzione immediata.
- Dovrebbe essere in grado di automatizzare la verifica delle vulnerabilità.
- Dovrebbe verificare nuovamente gli exploit trovati in precedenza.
- Dovrebbe generare rapporti e log dettagliati sulle vulnerabilità.
Una volta che sai quali test devi eseguire, puoi addestrare le tue risorse di test interne o assumere consulenti esperti per svolgere l'attività di penetrazione per te.
Strumenti consigliati per il Penetration Test
# 1) Acunetix
Acunetix WVS offre sia ai professionisti della sicurezza che agli ingegneri del software una gamma di straordinarie funzionalità in un pacchetto semplice, diretto e molto robusto.
=> Prova qui il miglior strumento per il test della penna
# 2) Intruso
Intruso è un potente scanner di vulnerabilità che rileva i punti deboli della sicurezza informatica nel tuo patrimonio digitale, spiega i rischi e aiuta a rimediarli prima che si verifichi una violazione. È lo strumento perfetto per automatizzare i tuoi sforzi di penetration test.
Caratteristiche principali :
- Oltre 9.000 controlli automatici nell'intera infrastruttura IT.
- Controlli dell'infrastruttura e del livello web, come SQL injection e cross-site scripting.
- Esegue automaticamente la scansione dei sistemi quando vengono scoperte nuove minacce.
- Integrazioni multiple: AWS, Azure, Google Cloud, API, Jira, Teams e altro.
- Intruder offre una prova gratuita di 30 giorni del suo piano Pro.
Azienda di Penetration Testing consigliata
# 1) ImmuniWeb®
ImmuniWeb® è una società di test di penetrazione con sede a Ginevra, Svizzera. La sua piattaforma di test di penetrazione delle applicazioni abilitata per DevSecOps combina gli esseri umani con l'intelligenza artificiale e viene fornita con zero SLA di falsi positivi, rilevamento delle vulnerabilità più elevato e reporting utilizzabile.
ImmuniWeb offre test di penetrazione delle applicazioni completi di app Web e mobili interne ed esterne, API e servizi Web, server di posta, dispositivi IoT e altro ancora.
Caratteristiche principali:
- Rilevamento continuo di nuovi codici.
- Test manuali rapidi ed economici.
- Capacità di patch virtuale con un clic.
- Accesso 24 ore su 24, 7 giorni su 7 agli analisti della sicurezza.
- DevSecOps e integrazione CI / CD.
- Ordine immediato e consegna rapida.
- Cruscotto multiruolo.
Altri strumenti gratuiti:
Servizi commerciali:
Puoi anche fare riferimento all'elenco seguente disponibile su STH che parla di 37 potenti strumenti di test di penetrazione => Potenti strumenti di Penetration Test per ogni Penetration Tester
come si inverte un array in posizione in java?
Perché il Penetration Test?
Devi aver sentito parlare dell'attacco ransomware WannaCry iniziato a maggio 2017. Ha bloccato più di 2 lakh computer in tutto il mondo e ha richiesto pagamenti di riscatto nella criptovaluta Bitcoin. Questo attacco ha colpito molte grandi organizzazioni in tutto il mondo.
Con attacchi informatici così massicci e pericolosi che si verificano in questi giorni, è diventato inevitabile eseguire test di penetrazione a intervalli regolari per proteggere i sistemi informativi dalle violazioni della sicurezza.
Quindi, il Penetration Test è richiesto principalmente per:
- I dati finanziari o critici devono essere protetti durante il trasferimento tra diversi sistemi o sulla rete.
- Molti clienti richiedono il test della penna come parte del ciclo di rilascio del software.
- Per proteggere i dati dell'utente.
- Per trovare vulnerabilità di sicurezza in un'applicazione.
- Per scoprire le scappatoie nel sistema.
- Per valutare l'impatto sul business degli attacchi riusciti.
- Per soddisfare la conformità alla sicurezza delle informazioni nell'organizzazione.
- Per implementare una strategia di sicurezza efficace nell'organizzazione.
Qualsiasi organizzazione deve identificare i problemi di sicurezza presenti nella rete interna e nei computer. Utilizzando queste informazioni, l'organizzazione può pianificare una difesa contro qualsiasi tentativo di hacking. La privacy degli utenti e la sicurezza dei dati sono le maggiori preoccupazioni al giorno d'oggi.
Immagina se un hacker riesce a ottenere i dettagli dell'utente di un sito di social networking come Facebook. L'organizzazione può affrontare problemi legali a causa di una piccola scappatoia lasciata in un sistema software. Pertanto, le grandi organizzazioni sono alla ricerca di certificazioni di conformità PCI (Payment Card Industry) prima di fare affari con clienti di terze parti.
Cosa dovrebbe essere testato?
- Software (sistema operativo, servizi, applicazione)
- Hardware
- Rete
- Processi
- Comportamento dell'utente finale
Tipi di test di penetrazione
# 1) Test di ingegneria sociale: In questo test, vengono effettuati tentativi per indurre una persona a rivelare informazioni sensibili come password, dati aziendali critici, ecc. Questi test vengono eseguiti principalmente tramite telefono o Internet e sono rivolti a determinati helpdesk, dipendenti e processi.
Gli errori umani sono le principali cause di vulnerabilità della sicurezza. Gli standard e le politiche di sicurezza dovrebbero essere seguiti da tutti i membri del personale per evitare tentativi di penetrazione dell'ingegneria sociale. Un esempio di questi standard include non menzionare alcuna informazione sensibile nella comunicazione e-mail o telefonica. È possibile condurre audit di sicurezza per identificare e correggere i difetti di processo.
# 2) Test dell'applicazione Web: Utilizzando metodi software è possibile verificare se l'applicazione è esposta a vulnerabilità di sicurezza. Controlla la vulnerabilità di sicurezza delle app Web e dei programmi software posizionati nell'ambiente di destinazione.
# 3) Test di penetrazione fisica: Forti metodi di sicurezza fisica vengono applicati per proteggere i dati sensibili. Questo è generalmente utilizzato nelle strutture militari e governative. Tutti i dispositivi di rete fisici e gli access point vengono testati per verificare la possibilità di qualsiasi violazione della sicurezza. Questo test non è molto rilevante per l'ambito del test del software.
# 4) Test dei servizi di rete : Questo è uno dei test di penetrazione più comunemente eseguiti in cui vengono identificate le aperture nella rete mediante le quali viene effettuato l'ingresso nei sistemi sulla rete per verificare che tipo di vulnerabilità sono presenti. Può essere fatto localmente o in remoto.
# 5) Test lato client : Mira a cercare e sfruttare le vulnerabilità nei programmi software lato client.
# 6) Dial di guerra remoto dial-up : Cerca modem nell'ambiente e cerca di accedere ai sistemi collegati tramite questi modem indovinando la password o forzando brute.
# 7) Test di sicurezza wireless : Rileva gli hotspot o le reti Wi-Fi aperti, non autorizzati e meno protetti e si connette attraverso di essi.
Le 7 categorie precedenti che abbiamo visto sono un modo per classificare i tipi di pen test. Possiamo anche organizzare i tipi di test di penetrazione in tre parti come mostrato di seguito:
Discutiamo uno per uno questi approcci di test:
- Penetrazione della scatola nera : In questo approccio, il tester valuta il sistema, la rete o il processo di destinazione senza la conoscenza dei suoi dettagli. Hanno solo un livello molto alto di input come l'URL o il nome dell'azienda utilizzando il quale penetrano nell'ambiente di destinazione. Nessun codice viene esaminato in questo metodo.
- Test di penetrazione della scatola bianca : In questo approccio, il tester è dotato di dettagli completi sull'ambiente di destinazione: sistemi, rete, sistema operativo, indirizzo IP, codice sorgente, schema, ecc. Esamina il codice e rileva errori di progettazione e sviluppo. È una simulazione di un attacco alla sicurezza interna.
- Penetrazione della scatola grigia : In questo approccio, il tester ha dettagli limitati sull'ambiente di destinazione. È una simulazione di attacchi di sicurezza esterni.
Tecniche di test della penna
- Test di penetrazione manuale
- Utilizzo di strumenti di penetration test automatizzati
- Combinazione di processo sia manuale che automatizzato
Il terzo processo è più comune per identificare tutti i tipi di vulnerabilità.
Test di penetrazione manuale
È difficile trovare tutte le vulnerabilità utilizzando strumenti automatici. Ci sono alcune vulnerabilità che possono essere identificate solo dalla scansione manuale. I penetration tester possono eseguire attacchi migliori alle applicazioni in base alle loro capacità e alla conoscenza del sistema che viene penetrato.
I metodi come l'ingegneria sociale possono essere eseguiti solo dagli esseri umani. Il controllo manuale include la progettazione, la logica aziendale e la verifica del codice.
Processo del test di penetrazione:
Parliamo del processo effettivo seguito dalle agenzie di test o dai penetration tester. L'identificazione delle vulnerabilità presenti nel sistema è il primo passo importante in questo processo. Viene intrapresa un'azione correttiva su questa vulnerabilità e gli stessi test di penetrazione vengono ripetuti fino a quando il sistema non è negativo a tutti quei test.
Possiamo classificare questo processo nei seguenti metodi:
# 1) Raccolta dati: Vari metodi, inclusa la ricerca su Google, vengono utilizzati per ottenere i dati del sistema di destinazione. Si può anche utilizzare la tecnica di analisi del codice sorgente della pagina web per ottenere maggiori informazioni sulle versioni del sistema, del software e dei plugin.
Sul mercato sono disponibili molti strumenti e servizi gratuiti che possono fornire informazioni come nomi di database o tabelle, versioni di DB, versioni di software, hardware utilizzato e vari plugin di terze parti utilizzati nel sistema di destinazione.
# 2) Valutazione delle vulnerabilità: Sulla base dei dati raccolti nella prima fase è possibile individuare la debolezza della sicurezza nel sistema di destinazione. Ciò aiuta i penetration tester a lanciare attacchi utilizzando punti di ingresso identificati nel sistema.
# 3) Exploit effettivo: Questo è un passaggio cruciale. Richiede abilità e tecniche speciali per lanciare un attacco al sistema di destinazione. I penetration tester esperti possono utilizzare le proprie capacità per lanciare un attacco al sistema.
# 4) Risultato nell'analisi e nella preparazione del report: Dopo il completamento dei test di penetrazione, vengono preparati rapporti dettagliati per l'adozione di azioni correttive. Tutte le vulnerabilità identificate e i metodi correttivi consigliati sono elencati in questi rapporti. Puoi personalizzare il formato del rapporto sulle vulnerabilità (HTML, XML, MS Word o PDF) secondo le esigenze della tua organizzazione.
Test di penetrazione Esempi di casi di test (scenari di test)
Ricorda che questo non è un test funzionale. In Pentest il tuo obiettivo è trovare falle di sicurezza nel sistema. Di seguito sono riportati alcuni casi di test generici e non necessariamente applicabili a tutte le applicazioni.
- Verificare se l'applicazione Web è in grado di identificare gli attacchi di spam sui moduli di contatto utilizzati sul sito Web.
- Server proxy: controlla se il traffico di rete è monitorato da dispositivi proxy. Il server proxy rende difficile per gli hacker ottenere i dettagli interni della rete proteggendo così il sistema da attacchi esterni.
- Filtri e-mail di spam: verifica se il traffico e-mail in entrata e in uscita viene filtrato e le e-mail non richieste sono bloccate.
- Molti client di posta elettronica sono dotati di filtri antispam integrati che devono essere configurati in base alle proprie esigenze. Queste regole di configurazione possono essere applicate alle intestazioni, all'oggetto o al corpo dell'email.
- Firewall: assicurati che l'intera rete o i computer siano protetti con firewall. Un firewall può essere software o hardware per bloccare l'accesso non autorizzato a un sistema. Un firewall può impedire l'invio di dati all'esterno della rete senza la tua autorizzazione.
- Prova a sfruttare tutti i server, i sistemi desktop, le stampanti e i dispositivi di rete.
- Verifica che tutti i nomi utente e le password siano crittografati e trasferiti tramite connessioni protette come https.
- Verifica le informazioni archiviate in cookie del sito web . Non dovrebbe essere in un formato leggibile.
- Verificare le vulnerabilità trovate in precedenza per verificare se la correzione funziona.
- Verificare se non ci sono porte aperte nella rete.
- Verifica tutti i dispositivi telefonici.
- Verifica la sicurezza della rete WIFI.
- Verifica tutti i metodi HTTP. I metodi PUT e Delete non dovrebbero essere abilitati su un server web.
- Verificare se la password soddisfa gli standard richiesti. La password deve essere lunga almeno 8 caratteri e contenere almeno un numero e un carattere speciale.
- Il nome utente non deve essere come 'admin' o 'administrator'.
- La pagina di accesso dell'applicazione dovrebbe essere bloccata dopo alcuni tentativi di accesso non riusciti.
- I messaggi di errore devono essere generici e non devono menzionare dettagli di errore specifici come 'Nome utente non valido' o 'Password non valida'.
- Verificare se i caratteri speciali, i tag HTML e gli script vengono gestiti correttamente come valori di input.
- I dettagli del sistema interno non devono essere rivelati in nessuno dei messaggi di errore o di avviso.
- I messaggi di errore personalizzati dovrebbero essere visualizzati agli utenti finali in caso di arresto anomalo della pagina web.
- Verificare l'utilizzo delle voci di registro. Le informazioni sensibili non dovrebbero essere conservate nel registro.
- Tutti i file devono essere scansionati prima di caricarli sul server.
- I dati sensibili non devono essere passati negli URL durante la comunicazione con diversi moduli interni dell'applicazione web.
- Non dovrebbe esserci alcun nome utente o password hardcoded nel sistema.
- Verifica tutti i campi di input con una stringa di input lunga con e senza spazi.
- Verificare se la funzionalità di reimpostazione della password è sicura.
- Verifica l'applicazione per SQL Injection .
- Verifica l'applicazione per Cross Site Scripting .
- Importanti convalide di input dovrebbero essere eseguite sul lato server invece di controlli JavaScript sul lato client.
- Le risorse critiche nel sistema dovrebbero essere disponibili solo alle persone e ai servizi autorizzati.
- Tutti i log di accesso devono essere mantenuti con le autorizzazioni di accesso appropriate.
- Verificare che la sessione utente termini alla disconnessione.
- Verificare che l'esplorazione della directory sia disabilitata sul server.
- Verificare che tutte le applicazioni e le versioni del database siano aggiornate.
- Verifica la manipolazione dell'URL per controllare se un'applicazione web non mostra informazioni indesiderate.
- Verificare la perdita di memoria e l'overflow del buffer.
- Verificare se il traffico di rete in entrata viene scansionato per rilevare attacchi di Troia.
- Verifica se il sistema è protetto dagli attacchi di forza bruta: un metodo di prova ed errore per trovare informazioni sensibili come le password.
- Verificare se il sistema o la rete è protetto da attacchi DoS (denial-of-service). L'hacker può prendere di mira la rete o un singolo computer con richieste continue a causa delle quali le risorse sul sistema di destinazione vengono sovraccaricate con conseguente negazione del servizio per richieste legittime.
- Verifica l'applicazione per gli attacchi di iniezione di script HTML.
- Verifica contro attacchi COM e ActiveX.
- Verifica contro gli attacchi di spoofing. Lo spoofing può essere di diversi tipi: spoofing dell'indirizzo IP, spoofing dell'ID e-mail,
- Spoofing ARP, spoofing referrer, spoofing ID chiamante, avvelenamento di reti di condivisione file, spoofing GPS.
- Verificare la presenza di un attacco di stringa di formato non controllato, un attacco alla sicurezza che può causare l'arresto anomalo dell'applicazione o eseguire lo script dannoso su di essa.
- Verifica attacco XML injection: utilizzato per modificare la logica prevista dell'applicazione.
- Verifica contro gli attacchi di canonicalizzazione.
- Verifica se le pagine di errore visualizzano informazioni che possono essere utili per l'accesso di un hacker nel sistema.
- Verificare se i dati critici come la password sono archiviati in file segreti sul sistema.
- Verificare se l'applicazione restituisce più dati di quelli richiesti.
Questi sono solo gli scenari di test di base per iniziare con Pentest. Esistono centinaia di metodi di penetrazione avanzati che possono essere eseguiti manualmente o con l'aiuto di strumenti di automazione.
Ulteriori letture:
Standard di prova della penna
- PCI DSS (Standard di protezione dei dati del settore delle carte di pagamento)
- OWASP (Apri progetto di sicurezza dell'applicazione Web)
- ISO / IEC 27002 , OSSTMM (Manuale sulla metodologia dei test di sicurezza open source)
Certificazioni
- GPEN
- Associate Security Tester ( AST )
- Senior Security Tester (SST)
- Penetration Tester certificato ( CPT )
Conclusione
Infine, come penetration tester, dovresti raccogliere e registrare tutte le vulnerabilità nel sistema. Non ignorare alcuno scenario considerando che non verrà eseguito dagli utenti finali.
qual è il sistema operativo più recente
Se sei un penetration tester, aiuta i nostri lettori con la tua esperienza, i tuoi suggerimenti e esempi di test case su come eseguire i Penetration Test in modo efficace.
Lettura consigliata
- 19 potenti strumenti di penetration test utilizzati dai professionisti nel 2021
- Guida per principianti al penetration test di applicazioni Web
- Alpha test e beta test (una guida completa)
- Test di sicurezza di rete e migliori strumenti di sicurezza di rete
- Guida al test di sicurezza delle applicazioni Web
- Guida completa al test di verifica della costruzione (test BVT)
- Test funzionale vs test non funzionale
- Migliori strumenti di test del software 2021 (Strumenti di automazione del test QA)