
Blue Pigeon ist ein Bluetooth-basiertes Datenschmuggel- und Proxy-Werkzeug, das die Kommunikation zwischen einem entfernten Command-and-Control-Server (C2) und einem kompromittierten Host ermöglicht.
Blue Pigeon: Bluetooth-basiertes Datenexfiltrations- und Proxy-Tool für Red Teamer
Die Motivation | Geburt des Vogels
Die Komponenten | Die Taube sezieren
1. Blue Pigeon – Die mobile Anwendung
2. Blue Beak – Benutzerdefinierte EdXposed-Framework-Hooks
3. Blue Dispatcher – .NET-Modul für den kompromittierten Host
Blue Pigeon ist ein Bluetooth-basiertes Datenexfiltrations- und Proxy-Tool, das die Kommunikation zwischen einem entfernten Command-and-Control-Server (C2) und einem kompromittierten Host ermöglicht.
Inspiriert von der Fähigkeit der Rock Dove, Nachrichten zurück zu ihrem Zuhause zu tragen, ahmt Blue Pigeon dieses Heimkehrverhalten nach und liefert Nachrichten/Payloads zwischen dem Agenten (kompromittierter Host) und seinem Nest (mobile App, die anschließend an den C2-Server weitergeleitet wird).
Blue Pigeon wird als Android-Anwendung für den Red Teamer entwickelt, die in der Nähe des kompromittierten Hosts eingesetzt werden kann, und ist besonders nützlich für Red-Team-Operationen, bei denen die Kommunikation über herkömmliche Kanäle (z. B. Web, E-Mail, DNS) nicht verfügbar ist.
Blue Pigeon erweitert die Technik „Exfiltration über alternatives Protokoll“ (ID: T1048) aus der Exfiltrationstaktik des MITRE AT&CK-Frameworks und bietet eine neuartige Möglichkeit, Command and Control herzustellen und Datenexfiltration als Aktion auf Zielebene der Cyber Kill Chain durchzuführen, indem Bluetooth-Dateifreigabe als Exfiltrationsmedium genutzt wird.
Blue Pigeon wurde erstellt von @mahchiahui, @jingloon und @cloudkanghao
(Quelle: https://spectrum.ieee.org/tech-history/silicon-revolution/consider-the-pigeon-a-surprisingly-capable-technology)
Das Einrichten von Command and Control und die Durchführung von Datenexfiltration sind Schlüsselphasen der Cyber Kill Chain, bringen jedoch oft Komplikationen und schwerwiegende Konsequenzen mit sich, wenn sie falsch ausgeführt werden. In einer Red-Team-Operation kann ein fehlgeleiteter Versuch dauerhafte Spuren in den Netzwerkaktivitätsprotokollen hinterlassen und die Erkennungsmechanismen alarmieren.
In einigen unserer Red-Teaming-Übungen stellten wir fest, dass wir eine Möglichkeit benötigten, Daten zu exfiltrieren und mit dem kompromittierten Host zu kommunizieren, ohne die traditionellen Kanäle (d. h. Web, E-Mail, DNS) zu nutzen.
Da nur wenige Lösungen zur Verfügung standen, um diesen Bedarf zu decken, untersuchten wir verschiedene Exfiltrationsideen auf der Grundlage drahtloser/Funk-Kommunikationsvektoren. Als Ergebnis wurde Blue Pigeon entwickelt, um unser Red-Team-Toolset zu erweitern.
Blue Pigeon läuft als Vordergrunddienst auf einem Android-Mobiltelefon. Wenn der Red Teamer/Malicious Insider das Telefon in die Nähe des kompromittierten Hosts (infiziert mit Blue Dispatcher-Payload) bringt, kann Blue Pigeon als Exfiltrationspunkt und Befehlsrelay-Proxy zu einem entfernten C2-Server (auch bekannt als Blue Coop) dienen.
Klicken Sie hier für ein Demovideo von Blue Pigeon in Aktion
Blue Pigeon wurde mit den folgenden Kernanforderungen entwickelt:
Blue Pigeon muss eine Datenexfiltration ermöglichen, die auf verschiedenen Ebenen der Erkennung entgeht:
Umgehung der Netzwerkverkehrserkennung: Die Datenexfiltration vom kompromittierten Host darf nicht über traditionelle Kommunikationskanäle erfolgen, da diese wahrscheinlich von Standard-Endpoint-Detection-and-Response-Lösungen protokolliert und überwacht werden (und es gibt bereits viele andere bessere Optionen – warum das Rad neu erfinden, oder?).
Umgehung der menschlichen Erkennung: Die Datenexfiltration muss ohne visuelle Anzeichen auf dem Rechner des Opfers erfolgen, da dieser im schlimmsten Fall den kompromittierten Rechner noch benutzt.
Blue Pigeon muss unauffällig bleiben, d. h. unauffällig im Einsatz sein.
Sperrige Laptops, Raspberry Pis und selbstgebaute Hacker-Kits sind ein absolutes No-Go, da sie die Möglichkeiten und die Durchführbarkeit des Einsatzes einschränken. Wir brauchen eine kleine und unschuldig aussehende Taube, keinen verdammten Alpha-Pfau!
Blue Pigeon versteckt sich in einem typischen Android-Telefon, das der Red Teamer/Malicious Insider mit ins Feld bringen kann. Niemand verdächtigt ein Mobiltelefon…
In dem seltenen Fall, dass der Red Teamer zur Überprüfung aufgefordert wird, kann Blue Pigeon als unauffällige Anwendung getarnt werden, die zum Kontext der Operation passt. Im Basis-PoC ist die mobile Anwendung als Battery Optimizer-App getarnt. Forken Sie das Repository gerne und verpassen Sie Blue Pigeon ein ästhetisches Makeover!
Blue Pigeon sollte vermeiden, dass der Red Teamer während des Einsatzes des Telefons verräterische Anzeichen eines Exfiltrationsversuchs preisgibt.
Blue Pigeon muss während des Einsatzes eine maximale Verfügbarkeit (und zwar nur für den kompromittierten Host) aufrechterhalten.
Blue Pigeon muss in der Lage sein, am Leben zu bleiben, um eingehende Nachrichten zu empfangen, ohne dass der Red Teamer regelmäßig eingreifen muss.
Blue Pigeon muss bösartige Anfragen/DoS-Angriffe abwehren und dennoch für den vorgesehenen Host verfügbar bleiben.
Blue Pigeon kann dauerhaft im erkennbaren Modus bleiben, damit der kompromittierte Host scannen und Verbindungen aufbauen kann.
HMAC-basierte Authentifizierung und Dateinamen-Randomisierung werden eingesetzt, um DoS- und Replay-Angriffe zu verhindern. Blue Pigeon akzeptiert Dateiübertragungsanfragen erst nach Authentifizierung mit einer konfigurierbaren geheimen Passphrase.
Blue Pigeon ist als Drei-Komponenten-Framework konzipiert, das aus den folgenden Teilen besteht:
Blue Pigeon ist die mobile Android-Anwendung, die als Vermittler-Proxy zwischen dem kompromittierten Host und dem C2-Server (auch bekannt als Blue Coop) fungiert. Blue Pigeon kommuniziert mit dem kompromittierten Host (infiziert mit dem Blue Dispatcher-Payload) über traditionelle Bluetooth-Dateifreigabe (OBEX). Daten werden als JSON-Objekte in Textdateien vom Host exfiltriert. Dies kann durch Bearbeiten der Klasse BluePigeonListener im Paket com.csg.bluepigeon.pigeon angepasst und anschließend an einen entfernten Blue Coop weitergeleitet werden. Nach dem Empfang wird eine Kopie der Nachricht auch im Verzeichnis /sdcard/blue_pigeon/backup gespeichert.
In diesem Repository kommt Blue Pigeon als einfach aussehende Battery Optimizer-Anwendung daher. Es kann jedoch in andere UI-Stile umgestaltet werden. Passen Sie die Benutzeroberfläche von Blue Pigeon gerne an Ihre Betriebsanforderungen an, indem Sie das Paket com.csg.bluepigeon.ui bearbeiten.
Hier gibt es nichts zu sehen … nur eine harmlose Battery Optimizer-App!
Das Blue Beak-Paket enthält eine Reihe benutzerdefinierter EdXposed Framework-Hooks*, die geschrieben wurden, um die Bluetooth-API-Beschränkungen moderner Android-Versionen (Android 9/10) zu umgehen:
BlueBeakHook – Untersucht die eingehende Dateiübertragungsanfrage und entscheidet, ob sie angenommen oder abgelehnt wird. Verwendet eine Authentifizierung mit einer konfigurierbaren geheimen Passphrase, um sicherzustellen, dass eingehende Nachrichten von vertrauenswürdigen Quellen stammen. Wir möchten nicht, dass versehentlich eine bösartige, große Anfrage angenommen wird (DoS durch Überlastungsangriff – Abwehr). Außerdem werden bereits verwendete Dateinamen abgelehnt (DoS durch Replay-Angriff – Abwehr). (Siehe Sicherheitsaspekte)
CooCooHook – Umgeht den standardmäßigen Android-Bluetooth-Erkennbarkeitsmodus-Timeout, um sicherzustellen, dass das Mobiltelefon während des Einsatzes im Feld weiterhin Erkennungspakete sendet. Dies ist erforderlich, damit der kompromittierte Host jederzeit nach Blue Pigeon scannen und eine Verbindung herstellen kann.
NoPopupHook – Umgeht das Erzeugen von Bluetooth-Dateiübertragungs-Pop-ups im Android-Betriebssystem und ermöglicht das Annehmen oder Ablehnen von Anfragen über Code. Dadurch wird verhindert, dass der Red Teamer ständig am Telefon sein muss, um eingehende Nachrichten anzunehmen. Verdächtig, Bruder, verdächtig…
BirdIsAliveHook – Stellt einen hübschen kleinen visuellen Indikator neben der Systemuhr bereit, der anzeigt, dass alles in Ordnung und bereit für den Einsatz ist.
Das Konzeptbild war ziemlich treffend!
*Warum EdXposed? Nun, wir sind in der Konzeptionsphase auf zwei große Probleme gestoßen:
1. Aus Sicherheitsgründen erlaubt das moderne Android-Betriebssystem Apps nicht mehr, programmatisch eingehende Bluetooth-Dateiübertragungsanfragen anzunehmen oder zu filtern. Dies ist problematisch, da die Arbeitsweise von Blue Pigeon darauf beruht, dass es eingehende Anfragen inspizieren und in Echtzeit annehmen oder ablehnen kann.
2. Die standardmäßige maximale Zeit für den Bluetooth-Erkennbarkeitsmodus in Android beträgt 3600 Sekunden (1 Stunde). Wenn man sich an diese Grenze hält, müsste der Red Teamer Blue Pigeon häufig manuell aktualisieren, was eher unpraktikabel ist und den Betrieb beeinträchtigen könnte.
Um diese Probleme effektiv zu lösen, haben wir uns für das EdXposed-Framework entschieden, das Android Runtime (ART)-Hooking bietet, und unsere benutzerdefinierten Hooks geschrieben, um die Einschränkungen auf Betriebssystemebene modular zu umgehen.
Der Blue Dispatcher enthält die .NET-Module zum Generieren, Senden und Empfangen von Payloads zu und von Blue Pigeon unter Verwendung des Windows-Bluetooth-Stacks. Das Modul ermöglicht Dateiübertragungen ohne Bluetooth-Sicherheitsauthentifizierung (d. h. Geräte-Pairing) zwischen Blue Pigeon und dem kompromittierten Host. Dies trägt zur Tarnung (eine Kernanforderung) bei, da auf dem Opferrechner keine visuellen Pop-ups erscheinen, die Verdacht erregen würden.
Künstlerischer Eindruck des Entwicklers von einer fehlgeschlagenen Operation aufgrund visueller Sabotage.
Die meisten zugrundeliegenden Bluetooth-Module, die von Blue Dispatcher verwendet werden, stammen aus der bekannten und sehr leistungsstarken 32feet-Bibliothek.
Der Blue Dispatcher bietet Optionen, mit denen Benutzer Flags für die Übertragung eingeben können.
| Flag | Beschreibung |
|---|---|
| --device, -d | Das Mobilgerät, an das gesendet werden soll |
| --message, -m | Der zu sendende Textstring |
C:\Users\user>.\BlueDispatcher.exe
Verwendung: BlueDispatcher [Optionen]
Optionen:
-m|--message Nachricht, die an den Server gesendet werden soll
-d|--device Gerät, an das gesendet werden soll
C:\Users\user>.\BlueDispatcher.exe -d "Pixel 3 XL" -m "flieg Taube flieg"
Hinweis: Implementieren Sie bei Bedarf Ihre eigene Anwendungsschicht-Verschlüsselung in Blue Dispatcher, da die Payloads im Klartext über RFCOMM übertragen werden.
Um Blue Pigeon für Ihre Datenexfiltrationszwecke einzusetzen, werden Folgendes benötigt:
Blue Pigeon erfordert ein gerootetes Android-Telefon + Magisk.
Installieren Sie riru-core und riru-edxposed über Magisk. Starten Sie das Android-Gerät nach der Installation der Module neu.
Starten Sie Blue Pigeon, indem Sie die Anwendung „Battery Optimizer“ öffnen.
Der Blue Coop-Endpunkt und die geheime Passphrase (für die Authentifizierung) können durch Klicken auf die Schaltflächen oben links konfiguriert werden.
Als offensives Tool wäre es ziemlich peinlich, wenn Blue Pigeon gegenüber einfachen Angriffsversuchen von anderen Angreifern oder Vogelhassern versagen würde.
Für den Anfang* ist Blue Pigeon mit Schutz gegen diese potenziellen Angriffe konzipiert:
Eine Einschränkung bei der Verwendung von Bluetooth-Dateifreigabe als Exfiltrationsmedium ist der Mangel an asynchroner Übertragung. Da immer nur ein Dateiübertragungsprozess stattfinden kann, muss Blue Pigeon sorgfältig darauf achten, nur legitime eingehende Anfragen zuzulassen und zu verarbeiten.
Wenn ein Angreifer in der Nähe eine betrügerische Anfrage erstellen und Blue Pigeon dazu verleiten kann, diese anzunehmen, könnte er vorübergehend einen DoS-Angriff auf das Setup auslösen, indem er eine übermäßig große Dummy-Datei sendet. Der Angreifer könnte sogar versuchen, das Mobiltelefon oder den entfernten Blue Coop mit bösartigem Inhalt in der Datei zu kompromittieren.
Um solche potenziellen Angriffe zu verhindern, werden die Dateinamen der eingehenden Dateianfragen mithilfe eines HMAC-Authentifizierungsschemas mit einer konfigurierbaren gemeinsamen Passphrase authentifiziert.
Der Dateinamen-Überprüfungsprozess gliedert sich in die folgenden Schritte:
BP-e2211d9e19f1669d1a09ea4828d3e2bc171a10bce71cafb53a64179f497273ea.txtprovidedHash und randHmacSHA512(rand, passphrase) gegen den providedHash (Vergleich der ersten 32 hexadezimalen Ziffern/16 Bytes)Die Logik zur Dateinamen-Überprüfung befindet sich in com.csg.bluepigeon.util.EncryptionManager und kann entsprechend angepasst werden.
Entwicklerhinweis: Eigentlich wäre eine MAC-Adressen-Überprüfung des Senders ideal, aber wir haben uns stattdessen für die Dateinamen-Überprüfung entschieden, da es schwierig wäre, die Bluetooth-MAC-Adresse des Opfers im Voraus zu bestimmen.
Eine weitere Angriffsmöglichkeit sind Replay-Angriffe. Ein Angreifer in der Nähe könnte möglicherweise den Kommunikationsverkehr abhören und einen Dateinamen erlangen, der zuvor akzeptiert wurde. Er könnte dann versuchen, den Dateinamen wiederzuverwenden/„zu replayen“ und eine betrügerische Dateiübertragungsanfrage an Blue Pigeon zu senden. Ebenso könnte eine ausreichend große betrügerische Dateiübertragung einen vorübergehenden DoS gegen das Setup auslösen.
Um dies zu verhindern, dürfen Dateinamen nicht wiederverwendet werden. Blue Beak stellt sicher, dass der eingehende Dateiname noch nicht verarbeitet wurde (durch Abfrage des Ordners /sdcard/blue_pigeon/backup).
In diesem Basis-Repository ist die rand-Komponente des Dateinamens 32 hexadezimale Ziffern/16 Bytes lang, was eine Kollisionsrate von etwa 1 zu 2^128 ergibt (triviale Berechnung, unter Annahme guter Zufälligkeit).
Die Kollisionsschwellenwerte können durch Anpassen der Dateinamenstruktur und des Überprüfungsschemas geändert werden. Der relevante Code befindet sich in com.csg.bluepigeon.util.EncryptionManager.
*Wenn Sie andere vogeltötende Möglichkeiten entdeckt haben, die wir übersehen haben, und/oder dazu beitragen möchten, Blue Pigeon zu härten, erstellen Sie bitte ein Issue oder einen Pull-Request!
Erstellen Sie gerne Issues und senden Sie Pull-Requests ein!