2. SUID-Binaries analysieren
SUID-Binaries zur Privilege Escalation
Diese Seite beschreibt, wie SUID-Binaries zur Privilege Escalation in Unix/Linux-Systemen verwendet werden können. Es wird erläutert, wie man sie identifiziert, analysiert und mögliche Exploits entwickelt. Ziel ist ein grundlegendes Verständnis der Sicherheitsimplikationen und der praktischen Ausnutzung.
Hinweis: Dieser Artikel konzentriert sich auf generische Methoden und ist nicht an ein spezifisches CTF oder System gebunden.
Grundlagen
Was sind SUID-Binaries?
Ein SUID-Binary (Set-User-ID) ist eine ausführbare Datei mit einem speziellen Berechtigungsbit. Wenn dieses Bit gesetzt ist, wird das Programm mit den Rechten des Datei-Eigentümers (häufig root) ausgeführt, unabhängig davon, welcher Benutzer es startet.
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Jan 1 00:00 /usr/bin/passwd # Das "s" im Besitzerbereich zeigt SUID anWarum sind SUID-Binaries sicherheitsrelevant?
Ein falsch konfiguriertes oder unsicher programmiertes SUID-Binary kann es einem lokalen Angreifer ermöglichen, höhere Rechte zu erlangen – typischerweise root. Typische Schwachstellen sind:
Aufrufe von Shell-Kommandos ohne absolute Pfade
Nutzung von Umgebungsvariablen (z. B.
EDITOR,PAGER)Unsichere Funktionsaufrufe wie
system()oderpopen()
Voraussetzungen für eine Ausnutzung
Lokaler Zugriff mit eingeschränkten Benutzerrechten
Ausführbare SUID-Binary (z. B. über Gruppenrechte)
Angriffsfläche wie nicht-absolute Pfadangaben oder kontrollierbare Umgebungsvariablen
Schreibrechte auf ein Verzeichnis wie
/tmp
Auffinden von SUID-Binaries
Alle SUID-Binaries mit Root als Besitzer finden:
Nach gruppenspezifischen Binaries suchen:
Rechte und Dateityp prüfen:
Analyse von SUID-Binaries
Eine gründliche Analyse hilft dabei zu verstehen, ob und wie eine SUID-Binary ausnutzbar ist. Dabei geht es um folgende Aspekte:
1. Verhalten beim Start
Führe die Binary direkt aus:
Beobachte die Eingaben, Ausgaben und mögliche Fehlermeldungen. Diese geben Hinweise auf:
erwartete Benutzerinteraktion
genutzte interne Tools
potentielle Dateizugriffe
2. Strings und Abhängigkeiten
Suche nach:
eingebetteten Pfaden (z. B.
/bin/sh,cat,cp)verdächtigen Funktionen (
system,exec,popen)
Zeigt dynamisch gelinkte Bibliotheken – wichtig für LD_PRELOAD-Angriffe.
3. Laufzeitanalyse
Verfolgt alle Systemaufrufe (Dateizugriffe, Prozesse). Suchmuster:
open("/etc/passwd", ...)execve("cat", ...)
Zeigt aufgerufene Bibliotheksfunktionen. Besonders nützlich zur Identifikation von system() oder getenv()-Aufrufen.
4. Statische Analyse
Nutze Disassembler wie Ghidra, IDA oder Radare2, um tiefer in den Code zu schauen. Achte besonders auf:
Benutzerinput ohne Validierung
Zugriff auf Umgebungsvariablen
systemnahe Funktionen mit externem Einfluss
Tipp: Auch einfache
grep-Suchen im Sourcecode oder Binärdump helfen, Schwachstellen schnell zu identifizieren:
Typische Exploitation-Techniken
PATH-Manipulation
Wenn die Binary interne Kommandos ohne absoluten Pfad nutzt z.B. cat, kann dies als datei erstellt werden mit der, falls diese ausgeführt wiedr, weiderum eine root shell öffnet. Dafür muss der Pfad in der die neue Datei ist zu den PATH hinzugefügt werden, damit dieses "cat" zuerst ausgeführt wird.
Umgebungsvariablen (z. B. EDITOR, PAGER)
LD_PRELOAD
Interpreter und interaktive Modi
Programme mit interaktivem Modus:
Auch möglich mit: python, perl, lua
Dateizugriff
Wenn das SUID-Programm Dateien mit Root-Rechten liest oder schreibt:
Beispiele aus der Praxis
bugtracker – verwendet PATH-Manipulation
find – mit
-exec /bin/sh \;vim, less, nano – interaktive Shell mit
:!shoder!sh
Wann ist eine SUID-Binary nicht ausnutzbar?
Absolute Pfadangaben für alle internen Kommandos
Bereinigung sicherheitsrelevanter Umgebungsvariablen
Kein Benutzereingriff (rein automatisierte Prozesse)
Keine riskanten Funktionsaufrufe (z. B. kein
system())
Verteidigungsmaßnahmen
Keine unnötigen SUID-Binaries bereitstellen
SUID-Binaries mit
secure_pathinsudoersabsichernVerwendung sicherer Funktionen und absolute Pfade im Code
Regelmäßige Audits und Einsatz von Tools wie
Lynis,Chkrootkit
Weiterführende Ressourcen
GTFOBins – Liste ausnutzbarer Binaries
man 2 setuid– Systemaufruf-DokumentationLinux-Dateirechte und Berechtigungskonzepte (z. B.
chmod,chown)
Last updated