Exploits entmystifiziert, Teil 1

Wie ein Angreifer Schadcode ins System schleusen kann

Seite: 3/3

Firma zum Thema

Wie der Angreifer endgültig die Kontrolle übernimmt

Was aber, wenn der Speicherraum einen schlafenden Schadcode enthält? In diesem Fall kann der Angreifer die Kontrolle nutzen und den Ausführungsfluss umleiten, um den Code auszuführen. Die CPU wird die Ausführung fortsetzen, da sie mit gültigen Anweisungen gespeist wird. Wenn dieses kleine Stück Code, zusätzlich zur Ausführung, eine Verbindung zwischen dem Computer des Angreifers und des Opfers öffnen würde, wäre der Angreifer in der Lage, den Computer mit legitimen Benutzerberechtigungen aus der Ferne zu steuern.

Um die Kontrolle über einen infizierten Computer zu übernehmen, muss der Angreifer eine Anwendungseingabe (in der Regel eine Datendatei) auf die folgende Weise in Handarbeit erstellen:

  • 1. Ein Stück Code in der Datei einbetten, die eine Verbindung zwischen dem Angreifer und dem Zielcomputer öffnen wird, wenn sie ausgeführt wird.
  • 2. Die Datei manipulieren, so dass der Ausführungsablauf von seinem Weg abweicht (wie bereits erklärt).
  • 3. Berechnen der vorhergesagten Position der Adresse, wohin des Prozesses abweicht und Füttern der Adresse mit dem Standort des Codes des Angreifers.

Nach Abschluss dieser vorbereitenden Schritte muss der Angreifer sicherstellen, dass der Zielbenutzer tatsächlich diese manipulierte Datei öffnen wird. Dies erfolgt in der Regel durch Social Engineering, in Form eines E-Mail-Anhangs (die manipulierten Dateien wären in diesem Fall Office-Dokumente, Reader etc.) oder durch die Kompromittierung einer gern besuchten Webseite.

Wenn der Benutzer auf der Webseite surft oder die Anlage öffnet, wird die Kette, wie beschrieben, ausgelöst: Die Anwendung startet die Ausführung. An einem bestimmten Punkt, ohne dass der Anwender es überhaupt bemerkt, weicht der Ausführungspfad ab, die umgeleitete Adresse wird überschrieben.

Der Ausführungspfad wird in Richtung eingebetteten Codes des Angreifers umgeleitet. Der Code wird ausgeführt werden und eine Verbindung zwischen der Maschine des Angreifers Maschine und dem Zielbenutzer wird eingerichtet. Von diesem Moment an ist der Endpunkt, also die Maschine des Benutzers, kompromittiert und der Angreifer kann jede Malware, je nach spezifischen Bedürfnissen, herunterladen.

Gängige Terminologie

Wir können nun die folgenden Begriffe definieren:

  • Eine Sicherheitslücke/Schwachstelle (Vulnerability) ist ein Fehler in der Anwendung, der beim Ausführungsfluss bewirkt, von seinem vorgesehenen Pfad abzuweichen, wenn versucht wird, eine fehlerhafte Datendatei zu verarbeiten. Verschiedene Schwachstellen entsprechen verschiedenen Manipulationsvarianten. Eine Schwachstelle ermöglicht es einem Angreifer, einen Prozessausführungsablauf abzufangen. Die Sicherheitslücke an sich bietet nur die Möglichkeit für eine Kompromittierung.
  • Ein Shellcode ist ein kleiner Code des Angreifers, eingebettet in der manipulierten Eingabedatei. Der Shellcode stellt die Verbindung zwischen dem Angreifer und dem Zielcomputer her. Diese Verbindung wird weiter genutzt, um das Ziel auszuspionieren und zusätzliche Malware herunterzuladen.
  • Ein Exploit ist der Code, der den Ausführungsablauf von der überschrieben Adresse zum schlafenden Shellcode umleitet. Ein erfolgreicher Angriff wird durchgeführt, wenn der Shellcode ausgeführt und eine Verbindung zwischen dem Angreifer und dem Zielrechner hergestellt wird.

Der Exploitation-Prozess setzt sich somit aus den folgenden Teilen zusammen: Überschreiben einer Adresse im Prozess-Speicherraum > Umleiten der Ausführungsabfolge zur Shellcode-Adresse > Ausführen des Shellcodes. In den kommenden Teilen dieser Reihe geht es um verschiedene Arten von Schwachstellen und die Hauptimplementierungen dieser drei Komponenten.

* Thorsten Henning, Senior Systems Engineering Manager Central & Eastern Europe bei Palo Alto Networks.

(ID:43725378)