Verschleierungstechniken für Payloads


Hausarbeit, 2019

31 Seiten, Note: 1,3


Leseprobe


Inhaltsverzeichnis

Abbildungsverzeichnis

1 Einleitung

2 Theoretischer Teil
2.1 Wie ist Verschleierung einzuordnen?
2.2 Verschleierung von Payloads – Begriffsbestimmung
2.3 Mechanismen der Verschleierung
2.3.1 Zeichenorientierte Verschleierung
2.3.2 Verschleierung mittels Substringfunktion
2.3.3 Verkettung
2.3.4 FORCoding
2.3.5 Reversal
2.3.6 FINcoding
2.4 Erkennung von Verschleierung
2.4.1 Signature-based Detection
2.4.2 Statistical Anomaly-based Detection
2.4.3 Stateful Protocol Analyse
2.4.4 Schlussfolgerung bezüglich Erkennungsmethoden

3 Praktischer Teil
3.1 Vorstellung des Tools Invoke-DOSfucation
3.1.1 Invoke-DOSfuscation
3.1.2 Invoke-DOSfuscationTestHarness
3.2 Invoke-DOSfucation in Aktion
3.2.1 Tools
3.2.2 Versuch 1: Verschleiern einer harmlosen Payload
3.2.3 Versuch 2: Verschleiern einer schädlichen Payload

4 Fazit und Ausblick

Anhang A: Quelltexte

Quellenverzeichnis

Abbildungsverzeichnis

Abbildung 1: Kombination aus eigener und Umgebungsvariable

Abbildung 2: Hilfemenü DOSfuscation

Abbildung 3: Tutorial DOSfuscation

Abbildung 4: Set Command in DOSfuscation

Abbildung 5: Verschleierung eines konkreten Befehls

Abbildung 6: Buildprocess DOSTestHarness

Abbildung 7: Erkennungsstatistik zu einem verschleierten Befehl

Abbildung 8: Verschleierung mittels FINCoding zur Extraktion von Prozessorinfos

Abbildung 9: Auszug Process Monitor, entschleierter Befehl

Abbildung 10: Auszug aus Ergebnis gewonnener Daten mittels FINCoding

Abbildung 11: Win7 Internet-Explorer ruft den PowerSploit-Ordner der Kali VM auf

Abbildung 12: Meterpreter wird eingerichtet und lauscht

Abbildung 13: Generierte verschleierte Payload auf dem Desktop der Win7 VM

Abbildung 14: Remote-Shell wurde erfolgreich geöffnet auf der Kali Linux VM

Abbildung 15:Windows Defender verschiebt Datei in Quarantäne

Abbildung 16: Verschleierte schädliche Payload wird während Ausführung gestoppt

1 Einleitung

Die vorliegende Hausarbeit ist ein Thema aus einem ganzen Komplex an Themen, die den Studenten der digitalen Forensik des Jahrgangs 2018 der Hochschule Albstadt- Sigmaringen im Studienmodul M106 zur Auswahl gestellt wurden. Gegenstand dieses Moduls sind die IT-Sicherheit und IT-Angriffe. Diese Hausarbeit beschäftigt sich mit Verschleierungstechniken und wird, der Aufgabenstellung entsprechend, den Sachver- halt sowohl theoretisch darstellen, als auch an einem Praxisbeispiel demonstrieren.

Kapitel 2 widmet sich der theoretischen Annäherung an das Thema. Dabei geht es zu- nächst um die Begriffsbestimmung und was im Rahmen dieser Arbeit unter Verschleie- rung zu verstehen ist. Anschließend werden verschiedene Mechanismen aufgezeigt, mit denen eine Verschleierung erreicht werden kann. Beispiele zu den einzelnen Techniken verdeutlichen dabei konkret die mögliche Umsetzung. Abgerundet wird dieser Teil mit einer Schlussfolgerung bezüglich der Möglichkeiten jede der vorgestellten Varianten zu erkennen und Gegenmaßnahmen zu ergreifen.

