Frage:
Verhindert eine virtuelle Maschine, dass Malware Schaden anrichtet?
Martin Thoma
2011-11-18 03:49:55 UTC
view on stackexchange narkive permalink

Ich möchte wissen, ob es für das Hostsystem einer virtuellen Maschine (in meinem Fall VM - VirtualBox OSE) sicher ist, Malware auszuführen.

Kann ein Virus Daten vom Hostsystem ausbrechen und lesen oder schreiben? Kann es eine Internetverbindung herstellen, wenn ich sie in meiner VM deaktiviere?

Ist eine VM eine sichere Umgebung, um herauszufinden, was ein Virus tut?

Kann eine Gabelbombe "töten" "das Host-System, wenn ich den Speicher auf etwa 1/4 meines gesamten realen Speichers reduziere? Wie viel CPU-Zeit / Ressourcen kann es verbrauchen?

Mögliches Duplikat von [Wie sicher sind virtuelle Maschinen wirklich? Falsches Sicherheitsgefühl?] (Http://security.stackexchange.com/q/3056/971) und [Wie kann sichergestellt werden, dass VirtualBox-Gäste nicht aus dem VM ausbrechen können, um Zugriff auf den Hostcomputer zu erhalten?] (Http : //security.stackexchange.com/q/4097/971).
Es ist erwähnenswert, dass es einfacher ist, zu erkennen, dass Sie sich in einer befinden, während Sie der VM entkommen (z. B. Überprüfung der vom Host für die Kommunikation mit der VM-Client-Software im Gast verwendeten kooptierten Interrupts). Eine Reihe von Malware-Komponenten überprüft nun, ob sie sich in einer VM befinden, und unternimmt nichts, um die Erkennung zu erschweren.
@Basic Sehr interessant! Könnten Sie eine Referenz für eine geben, die dies tut (z. B. einen Nachrichtenartikel / eine Zeitung)?
Natürlich. Siehe [hier] (https://blog.malwarebytes.org/intelligence/2014/02/a-look-at-malware-with-virtual-machine-detection/) und [hier] (https://securityintelligence.com) / Virtual-Machines-Malware-Autoren-werden beobachtet /). Meine Arbeit berührt Malware nur tangential, aber eines der Systeme, in die wir integrieren, funktioniert, indem E-Mail-Anhänge (und ähnliches) in einer VM geöffnet und überwacht werden, was passiert. Sie mussten einige extreme Anstrengungen unternehmen, um Malware zu umgehen, die in einer Test-VM tot ist (das heißt, sie prüft, ob es sich um eine VM handelt, und prüft dann, ob sie wie eine Produktions-VM aussieht, bevor sie handelt).
Fünf antworten:
Tom Leek
2011-11-18 07:26:59 UTC
view on stackexchange narkive permalink

Theoretisch ist das Gastsystem von der VM vollständig isoliert und kann den Host nicht einmal "sehen", geschweige denn angreifen. Der Gast kann also nicht aus der VM ausbrechen. In der Praxis ist es natürlich gelegentlich passiert ( Webarchiv-Link). Ein Angriff erfordert das Ausnutzen eines Sicherheitsproblems (d. H. Eines Programmierfehlers, der schlimme Konsequenzen hat) in der VM-Implementierung oder möglicherweise in den Hardwarefunktionen, auf denen die VM aufbaut. Es gibt nur wenige Exit-Routen für Daten aus der VM. Beispielsweise emuliert die VM für den Internetzugang eine virtuelle Netzwerkkarte, die nur die Pakete der niedrigsten Ebene und nicht das vollständige TCP / IP behandelt. Daher bleiben die meisten IP-Stack-Probleme in der VM selbst beschränkt. Daher treten Fehler, die zum Ausbruch der VM führen, selten auf.

Es gibt einige Arten von Angriffen, gegen die VM sehr effektiv ist, z. Gabelbomben. Aus Sicht des Hostsystems ist die VM ein einzelner Prozess. Eine Gabelbombe im Gast bringt den Planer im Gast -Betriebssystem auf die Knie, aber für den Host ist dies völlig harmlos. Ähnliches gilt für den Speicher: Die VM emuliert eine physische Maschine mit einer bestimmten RAM-Größe und benötigt ungefähr diese Menge an "echtem" RAM, um sie effizient zu sichern. Unabhängig davon, was der Gast tut, wird die VM niemals mehr RAM als das monopolisieren. (Sie möchten die VM-RAM-Größe weiterhin auf beispielsweise höchstens die Hälfte Ihrer physischen RAM-Größe beschränken, da der zusätzliche "echte" RAM für das Zwischenspeichern von Datenträgern praktisch ist. Das Host-Betriebssystem möchte auch einige davon verwenden.)

Am Ende dieser Antwort befindet sich eine Liste mit Dutzenden von Links zu Sicherheitslücken in Chroot / Virtualbox, die darauf hinweisen, dass es unendlich viele davon gibt. Es sieht nicht selten aus. Siehe: http://tor.stackexchange.com/questions/330/running-a-virtual-machine-vm-that-can-only-connect-through-tor/376#376
Wenn Sie sich den von ihm geposteten Link ansehen, musste für diesen bestimmten Angriff ein Ordner auf dem Hostcomputer für die virtuelle Umgebung freigegeben werden.Ich kenne niemanden anders, aber wenn ich Malware in einer VM teste, werde ich keinen Ordner in meiner Host-Umgebung damit freigeben.
Vielleicht wäre der sichere Ansatz, so etwas wie ein Linux-Host-Betriebssystem zu verwenden und Windows in der virtuellen Box zu verwenden.Selbst wenn Sie einen Ordner freigeben, kann sich die Malware oder der Virus auf diese Weise nicht weiter als bis zum Ordner verbreiten, da es sich um ein anderes Betriebssystem handelt (vorausgesetzt, Sie haben das Netzwerk im Betriebssystem der virtuellen Box deaktiviert).
user2213
2011-11-19 19:50:23 UTC
view on stackexchange narkive permalink

Haftungsausschluss: Ich strebe ein relativ hohes Verständnis an. Wenn Sie eine detaillierte Anleitung wünschen, ist dies nicht möglich. Darüber hinaus gibt es andere Möglichkeiten (vollständig in Software), virtuelle Maschinen zu implementieren, für die dies nicht gilt. Ich konzentriere mich auch darauf, nur durch die Virtualisierungsmechanismen "auszubrechen" - dh nicht durch solche, die auf tatsächlich hart vernetzten Hosts von PC zu PC passieren können.

Ich mag Details, also hier sind wir geh mit einigen. Erstens verfügt Codeproject über einige hervorragende Assembler-Referenzen zu den verschiedenen Modi einer x86-CPU (real, geschützt und lang) und zur Verwendung der Virtualisierung. Es gibt einen Intel VT-Blog (ich bin mir nicht sicher, ob Intel dies schreibt) und schließlich ist der erste Teil des Rootkit Arsenal der Erklärung von x86 gewidmet und eine ausgezeichnete Lektüre. Komplett mit exemplarischen Vorgehensweisen und schönen Diagrammen. Um alles zu verstehen, ist Geduld erforderlich. Ich werde hier also eine kurze Einführung in die Funktionsweise geben.

Die Art und Weise, wie wir gerockt haben, als wir DOS p ausgeführt haben >

DOS- und frühe 16-Bit-Realmodus-Systeme betreiben ein segmentiertes Speichermodell. Es gibt keine Kontrolle über die Größe von Segmenten und es gibt keine Schutzschalter für eines dieser Segmente. Code wird in ein Speichersegment geladen und ausgeführt. Es kann weit in andere Segmente springen, so dass jeder Code überall etwas ändern kann, einschließlich der Erzeugung eines TSR-Codes (terminate and stay resident), der einfach einen der IVT-Einträge (Interrupt-Vektortabelle) auf eine Adresse in seinem Raum verweist. vor dem Ausführen des Originals. Grundsätzlich gibt es keinen Schutz. Keiner. Nada.

Der Aufstieg des 32-Bit-geschützten Modus

Der geschützte Modus wird schnell kompliziert. Es besteht aus drei Teilen: Segmentierung, Paging und PAE. Für jede Tabelle ist eine Datentabelle erforderlich, die der CPU Informationen zu diesem Segment, dieser Seite oder zur Erweiterung des Adressraums (PAE) enthält. Dazu gehören die berühmten Ringflags (sie gelten für Segmente und Seiten), die die Prozessisolation implementieren. Mit Paging können Sie Daten aus dem RAM auf die Festplatte laden und ausgefallene Dinge wie virtuellen Speicher erstellen (siehe das Wort virtuell! Wir sind da!).

Langmodus

Der Long-Modus beseitigt die Segmentierung und schreibt einfach die PAE / Paging-Strukturen vor. Um die Implementierung eines Betriebssystems vollständig zu trivialisieren, wird Paging wiederum durch Strukturen im Speicher gesteuert, die dann über spezielle Anweisungen eingerichtet werden. Voila, man kann mit den richtigen Einstellungen eine Prozessisolation erreichen. Wieder trivialisiere ich leicht ...

Gib mir Virtualisierung!

Okay. Virtualisierung ist das gleiche allgemeine Konzept. Virtuelle Maschinen werden mithilfe von Steuerungsstrukturen für virtuelle Maschinen eingerichtet, die bestimmen, wie ihr Speicher wieder dem physischen Speicher zugeordnet wird, ähnlich wie Paging . Entscheidend ist, dass die virtuelle Maschine unter bestimmten Bedingungen das Host-Betriebssystem nach etwas fragen muss, ein bisschen wie Prozessisolation, ein bisschen wie ein Software-Interrupt . Diese werden als VM-Exits bezeichnet und liefern dem Host Informationen, z. B. den Status der Register beim Beenden. Ein bisschen wie ein Systemaufruf .

Kann eine Malware aus einer virtuellen Maschine ausbrechen?

Also, als In Bezug auf die VM verfügt das Host-Betriebssystem über einen eigenen Speicherplatz und kann nach Belieben infiziert / beschädigt / zerstört werden.

In Bezug auf die direkte Auswirkung auf den Hostspeicher kann die virtuelle Maschine dies nicht, da sie ihn nicht sehen kann. Der Host muss den erforderlichen Speicher dem Speicherplatz der virtuellen Maschine zuordnen. In diesem Speicherbereich muss außerdem alles vom BIOS an implementiert werden. Um mit bestimmten Hostgeräten für bestimmte Aufgaben zu kommunizieren, muss der Hostcomputer diese VM-Beendigungsbedingungen einrichten und die Ziel-VM muss sie auslösen. In diesem Fall wird die Kontrolle auf den Host übertragen.

Es gibt daher zwei mögliche Risikobereiche:

  1. Die Aktionen, die der Host als Reaktion auf eine VM ausführt Ausfahrt. Wenn diese Behandlung Fehler enthält, kann der Host möglicherweise dazu gebracht werden, etwas auszuführen, das er nicht ausführen sollte.
  2. Jeder Hostzugriff auf den Speicherplatz des Gastcomputers. Denken Sie daran, dass der Code des Host-Computers, der in Ring 0 ausgeführt wird, die Party überall dort zum Absturz bringen kann, wo es Ihnen gefällt. Es ist nur so, dass Sie den Speicher des Gastes (überraschenderweise) vom Gast aus festlegen können.
  3. ol>

    Dies führt Sie zu Ihrem Exploit-Mechanismus. Sie benötigen einen Handhabungsfehler in der VM-Exit-Routine. Dann müssen Sie in der Lage sein, diesen Code zur Ausführung von Speicher zu überreden. Idealerweise Code, den Sie gerade in eine Seite der Gast-VM eingefügt haben. Wenn Sie fertig sind, verabschieden Sie sich von Kansas.

    Wie Tom Leek sagt, sind VMs unglaublich effektiv bei der Verteidigung gegen Gabelbomben. Ähnlich wie das Betriebssystem die Speicherzuweisung eines Prozesses begrenzen kann, kann auch die Zuordnung des Arbeitsspeichers zur VM begrenzt werden. Auslaufen und das Gastbetriebssystem glaubt, dass der physische Speicher knapp ist. Der Host wird es nicht mehr zuweisen, es sei denn, Sie implementieren einen VM-Exit, um dies zu tun. Dies wäre ein bisschen gefährlich und ich glaube nicht, dass dies getan wird.

    Wie wahrscheinlich ist das?

    Nicht sehr. Dies hängt vollständig von diesen VM-Exit-Implementierungen ab oder vom Lesen des Speichers vom Gast auf dem Host mit einem netten Fehler in Ihrem Lesecode. Es erfordert auch, dass dieser Fehler es Ihnen ermöglicht, den Absturz so zu steuern, dass Sie die Ausführung an die Speicheradresse Ihres Hosts erzwingen können. Der VM-Exit muss auf diesen Speicher zugreifen können.

    Was habe ich nicht behandelt?

    1. Angriffe auf vorhandene Software-Stacks wie TCPIP. Die Sicherheitslücken hier sind die gleichen, als ob Sie ohnehin zwei physische PCs hätten.
    2. Vollständig durch Software implementierte Virtualisierung.
    3. Virtualisierung auf jedem anderen Chip-Typ. Dies gilt für Intel VT-kompatible Setups.
    4. ol>

      Schließlich habe ich zuvor argumentiert, dass Prozessisolation eine Form von Sandboxing ist. Wenn Sie diese und diese Antwort lesen, sollten Sie jetzt verstehen können, warum ich sie so definiere. Es gibt bemerkenswerte Ähnlichkeiten zwischen Prozessisolation und virtuellen Maschinen in x86.

      Update

      Also habe ich mich noch mehr damit beschäftigt, insbesondere mit dem blaue Pille Forschung. Was ich beschrieben habe, ist eine sehr vereinfachte Ansicht auf hoher Ebene. Ich habe mehr Details gefunden. Hier ist ein ganzes Papier von Invisible Things Lab. Es stellt sich heraus, dass ihre Abwehr das Konzept beinhaltete, den Ausführungszugriff auf Benutzermodus-Seiten ab Ring 0 zu verweigern, wodurch die direkte Ausführung von Daten verhindert wird, die die virtuelle Maschine in den Speicher gestellt hat. Es stellt sich heraus, dass dies in Intel-CPUs implementiert wird und derzeit Patches im Linux-Kernel vorhanden sind. Je nachdem, wie das geht, kann es durchaus vorkommen, dass Angriffe dieser Art viel schwieriger werden, selbst wenn Exploits existieren.

Nicht zu picken, aber es gibt auch den virtuellen 8086-Modus, den unwirklichen Modus und den Testmodus auf vielen Prozessoren.
physischer Tippfehler Was habe ich nicht behandelt?1. Es können keine Änderungen vorgenommen werden, die 6 Zeichen umfassen müssen.Was für eine dumme Regel!
Tim Brigham
2011-11-18 04:08:52 UTC
view on stackexchange narkive permalink

Ich habe einige Malware-Experimente in einer VM durchgeführt - meistens mit backtrack4, um von einem Host zum nächsten zu gelangen. Ich bin hauptsächlich ein VMware Workstation-Benutzer.

Das größte Problem besteht in der Möglichkeit, dass die Netzwerkverbindung Ihrer VM wieder auf Ihr Host-Betriebssystem übertragen wird. Sie möchten das Netzwerk vollständig deaktivieren und / oder ein Netzwerk verwenden, das keinen Zugriff auf Ihren Host hat.

Die Speicherbeschränkung ist eine bewährte Methode. Ich halte es im Allgemeinen auf ungefähr ein Viertel, genau wie Sie. Die CPU-Zeit ist entweder auf die Anzahl der Kerne oder (wenn Sie feinkörnigere Steuerelemente in Ihrer Software haben) auf den Prozentsatz der für Ihre spezifische VM definierten CPU-Zeit begrenzt.

Gezielte Angriffe, die aus der virtuellen Umgebung ausbrechen können, existieren und sind im Handel erhältlich - wie die Erwähnungen von Cloudburst @ Hendrick - sind jedoch relativ selten. Es ist eine sehr gute Idee, Ihre Virtualisierungs-Patches auf dem neuesten Stand zu halten.

Siehe hier, hier und hier für Details.

Das andere zu beachtende Element ist die Verwendung von VMWare-Tools, die eine Standardmethode für die Rückkommunikation zum Host über die virtualisierte Hardware darstellen. Dies ist nur ein weiterer Weg, von dem ich keine Vulns kenne.
Guter Punkt. Im Allgemeinen installiere ich keine VMware-Tools, es sei denn, ich habe einen definierten Bedarf.
@MToecker, Ein Pfad mit VMWare-Tools sind freigegebene Laufwerke. Wenn Sie vom Gast aus Schreibzugriff auf Dateien auf dem Host-Computer haben, gilt dies auch für Malware.
Was meinen Sie mit "Bisher gab es keinen Vorrang für das Durchbrechen der Virtualisierungsschicht"? Google findet [Exploit in der Implementierung des freigegebenen Ordners] (http://www.coresecurity.com/content/advisory-vmware) und [Exploit in der Grafikkartensimulation] (http://goo.gl/xM8aI) als erstes zwei Treffer. Ich bin sicher, dass mehr als 2 Minuten für eine Suche zu viel mehr Sicherheitslücken führen werden.
Die einzigen Dinge, die ich gesehen habe, betrafen die VMware-Tools. Vielen Dank, dass Sie das Cloudburst-Zeug angesprochen haben. Ich werde entsprechend aktualisieren.
D.W.
2011-11-19 00:19:30 UTC
view on stackexchange narkive permalink

Zusätzlich zu all den guten Informationen darüber, ob der Virus aus der VM austreten kann, möchte ich auf ein weiteres zu berücksichtigendes Problem hinweisen:

Es ist möglich, dass böswilliger Code erkennt, ob Es wird in einer virtuellen Maschine ausgeführt oder nicht. Dies wird häufig als Erkennung virtueller Maschinen oder "rote Pillen" bezeichnet, und es stehen viele Techniken zur Verfügung.

Darüber hinaus verwenden einige Viren und andere Malware diese Techniken, um festzustellen, ob sie in einer VM ausgeführt werden, und schalten in diesem Fall ihre Nutzdaten aus (vermeiden Sie böswillige Maßnahmen). Sie tun dies, um den Leuten das Leben zu erschweren, die Malware zurückzuentwickeln oder zu erkennen.

Folglich ist eine VM kein guter Weg, um herauszufinden, was eine Malware tut. Die Malware kann möglicherweise nicht aus der VM ausbrechen, kann jedoch gleichzeitig nichts tun, wenn sie in der VM ausgeführt wird. Wenn Sie es in der VM ausführen und feststellen, dass es nichts bewirkt, entscheiden Sie, dass es harmlos ist, und entscheiden Sie sich dann, es außerhalb der VM auszuführen - Sie könnten Eigentümer werden. Sei da draußen vorsichtig.

PAUL
2020-07-02 06:31:43 UTC
view on stackexchange narkive permalink

Was auch immer ihr meint: Damit die BIOS-Einstellung mit eurem Computer interagieren kann, müssen diese für den Hacker leicht zu manipulieren oder zu knacken sein. Ich denke, wenn die Software, die Sie online verwenden, gehackt würde. So einfach wäre es, eine Speichererweiterung zu kaufen, als es der Online-Softwareanwendung zu ermöglichen, damit umzugehen. Diese Gedanken sind nur bestimmte Gesichtspunkte. Ob Sie es glauben oder nicht, dass Sie heutzutage online für Hacker lernen, es gibt viele, von denen Sie sich nicht vorstellen können, dass sie über Millionen auf der ganzen Welt gesagt haben.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...