Unterwanderung der Sicherheit von Microsoft Teams durch Token-Mining

Unterwanderung der Sicherheit von Microsoft Teams durch Token-Mining
Connor Peoples
Von
Connor Peoples

Überblick

Im August 2022 identifizierte das Vectra Protect-Team eine Post-Exploitation-Möglichkeit, die es böswilligen Akteuren mit ausreichendem lokalen oder entfernten Dateisystemzugriff ermöglicht, gültige Benutzeranmeldedaten von Microsoft Teams zu stehlen, da diese im Klartext auf der Festplatte gespeichert sind. Diese Klartextverwaltung von Anmeldeinformationen betrifft alle kommerziellen und GCC Desktop Teams-Clients für Windows, Mac und Linux.

Während das Sammeln von Anmeldeinformationen aus dem Arbeitsspeicher ein üblicher Schritt während eines Angriffs ist, glauben wir, dass die Senkung der für das Sammeln von Anmeldeinformationen erforderlichen Hürde auf einfachen Lesezugriff auf das Dateisystem die Möglichkeiten für einen signifikant Angreifer erweitert. Es vereinfacht seine Aufgabe und besonders interessant ist, wenn gestohlene Anmeldeinformationen die Möglichkeit bieten, den Benutzerzugriff ohne lästige Multi-Faktor-Authentifizierung (MFA) zu erhalten.

Mit diesen Token können Angreifer die Identität des Token-Inhabers für alle Aktionen annehmen, die über den Microsoft Teams-Client möglich sind, einschließlich der Verwendung dieses Tokens für den Zugriff auf Microsoft Graph API-Funktionen vom System des Angreifers aus. Darüber hinaus sind diese Token auch für MFA-aktivierte Konten gültig, wodurch MFA-Prüfungen während der laufenden Nutzung umgangen werden können.

Microsoft ist sich dieses Problems bewusst, gab aber an, dass es nicht den Anforderungen für eine sofortige Behebung entspricht. Bis Microsoft die Teams-Desktop-Anwendung aktualisiert, sollten sich Kunden der Risiken bewusst sein, die mit der Speicherung von Klartext-Tokens verbunden sind, und dieses Risiko durch eine instrumentelle Überwachung auf ungewöhnliche Dateizugriffe oder Änderungen an Dateisystemberechtigungen (sog. ACLs) minimieren.

Die Ursprünge der Analyse/Suche

Die Reise 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 das Konto angemeldet ist, um es aus dem Client zu entfernen. Natürlich können Benutzer dies nicht tun, wenn ihr Benutzerkonto deaktiviert ist. Um dieses Problem zu lösen, haben wir uns die lokalen Konfigurationsdaten innerhalb des Teams-Clients angesehen und enträtselt.

Electron - ein Sicherheitsmanko

Microsoft Teams ist eine Electron-basierte Anwendung. Mit Electron wird eine Webanwendung erstellt, die über einen spezifischen Browser ausgeführt wird. Dies ist sehr

praktisch und macht die Entwicklung schnell und einfach. Die Ausführung eines Webbrowsers im Kontext einer Anwendung erfordert jedoch herkömmliche Browserdaten wie Cookies, Sitzungszeichenfolgen und Protokolle.

Hier liegt die eigentliche Ursache des Problems, denn Electron unterstützt keine Standard-Browser-Kontrollen wie Verschlüsselung. Auch systemgeschützte Dateispeicherorte werden von Electron nicht standardmäßig unterstützt, sondern müssen effektiv verwaltet werden, um sicher zu bleiben. Daher bietet die Funktionsweise von Electron Anreize für die Erstellung übermäßig transparenter Anwendungen. Da Electron die Komplexität der Anwendungserstellung verschleiert, kann man davon ausgehen, dass sich einige Entwickler der Auswirkungen ihrer Designentscheidungen nicht bewusst sind. Es ist nicht ungewöhnlich, dass Forscher, die sich mit der Sicherheit von Anwendungen befassen, die Verwendung dieses Frameworks aufgrund kritischer Sicherheitsmängel beklagen.

Eintauchen in die Struktur

Zunächst untersuchten wir Methoden, um alle Verweise auf das/die eingeloggte(n) Konto/Konten zu entfernen. Unser Ziel war es, die alten Konten zu entfernen und Teams zu zwingen, so zu arbeiten, als ob sie nicht mehr vorhanden wären. Mehrere Versuche, die Konfigurationsdatei und die Erstausführungsdateien zu ändern, blieben erfolglos. Mit einem Schuss ins Blaue haben wir nach dem bekannten Benutzerprinzipalnamen gesucht und erhielten zwei wichtige Dateien zurück.

