Is there a list of known/safe/expected SUID executables that one could compare against?
Non proprio, soprattutto perché tutte le moderne distribuzioni Linux sono basate su pacchetti. Non esiste un singolo set di file standard monolitici, poiché le installazioni variano in base ai pacchetti installati. Detto questo, i pacchetti forniscono anche elenchi di file inclusi, rendendo più semplice controllare se un binario SUID sia legittimamente installato o meno.
Or a script that does this for you?
Ci sono due semplici modi per avvicinarsi a questo: puoi verificare singoli file sul loro pacchetto, oppure puoi scaricare un elenco di file SUID da tutti i pacchetti.
Per esempio, diciamo che stai guardando / usr / bin e sei preoccupato per l'eseguibile SUID di chfn. Su una distribuzione basata su RPM, è possibile verificare il file sul pacchetto:
# rpm -Vf /usr/bin/chfn; echo $?
0
#
(Il codice di uscita 0 indica che non sono state rilevate discrepanze, il file è come previsto in base ai parametri del pacchetto. Puoi vedere un elenco di verifica che RPM Verify funzioni .)
Su una distribuzione basata su Debian (come Ubuntu, Mint, ...) avrai a che fare con i pacchetti deb, che hanno un approccio meno centralizzato degli RPM. Lo stesso effetto generale può essere ottenuto dopo l'installazione di apt-file e debsums:
# apt-file search /usr/bin/chfn
passwd: /usr/bin/chfn
# debsums passwd | grep /usr/bin/chfn
/usr/bin/chfn OK
#
Potresti scrivere uno strumento per enumerare gli elenchi dei pacchetti per trovare i file SUID, per verificarli e per confrontare il tuo elenco con un elenco di ciò che è effettivamente presente nel file system tramite find
. (Si noti che con RPM, almeno, è possibile verificare tutti i file in tutti i pacchetti con solo rpm -Va
, ma troverete che è un po 'loquace e più di un semplice file SUID).
Ad esempio, è possibile eseguire il loop su tutti i pacchetti installati ( rpm -qa
) e, per ogni pacchetto, elencare i file SUID e SGID:
# rpm -qlv util-linux-ng-2.17.2-12.28.el6_9.2.x86_64 | awk '$1 ~ /s/ {print $0}'
-rwsr-xr-x 1 root root 77560 Dec 5 2017 /bin/mount
-rwsr-xr-x 1 root root 53480 Dec 5 2017 /bin/umount
-rws--x--x 1 root root 20184 Dec 5 2017 /usr/bin/chfn
-rws--x--x 1 root root 20056 Dec 5 2017 /usr/bin/chsh
-rwxr-sr-x 1 root tty 12016 Dec 5 2017 /usr/bin/write
#
e usalo per costruire la tua lista di file SUID attesi.