
Server C2 pre-operativo open source basato su Python e PowerShell
Octopus è un server C2 open source pre-operativo basato su python che può controllare un agente Octopus powershell tramite HTTP/S.
Lo scopo principale della creazione di Octopus è l'utilizzo prima di qualsiasi operazione red team, dove invece di iniziare l'engagement con il tuo arsenale e infrastruttura operativa completa, puoi prima usare Octopus per attaccare il target e raccogliere informazioni prima di iniziare la tua effettiva operazione red team.
Octopus funziona in modo molto semplice per eseguire comandi e scambiare informazioni con il C2 attraverso un canale ben crittografato, il che lo rende poco appariscente e non rilevabile da quasi tutti gli AV, le soluzioni di protezione degli endpoint e di monitoraggio della rete.
Una caratteristica interessante di Octopus si chiama ESA, che sta per "Endpoint Situational Awareness", che raccoglierà alcune informazioni importanti sul target che ti aiuteranno a comprendere meglio gli endpoint della rete target che dovrai affrontare durante la tua operazione, dandoti così la possibilità di personalizzare la tua operazione reale in base a queste informazioni.
Octopus è progettato per essere furtivo e nascosto durante la comunicazione con il C2, poiché utilizza AES-256 per impostazione predefinita per il suo canale crittografato tra l'agente powershell e il server C2. Puoi anche scegliere di utilizzare SSL/TLS fornendo un certificato valido per il tuo dominio e configurando il server Octopus C2 per utilizzarlo.
Octopus è ricco di una serie di funzionalità che ti permettono di avere una visione del tuo prossimo engagement prima di dover effettivamente distribuire il tuo arsenale completo o strumenti e tecniche, come ad esempio:
Puoi installare tutti i requisiti di Octopus tramite:
pip install -r requirements.txt
Devi installare nasm per linux e il compilatore 'mingw-w64' per utilizzare la funzionalità di shellcoding e l'agente con argomenti spoofati.
Puoi installare nasm su distribuzioni basate su Debian usando:
apt install nasm
E puoi installare mingw-w64 su distribuzioni basate su Debian usando:
apt install mingw-w64
Octopus è stato testato sui seguenti sistemi operativi:
Dovrai anche installare mono per assicurarti di poter compilare il sorgente C# senza problemi.
Octopus dipende dal binario mono-csc per compilare il sorgente C# e puoi installarlo con il seguente comando apt install mono-devel che è stato testato su kali e ubuntu 16.04.
puoi usare Octopus senza installare mono ma non potrai usare il comando
generate_exe.
Nota anche che la compilazione di C# dipende dall'assembly System.Management.Automation.dll con hash SHA1 a43ed886b68c6ee913da85df9ad2064f1d81c470.
Se incontri problemi nell'uso di Octopus, sentiti libero di aprire una segnalazione di bug!
Prima di tutto assicurati di scaricare l'ultima versione di Octopus usando il seguente comando:
git clone https://github.com/mhaskar/Octopus/
Poi devi installare i requisiti usando il seguente comando:
pip install -r requirements.txt
Dopodiché puoi avviare il server Octopus eseguendo:
./octopus.py
Sarai accolto con il seguente output una volta eseguito:
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py
___ ___ ___ ___ ___ ___
/ /\ / /\ ___ / /\ / /\ /__/\ / /\
/ /::\ / /:/ / /\ / /::\ / /::\ \ \:\ / /:/_
/ /:/\:\ / /:/ / /:/ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\
/ /:/ \:\ / /:/ ___ / /:/ / /:/ \:\ / /:/~/:/ ___ \ \:\ / /:/ /::\
/__/:/ \__\:\ /__/:/ / /\ / /::\ /__/:/ \__\:\ /__/:/ /:/ /__/\ \__\:\ /__/:/ /:/\:\
\ \:\ / /:/ \ \:\ / /:/ /__/:/\:\ \ \:\ / /:/ \ \:\/:/ \ \:\ / /:/ \ \:\/:/~/:/
\ \:\ /:/ \ \:\ /:/ \__\/ \:\ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \::/ /:/
\ \:\/:/ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \__\/ /:/
\ \::/ \ \::/ \__\/ \ \::/ \ \:\ \ \::/ /__/:/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/
v1.2 stable !
Octopus C2 | Control your shells
Octopus >>
Usare Octopus è abbastanza semplice: devi solo avviare un listener e generare il tuo agente in base alle informazioni di quel listener.
Puoi generare tutti i listener di cui hai bisogno, e poi puoi iniziare a interagire con i tuoi agenti che si collegano ad essi.
Prima di poter iniziare a usare Octopus devi impostare un profilo di gestione degli URL che controllerà il comportamento e le funzioni del C2, poiché Octopus è un C2 basato su HTTP e quindi dipende dagli URL per gestire le connessioni e per garantire che gli URL non servano come firme o IoC nella rete che stai attaccando, gli URL possono essere facilmente personalizzati e rinominati secondo necessità.
La configurazione del profilo attualmente supporta solo la gestione degli URL, il valore di auto kill e le intestazioni.
Impostazione del tuo profilo
Per iniziare a configurare il tuo profilo devi modificare il file profile.py, che contiene una serie di variabili chiave, che sono:
Esempio:
#!/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