Ce que vous recherchez est un outil qui montre comment un programme interagit avec le système (plus précisément avec le noyau). Les programmes interagissent avec le système à l'aide d'appels système. Voici des exemples d'appels système:
open - utilisé pour ouvrir un fichier;
readet write- utilisé pour lire / écrire depuis / vers un descripteur de fichier;
connect - utilisé pour connecter une prise à un pair;
- beaucoup, beaucoup d'autres (voir
man syscalls).
Le point est le suivant: les appels système peuvent être tracés à l'aide de ptrace(2). Donc, fondamentalement, vous recherchez des outils construits autour ptrace. L'un de ces outils est strace(1), qui est une application terminale qui prend une commande comme argument et génère:
- le système appelle le programme appelle;
- les arguments utilisés pour effectuer les appels système;
- le résultat des appels système.
La sortie est en mode C. Voici un exemple:
$ 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à, vous voyez qui cat testouvre un fichier nommé test, lit son contenu ( hello) et le place sur la sortie standard.
stracepeut produire beaucoup de sortie, alors assurez-vous de lire sa page de manuel ( man strace), en particulier la documentation de la -esortie qui vous permettra de voir uniquement les appels système qui vous intéressent.
Malheureusement, je ne connais pas d'alternatives graphiques ou faciles à utiliser. Si vous souhaitez les rechercher, ptracedevrait être l'un de vos mots clés de recherche.
À propos de l'isolement, il existe de nombreuses technologies. Les chroots, les conteneurs Linux (en cours de développement et incomplets), la virtualisation et la paravirtualisation des logiciels sont les plus utilisés. Cependant, c'est un sujet beaucoup trop vaste pour être discuté. Je suggère d'ouvrir une nouvelle question si vous souhaitez avoir plus de détails.
sandbox somebinaryet que lesandboxprogramme imaginaire enregistrerait tous les fichierssomebinarylus ou écrits, tous IP / ports connectés, données transférées, etc. Ce serait une chose utile à avoir, je voudrais également savoir si quelque chose comme ça existe (et, en fait, sans un tel outil, observer un programme s'exécutant dans une machine virtuelle serait inutile comme vous ne peut pas dire ce qu'il fait de toute façon). Bonne question.