
Estrutura de pesquisa de comando e controle (C2) criptografado para educação em cibersegurança, laboratórios de red team e experimentos de comunicação segura cliente-servidor.
BlackBerryC2 é um framework de administração remota e C2 criptografado projetado exclusivamente para uso educacional, pesquisa de segurança e ambientes laboratoriais controlados.

O projeto demonstra como construir um servidor de comando e controle personalizado com criptografia na camada de aplicação, gerenciamento de sessão e comunicação segura com o cliente sem depender de pilhas TLS externas.
Este projeto NÃO é malware e NÃO se destina a acesso não autorizado.
BlackBerryC2:
Use apenas em sistemas e redes que você possui ou tem autorização explícita para testar.
Dependências Python:
pip install cryptography prompt_toolkit zstandard
zstandardé opcional, mas recomendado para transferências maiores que 1 GB.
get -r, put -r)-b) — não bloqueantes, canceláveis.partial + .resume)generate-payload)BlackBerryHTTPs_TLSProxyGUI)log)logs/last_start.jsonBlackBerryC2 v2.0 estabelece comunicação segura da seguinte forma:
REQUEST_PUBKEY.secp256r1).HMAC_PRE_SHARED_SECRET).Cada sessão mantém:
Todas as chaves criptográficas são geradas em tempo de execução e nunca reutilizadas entre reinicializações (a menos que --persistente seja definido).
python3 BlackBerryC2_server.py
Configuração padrão:
0.0.0.09949| Flag | Descrição |
|---|---|
-p / --persistente | Usa chaves ECDHE persistentes de ecdhe-cert/ (solicita a frase secreta) |
-v | Log de depuração |
-vv | Log verboso (relaxado) |
-H <host> | Host de escuta (padrão: 0.0.0.0) |
-P <port> | Porta de escuta (padrão: 9949) |
--no-secure | Aceita qualquer cliente ECDHE sem verificação HMAC |
--hmac <secret> | Segredo pré-compartilhado HMAC personalizado (hex ou string) |
--log-passphrase <pass> | Criptografa o log do servidor com AES-256-GCM (PBKDF2 600k iterações) |
--logs | Visualizador interativo de logs — sem servidor iniciado |
--spa | Habilita pré-autenticação SPA/port-knocking |
--spa-mode <spa|knock> | spa = token UDP único, knock = sequência de portas |
--spa-port <port> | Porta UDP para o ouvinte SPA (padrão: 7331) |
--knock-seq <ports> | Sequência de portas para modo knock (padrão: 7001,7002,7003) |
--knock-timeout <sec> | Segundos para completar a sequência knock (padrão: 10) |
--spa-ttl <sec> | Segundos que um IP autorizado permanece válido (padrão: 60) |
--berrytransfer | Modo BerryTransfer: apenas transferência de arquivos, sem shell |
--transfer-root <dir> | Diretório raiz para BerryTransfer (padrão: ./berry_transfers) |
--auto-confirm | Aprova automaticamente todas as solicitações GET no BerryTransfer (sem prompt do operador) |
Exemplos:
# Inicialização básica (solicita frase secreta do log)
python3 BlackBerryC2_server.py
# Chaves ECDHE persistentes + verboso
python3 BlackBerryC2_server.py -p -vv
# Porta personalizada, sem verificação HMAC
python3 BlackBerryC2_server.py -P 8080 --no-secure
# Port-knocking em portas personalizadas
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003
# Modo BerryTransfer com confirmação automática
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm
# Visualizar/descriptografar logs sem iniciar o servidor
python3 BlackBerryC2_server.py --logs
| Comando | Descrição |
|---|---|
list | Lista sessões ativas com estatísticas e nome do host |
select <ID> | Interagir com uma sessão do cliente |
all <cmd> | Envia um comando para todos os clientes conectados |
report | Relatório completo do status do servidor (tempo de atividade, sessões, transferências) |
set host <HOST> | Altera o host de escuta (reatribui o servidor) |
set port <PORT> | Altera a porta de escuta (reatribui o servidor) |
sVbanner "<text>" | Altera o banner do serviço |
generate-payload | Gera um payload para o cliente |
fingerprint | Mostra a impressão digital da chave do servidor ECDHE (SHA-256) |
ecdhe-keys | Imprime o par de chaves ECDHE atual (PEM) |
kill <id|ip> | Encerra uma sessão por ID ou IP |
block <IP> | Bloqueia um IP permanentemente |
unblock <IP> | Desbloqueia um IP (persistente + temporário) |
blocklist | Mostra IPs bloqueados (persistentes e temporários) |
log | Visualizador interativo de logs (suporta logs criptografados) |
report | Resumo do status: tempo de atividade, sessões, transferências |
banner | Reexibe o banner de inicialização |
clean | Exclui arquivos de log do servidor |
v | Alterna log de DEBUG |
vv | Alterna log VERBOSO |
cd <dir> | Altera o diretório de trabalho local do servidor |
E <cmd> | Executa comando via os.system localmente |
<any command> | Executa localmente no servidor |
exit | Para o servidor e sai |
| Comando | Descrição |
|---|---|
proxy | Inicia o daemon de proxy TLS/HTTP (modo automático) |
proxy --mode <mode> | Modos: auto, tls, http, https, both, all |
proxy --stats | Mostra estatísticas do proxy |
proxy gui | Inicia a GUI do proxy (processo separado) |
stop-proxy | Para o daemon de proxy |
stop-proxy-gui | Para a GUI do proxy |
proxy-help | Ajuda completa do proxy |
select <ID>)