Autenticazione del processo per Linux

7

C'è qualche possibilità di autenticare un processo in esecuzione in Linux per essere sicuro che questo sia quello originale / giusto?

So che un sistema operativo Linux è sicuro solo come lo si usa. Per esempio: Diciamo che sto usando Ubuntu Linux e installo qualsiasi software tramite un PPA, che il software ottiene i diritti di fare tutto ciò che vuole nel mio sistema, perché devo installarlo con i diritti sudo. ( I PPA sono in generale un problema di sicurezza in Ubuntu, credo)

Supponiamo che il "software codificato cattivo ragazzo" installi le cose per fare il lavoro che mi aspettavo, ad esempio un tema Gnome, uno sfondo dinamico qualunque. Ma sostituisce anche qualsiasi processo del mio sistema Ubuntu con un key-logger o qualsiasi altro tipo di malware e viene eseguito nel mio sistema.

C'è qualche possibilità di verificare un processo in esecuzione in Linux se è quello originale?

I processi in esecuzione sono facili da ottenere / scoprire e sono noti i processi del sistema operativo e anche i processi da un repository apt di Ubuntu, quindi suppongo che ci possa essere una possibilità di confrontare il codice dei processi in esecuzione con qualsiasi database di noti software / processi di repository Ubuntu e noti software / processi Linux.

È possibile un qualche tipo di autenticazione di processo o disponibile per Linux / Ubuntu?

    
posta Jan Koester 16.01.2013 - 20:05
fonte

2 risposte

4

Puoi sapere se un file è stato modificato controllando un hash sicuro del suo contenuto. Puoi farlo manualmente, oppure puoi usare il tuo gestore di pacchetti; con RPM è rpm -V , con apt usi debsums .

Quindi si tratta di verificare se il processo è stato avviato utilizzando quel file. Anche questo bit è semplice: controlla la voce proc . Questo tiene traccia non solo del percorso del file, ma anche del suo numero di inode, quindi se il file viene sostituito, non corrisponderà. Osservare:

[tylerl@tyler-11 ~]$ ./foo &
[1] 26157
[tylerl@tyler-11 ~]$ ls -l /proc/26157/exe 
lrwxrwxrwx 1 tylerl tylerl 0 2013-01-16 12:31 /proc/26157/exe -> /home/tylerl/foo
[tylerl@tyler-11 ~]$ ls -l /home/tylerl/foo
-rwxr-xr-x 1 tylerl tylerl 8.3K 2013-01-16 12:31 /home/tylerl/foo
[tylerl@tyler-11 ~]$ echo 1 >> foo
-bash: foo: Text file busy
[tylerl@tyler-11 ~]$ rm foo
rm: remove regular file 'foo'? y
[tylerl@tyler-11 ~]$ echo 1 > foo
[tylerl@tyler-11 ~]$ ls -l /proc/26157/exe 
lrwxrwxrwx 1 tylerl tylerl 0 2013-01-16 12:31 /proc/26157/exe -> /home/tylerl/foo (deleted)
[tylerl@tyler-11 ~]$ ls -l /home/tylerl/foo
-rw-r--r-- 1 tylerl tylerl 2 2013-01-16 12:32 /home/tylerl/foo

Nota due cose: (a) il file non può essere modificato mentre è in esecuzione, e (b) mentre puoi eliminarlo e sostituirlo, la nuova voce di directory corrisponderà a un diverso eseguibile e la voce proc indicherà (deleted) per avvisare della differenza.

Nota che potrei recuperare il file originale semplicemente eseguendo cp /proc/26157/exe ./orig_exe , e quindi potrei esaminarlo se necessario. I file non vengono effettivamente eliminati dal disco fino alla chiusura dell'ultimo riferimento.

    
risposta data 16.01.2013 - 20:40
fonte
0

I debs possono aiutare ma non è la risposta definitiva.

Ad esempio un pacchetto può installare un file completamente nuovo in / usr / local / sbin, quindi passare attraverso i file .profile degli utenti che trova e aggiungere una linea per eseguire tale processo.

i debs non si lamentavano, nessun file appartenente a un pacchetto è stato alterato. Inoltre, i file su / etc sono installati dai pacchetti ma devono essere modificati. Ma non c'è davvero bisogno di manomettere gli altri pacchetti per fare qualcosa di cattivo.

Ad esempio un pacchetto può installare un servizio, il passo di configurazione configurerebbe quello script per l'esecuzione al momento dell'avvio, con i privilegi di root. Non è assolutamente necessario modificare i binari esistenti, tranne forse che potrebbe essere un po 'più ovvio da individuare.

    
risposta data 09.02.2013 - 22:12
fonte

Leggi altre domande sui tag