Untergraben der Sicherheit von Microsoft Teams durch verminte TokensDetails einer schweren Sicherheitslücke

20. September 2022

Bereits im August 2022 identifizierte das Protect Team von Vectra einen Angriffspfad, der es Kriminellen mit Zugriff auf das Dateisystem ermöglicht, Berechtigungsnachweise für jeden angemeldeten Benutzer von Microsoft Teams zu stehlen. Angreifer benötigen keine besonderen Genehmigungen, um diese Dateien zu lesen, was diese Schwachstelle für jeden Angriff anfällig macht, der Angreifern lokalen oder entfernten Zugriff auf das System erlaubt. Außerdem wurde festgestellt, dass diese Verletzbarkeit alle kommerziellen Clients und solche von GCC Desktop Teams (Government Community Cloud) für Windows-, Mac- und Linux-Umgebungen betrifft.

Intensive Untersuchungen ergaben, dass die Teams App von Microsoft die Authentifizierungs-Token im Klartext speichert. Mit diesen Token können Angreifer die Identität des Token-Inhabers für alle Aktionen annehmen, die über den Client von Microsoft Teams möglich sind, einschließlich der Verwendung dieses Tokens für den Zugriff auf API-Funktionen von Microsoft Graph – und zwar vom System eines Angreifers aus. Noch schlimmer ist, dass diese gestohlenen Token es Angreifern erlauben, Aktionen gegen Accounts mit Multi-Factor Authentication (MFA) durchzuführen, indem eine MFA-Umleitung erzeugt wird.

Microsoft ist sich dieses Problems bewusst und hat den Fall mit der Begründung geschlossen, dass er nicht die Anforderungen für eine sofortige Bearbeitung erfüllen würde. Bis sich Microsoft bewegt und die entsprechende Teams Desktop Application aktualisiert, sollten Anwender ausschließlich die webbasierte Teams-Anwendung verwenden. Für Kunden, die die installierte Desktop-Anwendung verwenden müssen, ist es wichtig, auf besondere Anwendungsdateien für den Zugriff durch andere Prozesse als die offizielle Teams-Anwendung zu achten.

Die Entstehung der Jagd

Die Untersuchung begann, als sich ein Kunde von Vectra Protect darüber beschwerte, wie Microsoft Teams deaktivierte Identitäten verwaltet. Endbenutzer können deaktivierte Konten nicht über die Benutzeroberfläche entfernen, da die Teams-Anwendung voraussetzt, dass der Zugang angemeldet ist, um sie aus dem Client zu entfernen.

Natürlich können Benutzer dies nicht tun, wenn ihr Benutzerkonto deaktiviert ist. Um bei der Lösung dieses Problem zu helfen, haben wir begonnen, uns die lokalen Konfigurationsdaten innerhalb des Teams-Clients anzusehen und so herausgefunden, wie sie funktionieren.

Electron – ein Sicherheitsmanko

Microsoft Teams ist eine Electron-basierte Anwendung. Electron funktioniert durch die Erstellung einer Web-Anwendung, die über einen angepassten Browser ausgeführt wird. Dies ist sehr praktisch und macht die Entwicklung schnell und einfach. Die Ausführung eines Web-Browsers im Kontext einer Anwendung erfordert jedoch herkömmliche Browser-Daten wie zum Beispiel Cookies, Ablaufdaten von Sitzungen und Protokolle. Genau hier liegen die Probleme bei dieser Schwachstelle.

Entwickler, die die Funktionsweise von Electron nicht vollständig verstehen, erstellen möglicherweise zu transparente Anwendungen. Da Electron die Komplexität der Anwendungserstellung verschleiert, kann man davon ausgehen, dass die Entwickler sich der Auswirkungen ihrer Design-Entscheidungen nicht bewusst sind.

Electron unterstützt keine standardmäßigen Browser-Kontrollen wie zum Beispiel Verschlüsselung. Und systemgeschützte Dateiorte werden von Electron nicht standardmäßig unterstützt und müssen effektiv verwaltet werden, um sicher zu bleiben. Es ist jedoch üblich, dass sich Spezialisten für die Sicherheit von Anwendungen über den Einsatz dieses Frameworks wegen seiner Sicherheitsmängel beklagen.

Eintauchen in die Struktur

Zunächst wurden Methoden untersucht, um alle Verweise auf die eingeloggten Konten zu entfernen. Unser Ziel war es, die alten Konten zu entfernen und Teams dazu zu bringen, so zu arbeiten, als ob sie nicht mehr vorhanden wären. Mehrere Versuche, die Konfigurationsdatei und die erstmaligen Ausführungsdateien zu ändern, blieben erfolglos. Als einen Hinweis im Unbekannten suchten wir nach dem bekannten, hauptsächlichen Benutzernamen und erhielten zwei wichtige Dateien zurück.

