
Blue Pigeon è uno strumento di esfiltrazione dati e proxy basato su Bluetooth per consentire la comunicazione tra un server di comando e controllo (C2) remoto e un host compromesso.
Blue Pigeon: strumento di esfiltrazione dati e proxy basato su Bluetooth per Red Teamers
I Componenti | Smontiamo il Pidgey
1. Blue Pigeon - L'Applicazione Mobile
Blue Pigeon è uno strumento di esfiltrazione dati e proxy basato su Bluetooth per abilitare la comunicazione tra un server di Comando e Controllo (C2) remoto e un host compromesso.
Ispirato dalla capacità del Piccione Viaggiatore di trasportare messaggi verso la sua dimora, Blue Pigeon imita il comportamento di homing e consegna messaggi/payload tra l'agente (host compromesso) e il suo nido (applicazione mobile e successivamente proxy verso il server C2).
Blue Pigeon è sviluppato come applicazione Android per il Red Teamer da dispiegare nelle vicinanze dell'host compromesso ed è particolarmente utile per operazioni di Red Team in cui le comunicazioni tramite canali tradizionali (es. web, e-mail, DNS) non sono disponibili.
Espandendo la tecnica "Esfiltrazione tramite Protocollo Alternativo" (ID: T1048) sotto la tattica di Esfiltrazione del framework MITRE AT&CK, Blue Pigeon fornisce un modo innovativo di stabilire Comando e Controllo ed eseguire esfiltrazione dati come Azione sull'Obiettivo della Cyber Kill Chain utilizzando la Condivisione File Bluetooth come mezzo di esfiltrazione.
Blue Pigeon è creato da @mahchiahui, @jingloon e @cloudkanghao
(Fonte: https://spectrum.ieee.org/tech-history/silicon-revolution/consider-the-pigeon-a-surprisingly-capable-technology)
Stabilire Comando e Controllo ed eseguire esfiltrazione dati sono fasi chiave nella Cyber Kill Chain, ma spesso comportano complicazioni e gravi implicazioni se fatte male. In un'operazione Red Team, un tentativo sbagliato potrebbe lasciare tracce permanenti nei log di attività di rete e allertare i meccanismi di rilevamento.
In alcuni dei nostri esercizi di Red Teaming, ci siamo trovati nella necessità di un modo per esfiltrare dati e comunicare con l'host compromesso senza dover passare attraverso i canali tradizionali (es. web, email, DNS).
Con poche soluzioni disponibili per soddisfare questa esigenza, abbiamo esplorato varie idee di esfiltrazione basate su vettori wireless/radio-comms. Di conseguenza, Blue Pigeon è stato creato per espandere il nostro toolkit Red Team.
Blue Pigeon funziona come servizio in primo piano all'interno di un telefono Android. Quando il Red Teamer/Insider Maligno posiziona il telefono in prossimità dell'host compromesso (infettato con il payload Blue Dispatcher), Blue Pigeon può fungere da punto di esfiltrazione e proxy di comando verso un server C2 remoto (a.k.a Blue Coop).
Clicca qui per un video demo di Blue Pigeon in azione
Blue Pigeon è stato progettato con i seguenti requisiti chiave:
Blue Pigeon deve consentire l'esfiltrazione dei dati eludendo il rilevamento a vari livelli:
Eludere il rilevamento del traffico di rete: L'esfiltrazione dei dati dall'host compromesso non può passare attraverso i canali di comunicazione tradizionali, poiché è probabile che vengano registrati e monitorati dai sistemi standard di Endpoint Detection and Response. (E ci sono già molte altre opzioni migliori, perché reinventare la ruota, giusto?)
Eludere il rilevamento umano: L'esfiltrazione dei dati deve avvenire senza indicatori visivi sulla macchina della vittima, nel peggiore dei casi, poiché ci si aspetta che la vittima stia ancora utilizzando la macchina compromessa.
Blue Pigeon deve mantenere l'invisibilità, cioè rimanere poco appariscente quando dispiegato sul campo.
Laptop ingombranti, Raspberry Pi e kit hacker fai-da-te sono un No-Go assoluto poiché limitano le possibilità e la fattibilità del dispiegamento. Abbiamo bisogno di un piccione piccolo e innocente, non di un pavone alpha maschio!
Blue Pigeon si nasconde all'interno di un tipico telefono Android che il Red Teamer/Insider Maligno può portare sul campo. Nessuno sospetta mai un telefono...
Nel raro caso in cui il Red Teamer venga contestato per un'ispezione, Blue Pigeon può essere mascherato come un'applicazione innocua per adattarsi al contesto dell'operazione. Nella prova di concetto base, l'applicazione mobile è mascherata come un'app di ottimizzazione della batteria. Sentiti libero di fare un fork del repo e dare a Blue Pigeon un restyling estetico!
Blue Pigeon dovrebbe evitare di far rivelare al Red Teamer segni evidenti di un tentativo di esfiltrazione durante il dispiegamento del telefono.
Il Red Teamer deve solo avviare l'applicazione e portare il telefono nelle vicinanze della macchina compromessa.
Blue Pigeon funziona in background sul telefono e non richiede che lo schermo rimanga acceso.
Blue Pigeon consuma automaticamente i messaggi in arrivo e non richiede al Red Teamer di accettare manualmente il popup di richiesta di trasferimento file (in realtà non apparirà nemmeno).
Blue Pigeon deve mantenere la massima disponibilità per (e solo per) l'host compromesso durante il dispiegamento.
Blue Pigeon deve essere in grado di rimanere attivo per catturare i messaggi in arrivo senza interventi regolari del Red Teamer.
Blue Pigeon deve essere in grado di resistere a richieste malevole/tentativi DoS e mantenere la disponibilità per l'host previsto.
Blue Pigeon è in grado di rimanere permanentemente in modalità rilevabile affinché l'host compromesso possa scansionarlo e connettersi.
L'autenticazione basata su HMAC e la randomizzazione dei nomi file sono impiegate per mitigare attacchi DoS e di replay. Blue Pigeon accetta le richieste di trasferimento file solo dopo l'autenticazione con una passphrase segreta configurabile.
Blue Pigeon è progettato come un framework a tre parti composto dai seguenti componenti:
Blue Pigeon è l'applicazione mobile Android che funge da proxy intermedio tra l'host compromesso e il server C2 (a.k.a Blue Coop). Blue Pigeon comunica con l'host compromesso (infettato con il payload Blue Dispatcher) tramite la tradizionale condivisione file Bluetooth (usando OBEX). I dati vengono esfiltrati dall'host come oggetti JSON su file di testo. Questo può essere personalizzato modificando la classe BluePigeonListener nel pacchetto com.csg.bluepigeon.pigeon e può essere successivamente inoltrato a un Blue Coop remoto. Alla ricezione, una copia del messaggio verrà mantenuta anche nella directory /sdcard/blue_pigeon/backup.
In questo repo, Blue Pigeon si presenta come un'applicazione di ottimizzazione della batteria dall'aspetto semplice. Tuttavia, può essere riprogettato in altri stili UI. Sentiti libero di personalizzare l'interfaccia di Blue Pigeon per adattarla alle esigenze della tua operazione modificando il pacchetto com.csg.bluepigeon.ui.
Niente da vedere qui... solo un'innocua app di ottimizzazione della batteria!
Il pacchetto Blue Beak contiene una serie di hook personalizzati per il EdXposed Framework* scritti per bypassare le restrizioni dell'API Bluetooth di Android moderno (Android 9/10):
BlueBeakHook - ispeziona la richiesta di trasferimento file in arrivo e decide se consumarla o meno. Utilizza l'autenticazione tramite una passphrase segreta configurabile per assicurarsi che i messaggi in arrivo provengano da fonti fidate. Non vogliamo che consumi accidentalmente una richiesta malevola di grandi dimensioni (mitigazione attacco DoS per occupazione). Rifiuta anche nomi file già consumati in precedenza (mitigazione attacco DoS per replay). (Vedi Considerazioni sulla Sicurezza)
CooCooHook - bypassa il timeout predefinito della Modalità Rilevabile Bluetooth di Android per assicurarsi che il telefono continui a trasmettere pacchetti di scoperta mentre è dispiegato sul campo. Questo è necessario affinché l'host compromesso possa scansionare e connettersi a Blue Pigeon in qualsiasi momento dell'operazione.
NoPopupHook - bypassa la generazione del popup di Trasferimento File Bluetooth su Android e permette di accettare o rifiutare le richieste tramite codice. Questo serve a evitare che il Red Teamer debba stare costantemente al telefono per accettare i messaggi in arrivo. Sospetto, fratello, sospetto...
BirdIsAliveHook - fornisce un comodo piccolo indicatore visivo accanto all'orologio di sistema per segnalare che tutto è a posto e pronto per il dispiegamento.
L'arte concettuale era azzeccata!
*Perché EdXposed? Beh... abbiamo incontrato 2 problemi principali nella fase di concettualizzazione:
1. A causa di problemi di sicurezza, il moderno Android OS non permette più alle app di accettare o filtrare programmaticamente le richieste di trasferimento file Bluetooth in arrivo. Questo è problematico poiché il modus operandi di Blue Pigeon si basa sulla capacità di ispezionare le richieste in arrivo e accettarle o rifiutarle in tempo reale.
2. Il tempo massimo predefinito del timeout della Modalità Rilevabile Bluetooth di Android è di 3600 secondi (1 ora). Rispettare questo limite significherebbe che il Red Teamer dovrebbe aggiornare manualmente Blue Pigeon frequentemente, il che è piuttosto impraticabile e potrebbe ostacolare lo svolgimento dell'operazione.
Per affrontare efficacemente questi problemi, abbiamo deciso di utilizzare l'EdXposed Framework, che fornisce hooking del Runtime Android (ART), e scrivere i nostri hook personalizzati per bypassare le restrizioni a livello di sistema operativo in modo modulare.
Il Blue Dispatcher contiene i moduli .NET per generare, inviare e ricevere payload da e verso Blue Pigeon utilizzando lo stack Bluetooth di Windows. Il modulo permette il trasferimento file senza la necessità di autenticazione di sicurezza Bluetooth tra Blue Pigeon e l'host compromesso, cioè l'accoppiamento dei dispositivi. Questo aiuta a mantenere la furtività (un requisito chiave) poiché non ci saranno popup visivi sulla macchina della vittima, che susciterebbero sospetti.
Impressione artistica dello sviluppatore di un'operazione fallita a causa di sabotaggio visivo.
La maggior parte dei moduli Bluetooth sottostanti utilizzati da Blue Dispatcher proviene dalla nota e molto potente libreria 32feet.
Il Blue Dispatcher offre opzioni che consentono agli utenti di inserire flag per la trasmissione.
| Flag | Descrizione |
|---|---|
| --device, -d | Il dispositivo mobile a cui inviare |
| --message, -m | Il testo da inviare |
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"
Nota: Implementa la tua crittografia a livello applicativo in Blue Dispatcher se necessario, poiché i payload vengono trasferiti tramite RFCOMM in chiaro.
Per distribuire Blue Pigeon per le tue esigenze di esfiltrazione dati, sono necessari:
Blue Pigeon richiede un telefono Android rootato + Magisk.
Installa riru-core e riru-edxposed tramite Magisk. Riavvia il dispositivo Android dopo l'installazione dei moduli.
Avvia Blue Pigeon aprendo l'applicazione "Battery Optimizer".
L'endpoint di Blue Coop e la passphrase segreta (utilizzata per l'autenticazione) possono essere configurati facendo clic sui pulsanti nell'angolo in alto a sinistra.
Come strumento offensivo, sarebbe piuttosto imbarazzante se Blue Pigeon fosse carente contro semplici tentativi di altri attaccanti o odiatori di uccelli.
Per cominciare*, Blue Pigeon è progettato con protezione contro questi pochi potenziali attacchi:
Una limitazione dell'utilizzo della Condivisione File Bluetooth come mezzo di esfiltrazione è la mancanza di trasferimento asincrono. Poiché può avvenire solo 1 processo di trasferimento file alla volta, Blue Pigeon deve fare attenzione a consentire e consumare solo richieste legittime in arrivo.
Se un avversario nelle vicinanze riesce a creare una richiesta fraudolenta e ingannare Blue Pigeon facendogliela accettare, potrebbe potenzialmente indurre un attacco DoS temporaneo contro la configurazione inviando un file fittizio eccessivamente grande. L'attaccante potrebbe persino tentare di compromettere il telefono o il Blue Coop remoto con contenuti malevoli incorporati nel file.
Per mitigare tali potenziali attacchi, i nomi dei file delle richieste in arrivo vengono autenticati utilizzando uno schema di autenticazione HMAC con una passphrase condivisa configurabile.
La procedura di verifica del nome file è suddivisa nei seguenti passaggi:
BP-e2211d9e19f1669d1a09ea4828d3e2bc171a10bce71cafb53a64179f497273ea.txtprovidedHash e randHmacSHA512(rand, passphrase) rispetto a providedHash (confrontando le prime 32 cifre esadecimali/16 byte)La logica di verifica del nome file risiede in com.csg.bluepigeon.util.EncryptionManager e può essere personalizzata di conseguenza.
Nota dello sviluppatore: In realtà, la verifica dell'indirizzo MAC del mittente sarebbe la più ideale, ma abbiamo optato per la verifica del nome file poiché sarebbe difficile determinare in anticipo l'indirizzo MAC Bluetooth della vittima.
Un'altra via di attacco è tramite attacchi di replay. Un avversario nelle vicinanze potrebbe potenzialmente intercettare il traffico di comunicazione e ottenere un nome file precedentemente accettato. Potrebbero quindi tentare di riutilizzare/"replay" il nome file e inviare una richiesta di trasferimento file fraudolenta a Blue Pigeon. Allo stesso modo, un trasferimento file fraudolento sufficientemente grande potrebbe indurre un DoS temporaneo contro la configurazione.
Per mitigare questo problema, i nomi file non potranno essere riutilizzati. Blue Beak si assicurerà che il nome file in arrivo non sia stato consumato in precedenza (interrogando la cartella /sdcard/blue_pigeon/backup).
In questo repo di base, il componente rand del nome file è lungo 32 cifre esadecimali/16 byte, il che fornisce un tasso di collisione di circa 1 su 2^128 (calcolo banale, assumendo una buona casualità).
Le soglie di collisione possono essere regolate personalizzando la struttura del nome file e lo schema di verifica. I codici rilevanti risiedono in com.csg.bluepigeon.util.EncryptionManager.
*Se hai scoperto altre opportunità di uccisione degli uccelli che abbiamo trascurato e/o desideri contribuire ad indurire Blue Pigeon, sentiti libero di creare un issue o una pull request!
Sentiti libero di creare issue e inviare pull request!