Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pspy — Monitorare i processi Linux senza permessi di root | Kitploit
Strumenti/GitHubGitHub/dominicbreuker/pspy
Escalation di PrivilegiRicognizioneRaccolta InformazioniCTFPenetration Testing
GitHubdominicbreuker/pspy

pspy

Monitorare i processi Linux senza permessi di root

Vedi Repository
6.1k5675 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

pspy - intercettazione di processi Linux senza privilegi

Go Report Card Maintainability Test Coverage CircleCI

pspy è uno strumento da riga di comando progettato per intercettare i processi senza necessità di permessi di root. Permette di vedere i comandi eseguiti da altri utenti, cron job, ecc. mentre vengono eseguiti. Ottimo per l'enumerazione dei sistemi Linux nei CTF. Ottimo anche per dimostrare ai tuoi colleghi perché passare segreti come argomenti nella riga di comando è una cattiva idea.

Lo strumento raccoglie le informazioni dalle scansioni di procfs. I watcher di Inotify posizionati su parti selezionate del file system attivano queste scansioni per catturare i processi di breve durata.

Per iniziare

Scaricare

Ottieni lo strumento sulla macchina Linux che vuoi ispezionare. Prima scarica i binari. Scarica i binari rilasciati qui:

  • Versione grande statica a 32 bit: pspy32 download
  • Versione grande statica a 64 bit: pspy64 download
  • Versione piccola a 32 bit: pspy32s download
  • Versione piccola a 64 bit: pspy64s download

I file compilati staticamente dovrebbero funzionare su qualsiasi sistema Linux ma sono piuttosto grandi (~4 MB). Se le dimensioni sono un problema, prova le versioni più piccole che dipendono da libc e sono compresse con UPX (~1 MB).

Compilare

Usa Go installato sul tuo sistema o esegui il processo di compilazione basato su Docker che è stato eseguito per creare il rilascio. Per quest'ultimo, assicurati che Docker sia installato, quindi esegui make build-build-image per creare un'immagine Docker, seguito da make build per compilare i binari con essa.

Puoi eseguire pspy --help per conoscere i flag e il loro significato. Il riepilogo è il seguente:

  • -p: abilita la stampa dei comandi su stdout (abilitato per impostazione predefinita)
  • -f: abilita la stampa degli eventi del file system su stdout (disabilitato per impostazione predefinita)
  • -r: elenco di directory da monitorare con Inotify. pspy monitorerà tutte le sottodirectory in modo ricorsivo (per impostazione predefinita, monitora /usr, /tmp, /etc, /home, /var e /opt).
  • -d: elenco di directory da monitorare con Inotify. pspy monitorerà solo queste directory, non le sottodirectory (vuoto per impostazione predefinita).
  • -i: intervallo in millisecondi tra le scansioni di procfs. pspy esegue scansioni regolari alla ricerca di nuovi processi indipendentemente dagli eventi Inotify, nel caso in cui alcuni eventi non vengano ricevuti.
  • -c: stampa i comandi in diversi colori. Gli eventi del file system non sono più colorati, i comandi hanno colori diversi in base all'UID del processo.
  • --debug: stampa messaggi di errore verbosi che altrimenti sono nascosti.

Le impostazioni predefinite dovrebbero andare bene per la maggior parte delle applicazioni. Monitorare i file all'interno di /usr è molto importante poiché molti strumenti accederanno alle librerie al suo interno.

Alcuni esempi più complessi:

root@kitploit:~
# stampa sia i comandi che gli eventi del file system ed esegue la scansione di procfs ogni 1000 ms (=1 sec)
./pspy64 -pf -i 1000 

# posiziona watcher ricorsivamente in due directory e non ricorsivamente in una terza
./pspy64 -r /path/to/first/recursive/dir -r /path/to/second/recursive/dir -d /path/to/the/non-recursive/dir

# disabilita la stampa dei comandi scoperti ma abilita gli eventi del file system
./pspy64 -p=false -f

Esempi

Monitoraggio di cron job

Per vedere lo strumento in azione, basta clonare il repo ed eseguire make example (Docker necessario). È noto che passare password come argomenti della riga di comando non è sicuro, e l'esempio può essere usato per dimostrarlo. Il comando avvia un container Debian in cui un cron job segreto, eseguito da root, cambia la password di un utente ogni minuto. pspy eseguito in primo piano, come utente myuser, e scansiona i processi. Dovresti vedere un output simile a questo:

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

Innanzitutto, pspy stampa tutti i processi attualmente in esecuzione, ognuno con PID, UID e la riga di comando. Quando pspy rileva un nuovo processo, aggiunge una riga a questo log. In questo esempio, trovi un processo con PID 23 che sembra cambiare la password di myuser. Questo è il risultato di uno script Python utilizzato nel crontab privato di root /var/spool/cron/crontabs/root, che esegue questo comando shell (controlla crontab e script). Nota che myuser non può vedere né il crontab né lo script Python. Con pspy, può comunque vedere i comandi.

Esempio CTF da Hack The Box

Di seguito è riportato un esempio dalla macchina Shrek di Hack The Box. In questa sfida CTF, il compito è sfruttare un cron job nascosto che cambia la proprietà di tutti i file in una cartella. La vulnerabilità è l'uso insicuro di un wildcard insieme a chmod (dettagli per il lettore interessato). Richiede un notevole lavoro di ipotesi per trovarla e sfruttarla. Con pspy, tuttavia, il cron job è facile da trovare e analizzare:

animated demo gif

Come funziona

Esistono strumenti per elencare tutti i processi eseguiti sui sistemi Linux, compresi quelli che sono terminati. Ad esempio c'è forkstat. Riceve notifiche dal kernel su eventi relativi ai processi come fork ed exec.

Questi strumenti richiedono privilegi di root, ma questo non dovrebbe darti un falso senso di sicurezza. Niente ti impedisce di spiare i processi in esecuzione su un sistema Linux. Molte informazioni sono visibili in procfs finché un processo è in esecuzione. L'unico problema è che devi catturare i processi di breve durata nell'intervallo di tempo molto breve in cui sono vivi. Scansionare la directory /proc per nuovi PID in un ciclo infinito funziona, ma consuma molta CPU.

Un modo più furtivo è usare il seguente trucco. I processi tendono ad accedere a file come librerie in /usr, file temporanei in /tmp, file di log in /var, ... Usando l'API inotify, puoi ricevere notifiche ogni volta che questi file vengono creati, modificati, eliminati, consultati, ecc. Linux non richiede utenti privilegiati per questa API poiché è necessaria per molte applicazioni innocue (come editor di testo che mostrano un esploratore file aggiornato). Pertanto, mentre gli utenti non root non possono monitorare i processi direttamente, possono monitorare gli effetti dei processi sul file system.

Possiamo usare gli eventi del file system come trigger per eseguire la scansione di /proc, sperando di riuscire a farlo abbastanza velocemente da catturare i processi. Questo è ciò che fa pspy. Non c'è garanzia che non ne perderai uno, ma le probabilità sembrano buone nei miei esperimenti. In generale, più a lungo i processi sono in esecuzione, maggiore è la possibilità di catturarli.

Varie

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

Scarica lo strumento