
Verschlüsseltes Command‑and‑Control (C2)‑Forschungsframework für Cybersicherheitsbildung, Red‑Team‑Labore und sichere Client‑Server‑Kommunikationsexperimente.
BlackBerryC2 ist ein verschlüsseltes Fernverwaltungs- und C2-Framework, das ausschließlich für Bildungszwecke, Sicherheitsforschung und kontrollierte Laborumgebungen entwickelt wurde.

Das Projekt zeigt, wie man einen benutzerdefinierten Command-and-Control-Server mit Anwendungsschicht-Kryptographie, Sitzungsverwaltung und sicherer Client-Kommunikation ohne Abhängigkeit von externen TLS-Stacks erstellt.
Dieses Projekt ist KEINE Malware und NICHT für unbefugten Zugriff gedacht.
BlackBerryC2:
Verwenden Sie es nur auf Systemen und Netzwerken, die Ihnen gehören oder für die Sie eine ausdrückliche Testgenehmigung haben.
Python-Abhängigkeiten:
pip install cryptography prompt_toolkit zstandard
zstandardist optional, aber für Übertragungen größer als 1 GB empfohlen.
get -r, put -r)-b Flag) — nicht blockierend, abbrechbar.partial + .resume-Dateien)generate-payload)BlackBerryHTTPs_TLSProxyGUI)log-Befehl)logs/last_start.jsonBlackBerryC2 v2.0 stellt eine sichere Kommunikation wie folgt her:
REQUEST_PUBKEY.secp256r1).HMAC_PRE_SHARED_SECRET).Jede Sitzung verwaltet:
Alle kryptographischen Schlüssel werden zur Laufzeit generiert und niemals über Neustarts hinweg wiederverwendet (es sei denn, --persistente ist gesetzt).
python3 BlackBerryC2_server.py
Standardkonfiguration:
0.0.0.09949| Flag | Beschreibung |
|---|---|
-p / --persistente | Persistente ECDHE-Schlüssel aus ecdhe-cert/ verwenden (nach Passphrase fragen) |
-v | Debug-Logging |
-vv | Ausführliches (entspanntes) Logging |
-H <host> | Lausch-Host (Standard: 0.0.0.0) |
-P <port> | Lausch-Port (Standard: 9949) |
--no-secure | Jeden ECDHE-Client ohne HMAC-Überprüfung akzeptieren |
--hmac <secret> | Benutzerdefiniertes HMAC vorher geteiltes Geheimnis (hex oder String) |
--log-passphrase <pass> | Serverprotokoll mit AES-256-GCM verschlüsseln (PBKDF2 600k Iter.) |
--logs | Interaktiver Log-Viewer — kein Server gestartet |
--spa | SPA/Port-Knocking Pre-Authentifizierung aktivieren |
--spa-mode <spa|knock> | spa = einzelnes UDP-Token, knock = Port-Sequenz |
--spa-port <port> | UDP-Port für SPA-Listener (Standard: 7331) |
--knock-seq <ports> | Port-Sequenz für Knock-Modus (Standard: 7001,7002,7003) |
--knock-timeout <sec> | Sekunden zum Abschließen der Knock-Sequenz (Standard: 10) |
--spa-ttl <sec> | Sekunden, die eine autorisierte IP gültig bleibt (Standard: 60) |
--berrytransfer | BerryTransfer-Modus: nur Dateiübertragung, keine Shell |
--transfer-root <dir> | Wurzelverzeichnis für BerryTransfer (Standard: ./berry_transfers) |
--auto-confirm | Alle GET-Anfragen in BerryTransfer automatisch genehmigen (keine Operator-Aufforderung) |
Beispiele:
# Basic startup (prompts for log passphrase)
python3 BlackBerryC2_server.py
# Persistent ECDHE keys + verbose
python3 BlackBerryC2_server.py -p -vv
# Custom port, no HMAC check
python3 BlackBerryC2_server.py -P 8080 --no-secure
# Port-knocking on custom ports
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003
# BerryTransfer mode with auto-confirm
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm
# View/decrypt logs without starting server
python3 BlackBerryC2_server.py --logs
| Befehl | Beschreibung |
|---|---|
list | Aktive Sitzungen mit Statistiken und Hostname auflisten |
select <ID> | Mit einer Client-Sitzung interagieren |
all <cmd> | Einen Befehl an alle verbundenen Clients senden |
report | Vollständiger Serverstatusbericht (Betriebszeit, Sitzungen, Übertragungen) |
set host <HOST> | Lausch-Host ändern (bindet Server neu) |
set port <PORT> | Lausch-Port ändern (bindet Server neu) |
sVbanner "<text>" | Service-Banner ändern |
generate-payload | Ein Client-Payload generieren |
fingerprint | ECDHE-Server-Schlüsselfingerabdruck anzeigen (SHA-256) |
ecdhe-keys | Aktuelles ECDHE-Schlüsselpaar ausgeben (PEM) |
kill <id|ip> | Eine Sitzung nach ID oder IP beenden |
block <IP> | Eine IP dauerhaft sperren |
unblock <IP> | Eine IP entsperren (dauerhaft + temporär) |
blocklist | Gesperrte IPs anzeigen (dauerhaft und temporär) |
log | Interaktiver Log-Viewer (unterstützt verschlüsselte Logs) |
report | Statuszusammenfassung: Betriebszeit, Sitzungen, Übertragungen |
banner | Startbanner erneut anzeigen |
clean | Server-Logdateien löschen |
v | DEBUG-Logging umschalten |
vv | VERBOSE-Logging umschalten |
cd <dir> | Lokales Arbeitsverzeichnis des Servers ändern |
E <cmd> | Befehl über os.system lokal ausführen |
<any command> | Lokal auf dem Server ausführen |
exit | Server stoppen und beenden |
| Befehl | Beschreibung |
|---|---|
proxy | TLS/HTTP-Proxy-Daemon starten (Auto-Modus) |
proxy --mode <mode> | Modi: auto, tls, http, https, both, all |
proxy --stats | Proxy-Statistiken anzeigen |
proxy gui | Proxy-GUI starten (separater Prozess) |
stop-proxy | Proxy-Daemon stoppen |
stop-proxy-gui | Proxy-GUI stoppen |
proxy-help | Vollständige Proxy-Hilfe |
select <ID>)