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

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

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

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

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

Категории

Все категории
Loading categories
sleep_python_bridge — Этот проект является «мостом» между sleep и языком python. Он позволяет управлять teamserver Cobalt Strike через python без необходимости использования стандартного GUI-клиента. ПРИМЕЧАНИЕ: Этот проект находится в стадии BETA. Цель — предоставить площадку для тестирования, и это никоим образом не официально поддерживаемая функция. Возможно, в будущем это может быть добавлено в основной продукт. | Kitploit
Инструменты/GitHubGitHub/cobalt-strike/sleep_python_bridge
Управление индикаторами компрометации (IOC)Генерация полезной нагрузкиКомандование и УправлениеRed TeamingРазработка Полезной НагрузкиАнализ Журналов
GitHubcobalt-strike/sleep_python_bridge

sleep_python_bridge

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
1883251 год назадПроверено Kitploit

Описание

Этот проект является «мостом» между sleep и языком python. Он позволяет управлять teamserver Cobalt Strike через python без необходимости использования стандартного GUI-клиента. ПРИМЕЧАНИЕ: Этот проект находится в стадии BETA. Цель — предоставить площадку для тестирования, и это никоим образом не официально поддерживаемая функция. Возможно, в будущем это может быть добавлено в основной продукт.

Поделиться

Мост между Cobalt Strike Sleep и Python

Этот проект — «мост» между языками Sleep и Python. Он позволяет управлять teamserver Cobalt Strike через Python без необходимости в стандартном GUI-клиенте.

ПРИМЕЧАНИЕ: этот проект находится в стадии BETA. Цель — предоставить полигон для тестирования, и это никоим образом не является официально поддерживаемой функцией. Возможно, в будущем это может быть добавлено в основной продукт.

Проект вдохновлён работой @BinaryFaultline и @Mcgigglez16 в проекте https://github.com/emcghee/PayloadAutomation. Я хочу выразить вам обоим особую благодарность!!

