Su Linux, puoi monitorare in modo affidabile una selezione di chiamate di sistema o accessi ai file con il sottosistema di controllo . Assicurati che il daemon auditd
sia in esecuzione, quindi configura ciò che vuoi registrare con auditctl
. Ogni operazione registrata viene registrata in /var/log/audit/audit.log
(su configurazioni tipiche).
Troverai semplici esempi di auditctl
di utilizzo su questo sito , su Errore server e su Scambio pila Unix .
strace
o programmi associati che utilizzano ptrace
sono metodi affidabili per monitorare le chiamate di sistema, ma sarei prudente nell'usarli su un programma dannoso. Non potrei dirti quanto è fuori di testa, ma dovrebbe essere possibile che un programma monitorato compia il giusto ptrace
di chiamate per evitare il monitoraggio.
Si noti che un programma dannoso potrebbe generare un processo che non è controllato e può eseguire codice che non verrà registrato. Ad esempio, potrebbe utilizzare mmap
per scrivere su un file senza che il contenuto del file appaia come argomento delle chiamate di sistema, rendere questo file eseguibile e generare un processo che lo esegue. Generalmente il processo generato può interrompere la struttura del processo con qualcosa come ssh localhost
. Se controlli tutti i processi eseguiti da un determinato utente (al contrario di un singolo processo e i suoi discendenti), sarai in grado di registrare tutto.