
Supershell C2 远控平台,基于反向SSH隧道获取完全交互式Shell
Fonctionnalités • Plateformes prises en charge • Architecture • Démarrage rapide • Documentation • Démonstrations • Avertissement • Remerciements
Lors de tests d'intrusion ou de compétitions classiques, n'avez-vous jamais redouté qu'un Ctrl + C ferme accidentellement votre shell inversé ? N'avez-vous jamais été frustré en essayant d'exécuter des scripts interactifs ? Un shell inversé classique ne fait souvent qu'exécuter des commandes et renvoyer les résultats. Un tel shell manque généralement de fonctionnalités pratiques comme l'accès entièrement interactif, la complétion par tabulation, l'exécution de programmes interactifs ou l'historique des commandes.
Supershell est une plateforme de gestion WEB intégrant le service reverse_ssh. Déployable en une commande via Docker (Démarrage rapide), elle prend en charge la collaboration d'équipe pour le contrôle à distance C2. En établissant un tunnel SSH inversé sur la machine cible, elle permet d'obtenir un véritable shell entièrement interactif et prend en charge des charges utiles (payloads) client multi-plateformes. La taille de ces payloads est de quelques Mo : on peut considérer qu'un serveur SSH de quelques Mo est déployé sur la machine cible, puis qu'un shell SSH est obtenu. Supershell intègre la gestion des clients, la génération de payloads, le shell interactif, la gestion de fichiers, un serveur de fichiers, l'injection mémoire, l'installation de services, la migration de GUID, l'écoute sur les clients, le transfert de fichiers via la commande sftp native, le transfert de ports via tunnel SSH local, ainsi qu'un mémo.
Supershell vous permet également de partager les shells obtenus avec vos partenaires. Les shells sont intégrés dans la page du navigateur et le partage utilise un mécanisme d'authentification distinct, vous n'avez donc pas besoin de fournir les identifiants de la plateforme de gestion à vos partenaires.
Architectures système prises en charge pour la génération de payloads client :
| android | darwin | dragonfly | freebsd | illumos | linux | netbsd | openbsd | solaris | windows |
|---|---|---|---|---|---|---|---|---|---|
| amd64 | amd64 | amd64 | 386 | amd64 | 386 | 386 | 386 | amd64 | 386 |
| arm64 | arm64 | amd64 | amd64 | amd64 | amd64 | amd64 | |||
| arm | arm | arm | arm | dll | |||||
| arm64 | arm64 | arm64 | arm64 | ||||||
| ppc64le | mips64 | ||||||||
| s390x | |||||||||
| so |
Les architectures suivantes ne prennent pas en charge la compression avec empaquetage :
freebsd/*
android/arm64
linux/s390x
linux/so
netbsd/*
openbsd/*
wget https://github.com/tdragon6/Supershell/releases/latest/download/Supershell.tar.gz
tar -zxvf Supershell.tar.gz
cd Supershell
pwd, la clé JWT global_salt et le mot de passe de partage share_pwd doivent impérativement être modifiés. Attention à la syntaxe Python : les types String et Int, le mot de passe est la valeur md5 sur 32 caractères du mot de passe en clair# Informations de connexion et de session web
user = 'tdragon6'
pwd = 'b7671f125bb2ed21d0476a00cfaa9ed6' # md5 du mot de passe en clair tdragon6
# Sel de chiffrement JWT
global_salt = 'Be sure to modify this key' # À modifier impérativement, sinon un jeton JWT peut être falsifié pour se connecter directement
# Durée de maintien de session, en heures
expire = 48
# Mot de passe de partage pour le partage du shell de contrôle à distance
share_pwd = 'b7671f125bb2ed21d0476a00cfaa9ed6' # md5 du mot de passe en clair tdragon6
# Durée de maintien de session du shell partagé, en heures
share_expire = 24
Format : export EXTERNAL_ADDRESS=<adresse publique>:<port public rssh>
docker-compose up -d
user / pwd configuré dans config.pyhttp://IP_publique:8888