System Service Descriptor Table
A System Service Descriptor Table (SSDT) é uma tabela de despacho interna do Microsoft Windows.
Função
[editar | editar código]A SSDT mapeia chamadas de sistema para endereços de funções do kernel. Quando uma chamada de sistema é feita por um aplicativo do espaço de usuário, a chamada de sistema contém o índice do serviço como parâmetro para indicar qual chamada de sistema foi feita. A SSDT é, então, usada para obter o endereço da função correspondente no ntoskrnl.exe.
Em kernels modernos do Windows, duas SSDTs são usadas: uma para rotinas genéricas (KeServiceDescriptorTable) e uma segunda (KeServiceDescriptorTableShadow) para rotinas gráficas. Um parâmetro passado pelo aplicativo de espaço de usuário determina qual SSDT deve ser usada.
Hooking
[editar | editar código]A modificação da SSDT permite redirecionar chamadas de sistema para rotinas fora do kernel. Essas rotinas podem ser usadas para esconder a presença do software ou agir como um backdoor para permitir a execução de código com privilégios de kernel. Pelas duas razões, fazer hooking das chamadas da SSDT é geralmente usado como uma técnica tanto nos rootkits de Windows como nos softwares antivírus.[1]
Em 2010, muitos produtos de segurança de computador que dependiam de fazer hooking de chamadas da SSDT mostraram-se vulneráveis a exploits usando condições de corrida para atacar as verificações de segurança dos produtos.[2]
Referências
- ↑ «Windows rootkits of 2005, part one». Symantec (em inglês). 2005. Cópia arquivada em 8 de março de 2026
- ↑ «Attack defeats 'most' antivirus software». ZD Net UK (em inglês). 2010. Cópia arquivada em 10 de janeiro de 2025