Linux Privilege Escalation mit GTFOBins – Angriffsvektoren und Schutzmaßnahmen

Einleitung

Privilege Escalation – also die Eskalation von Rechten – ist eine der zentralen Phasen in nahezu jedem Cyberangriff. Angreifer verschaffen sich oft zunächst nur einen eingeschränkten Zugang zu einem System, beispielsweise über einen kompromittierten Webserver oder einen schwachen Benutzer-Account. Ihr Ziel ist dann, diese begrenzten Rechte auszuweiten, um vollständige Kontrolle zu erlangen. Auf Linux-Systemen spielt dabei eine spezielle Ressource eine herausragende Rolle: GTFOBins.

GTFOBins ist eine kuratierte Sammlung von Unix-Binaries, die unter bestimmten Umständen missbraucht werden können, um Sicherheitskontrollen zu umgehen und Privilege Escalation oder andere Aktionen durchzuführen. In diesem Artikel werfen wir einen Blick darauf, was GTFOBins ist, wie es funktioniert, welche Szenarien es ermöglicht – und wie Administratoren sich schützen können.


Was ist GTFOBins?

Der Name „GTFOBins“ steht für “Get The F* Out Binaries”** – eine augenzwinkernde Bezeichnung für Unix-Programme, die als „Living off the Land“-Tools missbraucht werden können. Das Projekt ist Open Source und auf GitHub gepflegt. Es dokumentiert systematisch, welche Standardprogramme unter Linux/Unix gefährlich werden können, wenn sie mit falschen Rechten, etwa als SUID-Binaries, installiert sind oder über sudo mit Root-Rechten aufrufbar sind.

Beispiele sind Programme wie:

  • less, more, nano oder vim (können Shells spawnen)
  • find oder awk (ermöglichen Kommandoausführung)
  • tar, rsync, cp (können Dateien überschreiben oder exfiltrieren)
  • openssl, python, perl, lua (ermöglichen eigene Shells)

Das Besondere: GTFOBins liefert nicht nur eine Liste, sondern auch konkrete Snippets, wie das jeweilige Binary missbraucht werden kann. Damit ist es eine Art „Cheatsheet“ für Angreifer – aber ebenso wertvoll für Pentester und Admins.


Arten von Angriffen mit GTFOBins

GTFOBins unterteilt die potenziellen Missbrauchsmöglichkeiten in verschiedene Kategorien. Hier einige der wichtigsten:

1. Privilege Escalation

Viele Binaries können, wenn sie mit Root-Rechten laufen, dazu genutzt werden, eine Root-Shell zu öffnen. Beispiel:

sudo less /etc/hosts
# Innerhalb von less mit !/bin/sh eine Root-Shell starten

2. Shell-Spawning

Einige Tools erlauben direkt das Starten einer interaktiven Shell, z. B. vi, perl, python.

sudo python3 -c 'import os; os.system("/bin/sh")'

3. File Read / Write

Binaries wie cat, tee oder tar können verwendet werden, um Dateien zu lesen oder zu überschreiben, auf die der Benutzer normalerweise keinen Zugriff hätte.
Beispiel:

sudo tee /etc/sudoers <<< "user ALL=(ALL) NOPASSWD:ALL"

4. File Upload / Download

Manche Programme (curl, scp, wget) erlauben es, Daten ins System zu bringen oder herauszuschaffen – ideal für Angreifer, die Malware nachladen oder Daten exfiltrieren wollen.

5. Library Load / Execution

Einige Programme laden externe Bibliotheken oder Skripte nach. Angreifer können manipulierte Dateien platzieren, die dann mit Root-Rechten ausgeführt werden.


Typische Szenarien für Privilege Escalation

SUID-Binaries

Das SUID-Bit sorgt dafür, dass ein Binary immer mit den Rechten seines Besitzers ausgeführt wird – oft root. Standardmäßig sind einige Programme wie passwd oder ping so konfiguriert. Problematisch wird es, wenn Administratoren versehentlich zusätzlichen Programmen das SUID-Bit setzen.
Beispiel:

find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null

Findet man hier Programme aus GTFOBins, lässt sich oft direkt root werden.

Misskonfigurierte sudo-Regeln

Mit sudo -l können Benutzer sehen, welche Befehle sie ohne Passwort ausführen dürfen. Steht dort etwa vim, less, find oder python, ist eine Root-Shell meist nur einen Befehl entfernt.

Cron-Jobs

Laufen Cron-Jobs mit Root-Rechten und greifen auf Dateien in beschreibbaren Verzeichnissen zu, kann ein Angreifer Code einschleusen, der mit root ausgeführt wird.

Unsichere Pfadvariablen

Wenn root-Skripte Programme ohne vollständigen Pfad aufrufen, kann ein Angreifer manipulierte Binaries in den PATH einschleusen.


Vorgehen eines Angreifers

  1. Enumeration: Sammeln von Systeminformationen, SUID-Binaries suchen, sudo -l prüfen, Cron-Jobs und Services inspizieren.
  2. Abgleich mit GTFOBins: Überprüfen, ob gefundene Programme auf der Liste stehen.
  3. Proof-of-Concept: Snippets aus GTFOBins testen, ob Shells oder Dateizugriffe möglich sind.
  4. Privilege Escalation: Root-Shell öffnen oder Konfigurationsdateien manipulieren.
  5. Persistenz: Nutzer in sudoers hinzufügen, SSH-Key in /root/.ssh/authorized_keys platzieren oder Backdoor-Binary installieren.

Beispiel: Vom Benutzer zum Root über find

Ein Benutzer darf find mit sudo ausführen. Mit GTFOBins findet man:

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

Das reicht, um eine Root-Shell zu erhalten – ohne Ausnutzung einer Schwachstelle, rein durch Konfigurationsfehler.


Werkzeuge zur Automatisierung

Es gibt Skripte und Tools, die GTFOBins-Abfragen automatisieren und alle gängigen Privilege Escalation-Checks durchlaufen, z. B.:

  • linPEAS – automatisiertes Enumeration-Skript für Linux
  • Linux Exploit Suggester – schlägt Kernel-Exploits vor
  • pspy – überwacht Prozesse (z. B. Cron-Jobs)

Diese Tools enthalten viele GTFOBins-Techniken und sparen Zeit bei Penetrationstests.


Verteidigung und Hardening

Wie können Administratoren verhindern, dass GTFOBins zur Gefahr werden?

  1. Minimierung von SUID-Binaries
    • Nur notwendige Programme dürfen das SUID-Bit tragen.
    • Regelmäßig prüfen: find / -perm -4000 -type f
  2. Sichere sudo-Konfiguration
    • Nur exakt benötigte Befehle erlauben.
    • Keine „gefährlichen“ Programme wie vim, less, find zulassen.
    • Lieber Wrapper-Skripte erstellen.
  3. Monitoring
    • Änderungen an SUID-Binaries oder sudoers-Dateien überwachen.
    • SIEM/IDS einsetzen, um verdächtige Befehle zu erkennen.
  4. Least Privilege
    • Benutzer nur mit den Rechten ausstatten, die sie wirklich benötigen.
  5. Container & Isolation
    • Riskante Prozesse in Container packen, um mögliche Eskalationen zu begrenzen.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert