Werden alle auf einem Computer ausgeführten Programme auf der Registerkarte "Prozesse" im Task-Manager angezeigt? [Duplikat]


Antworten:


48

Es gibt eine Klasse von Malware, die sich vollständig vor dem Betriebssystem, dem so genannten Rootkit , verstecken kann .

Rootkits werden verwendet, um die Beweise anderer Malware bei der Arbeit zu verbergen und sind sehr tief in das Betriebssystem eingebettet. Aufgrund ihrer tiefen Einbettung können sie Prozesslisten, Dateisystemtabellen und andere wichtige Strukturen im laufenden Betrieb bearbeiten.

Durch die Manipulation von Dateisystemstrukturen im Speicher können falsche oder irreführende Ergebnisse für Verzeichnisse zurückgegeben werden, insbesondere werden keine Dateien angezeigt, die sich auf die Hauptschadsoftware selbst beziehen. Die Dateien sind dort und beim Booten in ein nicht infiziertes Betriebssystem wie eine Linux LiveCD werden die Dateien angezeigt, da sie irgendwo gespeichert werden müssen.

In ähnlicher Weise können Rootkits einfach verhindern, dass bestimmte Prozesse an Programme wie den Task-Manager gemeldet werden. Der Betriebssystemkern kennt sie, da er sie planen muss. Er wurde gerade daran gehindert, die Außenwelt über sie zu informieren.


1
Ich bin neugierig, wie erreichen sie diese Leistung? Es scheint etwas zu sein, das Windows überhaupt nicht zulassen sollte. Ich meine, auch "Show-Prozess von allen Benutzern" sind weniger "Verstecken" und mehr "Kategorisieren"
Raestloz

2
@Raestloz: Sie erreichen das Kunststück, indem sie Root-Zugriff erhalten und dann Windows neu schreiben, um die Teile zu entfernen, die dies nicht zulassen. Ich habe gehört, dass einige von ihnen dies tun, indem sie das Rootkit als Betriebssystem "booten", Windows ändern und dann Windows ausführen, sodass weder der Benutzer noch Windows eine Ahnung haben, dass etwas ungewöhnlich ist.
Mooing Duck

3
na ja

1
@zyboxenterprises Echte Windows-Updates sind signiert und können nicht gefälscht werden. Sie können jedoch nur den Neustartanforderungsdialog fälschen oder den Benutzer dazu verleiten, auf andere Weise neu zu starten, oder einen Neustart erzwingen ( shutdown -r -t 0keine Berechtigungen erforderlich) oder einfach warten, bis der Benutzer neu startet.
Gronostaj

4
@zyboxenterprises Vielleicht, vielleicht nicht;) Flame hat Windows Update für seine eigenen Zwecke ausgenutzt, indem es ein Zertifikat gefälscht hat , aber diese Sicherheitsanfälligkeit wurde bereits behoben. Es gibt keine öffentlich bekannten WU-Exploits, aber das heißt nicht, dass es keine gibt. Der von Flame verwendete war vorher auch nicht bekannt. (siehe 0-Tage-Angriff
Gronostaj

16

Alle normalen Programme werden dort angezeigt, aber ...

  • Ohne ein Administratorkonto können Sie nur Ihren eigenen Prozess anzeigen (Administratorkonten können alle Prozesse anzeigen).
  • Rootkits versuchen, ihre Existenz zu verbergen, indem sie ihren Prozess vor der Liste verbergen, den Task-Manager kompromittieren (so dass er ihn nicht anzeigt) und sich in einem anderen Prozessadressraum verstecken ...
  • Dienste werden als Threads unter a ausgeführt svchost (in den meisten Fällen) Prozess ausgeführt, sodass es keinen einfachen Punkt gibt, an dem der Dienst unter einer bestimmten svchost-Instanz ausgeführt wird.

Es gibt einige Programme zur Erkennung von Rootkits. Dazu prüfen sie beispielsweise die Liste der zur Ausführung programmierten Threads und die Liste der Prozesse im System (ein Thread, der keinem Prozess angehört, ist ein Zeichen für einen verborgenen Prozess) oder die Liste der auf hoher Ebene angezeigten Dateien. und Vergleichen mit den Dateien, die manuell von der Festplattenpartition gelesen werden.

Wenn Sie jedoch infiziert sind, kann ein Virus sein Vorhandensein so gut verbergen, dass es fast unmöglich ist, es zu erkennen. Diese werden normalerweise als APTs (Advanced Persistent Threat) bezeichnet.


2
Einige dieser Punkte werden von Sysinternals Process Explorer in gewisser Weise ungültig gemacht. Benutzer mit eingeschränkten Rechten können die Dateinamen von Prozessen sehen, die von einem anderen Benutzer ausgeführt werden, und die Tooltips von svchosts listen auf, was sie hosten.
Kirb

Meinten Sie "threat" oder "thread"? Es funktioniert tatsächlich dort;)
Konerak

