
Monitor de integridade do kernel Linux para detecção de hooking de chamadas de sistema
O ksentinel monitora funções críticas do kernel e a tabela de syscalls em busca de modificações não autorizadas. Ele detecta syscalls comuns que são alvo da maioria dos rootkits, incluindo hooks ftrace, kprobes e sequestro da tabela de syscalls.
NOTA: o ksentinel está em sua versão inicial; mais melhorias virão em commits futuros.
Camada VFS:
Pilha de Rede:
Credenciais:
Sistema de Módulos:
Infraestrutura de Rastreamento:
Mais de 500 wrappers adicionais de syscall via correspondência de prefixos.
make
Durante a compilação, uma chave de desbloqueio aleatória de 32 caracteres é gerada e exibida. Anote-a imediatamente. Esta chave está embutida no módulo compilado e não é armazenada externamente.
Mantenha-a segura se a proteção anti-remoção estiver ativada.
sudo make install
O módulo carrega oculto do lsmod com a proteção anti-remoção ativada por padrão.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # load module
sudo ./ksentinel-manager.sh status # check status
sudo ./ksentinel-manager.sh watch # monitor live
sudo ./ksentinel-manager.sh violations # view alerts
dmesg -wT | grep ksentinel
Quando a proteção anti-remoção está ativada, o módulo deve ser desbloqueado antes da remoção:
echo "your_32char_key" > /proc/.ksctl
Ou use o gerenciador:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
Exemplo com parâmetros personalizados:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
O ksentinel realiza verificações periódicas de integridade com base no parâmetro period_ms.
Intervalos menores proporcionam detecção mais rápida, mas aumentam o uso da CPU. O intervalo padrão (2000ms) tem impacto mínimo em sistemas modernos.
ksentinel: [CHANGE - HOOK PATTERN] sys_getdents64 @ 0xffffffff81234567
baseline=1234567890abcdef current=fedcba0987654321
bytes: e9 ab cd ef 12 90 90 90 ...
flags: JMP/CALL_DETECTED ENDBR64_PREFIX
ksentinel: [SCT HOOK] syscall[78] expected=0xffffffff81111111 got=0xffffffffa0222222 (fake_getdents+0x0)
ksentinel: [LSTAR TAMPERED] baseline=0xffffffff81800000 now=0xffffffffa0300000 (evil_syscall_entry+0x0)
O ksentinel pode detectar modificações feitas por:
A detecção depende do carregamento do ksentinel antes do rootkit.
Configuração do Kernel:
Kernels Suportados:
Verifique a configuração do kernel:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
O módulo está oculto com proteção anti-remoção. Desbloqueie primeiro:
sudo ./ksentinel-manager.sh unlock
make clean # clean build artifacts
make # compile module
make install # load module
make uninstall # unload module
Contribuições são bem-vindas. Mantenha o estilo de código e adicione testes para novas funcionalidades.
GPL-2.0-only
Este programa é software livre licenciado sob a GPL versão 2.0. Quaisquer modificações devem preservar a atribuição ao autor original e ser distribuídas sob a mesma licença.
Consulte o arquivo LICENSE para os termos completos.
MatheuZSecurity
Comunidade de Pesquisadores de Rootkit: https://discord.gg/66N5ZQppU7
Esta ferramenta é para pesquisa de segurança e administração de sistemas. Use com responsabilidade. O autor não se responsabiliza por uso indevido ou danos causados por este software.
| Parâmetro | Tipo | Padrão | Descrição |
|---|
| period_ms | uint | 2000 | Intervalo de verificação de integridade em milissegundos |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | Prefixos de símbolo separados por vírgula para monitorar |
| extra_syms | string | "" | Símbolos específicos adicionais para observar |
| anti_unload | bool | true | Ativar proteção anti-remoção |