
Framework di ricerca per comando e controllo (C2) crittografato per l'educazione alla cybersecurity, laboratori red team ed esperimenti di comunicazione sicura client-server.
BlackBerryC2 è un framework di amministrazione remota e C2 crittografato progettato esclusivamente per uso educativo, ricerca sulla sicurezza e ambienti di laboratorio controllati.

Il progetto dimostra come costruire un server di comando e controllo personalizzato con crittografia a livello applicativo, gestione delle sessioni e comunicazione sicura con il client senza fare affidamento su stack TLS esterni.
Questo progetto NON è malware e NON è destinato ad accessi non autorizzati.
BlackBerryC2:
Utilizzare solo su sistemi e reti di tua proprietà o per cui hai esplicita autorizzazione al test.
Dipendenze Python:
pip install cryptography prompt_toolkit zstandard
zstandardè opzionale ma consigliato per trasferimenti superiori a 1 GB.
get -r, put -r)-b) — non bloccanti, annullabili.partial + .resume)generate-payload)BlackBerryHTTPs_TLSProxyGUI)log)logs/last_start.jsonBlackBerryC2 v2.0 stabilisce una comunicazione sicura come segue:
REQUEST_PUBKEY.secp256r1).HMAC_PRE_SHARED_SECRET).Ogni sessione mantiene:
Tutte le chiavi crittografiche sono generate in esecuzione e mai riutilizzate tra riavvii (a meno che non sia impostato --persistente).
python3 BlackBerryC2_server.py
Configurazione predefinita:
0.0.0.09949| Flag | Descrizione |
|---|---|
-p / --persistente | Usa chiavi ECDHE persistenti da ecdhe-cert/ (richiede passphrase) |
-v | Log di debug |
-vv | Log verbose (rilassato) |
-H <host> | Host in ascolto (predefinito: 0.0.0.0) |
-P <port> | Porta in ascolto (predefinita: 9949) |
--no-secure | Accetta qualsiasi client ECDHE senza verifica HMAC |
--hmac <secret> | Segreto pre-condiviso HMAC personalizzato (hex o stringa) |
--log-passphrase <pass> | Crittografa il log del server con AES-256-GCM (PBKDF2 600k iter) |
--logs | Visualizzatore log interattivo — server non avviato |
--spa | Abilita pre-autenticazione SPA/port-knocking |
--spa-mode <spa|knock> | spa = token UDP singolo, knock = sequenza di porte |
--spa-port <port> | Porta UDP per listener SPA (predefinita: 7331) |
--knock-seq <ports> | Sequenza di porte per modalità knock (predefinita: 7001,7002,7003) |
--knock-timeout <sec> | Secondi per completare la sequenza knock (predefinito: 10) |
--spa-ttl <sec> | Secondi di validità di un IP autorizzato (predefinito: 60) |
--berrytransfer | Modalità BerryTransfer: solo trasferimento file, nessuna shell |
--transfer-root <dir> | Directory root per BerryTransfer (predefinita: ./berry_transfers) |
--auto-confirm | Approva automaticamente tutte le richieste GET in BerryTransfer (nessun prompt operatore) |
Esempi:
# Avvio base (richiede passphrase per log)
python3 BlackBerryC2_server.py
# Chiavi ECDHE persistenti + verbose
python3 BlackBerryC2_server.py -p -vv
# Porta personalizzata, nessun controllo HMAC
python3 BlackBerryC2_server.py -P 8080 --no-secure
# Port-knocking su porte personalizzate
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003
# Modalità BerryTransfer con conferma automatica
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm
# Visualizza/decifra log senza avviare server
python3 BlackBerryC2_server.py --logs
| Comando | Descrizione |
|---|---|
list | Elenca sessioni attive con statistiche e hostname |
select <ID> | Interagisci con una sessione client |
all <cmd> | Invia un comando a tutti i client connessi |
report | Report completo dello stato del server (uptime, sessioni, trasferimenti) |
set host <HOST> | Cambia host in ascolto (riavvia il server) |
set port <PORT> | Cambia porta in ascolto (riavvia il server) |
sVbanner "<text>" | Cambia banner di servizio |
generate-payload | Genera un payload client |
fingerprint | Mostra impronta chiave server ECDHE (SHA-256) |
ecdhe-keys | Stampa coppia di chiavi ECDHE corrente (PEM) |
kill <id|ip> | Termina una sessione per ID o IP |
block <IP> | Blocca permanentemente un IP |
unblock <IP> | Sblocca un IP (persistente + temporaneo) |
blocklist | Mostra IP bloccati (persistenti e temporanei) |
log | Visualizzatore log interattivo (supporta log crittografati) |
report | Riepilogo stato: uptime, sessioni, trasferimenti |
banner | Mostra nuovamente banner di avvio |
clean | Elimina file di log del server |
v | Attiva/disattiva log DEBUG |
vv | Attiva/disattiva log VERBOSE |
cd <dir> | Cambia directory di lavoro locale del server |
E <cmd> | Esegue comando tramite os.system localmente |
<any command> | Esegue localmente sul server |
exit | Arresta server ed esci |
| Comando | Descrizione |
|---|---|
proxy | Avvia demone proxy TLS/HTTP (modalità auto) |
proxy --mode <mode> | Modalità: auto, tls, http, https, both, all |
proxy --stats | Mostra statistiche proxy |
proxy gui | Avvia GUI proxy (processo separato) |
stop-proxy | Arresta demone proxy |
stop-proxy-gui | Arresta GUI proxy |
proxy-help | Aiuto completo proxy |
select <ID>)