Die erste wichtige Datei war eine ldb-Datei mit Zugriffs-Token im Klartext. Bei der Überprüfung stellte sich heraus, dass diese Zugriffsberechtigungen aktiv waren und nicht versehentlich durch einen früheren Fehler ausgelöst wurden. Diese Zugriffs-Token ermöglichten uns den Zugang zu den Outlook- und Skype-APIs. Es ist wichtig zu wissen, dass die Architektur von Microsoft Teams ein Konglomerat aus einer Vielzahl von M365-Diensten ist, die auf Skype, SharePoint und Outlook angewiesen sind, um zu funktionieren – dies erklärt das Vorhandensein dieser Token.

grafik
Quelle: Vectra AI

Die nächste Datei ist eine Browser-Datenbank von Cookies wie jenen „Cookies“, denen wir auf jeder Website zustimmen (dank der General Data Protection Regulation (GDPR)). Cookies speichern Daten wie Sitzungsinformationen, Marketing-Tags, Kontoinformationen und in einigen Fällen auch Zugriffs-Token. (Un)glücklicherweise speichert die Desktop-Anwendung von Teams die Token auch hier.

grafik
Quelle: Vectra AI

Der beste Weg, die Cookie-Datenbank zu lesen, besteht in der Verwendung eines sqlite3-Datenbank-Clients. Mit diesem Client können wir genau die Werte extrahieren, die wir benötigen. Die folgende Abfrage gibt den Namen des Tokens und seinen Wert zurück.

grafik
Quelle: Vectra AI

Dazu wurde jedes Token mit dem Microsoft jwt-Validierungsdienst https://jwt.ms überprüft. Jedes Token, das gefunden wurde, war aktiv und funktionierte ohne zusätzliche Authentifizierung. Damit wurde klar, dass das anfängliche Problem, Teams neu installieren zu müssen, eine viel geringere Angelegenheit war, als der eklatante Identitätsmissbrauch, der potentiell im Microsoft Teams-Client drohte.

Lasst uns etwas tun – mit diesem Wissen machte sich die Mannschaft an die Arbeit und begann, einen Ansatz zu entwickeln, der diese ungeschützten Anmeldeinformationen ausnutzt. Nachdem mehrere Optionen in Betracht gezogen wurden, reifte der Entschluss, dass das Senden einer Nachricht an das Konto des Berechtigten über Teams mit einem Zugriffs-Token geeignet wäre. Mit diesem Ziel vor Augen wurde der Teams-Client im Browser gestartet, um API-Aufrufe beim Senden von Nachrichten zu verfolgen, und fanden dieses Schmuckstück:

https://amer.ng.msg.teams.microsoft.com/v1/users/ME/conversations/48:notes/messages

Mit diesem API-Endpunkt können wir Nachrichten an uns selbst senden, und wir müssen uns nicht mit der Aufzählung von Konten herumärgern. Als nächstes brauchten wir das Zugriffs-Token. Wir haben die SQLite-Engine verwendet. Da SQLite nicht installiert werden muss, lädt unser Ansatz SQLite in einen lokalen Ordner herunter und führt es aus, um die Cookies-Datenbank zu lesen, aus der wir das für den Nachrichtenversand erforderliche Skype-Zugangs-Token extrahieren.

Mit dem Token in der Hand und unserem Ziel vor Augen bestand der letzte Schritt darin, eine Nachricht zusammenzustellen. Es hat einige Zeit gedauert, bis der Request Body funktionierte, aber schließlich haben wir es geschafft. Wir haben die Nachricht so eingestellt, dass sie mit dem Flag für hohe Wichtigkeit und dem Betreff „You’ve Been PWND“ gesendet wird. Die Nachricht selbst ist der Skype Access Token.

grafik
Quelle: Vectra AI

Das Tool sendet die Nachricht an dieser Stelle, und wir können überprüfen, ob sich das Zugangs-Token in unserem persönlichen Chat befindet.

grafik
Quelle: Vectra AI

 

 

 

Auswirkungen von ungesicherten Anmeldeinformationen

Microsoft speichert diese Anmeldeinformationen, um eine nahtlose Single-Sign-On-Erfahrung innerhalb der Desktop-Anwendung zu schaffen. Die Implementierung von Sicherheitskontrollen ermöglicht Angreifern jedoch den Zugriff auf Token.

Die Desktop-Anwendung bietet Angreifern die Möglichkeit, Anmeldeinformationen außerhalb des vorgesehenen Kontexts zu verwenden, da im Gegensatz zu modernen Browsern keine zusätzlichen Sicherheitskontrollen zum Schutz von Cookie-Daten vorhanden sind.

Jeder, der den Teams-Client von Microsoft in diesem Zustand installiert und verwendet, speichert die Anmeldeinformationen, die für die Durchführung aller über die Teams-Benutzeroberfläche möglichen Aktionen erforderlich sind, selbst wenn Teams heruntergefahren ist. Auf diese Weise können Angreifer SharePoint-Dateien, Outlook-Mails und -Kalender sowie Chat-Dateien von Teams ändern.

