
O Blue Pigeon é uma ferramenta de exfiltração de dados e proxy baseada em Bluetooth para permitir a comunicação entre um servidor de Comando e Controle (C2) remoto e um host comprometido.
Blue Pigeon: Ferramenta de Exfiltração de Dados e Proxy Baseada em Bluetooth para Red Teamers
A Motivação | Nascimento do Pombo
Os Componentes | Dissecando o Pidgey
1. Blue Pigeon - O Aplicativo Móvel
2. Blue Beak - Hooks Personalizados do EdXposed Framework
3. Blue Dispatcher - Módulo .NET para injetar no host comprometido
Blue Pigeon é uma ferramenta de exfiltração de dados e proxy baseada em Bluetooth para permitir comunicação entre um servidor remoto de Comando e Controle (C2) e um host comprometido.
Inspirado pela capacidade do Pombo-correio de carregar mensagens de volta ao seu lar, Blue Pigeon imita o comportamento de retorno e entrega mensagens/payloads entre o agente (host comprometido) e seu ninho (aplicativo móvel e posteriormente proxy para o servidor C2).
Blue Pigeon é desenvolvido como um aplicativo Android para o Red Teamer implantar nas proximidades do host comprometido e é particularmente útil para operações de Red Team onde comunicações por canais tradicionais (isto é, web, e-mail, DNS) não estão disponíveis.
Expandindo a técnica “Exfiltração sobre Protocolo Alternativo” (ID: T1048) sob a tática de Exfiltração do framework MITRE AT&CK, Blue Pigeon fornece uma forma inovadora de estabelecer Comando e Controle e realizar exfiltração de dados como uma Ação sobre Objetivo da Cyber Kill Chain, utilizando o Compartilhamento de Arquivos Bluetooth como o meio de exfiltração.
Blue Pigeon foi criado por @mahchiahui, @jingloon e @cloudkanghao
(Fonte: https://spectrum.ieee.org/tech-history/silicon-revolution/consider-the-pigeon-a-surprisingly-capable-technology)
Estabelecer Comando e Controle e realizar exfiltração de dados são fases chave na Cyber Kill Chain, mas frequentemente vêm com suas complicações e implicações severas se feitas incorretamente. Em uma operação de Red Team, uma tentativa falha pode deixar vestígios permanentes nos logs de atividade de rede e alertar os mecanismos de detecção.
Em alguns de nossos exercícios de Red Team, nos vimos na necessidade de uma forma de exfiltrar dados e comunicar com o host comprometido sem ter que passar pelos canais tradicionais (isto é, web, email, DNS).
Com poucas soluções disponíveis para atender essa necessidade, exploramos várias ideias de exfiltração baseadas em vetores sem fio/comunicação por rádio. Como resultado, Blue Pigeon foi criado para expandir nosso conjunto de ferramentas de Red Team.
Blue Pigeon é executado como um serviço em primeiro plano dentro de um telefone celular Android. Quando o Red Teamer/Insider Malicioso implanta o telefone em proximidade ao host comprometido (infectado com o payload Blue Dispatcher), Blue Pigeon será capaz de servir como um ponto de exfiltração e relay de comando para um servidor C2 remoto (também conhecido como Blue Coop).
Clique aqui para um vídeo de demonstração do Blue Pigeon em ação
Blue Pigeon foi desenvolvido com os seguintes requisitos chave:
Blue Pigeon deve permitir a exfiltração de dados enquanto evade detecção em vários níveis:
Evasão da detecção de tráfego de rede: A exfiltração de dados do host comprometido não pode passar por canais de comunicação tradicionais, pois estes provavelmente serão registrados e monitorados por soluções padrão de Endpoint Detection and Response (e já existem muitas outras opções melhores, por que reinventar a roda, certo?)
Evasão da detecção humana: A exfiltração de dados deve ocorrer sem quaisquer indicadores visuais na máquina da vítima, já que espera-se que ele ainda esteja usando a máquina comprometida no pior cenário.
Blue Pigeon deve manter furtividade, i.e., permanecer discreto quando implantado em campo.
Laptops volumosos, Raspberry Pis e kits hacker caseiros são um Não Vá definitivo, pois limitam as possibilidades e viabilidade de implantação. Precisamos de um pombo pequeno e de aparência inocente, não de um pavão macho alfa!
Blue Pigeon se esconde dentro de um telefone Android típico que o Red Teamer/Insider Malicioso pode levar para o campo. Ninguém nunca suspeita de um telefone celular...
No raro evento em que o Red Teamer seja desafiado para inspeção, Blue Pigeon pode ser disfarçado como um aplicativo discreto para se adequar ao contexto da operação. Na prova de conceito base, o aplicativo móvel é disfarçado como um aplicativo Otimizador de Bateria. Sinta-se à vontade para bifurcar (fork) o repositório e dar uma reforma estética no Blue Pigeon!
Blue Pigeon deve evitar que o Red Teamer revele quaisquer sinais reveladores de uma tentativa de exfiltração ao implantar o telefone.
O Red Teamer só precisa iniciar o aplicativo e trazer o telefone para perto da máquina comprometida.
Blue Pigeon é executado em segundo plano do telefone móvel e não requer que a tela permaneça ativa.
Blue Pigeon consome automaticamente as mensagens recebidas e não requer que o Red Teamer aceite manualmente o pop-up de solicitação de transferência de arquivo (na verdade, nem aparecerá).
Blue Pigeon deve manter máxima disponibilidade para (e somente para) o host comprometido enquanto estiver implantado.
Blue Pigeon deve ser capaz de permanecer ativo para capturar mensagens recebidas sem intervenção regular do Red Teamer.
Blue Pigeon deve ser capaz de resistir a solicitações maliciosas/tentativas de DoS e manter disponibilidade para o host pretendido.
Blue Pigeon é capaz de permanecer permanentemente em modo descoberto para o host comprometido escanear e conectar.
Autenticação baseada em HMAC e randomização de nomes de arquivo são empregadas para mitigar ataques de DoS e replay. Blue Pigeon só aceita as solicitações de transferência de arquivo após autenticar com uma senha secreta configurável.
Blue Pigeon é projetado como um framework de três partes que compreende os seguintes componentes:
Blue Pigeon é o aplicativo móvel Android que atua como proxy intermediário entre o host comprometido e o servidor C2 (também conhecido como Blue Coop). Blue Pigeon se comunica com o host comprometido (infectado com o payload Blue Dispatcher) através do compartilhamento tradicional de arquivos Bluetooth (usando OBEX). Os dados são exfiltrados do host como objetos JSON através de arquivos de texto. Isso pode ser personalizado editando a classe BluePigeonListener no pacote com.csg.bluepigeon.pigeon e pode ser subsequentemente retransmitido para um Blue Coop remoto. Ao receber, uma cópia da mensagem também será mantida no diretório /sdcard/blue_pigeon/backup.
Neste repositório, Blue Pigeon vem na forma de um aplicativo Otimizador de Bateria de aparência simples. No entanto, pode ser reformulado em outros estilos de UI. Sinta-se à vontade para personalizar a UI do Blue Pigeon para atender às necessidades da sua operação editando o pacote com.csg.bluepigeon.ui.
Nada para ver aqui... apenas um inocente aplicativo Otimizador de Bateria!
O pacote Blue Beak contém um conjunto de Hooks* personalizados do EdXposed Framework escritos para contornar as restrições da API Bluetooth do Android moderno (Android 9/10):
BlueBeakHook - inspeciona a solicitação de transferência de arquivo recebida e decide se deve consumi-la ou não. Emprega autenticação usando uma senha secreta configurável para garantir que as mensagens recebidas sejam de fontes confiáveis. Não queremos que ele consuma acidentalmente uma solicitação maliciosa grande (mitigação de ataque DoS por monopolização). Também rejeita nomes de arquivo já consumidos anteriormente (mitigação de ataque DoS por replay). (Veja Considerações de Segurança)
CooCooHook - contorna o tempo limite padrão do Modo Descoberto Bluetooth do Android para garantir que o telefone móvel continue transmitindo pacotes de descoberta enquanto estiver implantado em campo. Isso é necessário para que o host comprometido possa escanear e alcançar o Blue Pigeon em qualquer ponto da operação.
NoPopupHook - contorna a geração de pop-ups de Transferência de Arquivo Bluetooth no Android OS e permite aceitar ou rejeitar solicitações via código. Isso é para evitar que o Red Teamer fique constantemente no telefone para aceitar as mensagens recebidas. Suspeito, mano, suspeito...
BirdIsAliveHook - fornece um pequeno indicador visual elegante ao lado do relógio do sistema para indicar que está tudo bem e pronto para implantação.
A arte conceitual foi bem precisa!
*Why EdXposed? Well... we stumbled into 2 major problems early in the conceptualization phase:
1. Due to security concerns, the modern Android OS no longer allows apps to programmatically accept or filter the incoming Bluetooth file transfer requests. This is problematic as the modus operandi of Blue Pigeon relies on it being able to inspect the incoming requests and accept or reject them in real time.
2. The default maximum time of Android's Bluetooth Discovery Mode timeout is 3600 seconds (1 hour). Sticking to this limit would mean that the Red Teamer would have to manually refresh Blue Pigeon frequently, which is rather infeasible and may hinder the conduct of the operation.
To address these problems effectively, we decided to use the EdXposed Framework, which provides Android Runtime (ART) hooking, and write our custom hooks to bypass the OS-level restrictions in a modular fashion.
O Blue Dispatcher contém os módulos .NET para gerar, enviar e receber payloads de e para Blue Pigeon usando a pilha Bluetooth do Windows. O módulo permite que a transferência de arquivos ocorra sem a necessidade de autenticação de segurança Bluetooth entre o Blue Pigeon e o host comprometido, ou seja, pareamento de dispositivos. Isso ajuda a manter a evasividade (um requisito chave), pois não haverá pop-ups visuais na máquina da vítima, que despertariam suspeitas.
Impressão artística do desenvolvedor de uma operação falha devido a sabotagem visual.
A maioria dos módulos Bluetooth subjacentes usados pelo Blue Dispatcher vem da conhecida e muito poderosa biblioteca 32feet.
O Blue Dispatcher tem opções que permitem aos usuários inserir flags para transmissão.
| Flag | Descrição |
|---|---|
| --device, -d | O dispositivo móvel para onde enviar |
| --message, -m | A string de texto a ser enviada |
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: Implemente sua própria criptografia em nível de aplicação no Blue Dispatcher se necessário, pois os payloads são transferidos via RFCOMM em texto claro.
Para implantar Blue Pigeon para suas necessidades de exfiltração de dados, são necessários:
Blue Pigeon requer um telefone Android com root + Magisk.
Instale riru-core e riru-edxposed via Magisk. Reinicie o dispositivo Android após instalar os módulos.
Inicie o Blue Pigeon abrindo o aplicativo "Battery Optimizer".
O endpoint do Blue Coop e a senha secreta (usada para autenticação) podem ser configurados clicando nos botões no canto superior esquerdo.
Como uma ferramenta ofensiva, seria meio embaraçoso se o Blue Pigeon ficasse aquém contra tentativas simples de outros atacantes ou haters de pássaros.
Para começar*, Blue Pigeon é projetado com proteção contra esses poucos ataques potenciais:
Uma limitação de usar o Compartilhamento de Arquivos Bluetooth como meio de exfiltração é sua falta de transferência assíncrona. Como apenas 1 processo de transferência de arquivo pode ocorrer a qualquer momento, Blue Pigeon deve ter cuidado para permitir e consumir apenas solicitações recebidas legítimas.
Se um adversário nas proximidades puder criar uma solicitação rogue e enganar o Blue Pigeon para aceitá-la, eles poderiam induzir um ataque DoS temporário contra a configuração enviando um arquivo fictício excessivamente grande. O atacante poderia até tentar comprometer o telefone móvel ou o Blue Coop remoto com conteúdo malicioso embutido no arquivo.
Para mitigar tais ataques potenciais, os nomes dos arquivos das solicitações de arquivo recebidas são autenticados usando um esquema de autenticação HMAC com uma senha compartilhada configurável.
O procedimento de verificação do nome do arquivo é dividido nas seguintes etapas:
BP-e2211d9e19f1669d1a09ea4828d3e2bc171a10bce71cafb53a64179f497273ea.txtprovidedHash e randHmacSHA512(rand, passphrase) em relação ao providedHash (comparando os primeiros 32 dígitos hexadecimais/16 bytes)A lógica de verificação do nome do arquivo reside em com.csg.bluepigeon.util.EncryptionManager e pode ser personalizada de acordo.
Nota do desenvolvedor: Na verdade, a verificação do endereço MAC do remetente seria o mais ideal, mas optamos pela verificação do nome do arquivo, pois seria difícil determinar o endereço MAC Bluetooth da vítima com antecedência.
Outra via de ataque seria através de ataques de replay. Um adversário nas proximidades poderia potencialmente farejar o tráfego de comunicação e obter um nome de arquivo que foi aceito anteriormente. Eles poderiam então tentar reutilizar/”reproduzir” o nome do arquivo e enviar uma solicitação de transferência de arquivo rogue para Blue Pigeon. Similarmente, uma transferência de arquivo rogue grande o suficiente poderia induzir um DoS temporário contra a configuração.
Para mitigar isso, nomes de arquivo não poderão ser reutilizados. Blue Beak garantirá que o nome do arquivo recebido não tenha sido consumido antes (consultando a pasta /sdcard/blue_pigeon/backup).
Neste repositório base, o componente rand do nome do arquivo tem 32 dígitos hexadecimais/16 bytes de comprimento, o que fornece uma taxa de colisão de cerca de 1 em 2^128 (cálculo trivial, assumindo boa aleatoriedade).
Os limiares de colisão podem ser ajustados personalizando a estrutura do nome do arquivo e o esquema de verificação. Os códigos relevantes residem em com.csg.bluepigeon.util.EncryptionManager.
*Se você descobriu outras oportunidades de matar pássaros que negligenciamos e/ou gostaria de contribuir para endurecer o Blue Pigeon, sinta-se à vontade para criar uma issue ou pull request!*
Sinta-se à vontade para criar issues e enviar pull requests!