Como descobrir quais mudanças em quais arquivos um determinado comando faz ou até mesmo interceptá-los?

3

Digamos que eu tenha um programa mysterion cuja execução provavelmente modificará alguns arquivos. A fim de descobrir se isso é prejudicial ou não, eu gostaria de executá-lo de tal forma que eu possa, no mínimo, saber quais arquivos foram modificados como, ou talvez de alguma forma, ligar outro programa a ele que decide se aceita ou não ou negar essas mudanças antes acontecerem. Isso pode ser conseguido de alguma forma menos entediante do que uma depuração passo a passo?

Com certeza para a parte "determine alterações", eu poderia capturar instantaneamente todo o sistema de arquivos e diff depois, mas isso provavelmente seria como frear uma porca com uma marreta ...

    
por Tobias Kienzler 13.11.2013 / 08:33

2 respostas

5

A parte de monitoramento (sem o sandboxing) pode ser acompanhada simplesmente executando

strace -o file.log -e trace=file /path/to/your/binary

Claro, isso é um pouco 'tagarela'. Então você pode ter que pós-processar um pouco. strace geralmente vem em um pacote com o mesmo nome. Há também uma versão especial de 64 bits.

    
por 13.11.2013 / 09:38
3

Você pode usar algo como Systrace que permitirá que você execute o programa em uma sandbox com sem privilégios. Você pode usar o ptrace para ver quais filehandles o programa está tentando abrir.

Sua outra opção, se você estiver usando o SELinux, é usar o SELinux Sandbox . De lá, você pode limitar quais arquivos ele pode abrir, fazer com que ele não abra arquivos, etc.

Eu imagino que há uma maneira de realizar essas tarefas com o AppArmor, mas infelizmente não tenho nenhuma familiaridade com o AppArmor para fornecer sugestões significativas.

    
por 13.11.2013 / 09:25