Kapitel 3 ist dem praktischen Anteil dieser Arbeit gewidmet. Mit Hilfe eines frei erhält- lichen Tools, das es ermöglicht verschiedene Verschleierungstechniken zu erproben, wird ein aussagekräftiges Beispielszenario durchgespielt. Dazu wird zunächst das Tool und seine Funktionsweise erläutert und dann angewandt.

Kapitel 4 zieht ein kurzes Fazit über die Inhalte der Arbeit und gibt einen Ausblick dar- über welche weiteren Versuche mit den erarbeiteten Ergebnissen vorgenommen werden können.

2 Theoretischer Teil

2.1 Wie ist Verschleierung einzuordnen?

Als die ersten Firmen- und Organisationsnetzwerke in den 90er Jahren entstanden, be- stand eine Absicherung dieser Strukturen hauptsächlich darin Intrusion Detection Sys- teme (IDS) zu verwenden.

Ein IDS soll per Definition in der Lage sein auf einen Angriff aufmerksam zu machen und zu warnen. Dies geschieht in der Regel passiv, d.h. ein IDS ist in der Lage schädli- chen Inhalt zu erkennen und loggt beispielsweise Ereignisse [1]. Diese Fähigkeit allein reicht jedoch nicht notwendigerweise aus, um Angriffe auch abzuwehren.

Erste Techniken zur Umgehung von IDS wurden ebenfalls bereits in den 90er Jahren entwickelt und haben die Schwächen dieser Systeme verdeutlicht [2]. Aus diesem Grund wurde es nötig die vorhandenen Absicherungsmaßnahmen zu ergänzen, soge- nannte Intrusion Prevention Systeme (IPS) wurden entwickelt. Ein IPS handelt ähnlich wie ein IDS, hindert Traffic aber bei Bedarf aktiv daran sein Ziel zu erreichen [1].

Zu den Methoden eines IPS, um schädlichen Verkehr zu erkennen gehören beispiels- weise die signaturbasierte Erkennung, die statistische Anomalie Auswertung und die sogenannte Stateful Protocol Analyse ([1], S. 13). Auf diese Techniken wird im Speziel- len in Abschnitt 2.4 in Verbindung mit der Erkennung von Verschleierung genauer ein- gegangen.

Die im Folgenden dargestellten Verschleierungstechniken zielen nun darauf ab diese Detektierungstechniken eines IPS auszutricksen und einen schädlichen Code trotzdem erfolgreich auf einem geschützten System einzuschleusen und auszuführen. Dabei sind Verschleierungtechniken nur eine der möglichen Methoden, um ein IPS zu umgehen. Beispiele für weitere Techniken sind DOS-Attacken oder die Fragmentierung von Pake- ten, diese werden jedoch im Rahmen dieser Arbeit nicht weiter berücksichtigt, da sie den vorgegebenen Umfang sprengen würden.

In der Realität werden Techniken zur Maskierung mit den oben genannten Techniken kombiniert, um die Erfolgschancen eines Angriffs zu steigern.

2.2 Verschleierung von Payloads – Begriffsbestimmung

Verschleierung (englisch: obfuscation) beschreibt im Zusammenhang mit Informations- technologie den Vorgang, dass ein lesbarer Satz von Zeichen in etwas Unlesbares um- geformt wird.

Der umgeformte Zeichensatz ist schwieriger als vorher zu interpretieren oder zu erken- nen, dennoch bleibt der Inhalt erhalten. Der verschleierte Inhalt erfüllt die gleiche Funk- tion wie zuvor und kann beispielsweise dafür missbraucht werden schädliche Bestand- teile in einem ausführbaren Code zu verstecken ([2], S. 3). Zur Verschleierung bietet es sich an, grundlegend harmlose Mechanismen von Betriebssystemen zu nutzen, die ori- ginär betrachtet eine andere, nützliche Aufgabe haben.

Wird Verschleierung angewandt, so kann es passieren, dass ein IPS nicht mehr in der Lage ist die eigentliche Funktion eines Zeichensatzes zu erkennen und diesen als unge- fährlich einstuft.

