Apache Maven - Gestione di progetti Java e build automation
Mutagenesis
1. Generazione dinamica di scenari
per training di sicurezza
Andrea Valenza
Tutor accademico: Alessio Merlo
Tutor aziendale: Gabriele Costa
2. Obiettivo
Creare esercitazioni ispirate Locked Shields
❏Blue Team: difende i bersagli
❏Red Team: attacca i bersagli
❏Green Team: progetta, realizza e mantiene gli scenari
3. OpenStack
Tenant 1 Tenant 2 Tenant N...
User 1 User 2 User M
SSH
SSH SSH
...
Ogni tenant ha una quota di
risorse assegnate, che gestisce
come preferisce.
La topologia di rete del singolo
Tenant è completamente
virtualizzata a partire da una
pool di risorse condivise.
4. Generazione di scenari
Creazione di immagini per le singole VM: Packer
...
AMI (Amazon Machine Image)
VMDK (Virtual Machine Disk)
Build
6. Scenari e vulnerabilità
Gli scenari di interesse devono contenere vulnerabilità
❏ OS vulnerabili
❏ Password deboli o di default
❏ Utenti con privilegi troppo elevati
❏ ...
❏ Software vulnerabile
❏ Versioni specifiche con vulnerabilità note (CVE)
❏ Codice creato per esercitazioni su sicurezza informatica (es. Gruyere)
❏ Codice generico appositamente modificato
❏ ...
7. Proof of Concept: mutagenesis
Idea
Mutare un codice sorgente “sano” per introdurre una vulnerabilità desiderata
Procedimento
1. Si seleziona un codebase ritenuto non vulnerabile
2. Itentifico frammenti di codice candidati alla mutazione
3. Si effettua la mutazione in modo completo o parziale, guidato da una chiave
4. (ad es: il primo candidato viene mutato, il secondo no, ecc.)
5. Si verifica se la mutazione ha introdotto una vulnerabilità
8. Proof of Concept: mutagenesis
Verifica di vulnerabilità
❏Approccio black-box: PenTest con strumenti noti (OWASP ZAP, Vega, ecc.)
❏ Success: vulnerabilità inserita e attacco confermato
❏ Fail: vulnerabilità non trovata o attacco non confermato
9. Proof of Concept: mutagenesis
Verifica di vulnerabilità
❏Approccio white-box: PenTest + Code Coverage Analysis tramite debugger
❏ Success: vulnerabilità inserita e attacco confermato
❏ Fail: due possibili sotto casi identificati da CC analysis
❏ Codice raggiunto => vulnerabilità non inserita
❏ Codice non raggiunto => vulnerabilità non testata
❏ Nuovo test per esaminare il codice non raggiunto
10. Demo: abilitare XSS in Twig
<script>alert(‘ciao’);</script>
<script>alert(‘ciao’);</script>
11. Demo: abilitare XSS in Twig
<script>alert(‘ciao’);</script>
<script>alert(‘ciao’);</script>
12. Conclusioni
Al momento si possono creare:
❏Infrastrutture virtuali
❏Macchine vulnerabili
❏Codice vulnerabile
Sviluppi futuri:
❏Linguaggio di specifiche per la generazione automatica di scenari