
Открытый исходный код C2-сервера предоперационной подготовки на основе Python и PowerShell
Octopus — это C2-сервер с открытым исходным кодом для предварительной эксплуатации (pre-operation), написанный на Python, который может управлять агентом PowerShell через HTTP/S.
Основная цель создания Octopus — использование перед любой операцией red team, когда вместо того, чтобы начинать взаимодействие с полным арсеналом операционных средств и инфраструктуры, можно сначала применить Octopus для атаки на цель и сбора информации, прежде чем начинать саму операцию red team.
Octopus работает очень простым способом: выполняет команды и обменивается информацией с C2 по хорошо зашифрованному каналу, что делает его незаметным и необнаруживаемым практически для любого антивируса, системы защиты конечных точек и решения мониторинга сети.
Одной из интересных функций Octopus является ESA (Endpoint Situational Awareness), которая собирает важную информацию о цели, помогая лучше понять состояние конечных точек сети противника, с которыми вы столкнётесь во время операции. Это позволяет адаптировать реальную операцию на основе полученных данных.
Octopus спроектирован скрытным и незаметным при связи с C2: по умолчанию используется AES-256 для зашифрованного канала между агентом PowerShell и сервером C2. Также можно использовать SSL/TLS, предоставив действующий сертификат для вашего домена и настроив сервер C2 Octopus на его использование.
Octopus содержит ряд функций, позволяющих получить представление о будущем взаимодействии до того, как потребуется задействовать полный арсенал средств, инструментов и техник, например:
Вы можете установить все зависимости Octopus с помощью:
pip install -r requirements.txt
Вам необходимо установить nasm для Linux и компилятор mingw-w64 для использования функции shellcoding и агента со спуфированными аргументами.
Установить nasm в дистрибутивах на основе Debian можно так:
apt install nasm
А установить mingw-w64 в дистрибутивах на основе Debian можно так:
apt install mingw-w64
Octopus протестирован на следующих операционных системах:
Также потребуется установить mono, чтобы гарантировать успешную компиляцию C# исходного кода.
Octopus зависит от бинарного файла mono-csc для компиляции C# исходника; установить его можно командой apt install mono-devel, что протестировано на Kali и Ubuntu 16.04.
вы можете использовать Octopus без установки mono, но тогда команда
generate_exeбудет недоступна.
Также обратите внимание, что компиляция C# зависит от сборки System.Management.Automation.dll с SHA1-хешем a43ed886b68c6ee913da85df9ad2064f1d81c470.
Если у вас возникнут какие-либо проблемы при использовании Octopus, смело сообщайте о них в баг-репорт!
Прежде всего загрузите последнюю версию Octopus с помощью следующей команды:
git clone https://github.com/mhaskar/Octopus/
Затем установите зависимости с помощью команды:
pip install -r requirements.txt
После этого вы можете запустить сервер Octopus, выполнив:
./octopus.py
После запуска вы увидите следующее:
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py
___ ___ ___ ___ ___ ___
/ /\ / /\ ___ / /\ / /\ /__/\ / /\
/ /::\ / /:/ / /\ / /::\ / /::\ \ \:\ / /:/_
/ /:/\:\ / /:/ / /:/ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\
/ /:/ \:\ / /:/ ___ / /:/ / /:/ \:\ / /:/~/:/ ___ \ \:\ / /:/ /::\
/__/:/ \__\:\ /__/:/ / /\ / /::\ /__/:/ \__\:\ /__/:/ /:/ /__/\ \__\:\ /__/:/ /:/\:\
\ \:\ / /:/ \ \:\ / /:/ /__/:/\:\ \ \:\ / /:/ \ \:\/:/ \ \:\ / /:/ \ \:\/:/~/:/
\ \:\ /:/ \ \:\ /:/ \__\/ \:\ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \::/ /:/
\ \:\/:/ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \__\/ /:/
\ \::/ \ \::/ \__\/ \ \::/ \ \:\ \ \::/ /__/:/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/
v1.2 stable !
Octopus C2 | Control your shells
Octopus >>
Пользоваться Octopus довольно просто: нужно лишь запустить слушатель и сгенерировать агента на основе информации этого слушателя.
Вы можете создать столько слушателей, сколько потребуется, а затем начать взаимодействие с подключившимися к ним агентами.
Перед началом использования Octopus необходимо настроить профиль обработки URL, который будет управлять поведением и функциями C2. Поскольку Octopus — это HTTP-основанный C2, он использует URL для обработки соединений. Чтобы гарантировать, что URL не станут сигнатурами или индикаторами компрометации (IoC) в атакуемой сети, URL можно легко настраивать и переименовывать по необходимости.
В настоящее время настройка профиля поддерживает только обработку URL, значение auto_kill и заголовки.
Настройка вашего профиля
Для начала настройки профиля отредактируйте файл profile.py, который содержит несколько ключевых переменных:
Пример:
#!/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
Агент и слушатели будут настроены на использование этого профиля для связи друг с другом. Далее нам нужно узнать, как создать слушателя.
В Octopus есть два основных слушателя: «http listener» и «https listener», и их параметры в основном идентичны.
HTTP-слушатель:
Команда listen_http принимает следующие аргументы для запуска: