
Servidor C2 de pré-operação de código aberto baseado em Python e PowerShell
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.
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:
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:
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!
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:
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py
___ ___ ___ ___ ___ ___
/ /\ / /\ ___ / /\ / /\ /__/\ / /\
/ /::\ / /:/ / /\ / /::\ / /::\ \ \:\ / /:/_
/ /:/\:\ / /:/ / /:/ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\
/ /:/ \:\ / /:/ ___ / /:/ / /:/ \:\ / /:/~/:/ ___ \ \:\ / /:/ /::\
/__/:/ \__\:\ /__/:/ / /\ / /::\ /__/:/ \__\:\ /__/:/ /:/ /__/\ \__\:\ /__/:/ /:/\:\
\ \:\ / /:/ \ \:\ / /:/ /__/:/\:\ \ \:\ / /:/ \ \:\/:/ \ \:\ / /:/ \ \:\/:/~/:/
\ \:\ /:/ \ \:\ /:/ \__\/ \:\ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \::/ /:/
\ \:\/:/ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \__\/ /:/
\ \::/ \ \::/ \__\/ \ \::/ \ \:\ \ \::/ /__/:/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/
v1.2 stable !
Octopus C2 | Control your shells
Octopus >>
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.
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:
Exemplo:
#!/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.