
Open-Source-Pre-Operation-C2-Server basierend auf Python und PowerShell
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.
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.:
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:
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_exenicht 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!
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:
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py
___ ___ ___ ___ ___ ___
/ /\ / /\ ___ / /\ / /\ /__/\ / /\
/ /::\ / /:/ / /\ / /::\ / /::\ \ \:\ / /:/_
/ /:/\:\ / /:/ / /:/ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\
/ /:/ \:\ / /:/ ___ / /:/ / /:/ \:\ / /:/~/:/ ___ \ \:\ / /:/ /::\
/__/:/ \__\:\ /__/:/ / /\ / /::\ /__/:/ \__\:\ /__/:/ /:/ /__/\ \__\:\ /__/:/ /:/\:\
\ \:\ / /:/ \ \:\ / /:/ /__/:/\:\ \ \:\ / /:/ \ \:\/:/ \ \:\ / /:/ \ \:\/:/~/:/
\ \:\ /:/ \ \:\ /:/ \__\/ \:\ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \::/ /:/
\ \:\/:/ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \__\/ /:/
\ \::/ \ \::/ \__\/ \ \::/ \ \:\ \ \::/ /__/:/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/
v1.2 stable !
Octopus C2 | Control your shells
Octopus >>
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.
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:
Beispiel:
#!/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