Сердце этого моста — реализация на Python «безголового» клиента Cobalt Strike. Это достигается использованием консоли Aggressor Script, предоставляемой agscript, в качестве движка. Agscript позволяет взаимодействовать с Cobalt Strike без GUI (https://www.cobaltstrike.com/aggressor-script/index.html). «Мост» работает за счёт использования вспомогательных функций Python в sleepy.py для генерации необходимых Sleep-команд, ожидаемых консолью agscript. Вместо написания Sleep-функций striker.py предоставляет вспомогательные функции, которые абстрагируют Sleep и позволяют использовать Python.

Основные изменения по сравнению с исходным проектом

Поскольку этот проект вдохновлён PayloadAutomation, он начинался с большей части того же кода, но я хотел урезать его до компонентов, необходимых для работы в качестве обёртки над agscript.

  • Переименован из Payload_Automation в sleep_python_bridge. Этот проект — больше, чем просто генерация пейлоадов.
  • Изменён с библиотеки PyPI на локальные модули. Это было сделано для тестирования, и после всестороннего тестирования он может стать хорошим кандидатом в библиотеку Python.
  • Обновлены и добавлены вспомогательные функции для соответствия версиям Aggressor.
  • Добавлена возможность загрузки внешнего скрипта.

Включённые библиотеки

  • Striker: набор функций для взаимодействия с Cobalt Strike и выполнения функциональности, обычно доступной только через Sleep/GUI.
  • Sleepy: набор функций, помогающих наладить мост между объектами Sleep и объектами Python.
  • Compyler: набор функций для компиляции различных пейлоадов под конкретную платформу или кроссплатформенных.
  • Artifactor: набор функций для проверки и анализа артефактов, а также сбора и отслеживания IoC.

Файлы и каталоги

TODO

  • Задокументировать предоставляемые функции
  • Перенести функции компиляции из striker.py в compyler.py
  • Добавить дополнительные проверки ошибок, особенно для зависимостей приложения
  • Расширить compyler, включив удалённые сборки и mingw
  • Добавить отслеживание IOC для пейлоадов, создаваемых через artifactor.py
  • Обработать ошибку: "User is already connected."
  • Рассмотреть возможность превращения этого в полноценную библиотеку Python

Как использовать

Возможно, проще всего понять этот проект на примерах, а именно по скрипту example.py.

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

## Import the bridge
from sleep_python_bridge.striker import CSConnector
from argparse import ArgumentParser
from pprint import pp, pprint

###################
## Argparse
def parseArguments():
    parser = ArgumentParser()
    parser.add_argument('host', help='The teamserver host.')
    parser.add_argument('port', help='The teamserver port.')
    parser.add_argument('username', help='The desired username.')
    parser.add_argument('password', help='The teamserver password.')
    parser.add_argument('path', help="Directory to CobaltStrike")
    
    args = parser.parse_args()
    return args

## Let's go
def main(args):

    cs_host = args.host
    cs_port = args.port
    cs_user = args.username
    cs_pass = args.password
    cs_directory = args.path

    ## Connect to server
    print(f"[*] Connecting to teamserver: {cs_host}")
    with CSConnector(
        cs_host=cs_host, 
        cs_port=cs_port, 
        cs_user=cs_user, 
        cs_pass=cs_pass,
        cs_directory=cs_directory) as cs:

        # Perform some actions
        # 
        # Get beacon metadata - i.e., x beacons() from the script console
        beacons = cs.get_beacons()
        print("BEACONS")
        pprint(beacons)

        # Get list of listners - i.e., x listeners_stageless() from the script console
        listeners = cs.get_listeners_stageless()
        print("LISTENERS")
        pprint(listeners)

if __name__ == "__main__":
    args = parseArguments()
    main(args)

Запустите скрипт

root@kitploit:~
python3 example.py 127.0.0.1 50050 example password /path/to/cobaltstrike

Практические примеры

Трекер журналов

Журналы Beacon доступны во время работы на teamserver или через файлы журналов Beacon, сохранённые на teamserver. Данные всегда есть, но могут быть представлены не так, как вам хотелось бы. Это пример трекера журналов, который использует HTML-таблицу данных для быстрого просмотра журналов Beacon.

beaconlogtracker.py — это скрипт, который подключается к teamserver, каждые 30 секунд извлекает текущие журналы Beacon, сохраняет их в <code>beaconlogs.json` и отображает в HTML-таблице данных с возможностью поиска и сортировки.

Журналы Beacon всегда сохраняются в каталог logs, но это альтернативный способ отслеживать журналы в памяти с помощью альтернативного просмотрщика. Если teamserver будет перезапущен, журналы в памяти будут потеряны, и вам придётся обращаться к журналам, хранящимся в каталоге logs на teamserver. Этот скрипт поддерживает журналы в памяти синхронизированными с файлом beaconlogs.json. Так у вас появится быстрый и простой способ визуализировать все данные, не копаясь в каталоге logs, даже если Cobalt Strike будет перезапущен.

Запустите скрипт, подключив его к вашему teamserver для синхронизации журналов каждые 30 секунд

Использование:

python3 beaconlogtracker.py 127.0.0.1 50050 logtracker password /path/to/cobaltstrike

Это будет поддерживать beaconlogs.json синхронизированным с сохранёнными и текущими журналами Beacon. Синхронизация происходит каждые 30 секунд

Запустите веб-сервер из каталога output/html

python3 -m http.server 8000

Подключитесь к http://localhost:8000/beaconlogs.html

Генератор пейлоадов

Возможность программного создания пейлоадов без необходимости использования GUI Cobalt Strike — это функция, которую часто запрашивают операторы red team. Исходный проект делал это с помощью генератора пейлоадов. Это было отлично, но есть одна уникальная проблема. Aggressor предоставляет несколько хуков, влияющих на то, как создаётся пейлоад. Эти хуки используются различными наборами (например, artifact kit, sleep mask kit или UDRL kit). Обычно они используются при загрузке aggressor-скрипта через GUI. Этот проект был расширен, чтобы разрешить загрузку внешних скриптов. Без этого использование этих хуков пейлоадов было бы затруднительно. Этот код можно легко расширить для передачи пейлоадов внешним функциям, чтобы добавить собственную обфускацию, встроить их в пользовательский загрузчик или выполнить любые другие модификации.

Скрипт генератора пейлоадов подключается к teamserver, загружает дополнительные скрипты и создаёт пейлоады.

Использование (без внешних наборов):

  • запустите python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike

Использование (с внешним набором)

В этом примере перечислены шаги по добавлению Arsenal kit, в котором включены наборы artifact и sleep mask.

  • Обновите файл /path/to/arsenal_kit/arsenal_kit.config, чтобы включить наборы artifact и sleep mask
  • [Необязательно] Внесите любые необходимые изменения в наборы artifact и sleep mask
  • Соберите arsenal kit с помощью /path/to/arsenal_kit/build_arsenal_kit.sh
  • Скопируйте дистрибутивные файлы arsenal kit в каталог payload_scripts.
    cp -r /path/to/arsenal_kit/dist/* /path/to/sleep_python_bridge/payload_scripts
  • [Необязательно] См. раздел «Журналирование» для получения дополнительной информации о дополнительных модификациях
  • запустите python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike

Журналирование

Обычно при использовании GUI внешние скрипты могут использовать aggressor-функцию println для вывода информации в консоль скриптов, что полезно для обратной связи или отладки. При использовании payloadgenerator.py вывод println теряется, и единственная доступная опция — функция elog. При использовании elog для просмотра информации в журнале событий необходим GUI.

Продолжая пример использования «с внешним набором», обновите файл /path/to/sleep_python_bridge/payload_scripts/arsenal_kit.cna и замените два вхождения println на elog. С этим изменением всё журналирование arsenal kit теперь будет доступно в журнале событий GUI.

Загрузка внешних скриптов

Загрузка внешних скриптов требуется не всегда, за исключением скриптов модификации пейлоадов, которые включают хуки пейлоадов (например, наборы artifact, sleep mask и udrl). Если вы загружаете скрипты из GUI Cobalt Strike, пейлоады будут учитывать эти скрипты из GUI, но не из agscript-клиента (это разные клиенты). Вы должны добавить скрипты и вспомогательные файлы в каталог payload_scripts.

payloadgenerator.py автоматически загрузит любой .cna-скрипт, расположенный на верхнем уровне каталога payload_scripts. Любой .cna-скрипт, расположенный в подкаталоге, загружен не будет.

Пример структуры каталога с Arsenal Kit.

root@kitploit:~
$ ls -1R ./payload_scripts
./payload_scripts:
arsenal_kit.cna
artifact
sleepmask

./payload_scripts/artifact:
artifact32big.dll
artifact32big.exe
artifact32.dll
artifact32.exe
artifact32svcbig.exe
artifact32svc.exe
artifact64big.exe
artifact64big.x64.dll
artifact64.exe
artifact64svcbig.exe
artifact64svc.exe
artifact64.x64.dll
artifact.cna

./payload_scripts/sleepmask:
sleepmask.cna
sleepmask_pivot.x64.o
sleepmask_pivot.x86.o
sleepmask.x64.o
sleepmask.x86.o

Использование (дополнительные параметры для 4.8)

Благодаря недавнему обновлению от @mgeeky скрипт payloadgenerator.py теперь поддерживает дополнительные аргументы для новых параметров функции artifact_payload, добавленных в 4.8. С этими аргументами у вас теперь больше контроля над тем, какие пейлоады создаются.

root@kitploit:~
$ python3 payloadgenerator.py --help
------------------------
Beacon Payload Generator
------------------------
usage: payloadgenerator.py [-h] [-o path] [-l name] [-a arch] [-t types] [-e exit] [-c method] host port username password path

positional arguments:
  host                  The teamserver host.
  port                  The teamserver port.
  username              The desired username.
  password              The teamserver password.
  path                  Directory to CobaltStrike

optional arguments:
  -h, --help            show this help message and exit

optional parameters:
  -o path, --payload-path path
                        Where to save generated payloads. Default: output/payloads/
  -l name, --listener name
                        Specify listener name to get payloads for. Default: payloads for all listeners will be produced
  -a arch, --arch arch  Specify payload architecture. Choices: x86, x64. Default: payloads for both are generated
  -t types, --payload-types types
                        Comma separated list of payload types to generate keyed by file extensions. Choices: exe,dll,svc.exe,bin,ps1,py,vbs or use 'all' to compile all at once.
                        Default: exe,dll,bin
  -e exit, --exit exit  Payload exit method. Choices: thread, process. Default: process
  -c method, --call-method method
                        System call method. Choices: indirect, direct, none. Default: <empty> (backwards compatible with Cobalt pre 4.8)

Примеры

root@kitploit:~
$python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike -o /share/payloads/ -c indirect -a x64
------------------------
Beacon Payload Generator
------------------------
[*] Connecting to teamserver: 127.0.0.1
Loading cna scripts from ./payload_scripts

Scripts
-------
arsenal_kit.cna
console.cna

[*] Creating stageless payloads for listener: http1
[*] Creating http1.x64.exe
[*] Creating http1.x64.dll
[*] Creating http1.x64.bin

$python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike -o /share/payloads/ -c indirect -a x64 -t exe
------------------------
Beacon Payload Generator
------------------------
[*] Connecting to teamserver: 127.0.0.1
Loading cna scripts from ./payload_scripts

Scripts
-------
arsenal_kit.cna
console.cna

[*] Creating stageless payloads for listener: http1
[*] Creating http1.x64.exe

$python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike -o /share/payloads/
------------------------
Beacon Payload Generator
------------------------
[*] Connecting to teamserver: 127.0.0.1
Loading cna scripts from ./payload_scripts

Scripts
-------
arsenal_kit.cna
console.cna

[*] Creating stageless payloads for listener: http1
[*] Creating http1.x86.exe
[*] Creating http1.x86.dll
[*] Creating http1.x86.bin
[*] Creating http1.x64.exe
[*] Creating http1.x64.dll
[*] Creating http1.x64.bin

Граф Beacon

Это бета-код, который отображает beacon в виде ориентированного графа.

Скрипт обновляет файл output/data/beacons.json

Запустите веб-сервер и откройте http://localhost:8000/beacons.html

Использование:

python3 beacongrapher.py 127.0.0.1 50050 grapher password /path/to/cobaltstrike

Это создаст файл beacons.json, используемый JavaScript-графопостроителем.

Запустите веб-сервер из каталога output/html

python3 -m http.server 8000

Подключитесь к http://localhost:8000/beacons.html

Скачать инструмент
ЭлементОписание
sleep_python_bridgeБиблиотека, которая позволяет Python взаимодействовать с Cobalt Strike
output/htmlПуть для HTML-просмотрщиков данных
output/html/dataПуть для JSON-данных, используемых просмотрщиком данных
output/payloadsПуть для сохранённых пейлоадов (используется генератором пейлоадов)
payload_scriptsПуть для внешних скриптов, загружаемых payloadgenerator.py
beaconlogtracker.pyРеализация трекера журналов Beacon, который использует HTML-таблицу данных для отображения журналов Beacon
payloadgenerator.pyРеализация генератора пейлоадов Beacon, который создаёт пейлоады для каждого listener
beacongrapher.pyРеализация графового трекера Beacon, который использует ориентированный HTML/JavaScript-граф для отображения Beacon