Die vorliegende Arbeit dient der genaueren Betrachtung der Obfuscation auf der Windows-Kommandozeile (sog. DOSfucation), unterteilt in ein theoretisches und ein praktisches Segment.
Im Kontext der Computertechnik findet man den Begriff Verschleierung (engl. Obfuscation) bei verschiedenen Methoden, die eines gemeinsam haben: Die Lesbarkeit der Inhalte für den menschlichen Leser zu unterbinden oder zumindest zu erschweren. Davon abzugrenzen ist der allgemeine Begriff Obfuscation, der auch für die Beschreibung von Möglichkeiten zur Erhöhung von Privatsphäre im digitalen Raum verwendet wird.
Die Gründe für Obfuscation sind vielfältig. So gibt es Entwickler, die den eigenen programmierten Code veröffentlichen oder weitergeben möchten, eine Veränderung oder Analyse des Programms aber nicht wünschen. Gerade bei Skriptsprachen oder vom Endnutzer selbst zu kompilierenden Quellen sind die Algorithmen im Klartext vorhanden und können diesem Konflikt unterliegen. Auch fertig compilierte Executables sind dem Risiko von Code-Analyse und Reverse Engeneering (Rückgewinnung von Informationen über die Alogrithmen oder gar Generierung von lesbarem Quellcode aus Binärcode) ausgesetzt.
Für die verschiedenen Programmiersprachen gibt es unzählige Frameworks, die den Entwicklern helfen, ihre Quelltexte und Programme derart unlesbar zu machen, dass eine Analyse mit ungleich höherem (Zeit-)aufwand verbunden ist. Der Schutz geistigen Eigentums wird derart nach Bedarf automatisiert und für den Urheber unkompliziert gewährleistet.
Die Möglichkeiten zur Verschleierung, gerade im Programmierbereich, sind aufgrund der nahezu unendlichen Freiheitsgrade auch für kreative Coder interessant. So gibt es seit Jahren verschiedene Wettbewerbe um den unlesbarsten noch funktionierenden Code.
Inhaltsverzeichnis
1 Theorieteil: Verschleierungstechniken
1.1 Einleitung
1.1.1 Malware-Obfuscation
1.1.2 Malware-Verhalten
1.2 Obfuscation-Methoden in der Kommandozeile
1.2.1 Slicing von Umgebungsvariablen
1.2.2 Variablen-Verkettung
1.2.3 Einfügen von Junk-Zeichen
1.2.4 FOR-Loops
1.2.5 Reversal FOR-Loops
1.2.6 FINcoding
1.2.7 Ergänzende Möglichkeiten der Verschleierung
1.2.8 Fazit und Übersicht Verschleierung
1.3 Revoke Obfuscation
2 Praktischer Teil: Invoke-Obfuscation Framework
2.1 Überblick Obfuscation Frameworks
2.2 Invoke-DOSfuscation
2.2.1 Anwendungsgebiete DOSfuscation-Framework
2.2.2 Funktionsweise
2.2.3 Limitierung
2.3 Test-Setup
2.4 Payload-Sample
2.5 Fazit: Obfuscation in der Praxis
3 Aufgabenstellung
Zielsetzung & Themen
Die Arbeit untersucht Verschleierungstechniken (Obfuscation) auf der Windows-Kommandozeile, um zu analysieren, wie Angreifer durch erhöhte Komplexität Sicherheitsmechanismen und Intrusion Detection Systeme umgehen können. Ziel ist es, die technischen Methoden der Verschleierung zu erläutern und ihre Wirksamkeit sowie Erkennungsmöglichkeiten in der Praxis anhand des "Invoke-DOSfuscation"-Frameworks zu demonstrieren.
- Grundlagen der Obfuscation und Malware-Verhalten
- Methoden der Verschleierung auf der Windows-Kommandozeile
- Analyse und Erkennung obfuskierter Befehle (Revoke-Obfuscation)
- Praktische Anwendung des Invoke-DOSfuscation-Frameworks
- Evaluation der Erkennung durch verschiedene Sicherheitslösungen
Auszug aus dem Buch
1.2.1 Slicing von Umgebungsvariablen
Ein einfacher Typ der Verschleierungsmethoden, die auf die Subprocess-Aufrufe der cmd.exe zielen, ist das ’Ausschneiden’ von Teilen einzelner oder mehrerer Umgebungsvariablen. Dabei kann man auf im System vorhandene Umgebungsvariablen zurückgreifen, die teilweise auch unabhängig von der Sprachversion des Betriebssytems immer gleich lauten und daher eine Art Konstante darstellen. Darauf aufbauende Obfuscations sind relativ zuverlässig, was die Funktion angeht. Eine dieser ’konstanten’ Variablen wäre bspw. der PSModulePath, der den Pfad zu den internen Modulen der PowerShell.exe beinhaltet und damit auch den String der Executable. Die Umgebungsvariablen sind änderbar und werden durch den Interpreter der cmd.exe bei Verwendung des Prozentzeichens vor und nach dem Variablennamen (z.B. %USERPROFILE% für das Home-Verzeichnis des angemeldeten Benutzers) aufgelöst. Auf Teile der Umgebungsvariable kann man mittels Index zugreifen: %NAME: POSITION,ANZAHL%, dabei beginnt die Zählung der Position bei der in der Informatik üblichen Stelle 0.
Zur Maskierung von PowerShell.exe reicht es also bereits einen der Buchstaben zu ersetzen, um eine reine Stringsuche nach der Executable ins Leere laufen zu lassen. Gebräuchlich sind auch RegEx-Suchpattern, die aber gleichsam bereits durch diese einfache Maßnahme unterlaufen werden, sofern sie nicht auf Obfuscation hin optimiert werden. Nachfolgend die Verschleierung des Aufrufs von PowerShell.exe aus der Kommandozeile heraus, die Ausführungen wurden zum besseren Verständnis stark vereinfacht:
Zusammenfassung der Kapitel
1 Theorieteil: Verschleierungstechniken: Erläutert die theoretischen Grundlagen der Obfuscation und verschiedene Methoden zur Verschleierung von Kommandozeilenbefehlen, um Sicherheitsmechanismen zu umgehen.
2 Praktischer Teil: Invoke-Obfuscation Framework: Beschreibt die praktische Anwendung des Frameworks zur automatisierten Erstellung obfuskierter Befehle und die anschließende Testung gegenüber verschiedenen Sicherheitslösungen.
3 Aufgabenstellung: Definiert die Anforderungen an die theoretische und praktische Analyse im Rahmen der Hausarbeit.
Schlüsselwörter
Verschleierung, Obfuscation, DOSfuscation, Malware, Kommandozeile, PowerShell, CMD, Payload, Intrusion Detection, Sicherheitsanalyse, Cyber Security, Shell-Befehle, AST-Analysis, Invoke-Obfuscation, Signaturerkennung.
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit befasst sich mit Verschleierungstechniken (Obfuscation) auf der Windows-Kommandozeile, die von Angreifern genutzt werden, um schädliche Befehle und Malware vor Sicherheitslösungen zu verbergen.
Was sind die zentralen Themenfelder?
Die Schwerpunkte liegen auf den technischen Methoden der Befehlsverschleierung, dem Verhalten von Malware bei der Ausführung und den Herausforderungen bei der Erkennung solcher Techniken durch Sicherheitssoftware.
Was ist das primäre Ziel der Arbeit?
Das Ziel ist es, die Funktionsweise von Obfuscation-Techniken zu erklären, ihre Anwendung durch das "Invoke-DOSfuscation"-Framework zu demonstrieren und kritisch zu hinterfragen, wie diese Methoden die Erkennung durch Schutzsysteme beeinflussen.
Welche wissenschaftlichen Methoden werden verwendet?
Die Arbeit nutzt eine Literatur- und Whitepaper-Analyse, die praktische Anwendung eines Obfuscation-Frameworks unter Laborbedingungen (VMs) sowie eine vergleichende Analyse der Erkennungsraten durch verschiedene Antivirus-Lösungen.
Was wird im Hauptteil behandelt?
Der Hauptteil gliedert sich in einen theoretischen Teil mit einer detaillierten Erläuterung von Verschleierungsmethoden (wie Slicing, Junk-Zeichen, FOR-Loops) und einen praktischen Teil, der die Verwendung und Wirksamkeit des "Invoke-DOSfuscation"-Frameworks testet.
Welche Schlüsselwörter charakterisieren die Arbeit?
Die wichtigsten Begriffe sind Obfuscation, PowerShell, DOSfuscation, Malware-Erkennung, Commandline-Interpreter und Sicherheitsanalyse.
Warum spielt die cmd.exe eine so wichtige Rolle bei der Verschleierung?
Die cmd.exe bietet als Standard-Interpreter unter Windows eine Vielzahl von Syntax-Freiheitsgraden, die es ermöglichen, Befehle so zu verändern, dass sie für Menschen und statische Analyse-Tools unleserlich, aber für das Betriebssystem weiterhin ausführbar sind.
Wie unterscheidet sich "Reversal FOR-Loops" von herkömmlichem "FOR-Coding"?
Reversal FOR-Loops sind eine fortgeschrittene Methode, bei der Befehlsketten invertiert abgelegt und erst zur Laufzeit durch indexierte Iteration über eine FOR-Schleife korrekt zusammengesetzt und ausgeführt werden.
- Arbeit zitieren
- Marc Kasberger (Autor:in), 2020, Malware-Obfuscation auf Basis des Frameworks DOSFUSCATION, München, GRIN Verlag, https://www.grin.com/document/583679