Il software è garantito per avere bug. Possono esserci molte migliaia di righe di codice nel software e la fallibilità umana significa che almeno alcune di esse non saranno complete come previsto. Il ciclo di vita dello sviluppo del software è un processo progettato per cercare di ridurre al minimo questi problemi mediante test regolari.
Il problema è che i test vengono spesso eseguiti dagli sviluppatori, che potrebbero aver imparato a codificare qualcosa ma potrebbero non aver appreso pratiche di codifica sicure. Anche in sistemi accuratamente testati, avere un osservatore esterno che guardi e introduca una nuova prospettiva può aiutare a identificare nuovi problemi.
Un modo comune per farlo è tramite un test di penetrazione, tipicamente abbreviato in un pentest. Ciò implica che un hacker professionista ed etico, un pentester, esamini il sistema e trovi eventuali problemi di sicurezza.
Suggerimento: è "pentest" e "pentester", non "pen test". Un pentester non prova le penne. "Pen-test" è leggermente più accettabile di "pen test", ma generalmente dovrebbe essere evitato.
L'obiettivo di un Pentest
L'obiettivo di qualsiasi pentest è identificare tutte le vulnerabilità di sicurezza nel sistema in fase di test e segnalarle al cliente. In genere, tuttavia, gli impegni sono in qualche modo limitati nel tempo in base al costo. Se un'azienda ha un pentester interno o un team pentest, possono lavorare in modo permanente per l'azienda. Tuttavia, molte aziende con le dimensioni per questo hanno un ampio portafoglio di sistemi che devono essere testati. Ciò include sia i prodotti venduti che i sistemi aziendali dell'azienda.
In quanto tali, non possono passare tutto il loro tempo a testare una cosa. Molte aziende preferiscono assumere una società di pentesting esterna per eseguire l'incarico. Questo è ancora limitato nel tempo in base al costo. Il costo è determinato dal fatto che un pentest è un processo molto manuale e che le competenze scarseggiano.
In genere, un pentest sarà limitato a un periodo di tempo specifico. Questo viene fatto in base all'obiettivo in questione e al tempo necessario per essere ragionevolmente sicuri di aver trovato tutto. La sequenza temporale per la ricerca delle vulnerabilità è generalmente una curva a campana. Non si trova molto all'istante mentre il pentester guarda intorno all'applicazione. Quindi la stragrande maggioranza dei risultati può essere raggiunta entro una scala temporale specifica prima di diminuire gradualmente. Ad un certo punto, il costo di passare più tempo a cercare non vale la possibilità che non ci sia nient'altro da trovare.
A volte, anche il prezzo indicato per il tempo consigliato è troppo. In questo caso, il test può essere "time boxed". È qui che il cliente accetta di non testare tanto quanto raccomandato, ma desidera che i pentester facciano il meglio che possono in un lasso di tempo ridotto. In genere, questo è incluso come avvertenza nel rapporto.
Processo manuale
Sono disponibili alcuni strumenti per eseguire automaticamente i test di sicurezza. Questi possono essere utili. Tuttavia, hanno spesso tassi elevati di falsi positivi e falsi negativi. Ciò significa che devi dedicare del tempo a scavare attraverso la verifica dei problemi, sapendo che potrebbe non essere completo. La maggior parte di questi strumenti cerca indicatori specifici, come versioni note di software vulnerabili o funzioni note di vulnerabilità. Tuttavia, ci sono molti modi in cui questi non sono problemi reali o mitigati nella pratica.
Le vulnerabilità della sicurezza possono derivare da un mucchio di pezzi apparentemente innocui. Il modo migliore per individuarlo è attraverso lo sforzo umano manuale. I pentester usano strumenti ma sanno interpretare i risultati, verificarli manualmente ed eseguire azioni manuali indipendenti. Questo sforzo manuale separa un pentest da una scansione di vulnerabilità o valutazione di vulnerabilità.
Tipi di Pentest
In genere, un pentest comporta il test di un intero prodotto così come verrebbe distribuito. Idealmente, ciò accade in un ambiente di produzione reale. Tuttavia, questo non è sempre pratico. Primo, c'è il timore che il pentest possa mettere offline il bersaglio. In generale, questa paura è essenzialmente infondata. I pentest generalmente non generano troppo traffico di rete, forse l'equivalente di pochi utenti attivi in più. Inoltre, i pentester non testeranno deliberatamente problemi di tipo denial-of-service, specialmente negli ambienti di produzione. Invece, in genere segnalano sospetti problemi di negazione del servizio per consentire al cliente di indagare da solo.
Inoltre, vale la pena notare che se il sistema è connesso a Internet, è costantemente soggetto a "pentest gratuiti" da parte di veri hacker black hat e dei loro bot. Un altro motivo per evitare gli ambienti di produzione sono i problemi di privacy con i dati degli utenti in tempo reale. I pentester sono hacker etici sotto NDA e contratti, ma se esiste un ambiente di test ed è simile, può essere utilizzato.
Suggerimento: un "pentest gratuito" è un modo scherzoso di riferirsi all'essere sotto attacco da parte di cappelli neri su Internet.
I pentest possono essere eseguiti praticamente contro qualsiasi sistema tecnologico. I siti Web e l'infrastruttura di rete sono i tipi più comuni di test. Ottieni anche test API, test "thick client", test mobili, test hardware e altro ancora.
Variazioni sul tema
Realisticamente, gli esercizi di phishing, OSINT e Red Team sono correlati ma leggermente diversi. Probabilmente sei a conoscenza della minaccia del phishing. Alcuni test prevedono test per vedere come i dipendenti rispondono alle e-mail di phishing. Tenendo traccia del modo in cui gli utenti interagiscono, o meno, con il phishing, è possibile apprendere come personalizzare la futura formazione sul phishing.
OSINT sta per Open Source INTelligence. Un test OSINT ruota attorno allo scraping di informazioni pubblicamente disponibili per vedere come possono essere raccolti dati preziosi e come potrebbero essere utilizzati. Ciò comporta spesso la generazione di elenchi di dipendenti da luoghi come LinkedIn e il sito Web dell'azienda. Ciò può consentire a un utente malintenzionato di identificare figure di alto livello che potrebbero essere buoni bersagli per un attacco di spear phishing, un phishing specificamente adattato al singolo destinatario.
Un coinvolgimento del team rosso è in genere molto più approfondito e può coinvolgere alcuni o tutti gli altri componenti. Può anche includere il test della sicurezza fisica e il rispetto della politica di sicurezza. Dal punto di vista politico, ciò comporta l'ingegneria sociale. Questo sta cercando di convincerti ad entrare nell'edificio. Questo può essere semplice come uscire nell'area fumatori e rientrare con i fumatori dopo una pausa fumo.
Può fingere di essere un funzionario o chiedere a qualcuno di procurarti una porta mentre porti un vassoio per la tazza di caffè. Dal punto di vista della sicurezza fisica, può anche comportare il tentativo di irrompere fisicamente, testare la copertura della telecamera, la qualità dei blocchi e simili. Gli impegni del team rosso in genere coinvolgono un team di persone e possono durare tempi molto più lunghi rispetto ai normali pentest.
Squadre rosse
Un esercizio della squadra rossa può sembrare meno etico di un pentest standard. Il tester sta depredando attivamente dipendenti ignari. La chiave è che hanno il permesso della leadership aziendale, in genere dal livello del consiglio di amministrazione. Questa è l' unica ragione per cui va bene che un giocatore della Red Team cerchi effettivamente di irrompere. Nulla gli permette di essere violento, però. Un esercizio della squadra rossa non cercherà mai di ferire o sottomettere una guardia di sicurezza, di aggirarla o ingannarla.
Per evitare che il giocatore della squadra rossa venga arrestato, generalmente porterà un contratto firmato con le firme dei membri del consiglio di approvazione. Se catturato, questo può essere usato per dimostrare che avevano il permesso. Naturalmente, a volte, questo è usato come un doppio bluff. Il Red Teamer può portare con sé due tagliandi di autorizzazione, uno vero e uno falso.
Quando vengono scoperti, inizialmente consegnano il falso tagliando di autorizzazione per vedere se riescono a convincere la sicurezza che è legittimo anche quando non lo è. A tal fine, utilizzerà spesso i nomi effettivi del consiglio di amministrazione dell'azienda, ma includerà un numero di telefono di verifica che va a un altro membro della squadra rossa incaricato di verificare la storia di copertina. Naturalmente, se la sicurezza vede attraverso questo, viene consegnata la vera ricevuta di autorizzazione. Questo può quindi essere trattato con grande sospetto, però.
A seconda di come è stato catturato il membro della squadra rossa, potrebbe essere possibile continuare il test, supponendo che abbia aggirato la singola guardia di sicurezza che lo ha catturato. Tuttavia, è possibile che l'identità del tester possa essere "soffiata", essenzialmente rimuovendolo da qualsiasi ulteriore test di persona. A questo punto, un altro membro del team può eseguire lo scambio con o senza informare la sicurezza.
Conclusione
Un pentest è un impegno in cui a un professionista della sicurezza informatica viene chiesto di testare la sicurezza di un sistema informatico. Il test prevede la ricerca e la verifica manuale della presenza di vulnerabilità. Strumenti automatizzati possono essere utilizzati come parte di questo. Al termine del test, viene fornito un report che dettaglia i problemi riscontrati e fornisce consigli per risolverli.
È importante che questo rapporto non sia solo l'output automatico di uno strumento, ma sia stato testato e verificato manualmente. Qualsiasi sistema informatico, hardware, rete, applicazione o dispositivo può essere pentestato. Le competenze necessarie per ciascuno variano ma spesso sono complementari.