Transparency of Windows Subsystem for Linux

Bachelor Studiengang IT Security

Alexander Tauber, BSc

Dozent: Dipl.-Ing. Patrick Kochberger, BSc

Ausgangslage

Oft stellen sich EntwicklerInnen und AdministratorInnen die Frage, ob ihre Aufgabe in einem anderen Betriebssystem einfacher zu bewältigen wäre. Ein weiterer Gedanke in diesem Zusammenhang ist die Kombination von zwei Systemen, beispielsweise Windows und Linux, um einen effizienteren Arbeitsablauf darzustellen. WSL, ein neues Feature von Microsoft versucht dies zu lösen. Es ermöglicht Linux Programme nativ in Windows auszuführen.

Doch neben der Vereinfachung vieler Aufgaben entstehen Gefahren, die es AngreiferInnen und Schadsoftware erleichtern, in Systeme einzudringen und sich dort unentdeckt zu persistieren. Aus diesem Grund ist es wichtig, die Eigenschaften von WSL und mögliche Angriffs-Vektoren auf dieses System kennen zu lernen, um ein Bewusstsein für Gefahren zu entwickeln und eine Basis zu legen, auf die in Zukunft Strategien zu Härtung aufgebaut werden können.

Diese Arbeit zeigt zunächst den Aufbau und beschäftigt sich dann mit Methoden zur Erkennung von WSL.

Ziel

Ziel der Arbeit ist es, das Level der Transparenz des neuen Microsoft Features Windows Subsystem für Linux zu ermitteln. Dazu werden einzigartige Eigenschaften von WSL mit Linux verglichen. Ein besonderes Augenmerk liegt dabei auf System Calls.

Ergebnis

Im Zuge der Arbeit wurden mögliche Vektoren zur Erkennung des Features WSL getestet, welche sich in die Kategorien einteilen: Kernel Version, Kommunikation Kanal, voreingestellte Konfiguration und System Call Verhalten.

Dabei wurden unter anderem alle System Calls geprüft. Die größte Varianz bilden dabei System Calls, die in WSL zum jetzigen Zeitpunkt nicht unterstützt werden und daher einen entsprechenden Fehler werfen.

Aufbauend auf dieser Analyse wurde ein Programm entwickelt, welches eine Wahrscheinlichkeit ausgibt, dass es sich um WSL handelt. Des Weiteren ist eine Eingrenzung der verwendeten Version möglich, basierend auf der erstmaligen Unterstützung eines System Calls.