
Monitor de integridad del kernel de Linux para detectar el enganche de llamadas al sistema
ksentinel monitorea funciones críticas del kernel y la tabla de syscalls en busca de modificaciones no autorizadas. Detecta syscalls comunes que son objetivo de la mayoría de rootkits, incluyendo hooks de ftrace, kprobes y secuestro de tabla de syscalls.
NOTA: ksentinel está en su versión inicial; más mejoras vendrán en futuros commits.
Capa VFS:
Pila de Red:
Credenciales:
Sistema de Módulos:
Infraestructura de Trazado:
Más de 500 wrappers adicionales de syscalls mediante coincidencia de prefijos.
make
Durante la compilación, se genera y muestra una clave de desbloqueo aleatoria de 32 caracteres. Anótala inmediatamente. Esta clave está incrustada en el módulo compilado y no se almacena externamente. Mantenla segura si la protección contra descarga está habilitada.
sudo make install
El módulo se carga oculto de lsmod con la protección contra descarga habilitada por defecto.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # cargar módulo
sudo ./ksentinel-manager.sh status # verificar estado
sudo ./ksentinel-manager.sh watch # monitorear en vivo
sudo ./ksentinel-manager.sh violations # ver alertas
dmesg -wT | grep ksentinel
Cuando la protección contra descarga está habilitada, el módulo debe desbloquearse antes de retirarlo:
echo "your_32char_key" > /proc/.ksctl
O usar el administrador:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
Ejemplo con parámetros personalizados:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
ksentinel realiza verificaciones periódicas de integridad basadas en el parámetro period_ms.
Intervalos más bajos proporcionan una detección más rápida pero aumentan el uso de CPU. El intervalo predeterminado (2000 ms) tiene un impacto mínimo en 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)
ksentinel puede detectar modificaciones realizadas por:
La detección depende de cargar ksentinel antes que el rootkit.
Configuración del Kernel:
Kernels Soportados:
Verificar la configuración del kernel:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
El módulo está oculto con protección contra descarga. Desbloquear primero:
sudo ./ksentinel-manager.sh unlock
make clean # limpiar artefactos de compilación
make # compilar módulo
make install # cargar módulo
make uninstall # descargar módulo
Las contribuciones son bienvenidas. Mantén el estilo del código y añade pruebas para nuevas características.
GPL-2.0-only
Este programa es software libre licenciado bajo GPL versión 2.0. Cualquier modificación debe preservar la atribución al autor original y distribuirse bajo la misma licencia.
Consulte el archivo LICENSE para conocer los términos completos.
MatheuZSecurity
Comunidad de Investigadores de Rootkits: https://discord.gg/66N5ZQppU7
Esta herramienta es para investigación de seguridad y administración de sistemas. Úsala de manera responsable. El autor no es responsable por el mal uso o daños causados por este software.
| Parámetro | Tipo | Por defecto | Descripción |
|---|
| period_ms | uint | 2000 | Intervalo de verificación de integridad en milisegundos |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | Prefijos de símbolos separados por comas a monitorear |
| extra_syms | string | "" | Símbolos específicos adicionales a vigilar |
| anti_unload | bool | true | Habilitar protección contra descarga |