Zur Ergänzung sei an dieser Stelle angemerkt, dass eine Payload im Rahmen dieser Ar- beit als die Daten bezeichnet werden, die an einen Nutzer übertragen werden. Dies be- rücksichtigt nicht eventuelle Metadaten oder den Overhead, der beispielsweise mit be- stimmten Kommunikationsprotokollen einhergeht.

2.3 Mechanismen der Verschleierung

Gemäß der Aufgabenstellung ist es gefordert insbesondere auf das Whitepaper von Fi- reEye [1] einzugehen und die dort aufgeführten verschiedenen Möglichkeiten von Ver- schleierungstechniken für die cmd.exe von Windows zu berücksichtigen. Aus diesem Grund wird in den nächsten Abschnitten vor allem auf die dort vorgestellten Mecha- nismen und Beispiele referenziert.

Die vorgestellten Methoden funktionieren auf unterschiedlichen Ebenen der cmd.exe von Windows. Eine Umgehung von statischer Erkennung meint, dass damit Command- line-Argumente, die statisch in Speichern wie der Registry oder Dateien vorkommen, getarnt werden. Das Umgehen einer dynamischen Erkennung zielt darauf ab Argumente während der Ausführungszeit zu verschleiern. Verschleierungen, die auf statischer Ebe- ne funktionieren, könnten beispielsweise während der Ausführungsphase erkannt wer- den ([3], S. 6).

2.3.1 Zeichenorientierte Verschleierung

Das zeichenorientierte Tarnen einer schädlichen Payload zielt darauf ab die Signaturen einer Erkennungssoftware mittels sogenannter zulässiger Escape-Character zu täuschen. Escape-Character haben in der jeweiligen Oberfläche konkrete Aufgaben und werden normalerweise dafür benutzt, dass beispielsweise eingegebene Befehle in der Konsole richtig interpretiert werden. So verlangt z.B. die cmd.exe von Windows bei Pfadanga- ben mit Leerzeichen, dass der Pfad in Anführungszeichen gesetzt wird.

2.3.1.1 Das Caretzeichen ‚^‘

Gemäß Bohannon, D. ([3]) handelt es sich beim Caretzeichen um das am meisten ge- nutzte Zeichen, dass für eine Verschleierung herangezogen wird. Normalerweise wird ein Caret benutzt, um einem folgenden Sonderzeichen seine Funktion zu entziehen. Das heißt, dass zum Beispiel ein Backslash ‚\‘ mittels ‚^\‘ in der cmd.exe auch wirklich nur als originärer Backslash interpretiert wird. Zur Verschleierung kann die Eigenschaft benutzt werden, dass ein Caret sich selbst entkommen kann. Wird ein Befehl mittels doppelten Caret erstellt und anschließend ausgeführt, dann wird schlussendlich der Be- fehl so ausgeführt, als wäre nie ein Caret verwendet worden.

Beispiel:

Dabei ist an dieser Stelle wichtig zu betonen, dass mit jeder Schicht während der Be- fehlsausführung das Caret immer weiter reduziert wird.

Originaler Befehl:

powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

- Vor Ausführung:
P^^o^^w^^e^^r^^s^^h^^e^^l^^l^^.^^e^^x^^e -no^^exit "& "" C:\Users\Lee\Desktop\harmless.ps1"""

- Nach Ausführung:
P^o^w^e^r^s^h^e^l^l^.^e^x^e -no^^exit "& "" C:\Users\Lee\Desktop\harmless.ps1"""

- Schlussendliche Ausführung:
powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1"""

2.3.1.2 Das doppelte Anführungszeichen ‚““‘

Wie in Abschnitt 2.3.1 bereits angedeutet, dienen doppelte Anführungszeichen in der cmd.exe zur Gruppierung von Argumenten, wenn diese zum Beispiel Leerzeichen bein- halten. Paare vonAnführungszeichenpaare können nicht ignoriert werden und wirken wie ein Aneinanderhängen von Argumenten.

Des Weiteren besitzen Anführungszeichen eine längere Lebensdauer im Vergleich zu einem Caret, sie werden auch in der Ausführungsphase nicht entfernt. Eine ungerade Anzahl an Anführungszeichen führt zu einem Fehler. Weitere Vorteile gegenüber einem Caret sind gemäß Bohannon ( [3],S. 12) die häufigere legitime Verwendung von Anfüh- rungszeichen, was einen Missbrauch zusätzlich schwerer erkennen lässt, und die Tatsa- che das Anführungszeichen nicht nur in der cmd.exe erlaubt sind.

Beispiel:

Originaler Befehl:

powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

Powe““rshell.exe -no““exit "&""C:\Users\Lee\Desktop\harmless.ps1"""

