Werden alle auf einem Computer laufenden Programme auf der Registerkarte "Prozesse" im Task-Manager angezeigt?

10085
itzjustricky

Ich frage dies deshalb, weil ich neugierig bin, ob im Computer ein Virus existieren kann, ohne dass ich jemals wissen kann, dass es existiert. Genauer gesagt, ein Virus, das keinerlei Anzeichen von sich gibt.

35

6 Antworten auf die Frage

49
Mokubai

Es gibt eine Klasse von Malware, die sich vollständig vor dem Betriebssystem verstecken kann, das als Rootkit bezeichnet wird .

Rootkits dienen dazu, den Nachweis anderer Malware bei der Arbeit zu verbergen und sind sehr tief in das Betriebssystem eingebettet. Durch ihre tiefe Einbettung können sie Prozesslisten, Dateisystemtabellen und andere wichtige Strukturen im Handumdrehen bearbeiten.

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

In ähnlicher Weise können Rootkits bestimmte Prozesse einfach von der Meldung an Programme wie den Task-Manager verwerfen. Der Kern des Betriebssystems kennt sie, da dies zur Zeitplanung erforderlich ist. Es wurde gerade daran gehindert, die Außenwelt darüber zu informieren.

Sehr gut geschriebene Antwort. Vielen Dank. trejder vor 10 Jahren 1
Ich bin neugierig, wie schaffen sie das? Es scheint etwas, was Windows überhaupt nicht zulassen sollte. Ich meine, sogar "Showprozess von allen Benutzern" sind weniger "versteckt" und eher "kategorisieren". Raestloz vor 10 Jahren 1
@Raestloz: Sie erreichen das Kunststück, indem sie den Root-Zugriff erhalten und dann Windows neu schreiben, um die Bits zu entfernen, die es 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 vor 10 Jahren 2
na ja, vielleicht sollte jemand ein Antivirus-Programm erfinden, das auf dem BIOS lol läuft Raestloz vor 10 Jahren 3
@Raestloz [flippant] * NIX ist so nah wie möglich daran. [/ Flippant] Agi Hammerthief vor 10 Jahren 0
@MooingDuck Also in der Theorie könnte ein harmloses (?) Windows Update "Windows muss Ihren Computer neu starten, um Updates zu installieren" ein Rootkit sein, das sich beim Neustart des Computers selbst installieren möchte. cybermonkey vor 10 Jahren 0
@zyboxenterprises Echte Windows-Updates sind signiert und können nicht gefälscht werden. Sie können jedoch nur das Dialogfeld für den Neustartanruf fälschen oder den Benutzer dazu verleiten, den Neustart auf andere Weise durchzuführen, oder einen Neustart erzwingen (`shutdown -r -t 0`, keine Berechtigungen erforderlich). oder warten Sie einfach, bis der Benutzer neu startet. gronostaj vor 10 Jahren 1
@Raestloz Es ist kein Job für das BIOS, sondern für ein vom Betriebssystem unabhängiges Virenschutzprogramm: http://www.livecdlist.com/purpose/windows-antivirus gronostaj vor 10 Jahren 0
@gronostaj Der Teil "Windows Update" meiner Antwort ist also ungültig? Soll ich diesen Teil entfernen? cybermonkey vor 10 Jahren 0
@zyboxenterprises Vielleicht, vielleicht auch nicht;) [Flame] (https://en.wikipedia.org/wiki/Flame_ (Malware)) 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 bedeutet nicht, dass es keine gibt. Der von Flame verwendete war vorher auch nicht bekannt. (Siehe [0-Tagesangriff] (https://en.wikipedia.org/wiki/Zero-day_attack) gronostaj vor 10 Jahren 4
@gronostaj In jedem Programm gibt es immer Schwachstellen, und es wird immer eine geben. Es ist nur eine Frage der Zeit, bis jemand anderes einen anderen WU-Exploit findet. cybermonkey vor 10 Jahren 0
16
Ángel

Alle normalen Programme erscheinen dort, aber ...

  • ohne Administratorkonto können Sie nur Ihren eigenen Prozess sehen (Admin-Konten können sich die Prozesse aller anzeigen lassen)
  • Rootkits werden versuchen, ihre Existenz zu verbergen, indem sie ihren Prozess aus der Liste ausblenden, den Task-Manager gefährden (sodass er nicht angezeigt wird) und sich in einem anderen Prozess-Adressraum verstecken ...
  • Dienste werden als Threads unter einem svchostProzess ausgeführt (in den meisten Fällen). Daher ist es nicht einfach, den Dienst unter einer bestimmten svchost-Instanz auszuführen.

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 eines verborgenen Prozesses) oder die Liste der Dateien, die auf hoher Ebene angezeigt werden. und vergleicht sie mit den Dateien, die sie manuell von der Festplattenpartition liest.

