Glossary
DTrace
Le framework de tracing dynamique de Sun, porté sur Darwin en 2007 et toujours l'outil le plus puissant de traçage de syscalls sur macOS — quand SIP vous laisse l'utiliser.
DTrace est un framework de tracing dynamique côté noyau, écrit à l'origine chez Sun pour Solaris et porté sur Darwin dans macOS 10.5 Leopard. Le binaire /usr/sbin/dtrace livre sur chaque installation.
Il fonctionne en insérant des probes à des points bien définis du noyau et en exécutant de courts scripts dans le langage D chaque fois qu'un probe se déclenche. Les deux providers utiles pour le travail syscall sont :
syscall— se déclenche à chaque entrée/retour d'un syscall BSD. Mappe 1-pour-1 avec les entrées debsd/kern/syscalls.master.mach_trap— se déclenche à chaque entrée/retour de Mach trap.
Ensemble ils couvrent toute la surface syscall.
Restrictions SIP. Tel quel, DTrace ne peut pas s'attacher aux processus signés avec entitlements Apple-privés (Safari, WindowServer, la plupart des daemons système). Le contournement est csrutil enable --without dtrace depuis le Recovery, qui relâche uniquement la restriction DTrace tout en gardant le reste de SIP actif.
Limitations Apple Silicon. Le provider fbt (Function Boundary Tracing), qui permettait de sonder n'importe quelle fonction noyau sur macOS Intel, est désactivé sur arm64. Vous êtes limité aux providers bien connus : syscall, mach_trap, proc, sched, io, pid.
DTrace reste utile quand Endpoint Security n'expose pas l'événement dont vous avez besoin — surtout pour l'IPC Mach port brute et les arguments syscall non remontés dans le payload ES.