Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/dominicbreuker/pspy
Privilege EscalationAufklärungInformationsbeschaffungCTFPenetrationstests
GitHubdominicbreuker/pspy

pspy

Überwache Linux-Prozesse ohne Root-Berechtigungen

Repository anzeigen
6.1k5673vor 6 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

pspy – Ausspionieren von Linux-Prozessen ohne Root-Rechte

Go Report Card Maintainability Test Coverage CircleCI

pspy ist ein Kommandozeilenwerkzeug, das entwickelt wurde, um Prozesse auszuspionieren, ohne Root-Berechtigungen zu benötigen. Es ermöglicht Ihnen, Befehle anderer Benutzer, Cron-Jobs usw. während der Ausführung zu sehen. Hervorragend geeignet zur Enumeration von Linux-Systemen in CTFs. Auch nützlich, um Kollegen zu demonstrieren, warum das Übergeben von Geheimnissen als Argumente in der Kommandozeile eine schlechte Idee ist.

Das Tool sammelt die Informationen aus Procfs-Scans. Inotify-Überwacher, die auf ausgewählten Teilen des Dateisystems platziert sind, lösen diese Scans aus, um kurzlebige Prozesse zu erfassen.

Erste Schritte

Herunterladen

Holen Sie sich das Tool auf die Linux-Maschine, die Sie überprüfen möchten. Besorgen Sie sich zuerst die Binärdateien. Laden Sie die veröffentlichten Binärdateien hier herunter:

  • 32-Bit große, statische Version: pspy32 download
  • 64-Bit große, statische Version: pspy64 download
  • 32-Bit kleine Version: pspy32s download
  • 64-Bit kleine Version: pspy64s download

Die statisch kompilierten Dateien sollten auf jedem Linux-System funktionieren, sind aber recht groß (~4 MB). Wenn die Größe ein Problem ist, probieren Sie die kleineren Versionen, die von libc abhängen und mit UPX komprimiert sind (~1 MB).

Erstellen

Verwenden Sie entweder Go, das auf Ihrem System installiert ist, oder führen Sie den Docker-basierten Build-Prozess aus, der zur Erstellung der Veröffentlichung verwendet wurde. Stellen Sie für Letzteres sicher, dass Docker installiert ist, und führen Sie dann make build-build-image aus, um ein Docker-Image zu erstellen, gefolgt von make build, um die Binärdateien damit zu erstellen.

Sie können pspy --help ausführen, um mehr über die Flags und ihre Bedeutung zu erfahren. Die Zusammenfassung ist wie folgt:

  • -p: aktiviert die Ausgabe von Befehlen auf stdout (standardmäßig aktiviert)
  • -f: aktiviert die Ausgabe von Dateisystemereignissen auf stdout (standardmäßig deaktiviert)
  • -r: Liste der mit Inotify zu überwachenden Verzeichnisse. pspy überwacht alle Unterverzeichnisse rekursiv (standardmäßig werden /usr, /tmp, /etc, /home, /var und /opt überwacht).
  • -d: Liste der mit Inotify zu überwachenden Verzeichnisse. pspy überwacht nur diese Verzeichnisse, nicht die Unterverzeichnisse (standardmäßig leer).
  • -i: Intervall in Millisekunden zwischen Procfs-Scans. pspy scannt regelmäßig nach neuen Prozessen, unabhängig von Inotify-Ereignissen, falls einige Ereignisse nicht empfangen werden.
  • -c: Befehle in verschiedenen Farben ausgeben. Dateisystemereignisse werden nicht mehr farbig dargestellt, Befehle haben unterschiedliche Farben basierend auf der Prozess-UID.
  • --debug: gibt ausführliche Fehlermeldungen aus, die ansonsten verborgen sind.

Die Standardeinstellungen sollten für die meisten Anwendungen ausreichen. Das Überwachen von Dateien in /usr ist am wichtigsten, da viele Tools auf Bibliotheken darin zugreifen.

Einige komplexere Beispiele:

root@kitploit:~
# print both commands and file system events and scan procfs every 1000 ms (=1sec)
./pspy64 -pf -i 1000 

# place watchers recursively in two directories and non-recursively into a third
./pspy64 -r /path/to/first/recursive/dir -r /path/to/second/recursive/dir -d /path/to/the/non-recursive/dir

# disable printing discovered commands but enable file system events
./pspy64 -p=false -f

Beispiele

Überwachung von Cron-Jobs

Um das Tool in Aktion zu sehen, klonen Sie einfach das Repository und führen Sie make example aus (Docker erforderlich). Es ist bekannt, dass das Übergeben von Passwörtern als Befehlszeilenargumente nicht sicher ist, und das Beispiel kann verwendet werden, um dies zu demonstrieren. Der Befehl startet einen Debian-Container, in dem ein geheimer Cron-Job, der von root ausgeführt wird, jede Minute ein Benutzerpasswort ändert. pspy wird im Vordergrund ausgeführt, als Benutzer myuser, und scannt nach Prozessen. Sie sollten eine Ausgabe ähnlich dieser sehen:

