Um Desktop-Anwendungen internen und externen Endanwendern von Unternehmen bereitzustellen, haben sich in den vergangenen Jahren verschiedenste Techniken zur virtualisierten Bereitstellung etabliert. Dies ermöglicht es externe Zugriffe, beispielsweise aus dem Homeoffice oder in einem Bring-Your-Own-Device (BYOD) Setup, zu realisieren. Gängige Systeme sind hier beispielsweise die Virtualisierung auf Basis der Microsoft Terminal Services und innerhalb eines Citrix Clusters. Der folgende Artikel verwendet Citrix als Synonym für die gesamte Gruppe an Virtualisierungslösungen.
Grundlegend wird die Ziel-Anwendung in einem Container OS (meist Microsoft Windows) installiert und eingerichtet. Die Virtualisierungsumgebung ermöglicht es nun die Anwendung, beispielsweise über eine Web-UI, zu starten. Hierfür baut ein auf dem PC des Endanwenders installierter Client eine Verbindung zum Citrix-Server auf und ruft die entsprechende Konfiguration ab. Hierauf öffnet sich auf dem Client-PC ein Fenster, welches die UI der freigegebenen Anwendung über ein proprietäres Protokoll an den Client überträgt. Bei Interkation mit dieser Anwendung werden lediglich Maus- und Keyboard-Interaktionen an die im zentralen Cluster ausgeführte Anwendungsinstanz gesendet. Vorteil ist hier, dass keine lokale Installation der Ziel-Anwendung auf dem System des Endanwenders benötigt wird. Lediglich eine Receiver Applikation, welche eine Verbindung mit dem Citrix Server aufbauen kann.
Die Bereitstellung über Citrix hat eine Vielzahl von Vorteilen aus Sicht eines Betriebsteams. Die Installation der Anwendung erfolgt zentral und einmalig innerhalb des Container OS. Auch Updates der Anwendung müssen nur hier zentral eingespielt werden. Eine Vergrößerung des Anwenderkreises kann über Freigabe der Anwendung im Citrix Profil der jeweiligen Personen erfolgen.
In Kontrast zu einem Pentest einer klassischen Desktop-Anwendung mit lokaler Installation, sind im Citrix-Umfeld durch die Virtualisierung einige Überprüfungsschritte nicht möglich. So wird in derartigen Pentests die Sicherheit der lokalen Installation geprüft. Hierbei steht das Berechtigungsmanagement auf Konfigurationsdateien und Binärdateien innerhalb der Installationsverzeichnisse im Vordergrund. Da der Client im Falle einer Bereitstellung über Citrix nicht lokal installiert ist, fallen diese Prüfschritte weg. Weiterhin ist ein zentraler Bestandteil die Analyse des Netzwerkverkehrs zwischen der Ziel-Anwendung selbst und ihren zugehörigen Backend-Servern. Da nur Maus- und Keyboard-Interaktionen an den Citrix Server übertragen werden ist eine Analyse im Citrix-Kontext ebenfalls nicht möglich.
Allerdings eröffnet die Kapselung innerhalb einer Citrix Virtualisierung neue Angriffsvektoren, welche die Grundlage eines solchen Pentests bilden. Wie bereits beschrieben benötigt die Anwendung auf Serverseite ein Container OS, welches die Laufzeitumgebung der Anwendung bereitstellt. Dieses Betriebssystem läuft transparent im Hintergrund der Anwendung und wird von allen auf die Anwendung zugreifenden Endanwendern gleichsam verwendet. Ist es einem Angreifer nun möglich aus dem Kontext der freigegebenen Anwendungen auszubrechen und auf das unterliegende Betriebssystem zuzugreifen ergeben sich hierdurch weitergehende Möglichkeiten andere Anwender, die Infrastruktur in benachbarten Netzwerk-Segmenten, oder weitere virtualisierte Anwendungen anzugreifen.
Ausbruchstechniken
Ziel der Analyse ist es alle Möglichkeiten zu finden, mit denen aus der Kapselung der Anwendung ausgebrochen und auf das Container-Betriebssystem direkt zugegriffen werden kann. Die folgenden Abschnitte fassen in Kürze einige der gängigen Schwachstellen und Angriffstechniken zusammen, die im Rahmen eines Pentests durchgeführt werden.
Häufig verwenden in einer Citrix Umgebung bereitgestellte Anwendungen Funktionen des zugrundeliegenden Betriebssystems, meistens Microsoft Windows, um einzelne Anwendungsfälle abzubilden. Um beispielsweise Dateien zu öffnen, wird der Standard Windows Datei-Explorer eingebunden. Hat dieser keine weitergehenden Einschränkungen ist es hierüber möglich das Datei-System des Container-Betriebssystems zu untersuchen. Je nach Konfiguration ist es hierüber auch möglich eine interaktive Kommandozeilen-Sitzung zu starten und so beliebige Befehle auf dem Container auszuführen.
Microsoft Windows, sowie alle anderen Betriebssysteme, stellen in einer Standardinstallation eine Vielzahl von Tastatur-Shortcuts zur Verfügung. Diese sollen die Bedienung des Systems für versierte Benutzung erleichtern. Im Kontext eines Citrix Breakout Tests wird ebenfalls untersucht ob derartige Shortcuts im Container-Betriebssystem verfügbar sind und für einen Ausbrauch aus der Kapselung genutzt werden können. Ein exemplarisches Beispiel ist hier das Windows “Sticky Keys” Features. Durch schnelles Drücken von 5-mal SHIFT wird ein Dialog geöffnet. Dieser bietet einen Link in die Systemsteuerung des Container-Betriebssystems. Von hier aus ist es über die Navigations-Leiste möglich eine Kommandozeilen-Sitzung zu starten oder, wie im nachfolgenden Screenshot dargestellt, direkt beliebige Kommandos auf dem System auszuführen.
Eine weitere Angriffstechnik kann angewendet werden, sofern die Ziel-Anwendungen einen eingebauten Web-Browser benötigt. Diese stellen eine Vielzahl an Funktionen für den Zugriff auf das Dateisystem zur Verfügung. So kann der Inhalt einer Web-Seite beispielsweise in einer Datei gespeichert werden, was einen Datei-Explorer öffnet. Stellt der interne Browser eine URL-Bar zur Verfügung kann auch getestet werden ob andere Webseiten, auch öffentlich verfügbare, aufgerufen werden können. Dies ermöglicht beispielsweise das Nachladen und Ausführen von Binärdateien. Über file:///C:/Windows/System32 ist es, wie in folgender Abbildung dargestellt, auch möglich auf das lokale Dateisystem zuzugreifen.
Weitere Angriffe sind beispielsweise über Druck-Dialoge oder die eingebaute Windows-Hilfe möglich. Die Suche nach Vektoren die einen Ausbruch ermöglichen ist stark von der Funktionalität der Anwendung abhängig.
Fazit
Um die oben beschriebenen Angriffsvektoren zu beseitigen, sollte eine Anwendung, welche über Citrix bereitgestellt wird auf diese Art der Virtualisierung vorbereiten sein. Im Optimalfall also möglichst wenige Standardfunktionen des Betriebssystems nutzen. Auch das Container-Betriebssystem sollte für den Einsatz in einer solchen Umgebung vorbereitet sein, beispielsweise durch Deaktivieren von Shortcuts. Weiterhin sollte die Anwendung in dem Container sicher installiert werden. Dies bedeutet auch, dass der ausführende Nutzer nur die für den Betrieb und Ausführung nötigen Berechtigungen im Datei-System besitzt. Zudem empfehlen wir zusätzliche Schutzmechanismen wie das explizite Allow-Listing von benötigten Binärdateien auf dem Betriebssystem sowie eine Überwachung in Form von einer Endpoint-Protection.
Unsere Erfahrung vieler vorangegangener Analysen zeigt, dass nur ein kleiner Teil von getesteten Anwendungen auf den Einsatz in einer Citrix Virtualisierung vorbereitet sind. Dementsprechend ist ein Ausbruch in den Container meist auf verschiedenen Wegen möglich. Im Rahmen einer Analyse prüfen wir auf alle möglichen Ausbruchsvektoren und dokumentieren diese mit Schritt-Für-Schritt Anleitungen zur Reproduktion im Nachgang der Analyse. Sofern ein Ausbruch möglich ist, prüfen wir auch die Konfiguration des Container-Betriebssystems und welche Angriffsvektoren sich hier potenziell ergeben. Stichworte hier sind Prüfungen auf Rechteerweiterungen in einem administrativen Kontext, oder ob andere Endanwender, welche die Ziel-Anwendung nutzen, angreifbar sind. Greift die Anwendung auf Backend-Systeme wie Datenbanken, Applikationsserver oder File-Shares zu, empfehlen wir ebenfalls diese auf der System-Ebene einer Überprüfung zu unterziehen. Unsere Empfehlungen des Abschlussberichts geben eine Übersicht von zu ergreifenden Sicherheitsmaßnahmen die zur Härtung von Anwendung, Backend-Systemen und des Citrix Clusters beitragen.