Noch schädlicher ist es, dass Angreifer legitime Kommunikation innerhalb eines Unternehmens verfälschen können, indem sie selektiv zerstören, exfiltrieren oder gezielte Phishing-Angriffe durchführen. Den Möglichkeiten eines Angreifers, sich in der Umgebung Ihres Unternehmens zu bewegen, sind an dieser Stelle keine Grenzen gesetzt.

Der große Schrecken – die ultimative Phishing-Attacke

Hier nun der Punkt, der uns an einem solchen Angriff wirklich erschreckt. Für diesen Angriff sind keine besonderen Berechtigungen oder fortgeschrittene Malware erforderlich, um großen internen Schaden anzurichten. Mit einer ausreichenden Anzahl kompromittierter Computer können Angreifer die Kommunikation innerhalb eines Unternehmens bestimmen.

Indem sie die volle Kontrolle über kritische Stellen übernehmen, wie zum Beispiel bei der Arbeit des Head of Engineering, des CEO oder des CFO eines Unternehmens, können Angreifer letztlich Benutzer davon überzeugen, Aufgaben auszuführen, die dem Unternehmen schaden. Wie will man solchen Angriffen mit kleineren Phishing-Tests ernsthaft begegnen?

Folgende Empfehlungen gibt Vectra AI für Administratoren:

  1. Migrieren Sie auf die Web-App! Wir raten davon ab, den vollständigen Teams-Client von Microsoft zu verwenden, solange Microsoft dieses Problem nicht wirksam behoben hat. Verwenden Sie den web-basierten Teams-Client in Microsoft Edge, der über mehrere Steuerelemente auf Betriebssystemebene verfügt, um undichte Stellen bei Tokens auszuschließen. Zum Glück ist die Web-Anwendung von Teams robust und unterstützt die meisten Funktionen, die über den Desktop-Client aktiviert sind, wodurch die Auswirkungen auf die Produktivität des Unternehmens auf ein Minimum beschränkt werden. Sobald Microsoft die elektronischen Teams-Anwendungen aktualisiert hat, ist es immer noch wichtig, zu einem Modell mit hohen Restriktionen überzugehen, um die Installation von nicht autorisierten Teams-Apps, Bots, Konnektoren usw. zu verhindern. Für Linux-Benutzer ist dies der empfohlene Weg eines Full Stop, da Microsoft das Ende der Lebensdauer von Teams für Linux für Dezember 2022 angekündigt hat.
  2. Den Dateizugriff verfolgen! Erstellen Sie eine Regel zur Systemüberwachung, um jene Prozesse zu identifizieren, die auf diese sensiblen Dateien zugreifen. Es gibt jeweils zwei spezifische Empfehlungen für Dateien und Ordner:
    • [Windows] %AppData%\Microsoft\Teams\Cookies
    • [Windows] %AppData%\Microsoft\Teams\Local Storage\leveldb
    • [macOS] ~/Library/Application Support/Microsoft/Teams/Cookies
    • [macOS] ~/Library/Anwendungssupport/Microsoft/Teams/Lokaler Speicher/leveldb
    • [Linux] ~/.config/Microsoft/Microsoft Teams/Cookies
    • [Linux] ~/.config/Microsoft/Microsoft Teams/Lokaler Speicher/leveldb
    Wenn ein anderer Prozess als Teams.exe auf diese Dateien zugreift, bedeutet dies, dass auf die gespeicherten Daten außerhalb des Kontexts der Teams-Anwendung zugegriffen wird.
grafik
Quelle: Vectra AI

Folgende Empfehlungen gibt Vectra AI für Entwickler:

Wenn Sie Electron für Ihre Anwendung verwenden müssen, sorgen Sie dafūr, dass Sie OAuth-Tokens sicher speichern. Eine solche Methode zur Speicherung von Geheimnissen ist die Verwendung des Pakets KeyTar, das die lokalen Sicherheitsmechanismen des Betriebssystems für die Verwaltung von Geheimnissen nutzt.

Folgende Empfehlungen gibt Vectra AI für Microsoft:

Wenn Sie die Token speichern müssen, tun Sie dies in einer verschlüsselten Form. Dies erhöht erheblich den erforderlichen Aufwand, um die Token zu beschädigen, da ein Angreifer gezwungen ist, den Speicherstapel ins Visier zu nehmen, auf dem der Prozess von Teams läuft. Idealerweise würden Sie ähnliche Schutzmechanismen nutzen, wie sie von modernen Desktop-Browsern angeboten werden, die Cookie-Inhalte mit Betriebssystem-Tools verschlüsseln.

Und nicht zuletzt sorgen Sie bitte dafür, dass deaktivierte Zugänge aus der oder den Teams-Anwendung(en) entfernt werden, ohne dass man eine vollständige De-Installation oder Re-Installation durchführen muss.

Connor Peoples ist SSPM Architect bei Vectra AI.

Vectra AI

Lesen Sie auch