Você pode tentar usar auditd para registrar o acesso aos arquivos ( e mais), mas se um invasor obtiver acesso à sua máquina como superusuário, é possível que todos os logs e rastreios sejam apagados sem qualquer maneira de detectá-lo.
Uma atenuação possível é ativar o registro remoto (pela rede) ou usar outro hardware que permita anexar dados somente sem a capacidade de sobrescrever coisas.
Se você suspeitar de um comprometimento e quiser investigá-lo, está entrando na área de análise forense. Dependendo do desleixo do atacante, isso pode ter sucesso ou falhar. Exemplos incluem esquecer de remover um .bash_history
ou arquivos de log e excluir arquivos sem fragmentá-lo.
Você menciona "assinatura de arquivo", mas "toque" apenas modifica os metadados do arquivo. Estes são armazenados em um formato específico do sistema de arquivos no dispositivo de disco subjacente. Geralmente, programas sem privilégios não podem modificar diretamente o dispositivo de disco subjacente. Em vez disso, eles se comunicam com o kernel usando chamadas de sistema e solicitam modificações no sistema de arquivos (que então propaga as alterações no disco subjacente). Para ver qual sistema chama um programa, use o programa strace . Por exemplo, strace touch x
me dá:
...
open("x", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
dup2(3, 0) = 0
close(3) = 0
utimensat(0, NULL, NULL, 0) = 0
...
Aqui você pode ver que a chamada do sistema open
é passada por um caminho e retorna um descritor de arquivo. Posteriormente, esse filedescriptor é usado em uma chamada para a utimensat
chamada de sistema que muda o registro de data e hora do arquivo. Todas essas ações podem ser registradas pelo daemon de auditoria descrito anteriormente e, é claro, os resultados podem ser observados devido a alterações no sistema de arquivos. Se você cavar fundo o suficiente, você pode encontrar evidências dessa atividade, mas então você está realmente confiando na criatividade da ciência forense.