Wie zählt ein Rootkit-Detektor die Threads oder Prozesse auf? Kann ein Rootkit die Aufzählung nicht manipulieren und der Rootkit-Detektor merkt das nicht?
Ray

1
@DebugErr, sie betrachten High-Level und Low-Level und melden dann die Unterschiede (was manchmal zu Fehlalarmen führt, beispielsweise wenn eine Datei zwischenzeitlich geändert wurde). Durch Überprüfen der Liste der zur Ausführung programmierten Threads bezog ich mich auf die vom OS-Scheduler verwendete doppelt verknüpfte Liste, d. H. Völlig Low-Level: Wenn es nicht da ist, bekommt es keine Zeitscheibe (obwohl es mehr zu überprüfende Stellen gibt, wie die ISR).
Ángel

5

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 Kernel-Modus-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 bezeichnete und gesteuerte Kanäle.

Der Vollständigkeit halber sollte erwähnt werden, dass Prozesse, die im Benutzermodus ausgeführt werden, auch voneinander isoliert sind, aber über vom Betriebssystem bereitgestellte Funktionen freier miteinander kommunizieren können, sofern die Programme dafür ausgelegt 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 aktuell vorhandenen Prozesse hinzugefügt. Wenn ein Programm wie der Task-Manager nach einer Liste von Prozessen fragt, erhält es eine Teilmenge der Informationen in dieser Liste, gefiltert nach Benutzerberechtigungen.

Eine Möglichkeit für Malware wie ein Rootkit, seine Existenz zu verbergen, besteht darin, sich direkt aus dieser Tabelle zu entfernen. Anschließend kann es ausgeführt werden, wird jedoch nicht mehr in einer Prozessliste angezeigt, die mit normalen Mitteln abgerufen wurde.

Da diese Prozesse tatsächlich noch vorhanden sind und ausgeführt werden, können sie durch Überprüfung anderer Kerneldatenstrukturen, z. B. von Handletabellen, die Informationen zu Ressourcen enthalten, die ein Prozess geöffnet hat (z. B. Dateien), oder durch Überprüfung der Speicherzuordnungen, von denen es sich um mehr handelt, ermittelt werden schwer zu verbergen, ohne die Funktionsfähigkeit der Software zu beeinträchtigen.

Kernel-Modus-Treiber

Kernel-Modus-Treiber, die für viele Zwecke verwendet werden, einschließlich der Interaktion mit physischen Hardwaregeräten. Sie werden nach Bedarf unter der Kontrolle des Kernels ausgeführt. Da es sich jedoch nicht um einen Benutzermodus-Prozess handelt, werden sie nicht in der Prozesstabelle angezeigt. und wird daher nicht im Task-Manager oder in anderen Tools angezeigt, die sich ausschließlich mit Prozessen befassen.

Das Ausführen von Code im Kernelmodus ist ein wichtiger Schritt, um das Vorhandensein von ausführendem Code effektiv zu verbergen. Unter normalen Umständen erfordert Windows, dass der Code im Kernel-Modus signiert ist, damit er ausgeführt werden kann. Daher muss Malware möglicherweise Exploits im Betriebssystem, anderer Software oder sogar Social Engineering verwenden, um hierher zu gelangen. Sobald der Code jedoch im Kernel-Modus ausgeführt wird, wird er ausgeblendet wird einfacher.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass es möglich ist, Beweise für die Existenz eines Prozesses zu verbergen. Es wird wahrscheinlich immer Anzeichen dafür geben, dass der Prozess existiert, da er im Allgemeinen immer irgendeine Form von Ressource verwenden muss, um das zu tun, wofür er entworfen wurde, wie schwierig Diese Erkennung hängt von der spezifischen Malware ab.


3

