Hintergrund
Das Betriebssystem verfügt über eine Komponente, die als Kernel bezeichnet wird. Eine der vielen Aufgaben des Kernels ist die Verwaltung des Systemspeichers (sowohl physisch als auch virtuell).
Dabei teilt der Kernel den verfügbaren Speicher in zwei verschiedene Bereiche auf, die als Benutzermodus und Kernelmodus bezeichnet werden. Der Kernel und die Treiber teilen sich den Kernelmodus-Speicher, und Benutzerprogramme und weniger kritische Systemkomponenten befinden sich im Benutzermodus-Speicherbereich.
Prozesse im Benutzermodus können im Allgemeinen nicht mit denen im Kernelmodus kommunizieren, außer über speziell festgelegte und kontrollierte Kanäle.
Der Vollständigkeit halber sei erwähnt, dass Prozesse, die im Benutzermodus ausgeführt werden, auch voneinander isoliert sind, aber mit den vom Betriebssystem bereitgestellten Einrichtungen freier kommunizieren können, sofern die Programme dafür vorgesehen sind.
Prozesse
Der Kernel bietet die Möglichkeit, Prozesse im Benutzermodus zu starten. Wenn ein Prozess erstellt wird, wird er zu einer internen Liste der derzeit vorhandenen Prozesse hinzugefügt. Wenn ein Programm wie der Task-Manager nach einer Liste von Prozessen fragt, erhält es eine Untermenge der Informationen in dieser Liste, die nach Benutzerberechtigungen gefiltert werden.
Ein Mittel, mit dem Malware wie ein Rootkit seine Existenz verbergen kann, besteht darin, sich direkt aus dieser Tabelle zu entfernen. Nachdem dies geschehen ist, kann es immer noch ausgeführt werden, erscheint jedoch nicht mehr in einer Prozessliste, die auf normale Weise erhalten wird.
Da diese Prozesse immer noch vorhanden sind und ausgeführt werden, können sie durch Einsichtnahme in andere Kerneldatenstrukturen gefunden werden, z. B. Handlertabellen, die Informationen über Ressourcen enthalten, die ein Prozess geöffnet hat (z. B. Dateien), oder durch Überprüfen von Speicherzuordnungen, bei denen es sich um mehr handelt schwer zu verbergen, ohne die Funktionsfähigkeit der Software zu beeinträchtigen.
Kernel-Modus-Treiber
Kernelmodustreiber, die für viele Zwecke verwendet werden, einschließlich der Interaktion mit physischen Hardwaregeräten. Sie werden je nach Bedarf unter der Kontrolle des Kernels ausgeführt. Da sie jedoch kein Prozess im Benutzermodus sind, werden sie nicht in der Tabelle der Prozesse angezeigt. und erscheint daher nicht im Task-Manager oder anderen Tools, die sich ausschließlich auf Prozesse beziehen.
Die Möglichkeit, Code im Kernelmodus auszuführen, ist ein wichtiger Schritt, um die Existenz von Code effektiv zu verbergen. Unter normalen Umständen erfordert Windows, dass der Code im Kernelmodus signiert ist, damit er ausgeführt werden kann. Malware muss daher möglicherweise Exploits im Betriebssystem, andere Software oder sogar Social Engineering verwenden, um hierher zu gelangen. Sobald jedoch Code im Kernelmodus ausgeführt wird, wird versteckt wird einfacher.
Zusammenfassung
Zusammenfassend ist es möglich, Beweise für die Existenz eines Prozesses zu verbergen. Es gibt wahrscheinlich immer Hinweise darauf, dass der Prozess existiert, da er im Allgemeinen immer eine Form von Ressourcen verwenden muss, um das zu tun, wozu er entwickelt wurde und wie schwierig Diese Erkennung hängt von der jeweiligen Malware ab.