O que você está procurando é uma ferramenta que mostre como um programa interage com o sistema (mais especificamente, com o kernel). Os programas interagem com o sistema usando syscalls. Exemplos de syscalls são:
open - usado para abrir um arquivo;
reade write- usado para ler / gravar de / para um descritor de arquivo;
connect - usado para conectar um soquete a um par;
- muitos, muitos outros (veja
man syscalls).
O ponto é: syscalls podem ser rastreados usando ptrace(2). Então, basicamente, você está procurando ferramentas construídas ptrace. Uma dessas ferramentas é strace(1), que é um aplicativo de terminal que assume um comando como argumento e gera:
- o sistema chama o programa está chamando;
- os argumentos usados para fazer os syscalls;
- o resultado dos syscalls.
A saída é do tipo C. Aqui está um exemplo:
$ strace cat test
execve("/bin/cat", ["cat", "test"], [/* 55 vars */]) = 0
/* ... */
open("test", O_RDONLY) = 3
/* ... */
read(3, "hello\n", 32768) = 6
write(1, "hello\n", 6) = 6
read(3, "", 32768) = 0
/* ... */
Lá você vê que cat testestá abrindo um arquivo chamado test, lendo seu conteúdo ( hello) e colocando-o na saída padrão.
stracepode produzir muita saída, portanto, leia sua página de manual ( man strace), especialmente a documentação da -esaída que permitirá ver apenas os syscalls nos quais você está interessado.
Infelizmente, não conheço alternativas gráficas ou fáceis de usar. Se você deseja procurá-los, ptracedeve ser uma das suas palavras-chave de pesquisa.
Sobre o isolamento, existem muitas tecnologias por aí. Chroots, contêineres Linux (atualmente em desenvolvimento e incompletos), virtualização de software e paravirtualização são os mais utilizados. No entanto, este é um tópico muito grande para discutir. Sugiro que você abra uma nova pergunta se desejar obter mais detalhes.
sandbox somebinarye osandboxprograma imaginário registraria todos os arquivossomebinarylidos ou gravados, todos IPs / portas conectados, dados transferidos etc. Isso seria útil, também gostaria de saber se existe algo assim (e, na verdade, sem essa ferramenta, observar um programa em execução em uma VM não faria sentido. não posso dizer o que faz lá de qualquer maneira). Boa pergunta.