En Linux, puede supervisar de manera confiable una selección de llamadas al sistema o accesos a archivos con el subsistema de auditoría . Asegúrese de que el daemon auditd
se esté ejecutando, luego configure lo que desea registrar con auditctl
. Cada operación registrada se registra en /var/log/audit/audit.log
(en configuraciones típicas).
Encontrará ejemplos simples de uso de auditctl
en este sitio , en Server Fault y en Intercambio de pila Unix .
strace
o los programas asociados que usan ptrace
son formas confiables de monitorear las llamadas al sistema, pero desconfiaría de usarlas en un programa malicioso. No podría decirle lo poco que estoy pensando, pero debería ser posible que un programa monitoreado realice las llamadas correctas ptrace
para evadir el monitoreo.
Tenga en cuenta que un programa malintencionado podría generar un proceso que no se audita y puede ejecutar código que no se registrará. Por ejemplo, podría usar mmap
para escribir en un archivo sin que el contenido del archivo aparezca como los argumentos de las llamadas al sistema, haga que este archivo sea ejecutable y genere un proceso de ejecución. El proceso generado normalmente puede romper el árbol de procesos con algo como ssh localhost
. Si audita todos los procesos ejecutados por un usuario determinado (a diferencia de un solo proceso y sus descendientes), podrá registrar todo.