2.3.1.3 Klammern ‚()‘

Genauso wie in der Mathematik können Klammern bei Argumenten benutzt werden, um Argumentgruppen klarer voneinander abzugrenzen. Klammern haben in der cmd.exe keine konkrete Aufgabe, sie beeinflussen die Ausführung von einzelnen Kommandos nicht. Jedoch können unnötig verwandte Klammern dazu führen, dass strikte Erkennungsregeln eines IPS, die nur logische Operatoren zwischen Kommandos erwarten, nicht greifen.

Beispiel:

Die Ausführung muss in der cmd.exe erfolgen, unter PowerShell.exe verursacht solch eine Konstruktion Probleme.

Originaler Befehl:

powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

((Powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1""")) &&((( (echo „Test“))))

2.3.1.4 Komma ‚,‘ und Semikolon ‚;‘

Komma und Semikolon können immer dort eingesetzt werden, wo auch Leerzeichen zum Einsatz kommen. Beide Zeichen sind untereinander austauschbar und bei cmd.exe können sie als Trenner (delimiter) fungieren.

Beispiel:

Beide Ausgaben liefern das gleiche Ergebnis. Originaler Befehl:

Echo "test" && echo "test2"

Verschleierter Befehl:

echo,"test" && ;;,,;,; echo,"test2"

2.3.2 Verschleierung mittels Substringfunktion

In diesem Abschnitt widmen wir uns der Verschleierung mittels der Substringfunktion, die dazu benutzt werden kann, um komplette batch-Dateien zu manipulieren.

Bei dieser Technik läuft alles darauf hinaus, dass Befehle, die ein IPS blockieren würde, durch Teile eines bekannten Strings zusammengesetzt werden. Dazu gibt es zwei Mög- lichkeiten: Die Benutzung von Umgebungsvariablen oder von selbst erstellten Variab- len.

Auf jedem Windows-Betriebssystem befinden sich Umgebungsvariablen, die mehr oder minder immer gleich abgelegt und aufgebaut sind. Dadurch kann die cmd.exe eigene Substringfunktionalität an definierten Positionen der Umgebungsvariablen immer das gleiche Zeichen erwarten. Im zweiten Schritt wird damit die gewünschte Payload er- stellt.

Beispiel:

Hierbei werden Teile des originalen Befehls mit Substrings ( )ersetzt. Originaler Befehl:

powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

powersh%CommonProgramW6432:~-2,-1%ll.exe -%APPDATA:~-2,1%oexit "&""C%ProgramFiles:~15,1%\Users\Lee\%ALLUSERSPROFILE:~10,1%e%CommonPr

ogramFiles(x86):~34%ktop\harmles%TMP:~4,1%.ps1"""

Sollte nicht auf Umgebungsvariablen zurückgegriffen werden können, so ist es auch möglich eine eigene Variable zu erschaffen und somit quasi ein Wörterbuch zu erzeu- gen, aus dem die nötigen Zeichen extrahiert werden können.

Beispiel:

Davon ausgehend, dass eine eigene Variable zu Beginn, z.B. eines Bashfile mit set dict= 0123456789abcdefghijk.. usw. gesetzt wurde, kann folgende Ersetzung stattfinden.

Originaler Befehl:

powershell.exe -noexit "&""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

pow%dict:~15,1%.rshell.exe -no%dict:~15,1%.xit "&""C:\Users\Lee\Desktop\h%dict:~11,1%.rmless.ps1"""

Schlussendlich ist es möglich die beiden vorgestellten Techniken auch zu kombinieren. So kann eine eigene Variable als Wörterbuch erschaffen werden, indem zuerst Subst- rings einer bekannten Umgebungsvariable benutzt werden.

Da der Umfang dieser Variante den Rahmen der Arbeit sprengen würde, folgt an dieser Stelle nur eine bildliche Darstellung.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1: Kombination aus eigener und Umgebungsvariable 1

2.3.3 Verkettung

Diese Technik macht sich unter anderem zu Nutze, dass die Funktion call der cmd.exe keinen Kind-Prozess erzeugt und mit selbsterstellten Variablen durch Verwendung der Funktion set kombiniert werden kann. Verkettung meint in diesem Sinne das Aneinan- derhängen der beiden Funktionen. Wird zeichenorientierte Verschleierung benutzt und durch /V:ON die Erweiterung einer Variablen zur Laufzeit zugelassen, dann kann die Komplexität noch gesteigert werden.

Beispiel:

Es ist zu erkennen, dass zunächst Variablen ( ) gesetzt werden und diese dann anei- nandergehängt werden, um schließlich den finalen Befehl ( ) zu bilden.

Originaler Befehl:

powershell.exe -noexit "& ""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

Abbildung in dieser Leseprobe nicht enthalten

2.3.4 FORCoding

Diese Verschleierungsvariante benutzt die for-loop Funktionalität von cmd.exe in Kombination mit der bereits erwähnten Variablenerweiterung. Dafür wird zunächst eine Variable erzeugt, die als Wörterbuch fungiert und deren Indexbelegung bekannt ist. Anschließend wird über eine for-loop der Befehl Zeichen für Zeichen zusammengesetzt und in einer neuen Variablen gespeichert. Zum Abbruch der Schleife muss zusätzlich noch ein Delimiter gesetzt werden, der durch if als Abbruchbedingung herhält.

Beispiel:

Es ist zu erkennen, dass zunächst eine Variable ZBW ( ) initialisiert wird, aus der dann die foor-loop ( ) ihren Zeichensatz speist, um den gewünschten Befehl ( )zu- sammenzusetzen. Dabei fungiert die Zahl „36“ als Delimiter, um die das Ende der Schleife zu signalisieren.

Originaler Befehl:

powershell.exe -noexit "& ""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

Abbildung in dieser Leseprobe nicht enthalten

2.3.5 Reversal

Der Befehl, der ausgeführt werden soll, wird rückwärts in eine Variable eingetragen. Durch entsprechende Benutzung der for-loop Funktion wird der Inhalt der Variablen rückwärts ausgelesen und zusammengesetzt.

Beispiel:

Zur Verdeutlichung wurde an dieser Stelle ein einfaches Beispiel benutzt. Die Variable tJos ( ) beinhaltet den kompletten Befehl rückwärts geschrieben. Anschließend arbei- tet die for loop ( ) die Zeichenfolge von hinten beginnend ab und der zusammenge- setzte Befehl ( ) wird ausgeführt.

Originaler Befehl:

powershell.exe -noexit "& ""C:\Users\Lee\Desktop\harmless.ps1"""

Verschleierter Befehl:

Abbildung in dieser Leseprobe nicht enthalten

[...]


1 Vgl. http://www.bathome.net/archiver/tid-42106.html (aufgerufen 18.03.2019) und [3], S. 18

Ende der Leseprobe aus 31 Seiten

Details

Titel
Verschleierungstechniken für Payloads
Hochschule
Hochschule Albstadt-Sigmaringen; Albstadt
Note
1,3
Autor
Jahr
2019
Seiten
31
Katalognummer
V506102
ISBN (eBook)
9783346060341
Sprache
Deutsch
Schlagworte
IT-Security, IT-Angriffe, Obfuscation, Verschleierung, DOSfuscation, Payload
Arbeit zitieren
Lee Kirsten (Autor:in), 2019, Verschleierungstechniken für Payloads, München, GRIN Verlag, https://www.grin.com/document/506102

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Verschleierungstechniken für Payloads



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden