Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
BlackBerryC2 — Cadre de recherche de commande et contrôle (C2) chiffré pour l'éducation en cybersécurité, les laboratoires d'équipe rouge et les expériences de communication client-serveur sécurisées. | Kitploit
Outils/GitHubGitHub/dereeqw/blackberryc2
Outils de Chiffrement/DéchiffrementGénération de PayloadsÉvasion IDS/IPSSécurité RéseauCryptographieTests d'IntrusionCommandement et ContrôleApprentissage et ÉducationRed TeamingOutil d'Accès à Distance
GitHubdereeqw/blackberryc2
3125il y a 5 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

BlackBerryC2

Cadre de recherche de commande et contrôle (C2) chiffré pour l'éducation en cybersécurité, les laboratoires d'équipe rouge et les expériences de communication client-serveur sécurisées.

Voir le dépôt

BlackBerryC2 2.0.0-beta

BlackBerryC2 est un framework d’administration à distance et de C2 chiffré conçu exclusivement pour un usage éducatif, la recherche en sécurité et les environnements de laboratoire contrôlés. BlackBerryC2 Demo

Le projet montre comment construire un serveur de commande et de contrôle personnalisé avec cryptographie au niveau applicatif, gestion de session et communication client sécurisée sans dépendre de piles TLS externes.


⚠️ Avis important

Ce projet n’est PAS un logiciel malveillant et n’est PAS destiné à un accès non autorisé.

BlackBerryC2 :

  • Ne se propage pas automatiquement
  • N’exploite pas de vulnérabilités automatiquement
  • N’inclut pas de mécanismes de persistance
  • Ne tente pas de contourner les antivirus

Utilisez-le uniquement sur des systèmes et réseaux que vous possédez ou pour lesquels vous avez une autorisation explicite de test.


Dépendances Python :

root@kitploit:~
pip install cryptography prompt_toolkit zstandard

zstandard est optionnel mais recommandé pour les transferts de plus de 1 Go.


Fonctionnalités clés

  • Serveur C2 chiffré personnalisé basé sur TCP (v2.0)
  • Échange de clés ECDHE (secp256r1) — éphémère ou persistant
  • Chiffrement authentifié AES-256-GCM par session
  • Authentification par paquet HMAC-SHA256 + numéros de séquence anti-rejeu
  • Sessions client multiples et simultanées
  • Console opérateur interactive avec complétion par tabulation (prompt_toolkit)
  • Exécution de commande à distance chiffrée
  • Transferts de fichiers chiffrés avec compression zlib / Zstandard
  • Téléchargement/téléversement récursif de répertoires (get -r, put -r)
  • Transferts en arrière-plan (option -b) — non bloquants, annulables
  • Reprise de transfert (fichiers .partial + .resume)
  • Générateur de payload client (generate-payload)
  • Blocage IP : liste de blocage persistante + bannissements automatiques temporaires
  • Détection de scan/flood : scan de connexion, récupération de bannière, échecs de handshake, flood de heartbeat
  • Prise en charge optionnelle d’un proxy HTTP(S)/TLS (BlackBerryHTTPs_TLSProxyGUI)
  • Pré-authentification SPA (Single Packet Authorization) et Port-Knocking
  • Mode BerryTransfer — serveur dédié au transfert de fichiers uniquement (pas de shell)
  • Journal de session chiffré (AES-256-GCM + PBKDF2, 600 000 itérations)
  • Journal serveur chiffré avec visualisation intégrée (commande log)

Conception cryptographique

BlackBerryC2 v2.0 établit une communication sécurisée comme suit :

  1. Le client se connecte via TCP ; le serveur envoie sa bannière de service.
  2. Le client envoie REQUEST_PUBKEY.
  3. Le serveur envoie sa clé publique ECDHE éphémère (secp256r1).
  4. Le client envoie sa clé publique ECDHE + une étiquette d’authentification HMAC-SHA256.
  5. Le serveur vérifie le HMAC par rapport au secret partagé (HMAC_PRE_SHARED_SECRET).
  6. Les deux parties dérivent une clé de session AES 256 bits via HKDF-SHA256 sur le secret partagé.
  7. Toute communication ultérieure utilise AES-256-GCM avec HMAC-SHA256 par paquet et des numéros de séquence anti-rejeu.

Chaque session maintient :

  • Sa propre clé AES et sa propre clé HMAC
  • Des nonces indépendants (12 octets aléatoires par message)
  • Un traqueur anti-rejeu isolé (fenêtre de séquence ±100)
  • Un limiteur de débit anti-flood (commandes/seconde configurable)

Toutes les clés cryptographiques sont générées à l’exécution et jamais réutilisées entre les redémarrages (sauf si --persistente est défini).


Exécution du serveur

root@kitploit:~
python3 BlackBerryC2_server.py

Configuration par défaut :

  • Hôte : 0.0.0.0
  • Port : 9949

Arguments de ligne de commande

Exemples :

root@kitploit:~
# Démarrage de base (demande une phrase de passe pour le journal)
python3 BlackBerryC2_server.py

# Clés ECDHE persistantes + verbose
python3 BlackBerryC2_server.py -p -vv

# Port personnalisé, sans vérification HMAC
python3 BlackBerryC2_server.py -P 8080 --no-secure

# Port-knocking sur des ports personnalisés
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003

# Mode BerryTransfer avec confirmation automatique
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm

# Afficher/déchiffrer les journaux sans démarrer le serveur
python3 BlackBerryC2_server.py --logs

Commandes de la console opérateur

Gestion du serveur

Proxy


Commandes de session (dans select <ID>)

Généralités

Transfert de fichiers


Mode BerryTransfer

BerryTransfer est un mode serveur dédié au transfert de fichiers uniquement, inspiré de scp. Lorsqu’il est actif, le serveur rejette tout accès shell et n’accepte que les commandes de protocole BT:*.

Démarrage :

root@kitploit:~
python3 BlackBerryC2_server.py --berrytransfer
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm  # pas d’invite opérateur pour les GET

Commandes du shell BerryTransfer :

Le journal de transfert est écrit dans logs/bt_transfer.jsonl (optionnellement chiffré AES-256-GCM).


SPA / Port-knocking

Lorsque --spa est actif, les clients doivent s’authentifier via UDP avant que la connexion TCP ne soit acceptée.

Mode SPA (par défaut) : le client envoie un jeton HMAC-SHA256 de 32 octets sur SPA_UDP_PORT.

root@kitploit:~
token = HMAC-SHA256(HMAC_SECRET, "{ip}:{time_window_30s}")

Mode Knock : le client frappe une séquence de ports UDP dans l’ordre, dans une fenêtre de temps donnée.

root@kitploit:~
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 7001,7002,7003 --knock-timeout 10

Les IP autorisées sont valables pendant --spa-ttl secondes (défaut 60).


Fonctionnalités de sécurité


Journalisation

Visualisez les journaux avec le visualiseur intégré :

root@kitploit:~
BlackBerry> log

Ou en autonome (sans serveur) :

root@kitploit:~
python3 BlackBerryC2_server.py --logs

Utilisation prévue

Ce projet est destiné uniquement à :

  • Des démonstrations éducatives
  • La recherche en sécurité
  • Des environnements de laboratoire contrôlés
  • Des tests de pénétration autorisés

Toute utilisation non autorisée contre des systèmes sans permission est strictement interdite.


Licence

Voir le fichier LICENSE pour les détails complets de la licence.


Avertissement

Ce logiciel est fourni "en l’état", sans garantie d’aucune sorte.
Les auteurs déclinent toute responsabilité en cas d’utilisation abusive ou de dommages causés par ce logiciel.

Télécharger l’outil
  • Configuration de démarrage sauvegardée dans logs/last_start.json
  • FlagDescription
    -p / --persistenteUtiliser des clés ECDHE persistantes depuis ecdhe-cert/ (demande une phrase de passe)
    -vJournalisation de débogage
    -vvJournalisation verbose (détendue)
    -H <host>Hôte d’écoute (défaut : 0.0.0.0)
    -P <port>Port d’écoute (défaut : 9949)
    --no-secureAccepter tout client ECDHE sans vérification HMAC
    --hmac <secret>Secret partagé HMAC personnalisé (hex ou chaîne)
    --log-passphrase <pass>Chiffrer le journal serveur avec AES-256-GCM (PBKDF2 600k itérations)
    --logsVisualiseur de journal interactif — sans démarrer le serveur
    --spaActiver la pré-authentification SPA/port-knocking
    --spa-mode <spa|knock>spa = jeton UDP unique, knock = séquence de ports
    --spa-port <port>Port UDP pour l’écoute SPA (défaut : 7331)
    --knock-seq <ports>Séquence de ports pour le mode knock (défaut : 7001,7002,7003)
    --knock-timeout <sec>Secondes pour terminer la séquence knock (défaut : 10)
    --spa-ttl <sec>Secondes pendant lesquelles une IP autorisée reste valide (défaut : 60)
    --berrytransferMode BerryTransfer : transfert de fichiers uniquement, pas de shell
    --transfer-root <dir>Répertoire racine pour BerryTransfer (défaut : ./berry_transfers)
    --auto-confirmApprouver automatiquement toutes les demandes GET en BerryTransfer (sans invite opérateur)
    CommandeDescription
    listLister les sessions actives avec statistiques et nom d’hôte
    select <ID>Interagir avec une session client
    all <cmd>Envoyer une commande à tous les clients connectés
    reportRapport complet d’état du serveur (uptime, sessions, transferts)
    set host <HOST>Modifier l’hôte d’écoute (relie le serveur)
    set port <PORT>Modifier le port d’écoute (relie le serveur)
    sVbanner "<text>"Modifier la bannière de service
    generate-payloadGénérer un payload client
    fingerprintAfficher l’empreinte de la clé serveur ECDHE (SHA-256)
    ecdhe-keysAfficher la paire de clés ECDHE actuelle (PEM)
    kill <id|ip>Terminer une session par ID ou IP
    block <IP>Bloquer définitivement une IP
    unblock <IP>Débloquer une IP (persistante + temporaire)
    blocklistAfficher les IP bloquées (persistantes et temporaires)
    logVisualiseur de journal interactif (prend en charge les journaux chiffrés)
    reportRésumé d’état : uptime, sessions, transferts
    bannerRéafficher la bannière de démarrage
    cleanSupprimer les fichiers de journal du serveur
    vActiver/désactiver le journal DEBUG
    vvActiver/désactiver le journal VERBOSE
    cd <dir>Changer le répertoire de travail local du serveur
    E <cmd>Exécuter une commande via os.system localement
    <any command>Exécuter localement sur le serveur
    exitArrêter le serveur et quitter
    CommandeDescription
    proxyDémarrer le démon proxy TLS/HTTP (mode auto)
    proxy --mode <mode>Modes : auto, tls, http, https, both, all
    proxy --statsAfficher les statistiques du proxy
    proxy guiLancer l’interface graphique du proxy (processus séparé)
    stop-proxyArrêter le démon proxy
    stop-proxy-guiArrêter l’interface graphique du proxy
    proxy-helpAide complète du proxy
    CommandeDescription
    helpAfficher l’aide de la session
    exitRevenir au shell principal
    !<cmd>Exécuter la commande localement sur le serveur
    <cmd>Exécuter la commande sur le client distant
    cmd1 && cmd2Chaîne : exécuter cmd2 seulement si cmd1 a réussi
    cmd1 || cmd2Chaîne : exécuter cmd2 seulement si cmd1 a échoué
    cmd1 ; cmd2Chaîne : toujours exécuter cmd2
    CommandeDescription
    get <file>Télécharger un fichier depuis le client
    get <dir> -rTéléchargement récursif d’un répertoire
    get <file> -bTéléchargement en arrière-plan (non bloquant)
    get <dir> -r -bTéléchargement récursif en arrière-plan
    put <file>Téléverser un fichier vers le client
    put <file> -excTéléverser et exécuter en mémoire (scripts)
    put <dir> -rTéléversement récursif d’un répertoire
    put <file> -bTéléversement en arrière-plan
    transfersLister tous les transferts actifs et terminés
    stop <ID>Annuler un transfert en arrière-plan (ex. stop T1)
    resume <local_file>Reprendre un téléchargement interrompu
    screenshotCapturer l’écran du client
    CommandeDescription
    confirm <ID>Approuver une demande GET en attente
    deny <ID>Rejeter une demande GET en attente
    pendingLister les demandes GET en attente d’approbation
    auto [on|off]Activer/désactiver la confirmation automatique
    clientsAfficher les sessions BerryTransfer actives
    ls [dir]Lister les fichiers dans la racine de transfert
    tree [dir]Arborescence des fichiers de la racine de transfert
    find <name>Rechercher un fichier dans la racine de transfert
    rm <file>Supprimer un fichier de la racine de transfert (avec confirmation)
    log [N]Afficher les N dernières entrées du journal de transfert (défaut 30)
    cd <dir>Changer le répertoire de travail local
    pwdAfficher le répertoire local actuel
    !<cmd>Exécuter une commande système locale
    exitArrêter le serveur BerryTransfer
    FonctionnalitéDétails
    Échange de clésECDHE secp256r1 éphémère ou persistant
    Chiffrement de sessionAES-256-GCM, nonce aléatoire de 12 octets par message
    Authentification clientHMAC-SHA256 sur un secret partagé lors du handshake
    Intégrité des messagesHMAC-SHA256 par paquet (couvre seq + nonce + ciphertext)
    Anti-rejeuTraqueur de fenêtre de numéro de séquence par session
    Protection contre le downgradeTaille minimale de clé AES imposée (256 bits)
    Limitation de débit HeartbeatMinimum 3s entre heartbeats ; violations suivies
    Protection contre le flood de commandesLimiteur de débit ; déconnexion automatique après seuil
    Détection de scanScan de connexion, récupération de bannière, compteurs d’échecs de handshake
    Gestion IPListe de blocage persistante + bannissements temporaires (auto + manuel)
    Chiffrement des journauxAES-256-GCM + PBKDF2-HMAC-SHA256 (600 000 itérations)
    Gigue de réponseGigue aléatoire de 10–50 ms pour résister aux attaques temporelles
    Pré-authentificationJeton SPA ou port-knocking avant que TCP ne soit accepté
    Fichier de journalContenu
    logs/BlackBerryC2_Server.logJournal serveur tournant en texte clair (INFO+)
    logs/BlackBerryC2_enc.logJournal serveur chiffré (si --log-passphrase défini)
    logs/sessions.jsonlÉvénements de session : connexion, déconnexion, octets
    logs/bt_transfer.jsonlJournal de transfert BerryTransfer
    logs/last_start.jsonInstantané de la configuration de démarrage (hôte, port, jeton, pid)