Die erste Datei war eine ldb-Datei mit Zugriffstoken im Klartext. Eine Überprüfung ergab, dass diese Zugriffsberechtigungen aktiv waren und nicht etwa versehentlich durch einen früheren Fehler kreiert wurden. Diese Zugriffstoken ermöglichten uns den Zugriff auf die Outlook- und Skype-APIs. Dazu ist es wichtig zu verstehen, dass die Microsoft Teams-Architektur ein Konglomerat aus einer Vielzahl von M365-Diensten ist. Diese sind auf Skype, SharePoint und Outlook angewiesen um zu funktionieren - das erklärt das Vorhandensein dieser Token.


Die nächste Datei ist eine Browser-Cookie-Datenbank wie die "Cookies", denen wir auf jeder Website zustimmen (danke, DSGVO). In Cookies werden Daten wie Sitzungsinformationen, Marketing-Tags, Kontoinformationen und in einigen Fällen auch Zugriffstoken gespeichert. (Un)glücklicherweise speichert die Teams Desktop-Anwendung die Token auch hier.


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


Wir haben jedes Token mit dem Microsoft jwt validation service, https://jwt.ms, überprüft. Jedes gefundene Token war aktiv und funktionierte, ohne dass eine zusätzliche Authentifizierung erforderlich war. Es wurde uns klar, dass das anfängliche Problem, Teams neu installieren zu müssen, ein viel kleineres Problem war als die Möglichkeit des Identitätsmissbrauchs, die sich möglicherweise im Microsoft Teams-Client versteckt.

Lasst uns etwas tun

Mit diesem Wissen machte sich das Team an die Arbeit und begann mit der Entwicklung von Werkzeugen, die diese ungeschützten Anmeldeinformationen ausnutzen. Nachdem wir mehrere Optionen in Betracht gezogen hatten, haben wir uns für das Senden eines Zugangsstokens mittels einer Nachricht an das Konto des Berechtigungsinhabers über Teams. Mit diesem Ziel vor Augen starteten wir den Teams-Client im Browser, um die API-Aufrufe beim Senden von Nachrichten zu verfolgen, und fanden dieses Juwel:

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 Zugriffstoken. Wir haben die SQLite-Engine verwendet. SQLite lässt sich ohne Installation im Kontext eines lokalen Ordners nutzen, um die Cookies-DB zu lesen, aus der wir das für das Senden von Nachrichten erforderliche Skype-Zugangs-Token extrahieren.

Mit dem Token in der Hand und unserem Ziel vor Augen war der letzte Schritt das Zusammenstellen einer Nachricht. Es hat einige Zeit gedauert, bis der Inhalt der Anfrage funktionierte, aber schließlich haben wir es geschafft. Wir haben die Nachricht so eingestellt, dass sie mit dem Kennzeichen für hohe Wichtigkeit und dem Betreff "You've Been PWND" gesendet wird. Die Nachricht selbst ist das Skype-Zugangs-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.


Nicht schlecht für einen Vormittag Arbeit.

Die Auswirkungen von ungesicherten Anmeldeinformationen

Microsoft speichert diese Anmeldeinformationen, um ein nahtloses Single Sign-On-Erlebnis innerhalb der Desktop-Anwendung zu schaffen. Durch die oben beschriebene Implementierung wird die Einstiegshürde verringert.

Jeder, der den Microsoft Teams-Client in diesem Zustand installiert und verwendet, speichert die erforderlichen Anmeldeinformationen, um alle über die Teams-Benutzeroberfläche möglichen Aktionen auszuführen, selbst wenn Teams geschlossen ist. Wenn diese Token gestohlen werden, können Angreifer SharePoint-Dateien, Outlook-Mails und -Kalender sowie Teams-Chatdateien ändern. Angreifer können die legitime Kommunikation innerhalb eines Unternehmens manipulieren, indem sie selektiv zerstören, Daten abziehen oder gezielte Phishing-Angriffe durchführen.

Der große Schrecken - der ultimative Phish

Was uns wirklich Angst macht, ist die Verbreitung von Post-MFA-Benutzer-Token in einer Umgebung. Sie ermöglichen nachfolgende Angriffe, ohne zusätzliche spezielle Berechtigungen oder fortgeschrittene Malware, großen internen Schaden anzurichten. Mit genügend kompromittierten Rechnern können Angreifer die Kommunikation innerhalb eines Unternehmens orchestrieren. Wenn Angreifer die volle Kontrolle über kritische Arbeitsplätze übernehmen, wie z. B. die des technischen Leiters, des CEO oder des CFO eines Unternehmens, können sie Benutzer davon überzeugen, Aufgaben auszuführen, die dem Unternehmen schaden. Wie üben Sie die Erkennung von Phishing in diesem Fall?

Empfehlungen für Administratoren

Erstellen Sie eine Standardkonfiguration für Teams, verwalten Sie Konfigurationen und überwachen Sie ACL-Änderungen

