Berry Sentinel v5.0 — Détecteur comportemental avancé de C2 et de reverse shells pour les systèmes Linux/Windows/Unix. Propose une analyse des connexions en temps réel, un scoring heuristique, une détection de signatures de frameworks C2, une analyse des intervalles de beacon et une TUI interactive basée sur curses avec moteur de terminaison de processus.
Détecteur comportemental de connexions C2 (Command & Control) en temps réel
Zero-signature · Bulletproof Collection · Deep Scan · Kill Engine
Berry Sentinel surveille toutes les connexions réseau actives sur votre système et analyse le comportement des processus qui les génèrent pour détecter une activité malveillante — sans utiliser de bases de signatures antivirus ni de listes d'IP bloquées.
Il détecte les reverse shells, webshells, RATs, beacons C2 et frameworks comme Meterpreter, Cobalt Strike, Sliver ou Empire en observant comment se comporte un processus : si un interpréteur Python a son stdin connecté à un socket distant, cela est suspect même si l'IP est inconnue.
╔══════════════════════════════════════════════════════════════════════════════════╗
║ BERRY SENTINEL v5.0 — Détecteur Comportemental C2 · TUI Interactif ║
║ Connexions : 38 │ Menaces : 2 │ Signatures : 1 │ via proc/open+ss │ 12ms │ #47 ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║ ID SEV PTS PID PROC DISTANT ÉTAT SIGNATURES/TAGS ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║ 3 █CRITIQUE 85 1337 bash 1.2.3.4:4444 ESTAB ⚑Meterpreter SHELL→NET. ║
║ 7 ▲HAUT 52 2048 python3 5.6.7.8:8443 ESTAB TLS-NOBR BCN(60s) ║
╚══════════════════════════════════════════════════════════════════════════════════╝
psutil optionnel pour une couverture supplémentaire# Cloner le dépôt
git clone https://github.com/dereeqw/BerrySentinel.git
cd BerrySentinel
# (Optionnel mais recommandé) installer psutil
pip install psutil
# Exécuter
python3 BerrySentinel.py
pkg install python
pip install psutil
python3 BerrySentinel.py --no-tui # curses peut ne pas être disponible sur Termux
curl -O https://raw.githubusercontent.com/dereeqw/BerrySentinel/main/BerrySentinel.py
python3 BerrySentinel.py
python3 BerrySentinel.py [options]
Options :
--all, -a Inclure les connexions locales/loopback (en plus des distantes)
--interval N, -i N Rafraîchir toutes les N secondes (défaut : 2, min : 0.5)
--log FILE, -l FILE Enregistrer les alertes dans un fichier (format JSONL)
--json, -j Exporter le JSON complet à la sortie
--whitelist LISTE IP ou CIDR à ignorer, séparés par des virgules
--no-color Sans couleurs ANSI (utile pour les pipes ou logs)
--verbose, -v Afficher toutes les connexions, pas seulement les suspectes
--top N, -t N Maximum de lignes dans le tableau (défaut : 50)
--diag, -d Diagnostic : affiche quelles méthodes de collecte fonctionnent
--no-tui Mode legacy sans curses (défilement classique, plus portable)
--version, -V Afficher la version et quitter
# TUI interactif — mode recommandé
python3 BerrySentinel.py
# Deep scan avec root (accède à la mémoire des processus)
sudo python3 BerrySentinel.py --all
# Enregistrer les alertes et exporter JSON à la fin
python3 BerrySentinel.py --log /var/log/sentinel.log --json
# Ignorer le réseau interne et rafraîchir toutes les 5 secondes
python3 BerrySentinel.py --whitelist 192.168.0.0/16,10.0.0.0/8 --interval 5
# Mode texte pour utilisation dans des scripts ou via SSH sans terminal interactif
python3 BerrySentinel.py --no-tui --no-color | tee monitoring.txt
# Voir quelles méthodes de collecte fonctionnent sur le système actuel
python3 BerrySentinel.py --diag --no-tui
# Alertes graves uniquement, mise à jour toutes les 10 secondes, enregistrer le log
sudo python3 BerrySentinel.py --all --interval 10 --log sentinel.log --json
| Touche | Action |
|---|---|
↑ / ↓ | Naviguer entre les connexions |
d / D | Afficher le panneau de détails de la connexion sélectionnée |
k / K | Tuer le processus (demande confirmation du PID) |
f / F | Parcourir le filtre de sévérité : TOUT → MOYEN → HAUT → CRITIQUE |
r | Forcer un rafraîchissement immédiat |
ESC | Fermer le panneau de détails ou annuler l'opération |
q | Quitter |
Chaque connexion reçoit un score de 0 à 100 selon les indicateurs détectés :
| Indicateur | Points | Tag |
|---|---|---|
| stdin/stdout → socket | +55 | FD→SOCK |
| Shell binaire avec connexion distante | +40 | SHELL→NET |
| Webshell (shell comme fils d'Apache/Nginx) | +35 | WEBSHELL |
| Bind shell sur port élevé | +35 | BIND-SHELL |
| Utilisation de netcat/socat | +35 | NETCAT |
Redirection /dev/tcp ou mkfifo | +40 | PIPE-REDIR |
| Exécutable supprimé du disque | +25 | EXE-DEL! |
Exécutable dans /tmp ou /dev/shm | +15 | EXE-TMP |
| Beacon détecté (connexion cyclique) | +25×conf | BCN(60s) |
| Signature Meterpreter | +55 | SIG:Meterpreter |
| Signature Cobalt Strike | +60 | SIG:CobaltStrike |
| Signature Sliver | +58 | SIG:Sliver |
| Régions mémoire RWX | +20 | RWX(N) |
| LD_PRELOAD ou HISTFILE=/dev/null | +10 | ENV:LD_PRELOAD |
| Interpréteur de scripts connecté | +25 | INTERP→NET |
| eval/exec en ligne de commande | +18 | EVAL |
| PowerShell distant (IEX, DownloadString) | +30 | PS-REM |
Sévérité selon le score :
| Score | Sévérité | Couleur |
|---|---|---|
| ≥ 65 | CRITIQUE | 🔴 Rouge vif |
| ≥ 45 | HAUT | 🟠 Orange |
| ≥ 25 | MOYEN | 🟡 Jaune |
| ≥ 8 | BAS | 🔵 Cyan |
| < 8 | INFO | ⚪ Gris |
Berry Sentinel inclut des signatures pour les frameworks suivants (évaluation par ports, nom de processus, ligne de commande et patterns de beacon) :