Penetration Testing – Ottenere Shell e TTY su Linux

Cosa accomuna Super Mario ai Penetration Test? Se pensiamo a Super Mario, i tubi e i loro terminali (pipe / terminali) e i gusci di tartaruga (shell) e la Nintendo (console) sono all’ordine del giorno. A cosa servono invece terminali, shell e console in un Penetration Test? Durante un attacco, quando siamo in Post-Exploitation e possiamo eseguire i comandi sulla macchina bersaglio attraverso una vulnerabilità web (normalmente delle Remote Code Execution – RCE) o tramite un exploit, solitamente necessitiamo di: una shell e un terminale/console. Inoltre (ma ne parleremo in un altro post) la possibilità di trasferire file. Questi elementi ci permettono di eseguire i passi successivi come Privilege Escalation, Persistenza e Pivoting.

Molto dipende dallo scopo del test e dalle regole di ingaggio, ma di norma presa una macchina con accesso locale non privilegiato si esegue una fase di enumeration per avere abbastanza informazioni per alzare i propri privilegi (Privilege Escalation), quindi poi si lavora su persistenza e pivoting (i celeberrimi movimenti laterali). In questo articolo ci focalizzeremo su come ottenere una shell interattiva su Linux.

Continue reading

Penetration Testing – Ricerca di vulnerabilità ed exploit noti #infosec

Quando abbiamo finito un’iterazione di enumeration, uno dei modi per procedere con la fase di attacco è quello di cercare la presenza di vulnerabilità ed exploit noti sui software che stiamo testando. Questa operazione non è l’unica che possiamo eseguire per trovare il modo di entrare in un sistema. E’ infatti possibile anche cercare misconfigurazioni, problematiche nelle password o ricercare nuove vulnerabilità. In questo articolo vedremo come cercare vulnerabilità note, trovare e modificare gli exploit per farli funzionare.

Continue reading

Penetration Testing – Enumeration di porte e servizi su TCP e UDP

Come abbiamo già detto, un Penetration Test è un susseguirsi di ricerche e di attacchi. L’enumeration è fondamentale.  non possiamo attaccare un servizio se non sappiamo che è in ascolto. Se Steve Ballmer dovesse fare un discorso a dei Penetration Tester, probabilmente batterebbe la mani su “Enumeration, Enumeration, Enumeration, Enumeration” allo stesso ritmo del suo famoso “Developers, Developers, Developers, Developers” [1] (ok, fa ridere solo a me 🙂 ). Presupponendo di aver  già identificato i sistemi su cui eseguire la nostra attività, è importante avere una strategia efficace delle porte aperte e come capire quali siano i servizi esposti. Come fare – velocemente – a capire quali sono le porte aperte e i servizi in ascolto? Questo approccio è particolarmente utile – per esempio – per l’OSCP.

 

Continue reading

Penetration Testing – Cos’è un Penetration Test

“Un penetration test, occasionalmente pen test, è un metodo per la valutazione della sicurezza di un sistema informatico o di una rete simulando un attacco da parte di attaccanti esterni (che non hanno di norma accesso ai sistemi informatici) e/o di attaccanti interni (che hanno un qualche livello di accesso autorizzato ai sistemi)”

Così il CREST [1] – un organizzazione no-profit di base inglese per il supporto al  mercato della sicurezza informatica definisce i penetration test. La stessa CREST mette in guardia sulla questione penetration test: spesso sui penetration test si usano molte parole “alla moda”(altrimenti “buzzword”) che possono creare confusione: per esempio ethical hacking, tiger teaming, vulnerability analysis, assessment ed assurance. Ma qual è il significato reale di questa definizione?

Continue reading