System Service Dispatch Table
System Service Dispatch Table ou SSDT, est un tableau de descripteur de service situé dans le Noyau de Windows, utilisé pour diriger des appels système vers un traitement approprié : table d'adressage des API.
Point d'accroche dans la table SSDT
Le « crochetage » (« SSDT hooking ») de la table SSDT en vue de sa modification est une des techniques fréquemment utilisées par les rootkits. En modifiant cette table, ils peuvent réorienter l'exécution vers leur code au lieu du module de traitement (fonction) originellement appelé. Certaines de ces fonctions sont crochetées tant par les rootkits malsains que les anti-rootkits
Sur Windows XP, cette table est en lecture seule, mais cette protection peut être contournée.
Exemples d'appel système détourné :
- pour les thread, processus, (et jobs) : NtAssignProcessToJobObject, NtCreateThread et NtTerminateThread, NtOpenProcess et NtTerminateProcess, etc. ;
- pour les fichiers : NtQueryDirectoryFile, NtDeleteFile, etc. ;
- pour les pilotes : NtLoadDriver et NtUnloadDriver ;
- pour la mémoire : NtProtectVirtualMemory et NtWriteVirtualMemory ;
- divers : NtCreateKey, NtReplaceKey.
Par voie de conséquence, cette table du noyau est l'une des plus contrôlées par les utilitaires de détection des rootkits. Sa restauration en cas de modification non désirée est une protection supplémentaire que certains anti-rootkits proposent.