Trotzdem ist es möglich, dass ein Virus, sobald Sie infiziert sind, seine Präsenz so gut verdeckt, dass es fast unmöglich ist, es zu erkennen. Diese werden in der Regel als APT (Advanced Persistent Threat) bezeichnet.

Einige dieser Punkte werden von Sysinternals [Process Explorer] (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) etwas ungültig gemacht - eingeschränkte Benutzer 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 vor 10 Jahren 2
Meinen Sie "Bedrohung" oder "Thread"? Es funktioniert tatsächlich dort;) Konerak vor 10 Jahren 0
Wie zählt ein Rootkit-Detektor die Threads oder Prozesse auf? Wenn dies ein typischer Weg / WinAPI ist, kann ein Rootkit die Aufzählung nicht manipulieren und der Rootkit-Detektor dies nicht bemerken? Ray Koopa vor 10 Jahren 0
@DebugErr, sie betrachten High-Level und Low-Level und melden dann die Unterschiede (manchmal erzeugen sie falsch positive Ergebnisse, zum Beispiel wenn eine Datei zwischendurch geändert wurde). Durch _checken der Liste der für die Ausführung programmierten Threads verweise ich auf die vom OS-Scheduler verwendete doppelt verknüpfte Liste, dh. völlig low-level: wenn es nicht da ist, bekommt es keine Zeitscheibe (obwohl es mehr Orte gibt, die man überprüfen kann, wie die ISR). Ángel vor 10 Jahren 1
5
Crippledsmurf

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.

3
Rsya Studios

Viren sind heutzutage ziemlich kompliziert. 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 gefährdet werden, wodurch der Virus versteckt wird. Zum Beispiel ein Rootkit.

Wenn Sie vorhaben, sich auf den Task-Manager zu verlassen, um nach Viren zu suchen, sollten Sie jetzt aufhören. Installieren Sie ein Antivirus-Programm, und sogar ein Antivirus-Programm kann auf Ihrem PC keinen Virus erkennen.

0
Pavel

Es gibt einen einfacheren Weg, "einen Virus zu verbergen", abgesehen von anderen, die bereits in anderen Antworten beschrieben wurden:

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

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

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


Und es gibt eine Sache, die diese Art von Viren sehr reizvoll macht: Es gibt unzählige Websites, die einen kostenlosen Download von DLLs anbieten (die keine Bezahlung erfordert), die möglicherweise auf diesem Computer verloren gehen. 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 lange Zeit unbemerkt in das System eindringen und dort verbleiben (es sei denn, ein Virenschutzprogramm erkennt dies natürlich Sie und der Benutzer stimmt der Löschung zu - Sie sehen das Muster bereits).

Aus der Frage nehme ich an, dass wir hier von Windows sprechen, aber diese Technik kann sich auch auf andere Betriebssysteme anwenden.

0
cybermonkey

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 RAM-Menge, die von den im Task-Manager angezeigten Prozessen verwendet wird, und vergleichen Sie sie mit der RAM-Auslastung des Systems. Sie sollten über mindestens 100 MB RAM verfügen, die nicht berücksichtigt werden, und manchmal steigt sie auf etwa 1 GB an, je nachdem, wofür Sie das System verwenden. Grafikkarten können zusammen mit dem eigenen GDDR-RAM etwas Speicher aus dem RAM nehmen. *

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

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

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