
Une invite de commande interactive pour le red teaming et les tests d'intrusion. Pousse automatiquement les commandes via des proxies SOCKS4/5 via proxychains. L'intégration optionnelle avec Cobalt Strike récupère les proxies SOCKS4/5 des beacons depuis le team server. Enregistre automatiquement les activités dans un fichier CSV local et sur un team server Cobalt Strike (si configuré).
Une invite de commande interactive pour le red teaming et le pentesting. Pousse automatiquement les commandes via les proxys SOCKS4/5 via proxychains. L'intégration optionnelle avec Cobalt Strike récupère les proxys SOCKS4/5 des beacons depuis le serveur d'équipe. Enregistre automatiquement les activités dans un fichier CSV local et sur un serveur d'équipe Cobalt Strike (si configuré).
Notez que comme RedShell utilise proxychains en interne, seul le trafic TCP est proxyé.
RedShell fonctionne avec Python > 3.8.
Installer les dépendances :
pip3 install -r requirements.txt
Installer proxychains-ng (https://github.com/rofl0r/proxychains-ng) :
apt install proxychains4
RedShell n'est plus dépendant de Cobalt Strike. Cependant, si vous utilisez l'intégration Cobalt Strike, le client CS doit être installé sur le même hôte que RedShell. Rendez également le wrapper agscript exécutable :
chmod +x agscript.sh
Lancer RedShell :
$python3 redshell.py
____ _______ __ ____
/ __ \___ ____/ / ___// /_ ___ / / /
/ /_/ / _ \/ __ /\__ \/ __ \/ _ \/ / /
/ _, _/ __/ /_/ /___/ / / / / __/ / /
/_/ |_|\___/\__,_//____/_/ /_/\___/_/_/
Logging to: /home/user/.redshell/redshell_2022_08_22_13_00_13.csv
redshell >
Afficher l'aide :
redshell > help
Documented commands (use 'help -v' for verbose/'help <topic>' for details):
===========================================================================
beacon_exec cs_connect cs_status help pwd socks
cd cs_disconnect cs_use_pivot history quit
config cs_load_config exec log set
context cs_pivots exit proxy_exec shell
Définir les options :
redshell> set option VALUE
RedShell enregistre automatiquement les activités via les commandes beacon_exec, proxy_exec, exec ou log. La journalisation est initialisée automatiquement au démarrage, et les fichiers de journal sont écrits dans : ~/.redshell.
Pour journaliser vers Cobalt Strike, connectez-vous à un serveur d'équipe, sélectionnez un pivot et utilisez la commande beacon_exec.
RedShell utilise proxychains-ng et un fichier de configuration proxychains personnalisé. Les modifications du fichier de configuration et le proxy des commandes sont gérés à la volée.
Pour utiliser un proxy via Cobalt Strike, connectez-vous à un serveur d'équipe, sélectionnez un pivot et utilisez la commande beacon_exec. Référez-vous à la section Cobalt Strike pour plus de détails.
Des proxys socks version 4 ou 5 personnalisés peuvent être définis avec la commande socks.
redshell > socks -h
usage: socks [-h] [-u SOCKS5_USER] [-p SOCKS5_PASS] {socks4,socks5} ip_address socks_port
Use a custom socks4/5 server
positional arguments:
{socks4,socks5}
ip_address
socks_port
options:
-h, --help show this help message and exit
-u SOCKS5_USER
-p SOCKS5_PASS
RedShell vérifie automatiquement les connexions et l'authentification (le cas échéant) aux proxys SOCKS lors de la sélection (en utilisant les commandes socks ou cs_use_pivot). Cela peut être désactivé avec la commande suivante : set check_socks false
Le contexte de RedShell est un aspect clé de la journalisation des activités. Le contexte vous permet de définir la perspective (dans les journaux d'activité) de la machine source exécutant des activités dans un réseau cible. Les attributs de contexte suivants peuvent être inclus dans les journaux d'activité : Adresse IP, Nom DNS, Nom NetBIOS, Nom d'utilisateur et ID de processus. Seule l'adresse IP est requise.
Remarques sur le contexte :
Après avoir défini un proxy socks avec la commande socks, ajoutez les détails du contexte avec la commande context.
RedShell> context -h
usage: context [-h] [-d DNSNAME] [-n NETBIOSNAME] [-u USERNAME] [-p PID] ip_address
Set a custom context (Source IP/DNS/NetBIOS/User/PID) for logging
positional arguments:
ip_address Source IP Address
optional arguments:
-h, --help show this help message and exit
-d DNSNAME, --dnsname DNSNAME
DNS Name
-n NETBIOSNAME, --netbiosname NETBIOSNAME
NetBIOS Name
-u USERNAME, --username USERNAME
User Name
-p PID, --pid PID Process ID
Si vous utilisez un pivot sur un serveur d'équipe, les valeurs du contexte sont automatiquement définies en fonction du beacon.
L'invite de commande est automatiquement mise à jour avec les variables de contexte (utilisateur@hôte).
Les commandes RedShell suivantes sont capturées dans les journaux d'activité :
beacon_exec - Exécute une commande via le proxy socks du beacon et la journalise simultanément sur le teamserver.proxy_exec - Exécute une commande via un proxy socks personnalisé et la journalise simultanément dans le fichier local.exec - Exécute une commande et la journalise dans le fichier local.log - Ajoute une entrée de journal manuelle dans le fichier local.
Définir les options de connexion Cobalt Strike :
redshell > set cs_host 127.0.0.1
redshell > set cs_port 50050
redshell > set cs_user somedude
Se connecter au serveur d'équipe (le mot de passe du serveur d'équipe vous sera demandé) :
redshell > cs_connect
Exemple :

Ou charger depuis un fichier de configuration. Remarque : les mots de passe du serveur d'équipe ne sont pas lus depuis les fichiers de configuration. RedShell demandera le mot de passe du teamserver puis se connectera automatiquement.
$ cat config.txt
cs_host=127.0.0.1
cs_port=12345
cs_user=somedude
cs_directory=/path/to/cobaltstrike/install
redshell > cs_load_config config.txt
Afficher les pivots proxy disponibles :
redshell > cs_pivots
Exemple :

Sélectionner un pivot proxy (remarque : cela ne peut être défini qu'après avoir établi une connexion au serveur d'équipe) :
redshell > cs_use_pivot 2
SOCKS5 pivot requires authentication.
Enter SOCKS5 user: username
Enter SOCKS5 password:
Vérifier le statut de Cobalt Strike :
redshell > cs_status
Exemple :

Exécuter des commandes via le proxy socks du beacon. Elles peuvent être exécutées dans le contexte de l'utilisateur actuel ou via sudo. Spécifier 'proxychains' dans la commande est optionnel. Les commandes sont forcées via proxychains. Les identifiants de tactique MITRE ATT&CK sont optionnels.
redshell > beacon_exec -h
usage: beacon_exec [-h] [-t TTP] ...
Execute a command through beacon socks proxy and simultaneously log it to the teamserver.
positional arguments:
command Command to execute through the proxy and log.
optional arguments:
-h, --help show this help message and exit
-t TTP, --ttp TTP MITRE ATT&CK Tactic IDs. Comma delimited to specify multiple.
example:
beacon_exec -t T1550.002,T1003.002 cme smb 192.168.1.1 --local-auth -u Administrator -H C713B1D611657D0687A568122193F230 --sam
Exemple :

Remarque sur les options de répertoire d'installation de RedShell et CS - le script a besoin de savoir où il se trouve, ainsi que Cobalt Strike. Si quelque chose ne fonctionne pas, assurez-vous de définir les répertoires en conséquence :
redshell > set redshell_directory /opt/redshell
redshell > set cs_directory /opt/cobaltstrike
Remarque sur les mots de passe utilisés dans les commandes *exec : les caractères spéciaux dans les mots de passe peuvent être interprétés comme des métacaractères du shell, ce qui pourrait faire échouer les commandes. Pour contourner ce problème, définissez l'option de mot de passe puis invoquez avec '$password'. Exemple :
redshell > set password Test12345
password - was: ''
now: 'Test12345'
redshell > beacon_exec cme smb 192.168.1.14 --local-auth -u administrator -p $password --shares
RedShell inclut des commandes pour naviguer dans le système de fichiers :
redshell > cd /opt/redshell/
redshell > pwd
/opt/redshell
Des commandes supplémentaires peuvent être exécutées via la commande shell ou via le raccourci '!' :
redshell > shell date
Mon 29 Jul 2019 05:33:02 PM MDT
redshell > !date
Mon 29 Jul 2019 05:33:03 PM MDT
Les commandes sont suivies et accessibles via la commande history :
redshell > history
1 load_config config.txt
2 status
3 help
RedShell inclut également la complétion par tabulation et le nettoyage de la fenêtre du terminal via ctrl + l.
Datetime,IP Address,DNS Name,NetBIOS Name,User,PID,Activity,TTPs
2021/09/21 14:22:32 +0000,192.168.56.106,,WINDEV,USER,7312,[PROXY] cme smb 192.168.56.105,
Remarques :
Ce projet est sous licence Apache 2.0 open source. Veuillez vous référer à LICENSE pour les conditions complètes.