
Blue Pigeon est un outil d'exfiltration de données et proxy basé sur Bluetooth pour permettre la communication entre un serveur de commande et de contrôle (C2) distant et un hôte compromis.
Blue Pigeon : outil d'exfiltration de données et proxy basé sur Bluetooth pour Red Teamers
La motivation | Naissance de l'oiseau
Les composants | Décortiquer le Pidgey
1. Blue Pigeon - L'application mobile | Le petit messager bleu magique
3. Blue Dispatcher - Module .NET à injecter dans l'hôte compromis | Le facteur en coulisses
Configuration de Blue Pigeon | Prérequis, installation et utilisation
Blue Pigeon est un outil d'exfiltration de données et proxy basé sur Bluetooth permettant la communication entre un serveur de commande et de contrôle (C2) distant et un hôte compromis.
Inspiré par la capacité du Pigeon biset à transporter des messages vers son nid, Blue Pigeon imite ce comportement de retour et livre des messages/payloads entre l'agent (hôte compromis) et son nid (application mobile puis relayés vers le serveur C2).
Blue Pigeon est développé comme une application Android pour le Red Teamer à déployer à proximité de l'hôte compromis et est particulièrement utile pour les opérations de Red Team où les communications via les canaux traditionnels (web, email, DNS) ne sont pas disponibles.
En élargissant la technique « Exfiltration via un protocole alternatif » (ID : T1048) sous la tactique d'Exfiltration du framework MITRE AT&CK, Blue Pigeon offre une nouvelle façon d'établir un C2 et d'effectuer une exfiltration de données en tant qu'Action sur Objectif de la Cyber Kill Chain en utilisant le partage de fichiers Bluetooth comme moyen d'exfiltration.
Blue Pigeon est créé par @mahchiahui, @jingloon et @cloudkanghao
(Source : https://spectrum.ieee.org/tech-history/silicon-revolution/consider-the-pigeon-a-surprisingly-capable-technology)
Établir un C2 et effectuer une exfiltration de données sont des phases clés de la Cyber Kill Chain, mais elles comportent souvent des complications et des implications graves si mal exécutées. Dans une opération de Red Team, une tentative ratée pourrait laisser des traces permanentes dans les journaux d'activité réseau et alerter les mécanismes de détection.
Lors de certains de nos exercices de Red Team, nous avons eu besoin d'un moyen d'exfiltrer des données et de communiquer avec l'hôte compromis sans passer par les canaux traditionnels (web, email, DNS).
Avec peu de solutions disponibles pour répondre à ce besoin, nous avons exploré diverses idées d'exfiltration basées sur des vecteurs sans fil/radio. En conséquence, Blue Pigeon a été créé pour élargir notre boîte à outils Red Team.
Blue Pigeon s'exécute en tant que service de premier plan sur un téléphone mobile Android. Lorsque le Red Teamer/initié malveillant déploie le téléphone à proximité de l'hôte compromis (infecté par le payload Blue Dispatcher), Blue Pigeon peut servir de point d'exfiltration et de relais de commandes vers un serveur C2 distant (alias Blue Coop).
Cliquez ici pour une vidéo de démonstration de Blue Pigeon en action
Blue Pigeon a été conçu avec les exigences clés suivantes :
Blue Pigeon doit permettre l'exfiltration de données tout en échappant à la détection à plusieurs niveaux :
Échapper à la détection du trafic réseau : L'exfiltration de données depuis l'hôte compromis ne peut pas passer par les canaux de communication traditionnels car ils sont susceptibles d'être journalisés et surveillés par les solutions standard de détection et réponse des endpoints (et il existe déjà de nombreuses autres meilleures options, pourquoi réinventer la roue, n'est-ce pas ?)
Échapper à la détection humaine : L'exfiltration de données doit se produire sans aucun indicateur visuel sur la machine de la victime, car dans le pire des cas, on s'attend à ce que celle-ci utilise encore la machine compromise.
Blue Pigeon doit rester furtif, c'est-à-dire discret lorsqu'il est déployé sur le terrain.
Les ordinateurs portables volumineux, les Raspberry Pi et les kits de hacking faits maison sont un non catégorique, car cela limite les possibilités et la faisabilité du déploiement. Nous avons besoin d'un pigeon petit et innocent, pas d'un paon alpha masculin !
Blue Pigeon doit éviter que le Red Teamer ne montre des signes révélateurs d'une tentative d'exfiltration lors du déploiement du téléphone.
Blue Pigeon doit maintenir une disponibilité maximale vers (et uniquement vers) l'hôte compromis pendant son déploiement.
Blue Pigeon est conçu comme un framework en trois parties comprenant les composants suivants :
Blue Pigeon est l'application mobile Android qui agit comme proxy intermédiaire entre l'hôte compromis et le serveur C2 (alias un Blue Coop). Blue Pigeon communique avec l'hôte compromis (infecté par le payload Blue Dispatcher) via le partage de fichiers Bluetooth traditionnel (en utilisant OBEX). Les données sont exfiltrées de l'hôte sous forme d'objets JSON dans des fichiers texte. Cela peut être personnalisé en modifiant la classe BluePigeonListener dans le package com.csg.bluepigeon.pigeon et peut ensuite être relayé vers un Blue Coop distant. À réception, une copie du message est également conservée dans le répertoire /sdcard/blue_pigeon/backup.
Dans ce dépôt, Blue Pigeon se présente sous la forme d'une application simple d'optimisation de batterie. Cependant, il peut être remodelé dans d'autres styles d'interface utilisateur. N'hésitez pas à personnaliser l'interface utilisateur de Blue Pigeon pour répondre aux besoins de votre opération en modifiant le package com.csg.bluepigeon.ui.
Rien à voir ici... juste une application d'optimisation de batterie innocente !
Le package Blue Beak contient un ensemble de hooks personnalisés du framework EdXposed* écrits pour contourner les restrictions de l'API Bluetooth d'Android moderne (Android 9/10) :
BlueBeakHook - inspecte la demande de transfert de fichier entrante et décide de la consommer ou non. Utilise l'authentification avec une phrase de passe secrète configurable pour s'assurer que les messages entrants proviennent de sources fiables. Nous ne voulons pas qu'il consomme accidentellement une grosse requête malveillante (atténuation des attaques DoS par accaparement). Il rejette également les noms de fichiers déjà consommés (atténuation des attaques par rejeu). (Voir Considérations de sécurité)
CooCooHook - contourne le délai d'expiration par défaut du mode découvrable Bluetooth d'Android pour garantir que le téléphone continue de diffuser des paquets de découverte lorsqu'il est déployé sur le terrain. Ceci est nécessaire pour que l'hôte compromis puisse scanner et contacter Blue Pigeon à tout moment pendant l'opération.
NoPopupHook - contourne la génération de fenêtres contextuelles de transfert de fichiers Bluetooth sur Android OS et permet d'accepter ou de rejeter les demandes par code. Cela évite au Red Teamer de devoir constamment être sur le téléphone pour accepter les messages entrants. Suspect, suspect...
BirdIsAliveHook - fournit un petit indicateur visuel soigné à côté de l'horloge système pour indiquer que tout va bien et que le déploiement est prêt.
L'illustration conceptuelle était plutôt juste !
*Pourquoi EdXposed ? Eh bien... nous sommes tombés sur 2 problèmes majeurs au début de la phase de conceptualisation :
1. En raison de préoccupations de sécurité, l'Android OS moderne ne permet plus aux applications d'accepter ou de filtrer par programme les demandes de transfert de fichiers Bluetooth entrantes. Cela pose problème car le modus operandi de Blue Pigeon repose sur sa capacité à inspecter les demandes entrantes et à les accepter ou les rejeter en temps réel.
2. Le temps maximum par défaut du délai d'expiration du mode découvrable Bluetooth d'Android est de 3600 secondes (1 heure). Respecter cette limite signifierait que le Red Teamer devrait actualiser manuellement Blue Pigeon fréquemment, ce qui est plutôt irréalisable et pourrait entraver le déroulement de l'opération.
Pour résoudre efficacement ces problèmes, nous avons décidé d'utiliser le framework EdXposed, qui permet le hooking du runtime Android (ART), et d'écrire nos propres hooks personnalisés pour contourner les restrictions au niveau du système d'exploitation de manière modulaire.
Blue Dispatcher contient les modules .NET pour générer, envoyer et recevoir des payloads vers et depuis Blue Pigeon en utilisant la pile Bluetooth Windows. Le module permet au transfert de fichiers de se produire sans nécessiter d'authentification de sécurité Bluetooth entre Blue Pigeon et l'hôte compromis, c'est-à-dire d'appairage de périphériques. Cela aide à maintenir la discrétion (une exigence clé) car il n'y aura pas de fenêtres contextuelles visuelles sur la machine de la victime, ce qui éveillerait les soupçons.
Impression artistique du développeur d'une opération échouée en raison d'un sabotage visuel.
Blue Dispatcher propose des options qui permettent aux utilisateurs de saisir des indicateurs pour la transmission.
| Indicateur | Description |
|---|---|
| --device, -d | Le périphérique mobile vers lequel envoyer |
| --message, -m | La chaîne de texte à envoyer |
C:\Users\user>.\BlueDispatcher.exe
Usage: BlueDispatcher [options]
Options:
-m|--message Message to send to server
-d|--device Device to send to
C:\Users\user>.\BlueDispatcher.exe -d "Pixel 3 XL" -m "fly pigeon fly"
Remarque : Implémentez votre propre chiffrement au niveau de l'application dans Blue Dispatcher si nécessaire, car les payloads sont transférés via RFCOMM en texte clair.
Pour déployer Blue Pigeon pour vos besoins d'exfiltration de données, les éléments suivants sont requis :
Blue Pigeon nécessite un téléphone Android rooté + Magisk.
Installez riru-core et riru-edxposed via Magisk. Redémarrez le périphérique Android après avoir installé les modules.
Lancez Blue Pigeon en ouvrant l'application « Battery Optimizer ».
Le point de terminaison Blue Coop et la phrase de passe secrète (utilisée pour l'authentification) peuvent être configurés en cliquant sur les boutons dans le coin supérieur gauche.
En tant qu'outil offensif, il serait assez embarrassant que Blue Pigeon échoue face à des tentatives simples d'autres attaquants ou de personnes détestant les oiseaux.
Pour commencer*, Blue Pigeon est conçu avec une protection contre ces quelques attaques potentielles :
Une limitation de l'utilisation du partage de fichiers Bluetooth comme moyen d'exfiltration est son manque de transfert asynchrone. Comme un seul processus de transfert de fichier peut avoir lieu à un moment donné, Blue Pigeon doit faire attention à n'autoriser et ne consommer que les demandes entrantes légitimes.
Si un adversaire à proximité peut créer une requête malveillante et tromper Blue Pigeon pour qu'il l'accepte, il pourrait provoquer une attaque DoS temporaire contre la configuration en envoyant un fichier factice excessivement volumineux. L'attaquant pourrait même tenter de compromettre le téléphone mobile ou le Blue Coop distant avec un contenu malveillant intégré dans le fichier.
Pour atténuer ces attaques potentielles, les noms de fichiers des demandes de fichiers entrants sont authentifiés à l'aide d'un schéma d'authentification HMAC avec une phrase de passe partagée configurable.
La procédure de vérification du nom de fichier se décompose en les étapes suivantes :
BP-e2211d9e19f1669d1a09ea4828d3e2bc171a10bce71cafb53a64179f497273ea.txtprovidedHash et randHmacSHA512(rand, passphrase) par rapport au providedHash (en comparant les 32 premiers chiffres hexadécimaux / 16 octets)La logique de vérification du nom de fichier réside dans com.csg.bluepigeon.util.EncryptionManager et peut être personnalisée en conséquence.
Note du développeur : En réalité, une vérification de l'adresse MAC de l'expéditeur serait l'idéal, mais nous avons opté pour la vérification du nom de fichier car il serait difficile de déterminer à l'avance l'adresse MAC Bluetooth de la victime.
Une autre voie d'attaque serait via des attaques par rejeu. Un adversaire à proximité pourrait potentiellement renifler le trafic de communication et obtenir un nom de fichier précédemment accepté. Il pourrait alors tenter de réutiliser/« rejouer » le nom de fichier et envoyer une demande de transfert de fichier malveillante à Blue Pigeon. De même, un transfert de fichier malveillant suffisamment volumineux pourrait provoquer un DoS temporaire contre la configuration.
Pour atténuer cela, les noms de fichiers ne seront pas autorisés à être réutilisés. Blue Beak garantira que le nom de fichier entrant n'a pas été consommé auparavant (en interrogeant le dossier /sdcard/blue_pigeon/backup).
Dans ce dépôt de base, le composant rand du nom de fichier a une longueur de 32 chiffres hexadécimaux / 16 octets, ce qui donne un taux de collision d'environ 1 sur 2^128 (calcul trivial, en supposant une bonne aléatoire).
Les seuils de collision peuvent être ajustés en personnalisant la structure du nom de fichier et le schéma de vérification. Les codes pertinents se trouvent dans com.csg.bluepigeon.util.EncryptionManager.
*Si vous avez découvert d'autres opportunités de tuer des oiseaux que nous aurions négligées et/ou souhaitez contribuer à durcir Blue Pigeon, n'hésitez pas à créer une issue ou une pull request !
N'hésitez pas à créer des issues et à envoyer des pull requests !