
Monitor di integrità del kernel Linux per rilevare l'hooking delle syscall
ksentinel monitora le funzioni critiche del kernel e la tabella delle syscall per rilevare modifiche non autorizzate. Rileva syscall comuni che sono bersaglio della maggior parte dei rootkit, inclusi hook ftrace, kprobe e hijacking della tabella delle syscall.
NOTA: ksentinel è nella sua versione iniziale; ulteriori miglioramenti arriveranno nei commit futuri.
Livello VFS:
Stack di Rete:
Credenziali:
Sistema dei Moduli:
Infrastruttura di Tracciamento:
Più di 500 wrapper di syscall aggiuntivi tramite corrispondenza dei prefissi.
make
Durante la compilazione, viene generata e mostrata una chiave di sblocco casuale di 32 caratteri. Annotala immediatamente. Questa chiave è incorporata nel modulo compilato e non è memorizzata esternamente.
Mantienila al sicuro se la protezione anti-unload è abilitata.
sudo make install
Il modulo si carica nascosto da lsmod con la protezione anti-unload abilitata per impostazione predefinita.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # carica il modulo
sudo ./ksentinel-manager.sh status # verifica lo stato
sudo ./ksentinel-manager.sh watch # monitoraggio in tempo reale
sudo ./ksentinel-manager.sh violations # visualizza gli avvisi
dmesg -wT | grep ksentinel
Quando l'anti-unload è abilitato, il modulo deve essere sbloccato prima della rimozione:
echo "your_32char_key" > /proc/.ksctl
Oppure usa il gestore:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
Esempio con parametri personalizzati:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
ksentinel esegue controlli periodici di integrità in base al parametro period_ms.
Intervalli più bassi forniscono un rilevamento più rapido ma aumentano l'uso della CPU. L'intervallo predefinito (2000ms) ha un impatto minimo sui sistemi moderni.
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 può rilevare modifiche effettuate da:
Il rilevamento dipende dal caricamento di ksentinel prima del rootkit.
Configurazione del Kernel:
Kernel Supportati:
Controlla la configurazione del kernel:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
Il modulo è nascosto con protezione anti-unload. Sblocca prima:
sudo ./ksentinel-manager.sh unlock
make clean # pulisce gli artefatti di compilazione
make # compila il modulo
make install # carica il modulo
make uninstall # scarica il modulo
I contributi sono benvenuti. Mantieni lo stile del codice e aggiungi test per le nuove funzionalità.
GPL-2.0-only
Questo programma è software libero concesso in licenza sotto GPL versione 2.0. Qualsiasi modifica deve preservare l'attribuzione all'autore originale e essere distribuita sotto la stessa licenza.
Vedi il file LICENSE per i termini completi.
MatheuZSecurity
Comunità dei Ricercatori di Rootkit: https://discord.gg/66N5ZQppU7
Questo strumento è per la ricerca sulla sicurezza e l'amministrazione di sistema. Usalo responsabilmente. L'autore non è responsabile per abusi o danni causati da questo software.
| Parametro | Tipo | Predefinito | Descrizione |
|---|
| period_ms | uint | 2000 | Intervallo di controllo dell'integrità in millisecondi |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | Prefissi di simbolo da monitorare separati da virgola |
| extra_syms | string | "" | Simboli specifici aggiuntivi da osservare |
| anti_unload | bool | true | Abilita la protezione anti-unload |