sfondo
Il sistema operativo ha un componente noto come kernel. Una delle (molte) responsabilità del kernel è la gestione della memoria di sistema (sia fisica che virtuale).
Come parte di ciò, il kernel divide la memoria disponibile in due distinte regioni note come modalità utente e modalità kernel. Il kernel e i driver condividono la memoria in modalità kernel e i programmi utente e i componenti di sistema meno critici risiedono nell'area di memoria in modalità utente.
I processi in modalità utente non possono generalmente comunicare con quelli in modalità kernel, tranne che attraverso canali appositamente designati e controllati.
Per completezza, è opportuno ricordare che anche i processi in esecuzione in modalità utente sono isolati l'uno dall'altro, ma possono comunicare più liberamente tra loro utilizzando le funzionalità fornite dal sistema operativo a condizione che i programmi siano progettati per farlo.
Processi
Il kernel offre la possibilità di avviare i processi in modalità utente. Quando viene creato un processo, questo viene aggiunto a un elenco interno di processi attualmente esistenti. Quando un programma come Task Manager richiede un elenco di processi, riceve un sottoinsieme delle informazioni in questo elenco, filtrate per autorizzazioni utente.
Un modo per malware come un rootkit di nascondere la sua esistenza è di rimuoverlo direttamente da questa tabella. Fatto ciò, può ancora essere eseguito, ma non apparirebbe più in un elenco di processi ottenuto con mezzi normali.
Dato che questi processi esistono ancora ed eseguono, possono essere trovati esaminando altre strutture di dati del kernel, come le tabelle di gestione, che contengono informazioni sulle risorse che un processo ha aperto (ad es. File) o esaminando le allocazioni di memoria da cui sono più difficile da nascondere senza ostacolare la capacità di funzionamento del software.
Driver in modalità kernel
Driver in modalità Kernel usati per molte cose tra cui l'interazione con dispositivi hardware fisici. Eseguono sotto il controllo del kernel se necessario, ma poiché non sono un processo in modalità utente non compaiono nella tabella dei processi. e quindi non apparirà in Task Manager o altri strumenti interessati esclusivamente ai processi.
Essere in grado di eseguire il codice in modalità kernel è un passo importante per poter nascondere efficacemente l'esistenza dell'esecuzione del codice. In circostanze normali, Windows richiede che il codice in modalità kernel sia firmato per essere eseguito, quindi potrebbe essere necessario che il malware utilizzi exploit nel sistema operativo, altri software o persino social engineering per arrivare qui, ma una volta che il codice viene eseguito in modalità kernel, nascondendosi diventa più facile.
Sommario
In sintesi, è possibile nascondere le prove dell'esistenza di un processo, è probabile che ci sia sempre qualche indicazione dell'esistenza del processo, perché generalmente dovrà sempre usare una qualche forma di risorsa per fare qualunque cosa sia stata progettata, quanto sia difficile tale rilevamento dipende dal malware specifico.