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.
Unsere Untersuchung ergab, 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 Kunden unserer Meinung nach 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 untersuchten wir Methoden, 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.
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.
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.
Wir haben jedes Token mit dem Microsoft jwt-Validierungsdienst https://jwt.ms überprüft. Jedes Token, das wir fanden, war aktiv und funktionierte ohne zusätzliche Authentifizierung. Uns 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 unsere Mannschaft an die Arbeit und begann, einen Ansatz zu entwickeln, der diese ungeschützten Anmeldeinformationen ausnutzt. Nachdem wir mehrere Optionen in Betracht gezogen hatten, kamen wir zu dem Schluss, dass das Senden einer Nachricht an das Konto des Berechtigten über Teams mit einem Zugriffs-Token geeignet wäre. Mit diesem Ziel vor Augen starteten wir den Teams-Client im Browser, 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.
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.
Die 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?
Empfehlungen von Vectra AI
- Für Administratoren
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.
Linux-Benutzer sollten sich von Teams ganz verabschieden, da Microsoft ohnehin das Ende der Lebensdauer von Teams für Linux für Dezember 2022 angekündigt hat.
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.
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.
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.
Neueste Kommentare
Noch keine Kommentare zu Microsoft Teams schwer gefährdet
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.