Viren sind heutzutage ziemlich raffiniert. Auf Ihrem Computer befindet sich möglicherweise ein Virus, der jedoch nicht im Task-Manager angezeigt wird . Es ist möglich, dass der Task-Manager (und andere Teile des Betriebssystems) selbst kompromittiert werden und so den Virus verbergen. Zum Beispiel ein Rootkit.

Wenn Sie sich darauf verlassen möchten, dass der Task-Manager nach Viren sucht, sollten Sie jetzt aufhören. Installieren Sie ein Antivirenprogramm, und selbst ein Antivirenprogramm erkennt manchmal keine Viren auf Ihrem PC.


0

Es gibt einen einfacheren Weg, einen Virus zu "verstecken", als andere, die bereits in anderen Antworten erklärt wurden:

Eine gefährdete DLL (dynamisch verknüpfte Bibliothek)

Viele Programme - fast alle untrivialen - benötigen eine oder mehrere DLLs, um ausgeführt zu werden. Einige gehören zum Betriebssystem selbst (z. B. hal.dll, das den Hardwarezugriff für Windows abstrahiert), andere werden nur von einem Programm verwendet, das in mehrere kleine Teile aufgeteilt ist (eine EXE-Datei und weitere DLL-Dateien mit Kernfunktionalität). Plugins usw.) Ihr Virus wird nicht wie ein gewöhnlicher Prozess oder Dienst die ganze Zeit ausgeführt, aber Ihr Virus wird sehr schwer zu finden sein, da er wie ein völlig unschuldiges Programm oder eine Programmkomponente aussieht.

Weitere Informationen: http://msitpros.com/?p=2012


Und eines ist an dieser Art von Viren sehr ansprechend: Es gibt Unmengen von Websites, die einen kostenlosen Download von DLLs (ohne Bezahlung) anbieten, die aus diesem oder jenem Grund auf Ihrem Computer fehlen können. Da die Möglichkeit, die Prüfsummen der ursprünglichen und der neuen DLL-Datei zu vergleichen, sehr begrenzt ist und sich kaum jemand darum kümmert, können die DLL-Viren unbemerkt in das System eindringen und dort für lange Zeit verbleiben (es sei denn, ein Antivirenprogramm erkennt dies natürlich Sie und der Benutzer stimmen dem Löschen zu - Sie sehen das Muster bereits).

Ich gehe davon aus, dass wir hier von Windows sprechen, aber diese Technik kann durchaus auch auf andere Betriebssysteme angewendet werden.


0

TL; DR: Windows-Task - Manager ist ziemlich begrenzt , was es tun kann, und es * nicht immer alle Prozesse zeigt , die auf dem System ausgeführt wird . Willst du einen Beweis? Zählen Sie (ungefähr) die Menge an RAM, die die im Task-Manager angezeigten Prozesse verbrauchen, und vergleichen Sie sie mit der RAM-Auslastung des Systems. Sie sollten über mindestens 100 MB RAM verfügen, das nicht berücksichtigt wird. Je nachdem, wofür Sie das System verwenden, steigt es manchmal auf etwa 1 GB. Grafikkarten können neben dem eigenen GDDR-RAM auch Speicher aus dem RAM beanspruchen. *

Um die Antwort von Pavel Petman zu erweitern, möchte ich hinzufügen, dass viele ausgefeilte Cheat-Engines für Spiele darauf angewiesen sind, Code in Spiel-DLLs einzufügen, die ihre Cheats ermöglichen.

Diese Art der Kompromittierung ist ziemlich schwer zu erkennen, und in dieser Frage kann dieselbe Technik angewendet werden. Wenn ein Virus beispielsweise unentdeckt bleiben möchte und sich als Windows-Update des Typs ausgibt, der sich in die Systemverzeichnisse extrahiert, kann der Virus eine kritische Systemdatei überschreiben. Die meisten Antivirenprogramme erkennen diese Art von Virus nicht. Dies bedeutet, dass der Virus den Viruscode in die wichtigen Windows-DLLs (und auch in die EXE-Dateien) einschleusen kann.

Wenn ein Client von mir auf ungewöhnliches Verhalten hinweist, starte ich immer den Process Explorer (Download von Microsoft), um Viren zu erkennen. Der Prozess-Explorer kann Ihnen genau sagen, welche Prozesse ausgeführt werden (auch diejenigen, die nicht im Task-Manager enthalten sind) und welche DLL-Module sie verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.