Behandeln Sie Teams als eine kritische Anwendung und setzen Sie schützende ACLs als Grundlage ein. Eine Änderung dieser ACLs, um den Lesezugriff auf Dateien außerhalb des vorgesehenen Benutzers zu erweitern, führt dazu, dass die Anmeldedaten dieses Benutzers für alle oben genannten böswilligen Aktionen nutzbar werden.

Selbst nachdem Microsoft die Electron Teams-Anwendungen aktualisiert hat, ist es immer noch entscheidend, zu einem Modell mit hohen Restriktionen überzugehen, um die Installation von nicht autorisierten Teams-Apps, Bots, Konnektoren usw. zu verhindern.

Verfolgen Sie den Dateizugriff

Erstellen Sie eine Regel zur Systemüberwachung, um die Prozesse zu identifizieren, die auf diese sensiblen Dateien zugreifen. Es gibt zwei spezifische Empfehlungen für Dateien/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/Local Storage/leveldb

- [Linux] ~/.config/Microsoft/Microsoft Teams/Cookies

- [Linux] ~/.config/Microsoft/Microsoft Teams/Local Storage/leveldb

Wenn ein anderer Prozess als Teams.exe auf diese Dateien zugreift, bedeutet dies, dass der Zugriff auf die gespeicherten Daten außerhalb des Kontexts der Teams-Anwendung erfolgt.


Betrachten Sie die Webanwendung als eine Alternative

Wenn Baselining und Überwachung nicht praktikabel sind, sollten Sie die Verwendung des webbasierten Teams-Clients in Microsoft Edge in Betracht ziehen. Dieser verfügt über mehrere Kontrollen auf Betriebssystemebene, um vor Token-Lecks zu schützen. Glücklicherweise ist die Teams-Webanwendung 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 reduziert werden.

Für Linux-Benutzer ist dies in jedem Fall der empfohlene Weg, da Microsoft das Ende der Lebensdauer von Teams für Linux für Dezember 2022 angekündigt hat.

Tipps für Entwickler

Wenn Sie Electron für Ihre Anwendung verwenden müssen, stellen Sie sicher, dass Sie OAuth-Token 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.

Wie man sensible Informationen in Electron mit node-keytar sicher speichert | von Cameron Nokes | Cameron Nokes | Medium

Tipps für Microsoft

Wenn Sie die Token speichern müssen, tun Sie dies in verschlüsselter Form und legen Sie die Messlatte von einem einfachen Lesezugriff auf das Dateisystem höher, so dass ein ständiger Zugriff auf den Speicher erforderlich ist. Und bitte lassen Sie uns deaktivierte Konten aus der/den Teams-Anwendung(en) entfernen, ohne eine vollständige Deinstallation/Neuinstallation durchführen zu müssen.

Tipps für Sicherheitsteams

Um einen Angreifer zu stoppen, der diese Art von Exploit ausnutzt, sollten Teams in ‚Network Detection & Response‘ Lösungen investieren, welche die Aktionen vor und nach der Ausnutzung des Exploits erkennen können. Die ‚Threat Detection & Response‘ Plattform von Vectra würde Befehls- und Kontrolltaktiken erkennen, die vor diesem Exploit zu erwarten sind, sowie jegliche Netzwerkerkundung, laterale Bewegungen oder Datenabfluss, die nach dem Exploit stattfinden würden. In der Cloud würde Vectra vor den Aktivitäten des Angreifers warnen, der die kompromittierten Anmeldeinformationen in Azure AD verwendet, einschließlich privilegierter Angriffe in Azure AD, umfassender Angriffe auf verbundene Cloud-Service-Provider wie AWS und Angriffe auf andere Microsoft 365-Anwendungen, einschließlich Exchange, SharePoint und Power Automate.

Teilen auf:
BRAUCHEN SIE BERATUNG, UM IHRE SOC ZU OPTIMIEREN?

Da uns Ihre Sicherheit am Herzen liegt, berät Sie unser Expertenteam kostenlos und unverbindlich.

Ich brauche Beratung
Testen Sie die Vectra Plattform

Nichts ist einfacher, als die Plattform zu testen, um ihre Vorteile für Ihr Unternehmen zu verstehen.
Kostenlos testen
Teilen auf:
Zusätzliche Informationen

Hier finden Sie eine Liste der häufigsten Bedrohungen, die in den Cloud-Anwendungen von Microsoft Office 365 auftreten.

Angesichts immer raffinierterer Bedrohungen benötigen Sicherheitsteams einen sofortigen Einblick in die Cyberbedrohungen, die ihre Umgebungen belasten.

Eines ist sicher: Im Kampf gegen Ransomware sind Reaktionsfähigkeit und schnelles Handeln von grundlegender Bedeutung.

Unser Team steht Ihnen zur Verfügung
Kontaktieren Sie unsFordern Sie eine Demo an