
Serveur C2 open source de pré-opération basé sur Python et PowerShell
Octopus est un serveur C2 open source de pré-opération basé sur Python qui permet de contrôler un agent Octopus PowerShell via HTTP/S.
L'objectif principal de la création d'Octopus est de l'utiliser avant toute opération de red team, où plutôt que de commencer l'engagement avec l'intégralité de votre arsenal opérationnel et de votre infrastructure, vous pouvez d'abord utiliser Octopus pour attaquer la cible et collecter des informations avant de démarrer votre véritable opération de red team.
Octopus fonctionne de manière très simple pour exécuter des commandes et échanger des informations avec le C2 via un canal bien chiffré, ce qui le rend discret et indétectable par presque tous les antivirus, protections de points de terminaison et solutions de surveillance réseau.
Une fonctionnalité intéressante d'Octopus est appelée ESA, pour « Endpoint Situational Awareness », qui recueille des informations importantes sur la cible afin de mieux comprendre les points de terminaison du réseau cible que vous rencontrerez lors de votre opération, vous donnant ainsi la possibilité de personnaliser votre opération réelle en fonction de ces informations.
Octopus est conçu pour être furtif et discret lors de la communication avec le C2, car il utilise AES-256 par défaut pour son canal chiffré entre l'agent PowerShell et le serveur C2. Vous pouvez également opter pour l'utilisation de SSL/TLS en fournissant un certificat valide pour votre domaine et en configurant le serveur C2 Octopus pour l'utiliser.
Octopus est doté d'un certain nombre de fonctionnalités qui vous permettent d'avoir un aperçu de votre prochain engagement avant de devoir déployer tout votre arsenal ou vos outils et techniques, telles que :
Vous pouvez installer tous les prérequis d'Octopus via :
pip install -r requirements.txt
Vous devez installer nasm pour Linux et le compilateur mingw-w64 pour utiliser la fonctionnalité de shellcoding et l'agent avec arguments falsifiés.
Vous pouvez installer nasm sur les distributions basées sur Debian en utilisant :
apt install nasm
Et vous pouvez installer mingw-w64 sur les distributions basées sur Debian en utilisant :
apt install mingw-w64
Octopus a été testé sur les systèmes d'exploitation suivants :
Vous devrez également installer mono pour vous assurer de pouvoir compiler le code source C# sans problème.
Octopus dépend du binaire mono-csc pour compiler le code source C# et vous pouvez l'installer avec la commande suivante apt install mono-devel, qui a été testée sur Kali et Ubuntu 16.04.
vous pouvez utiliser Octopus sans installer mono mais vous ne pourrez pas utiliser la commande
generate_exe.
Notez également que la compilation du C# dépend de l'assembly System.Management.Automation.dll avec le hachage SHA1 a43ed886b68c6ee913da85df9ad2064f1d81c470.
Si vous rencontrez des problèmes avec Octopus, n'hésitez pas à signaler un bug !
Tout d'abord, assurez-vous de télécharger la dernière version d'Octopus en utilisant la commande suivante :
git clone https://github.com/mhaskar/Octopus/
Ensuite, installez les prérequis avec la commande suivante :
pip install -r requirements.txt
Après cela, vous pouvez démarrer le serveur Octopus en exécutant :
./octopus.py
Vous serez accueilli par ce qui suit lorsque vous l'exécuterez :
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py
___ ___ ___ ___ ___ ___
/ /\ / /\ ___ / /\ / /\ /__/\ / /\
/ /::\ / /:/ / /\ / /::\ / /::\ \ \:\ / /:/_
/ /:/\:\ / /:/ / /:/ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\
/ /:/ \:\ / /:/ ___ / /:/ / /:/ \:\ / /:/~/:/ ___ \ \:\ / /:/ /::\
/__/:/ \__\:\ /__/:/ / /\ / /::\ /__/:/ \__\:\ /__/:/ /:/ /__/\ \__\:\ /__/:/ /:/\:\
\ \:\ / /:/ \ \:\ / /:/ /__/:/\:\ \ \:\ / /:/ \ \:\/:/ \ \:\ / /:/ \ \:\/:/~/:/
\ \:\ /:/ \ \:\ /:/ \__\/ \:\ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \::/ /:/
\ \:\/:/ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \__\/ /:/
\ \::/ \ \::/ \__\/ \ \::/ \ \:\ \ \::/ /__/:/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/
v1.2 stable !
Octopus C2 | Control your shells
Octopus >>
Octopus est assez simple à utiliser : il suffit de démarrer un écouteur et de générer votre agent basé sur les informations de cet écouteur.
Vous pouvez générer autant d'écouteurs que nécessaire, puis commencer à interagir avec vos agents qui s'y connectent.
Avant de pouvoir utiliser Octopus, vous devez configurer un profil de gestion d'URL qui contrôlera le comportement et les fonctions du C2. Octopus étant un C2 basé sur HTTP, il dépend des URLs pour gérer les connexions et pour garantir que les URLs ne serviront pas de signatures ou d'IoC dans le réseau que vous attaquez. Les URLs peuvent être facilement personnalisées et renommées selon vos besoins.
La configuration du profil ne prend actuellement en charge que la gestion des URLs, la valeur d'arrêt automatique et les en-têtes.
Configuration de votre profil
Pour commencer à configurer votre profil, vous devez modifier le fichier profile.py, qui contient plusieurs variables clés :
Exemple :
#!/usr/bin/python3
# this is the web listener profile for Octopus C2
# you can customize your profile to handle a specific URLs to communicate with the agent
# TODO : add the ability to customize the request headers
# handling the file downloading
# Ex : /anything
# Ex : /anything.php
file_receiver_url = "/messages"
# handling the report generation
# Ex : /anything
# Ex : /anything.php
report_url = "/calls"
# command sending to agent (store the command will be executed on a host)
# leave <hostname> as it with the same format
# Ex : /profile/<hostname>
# Ex : /messages/<hostname>
# Ex : /bills/<hostname>
command_send_url = "/view/<hostname>"
# handling the executed command
# Ex : /anything
# Ex : /anything.php
command_receiver_url = "/bills"
# handling the first connection from the agent
# Ex : /anything
# Ex : /anything.php
first_ping_url = "/login"
# will return in every response as Server header
server_response_header = "nginx"