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;
read
et 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 test
ouvre un fichier nommé test
, lit son contenu ( hello
) et le place sur la sortie standard.
strace
peut produire beaucoup de sortie, alors assurez-vous de lire sa page de manuel ( man strace
), en particulier la documentation de la -e
sortie 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, ptrace
devrait ê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 somebinary
et que lesandbox
programme imaginaire enregistrerait tous les fichierssomebinary
lus 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.