root@kitploit:~
~/pspy (master) $ make example
[...]
docker run -it --rm local/pspy-example:latest
[+] cron started
[+] Running as user uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),27(sudo)
[+] Starting pspy now...
Watching recursively    : [/usr /tmp /etc /home /var /opt] (6)
Watching non-recursively: [] (0)
Printing: processes=true file-system events=false
2018/02/18 21:00:03 Inotify watcher limit: 524288 (/proc/sys/fs/inotify/max_user_watches)
2018/02/18 21:00:03 Inotify watchers set up: Watching 1030 directories - watching now
2018/02/18 21:00:03 CMD: UID=0    PID=9      | cron -f
2018/02/18 21:00:03 CMD: UID=0    PID=7      | sudo cron -f
2018/02/18 21:00:03 CMD: UID=1000 PID=14     | pspy
2018/02/18 21:00:03 CMD: UID=1000 PID=1      | /bin/bash /entrypoint.sh
2018/02/18 21:01:01 CMD: UID=0    PID=20     | CRON -f
2018/02/18 21:01:01 CMD: UID=0    PID=21     | CRON -f
2018/02/18 21:01:01 CMD: UID=0    PID=22     | python3 /root/scripts/password_reset.py
2018/02/18 21:01:01 CMD: UID=0    PID=25     |
2018/02/18 21:01:01 CMD: UID=???  PID=24     | ???
2018/02/18 21:01:01 CMD: UID=0    PID=23     | /bin/sh -c /bin/echo -e "KI5PZQ2ZPWQXJKEL\nKI5PZQ2ZPWQXJKEL" | passwd myuser
2018/02/18 21:01:01 CMD: UID=0    PID=26     | /usr/sbin/sendmail -i -FCronDaemon -B8BITMIME -oem root
2018/02/18 21:01:01 CMD: UID=101  PID=27     |
2018/02/18 21:01:01 CMD: UID=8    PID=28     | /usr/sbin/exim4 -Mc 1enW4z-00000Q-Mk

Zuerst gibt pspy alle derzeit ausgeführten Prozesse aus, jeweils mit PID, UID und der Befehlszeile. Wenn pspy einen neuen Prozess erkennt, fügt es eine Zeile zu diesem Log hinzu. In diesem Beispiel finden Sie einen Prozess mit PID 23, der scheinbar das Passwort von myuser ändert. Dies ist das Ergebnis eines Python-Skripts, das im privaten Crontab von root /var/spool/cron/crontabs/root verwendet wird und diesen Shell-Befehl ausführt (siehe crontab und script). Beachten Sie, dass myuser weder das Crontab noch das Python-Skript sehen kann. Mit pspy kann es die Befehle dennoch sehen.

CTF-Beispiel von Hack The Box

Unten ist ein Beispiel von der Maschine Shrek von Hack The Box. In dieser CTF-Herausforderung besteht die Aufgabe darin, einen versteckten Cron-Job auszunutzen, der den Besitzer aller Dateien in einem Ordner ändert. Die Schwachstelle ist die unsichere Verwendung eines Wildcards zusammen mit chmod (Details für den interessierten Leser). Es erfordert erhebliches Ratespiel, um es zu finden und auszunutzen. Mit pspy hingegen ist der Cron-Job leicht zu finden und zu analysieren:

animated demo gif

Wie es funktioniert

Es gibt Werkzeuge, um alle auf Linux-Systemen ausgeführten Prozesse aufzulisten, einschließlich derer, die beendet wurden. Zum Beispiel gibt es forkstat. Es erhält Benachrichtigungen vom Kernel über prozessbezogene Ereignisse wie fork und exec.

Diese Werkzeuge erfordern Root-Rechte, aber das sollte Ihnen kein falsches Sicherheitsgefühl geben. Nichts hindert Sie daran, die auf einem Linux-System laufenden Prozesse auszuspionieren. Eine Menge Informationen sind in procfs sichtbar, solange ein Prozess läuft. Das einzige Problem ist, dass Sie kurzlebige Prozesse in dem sehr kurzen Zeitfenster, in dem sie leben, erwischen müssen. Das Scannen des /proc-Verzeichnisses nach neuen PIDs in einer Endlosschleife erledigt den Trick, verbraucht aber viel CPU.

Eine heimlichere Methode ist die Verwendung des folgenden Tricks. Prozesse neigen dazu, auf Dateien wie Bibliotheken in /usr, temporäre Dateien in /tmp, Logdateien in /var, ... zuzugreifen. Mit der inotify-API können Sie Benachrichtigungen erhalten, wann immer diese Dateien erstellt, geändert, gelöscht, darauf zugegriffen usw. werden. Linux erfordert keine privilegierten Benutzer für diese API, da sie für viele harmlose Anwendungen benötigt wird (z. B. Texteditoren, die einen aktuellen Dateiexplorer anzeigen). Daher können Nicht-Root-Benutzer zwar Prozesse nicht direkt überwachen, aber sie können die Auswirkungen von Prozessen auf das Dateisystem überwachen.

Wir können die Dateisystemereignisse als Auslöser verwenden, um /proc zu scannen, in der Hoffnung, dass wir es schnell genug tun können, um die Prozesse zu erwischen. Das ist es, was pspy tut. Es gibt keine Garantie, dass Sie keinen verpassen, aber die Chancen scheinen in meinen Experimenten gut zu sein. Im Allgemeinen gilt: Je länger die Prozesse laufen, desto größer ist die Chance, sie zu erwischen.

Verschiedenes

Logo: "By Creative Tail [CC BY 4.0 (http://creativecommons.org/licenses/by/4.0)], via Wikimedia Commons" (link)

Tool herunterladen