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

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

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

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

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

Категории

Все категории
Loading categories
SteppingStones — Веб-инструмент для регистрации активности red team, формирования отчётов и ситуационной осведомлённости с интеграцией Cobalt Strike и BloodHound. | Kitploit
Инструменты/GitHubGitHub/nccgroup/steppingstones
Скриптинг и автоматизацияСбор информацииТестирование на ПроникновениеКомандование и УправлениеУтилиты и фреймворкиRed Teaming
GitHubnccgroup/steppingstones

SteppingStones

Веб-инструмент для регистрации активности red team, формирования отчётов и ситуационной осведомлённости с интеграцией Cobalt Strike и BloodHound.

Репозиторий
24334405 дней назадПроверено Kitploit
Сайт

Популярное

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

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

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

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

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

Stepping Stones

Назначение

Центр управления активностью Red Team, предназначенный для ведения записей, ситуационной осведомлённости и формирования отчётов. Stepping Stones предоставляет веб-интерфейс для регистрации активности команды и генерации фрагментов отчётов. Интерфейс рассчитан на достаточную скорость работы, чтобы использоваться на всём протяжении задания, а не только на этапе подготовки отчётов.

Анонс релиза в блоге

Установка

Stepping Stones — это приложение на Python/Django, поэтому для запуска локальной копии:

  1. Установите последнюю версию Python 3 (проверено на версии 3.12.2 в Windows и Linux)
  2. Перейдите в корневой каталог копии этого репозитория
  3. Создайте виртуальное окружение, чтобы изолировать зависимости от других приложений: python -m venv .venv
  4. Активируйте виртуальное окружение: .venv\Scripts\activate или source .venv/bin/activate в *nix
  5. Установите зависимости: pip install -r requirements.txt
  6. Убедитесь, что модули сторонних фоновых задач содержат все необходимые миграции:
python manage.py makemigrations background_task
  • Приведите схему базы данных в актуальное состояние: python manage.py migrate
  • Запустите приложение:
    • Если вы работаете в Linux с systemd, см. руководство по systemd
    • Для разработческих версий:
      • Запустите python manage.py runserver и python manage.py process_tasks одновременно
    • Для production-версий:
      • Выполните python manage.py check --deploy, чтобы получить рекомендации по усилению защиты, а затем следуйте руководству, например: https://docs.djangoproject.com/en/6.0/howto/deployment/
  • Откройте приложение, чтобы настроить задачу и учётную запись администратора: например, перейдите по адресу http://127.0.0.1:8000, если приложение запущено локально.
    • Примечание: созданный пользователь также будет использоваться в основном приложении и будет отображаться как «оператор red team» для зарегистрированных событий, поэтому выберите подходящее имя пользователя, например «ST» или «stephen», а не «admin». Если вы используете интеграцию с Cobalt Strike, использование одинаковых имён пользователей в обоих инструментах упростит интеграцию.
  • Интеграция с Cobalt Strike

    • Поместите лицензированную копию Cobalt Strike в /opt/cobaltstrike или c:\tools\cobaltstrike-dist\cobaltstrike

    На командном сервере (team server) откройте порт в брандмауэре, чтобы разрешить подключение Stepping Stones, например:

    • В AWS настройте группу безопасности Stepping Stones таким образом, чтобы был разрешён доступ к порту 50050 на Team Server
    • На хосте убедитесь, что брандмауэр также разрешает входящий трафик, например sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050

    Обновление приложения

    Если вы запускаете локальную копию, когда код обновлён в git и вы хотите получить новые функции:

    1. Остановите обе службы, например с помощью systemd:
      • sudo service ssbot stop
      • sudo service steppingstones stop
    2. Получите последнюю версию, например с https://github.com/nccgroup/SteppingStones/archive/refs/heads/main.zip
    3. Распакуйте загруженный архив и скопируйте файлы поверх развёрнутой версии, например rm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones
    4. Активируйте виртуальное окружение (если вы ещё этого не сделали) из каталога steppingstones: .venv\Scripts\activate или source .venv/bin/activate в *nix
    5. Установите новые зависимости с помощью: pip install -r requirements.txt
    6. Убедитесь, что модули сторонних фоновых задач содержат все необходимые миграции: python manage.py makemigrations background_task
    7. Выполните скрипты миграции, чтобы привести локальную базу данных к новой схеме: python manage.py migrate.
      • Если Django предложит выполнить python manage.py makemigrations, ОСТАНОВИТЕСЬ и свяжитесь с разработчиками Stepping Stones — важно, чтобы все пользователи работали с одним и тем же набором скриптов миграции, и их следует согласовывать через разработчиков.
    8. Перезапустите обе службы, например с помощью systemd:
      • sudo service ssbot restart
      • sudo service steppingstones restart
    9. Убедитесь, что ошибок нет, например с помощью systemd journalctl -u steppingstones

    Начало работы с чистой базой данных

    Если вы используете один и тот же экземпляр для разных задач и хотите заархивировать старые данные, а затем начать заново, вы можете:

    • Выполните шаг 1 из раздела Обновление приложения выше, чтобы остановить приложение
    • Переименуйте базу данных SQLite:
      • mv db.sqlite3 db.sqlite.OLD_CLIENT_NAME
    • Выполните шаги 2, 4 и 7–9 из раздела Установка выше, чтобы создать правильную структуру базы данных и получить доступ к только что настроенному приложению.

    Резервное копирование

    Система использует SQLite. Регулярно создавайте резервные копии файла db.sqlite3 в корневом каталоге сервера или через веб-интерфейс, чтобы защитить свои ценные данные.

    Веб-хуки

    На каждый настроенный URL веб-хука при наступлении ключевых событий будет отправляться небольшой JSON-документ. JSON-документ всегда имеет следующую структуру:

    root@kitploit:~
    {
        "type": "notification type",
        "message": "Human readable message"
    }
    

    Поле type может принимать одно из следующих значений:

    • new beacon (ранее неизвестный beacon подключился к отслеживаемому Team Server)
    • respawned beacon (ранее известный beacon подключился к отслеживаемому Team Server)
    • returned beacon (beacon, который был явно отслеживаем в ожидании переподключения, только что переподключился)

    Для приёма этих данных можно использовать сценарий https://make.com на основе следующего blueprint:

    root@kitploit:~
    {"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}]}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}
    

    Импортируйте указанный выше blueprint, создав пустой сценарий и используя функцию «Import Blueprint» в меню «...» (More), которое находится в нижней части веб-интерфейса по центру.

    После этого потребуются ещё два шага:

    • Нажмите на кружок веб-хука и добавьте новый именованный веб-хук, чтобы сгенерировать URL
    • Нажмите на логотип Apple, чтобы зарегистрировать iPhone в make.com с помощью их приложения integromat.

    Веб-хуки можно проверить с помощью кнопки на странице веб-хуков Stepping Stones.

    Модель безопасности

    Stepping Stones использует систему разрешений на уровне моделей Django, позволяющую ограничивать пользователям создание, редактирование, просмотр и удаление каждого типа моделей данных. В консоли /admin можно найти группы, которые назначают набор разрешений (например, подходящих для Blue Team клиента) всем участникам этой группы.

    Существующие группы:

    РольОписание
    Клиентская Blue Team — только чтениеМожет читать страницы событий и файлов
    Клиентская Blue Team — ограниченная записьКак и Client Blue Team - Read Only, но с правом записи в поля результата события и обнаружения

    Пользователи, созданные в процессе установки, получают статус «суперпользователя», а значит, неявно обладают всеми возможными разрешениями. Однако при ручном создании пользователей через консоль администратора убедитесь, что они НЕ отмечены как «staff» и не являются «суперпользователями», чтобы у них не было подразумеваемых разрешений — тогда они смогут получать разрешения только через добавление в группы.

    Локализация

    Часовые пояса пользователей можно изменить через портал /admin. Время в отчётах намеренно выводится в UTC, чтобы облегчить сопоставление данных специалистами Blue Team.

    Форматы дат, отображаемые Stepping Stones, должны соответствовать локали веб-браузера. Например, пользователи, в браузере которых настроена американская локаль, будут видеть даты в формате ММ/ДД/ГГГГ в веб-интерфейсе и во фрагментах отчётов.

    EventStream

    Stepping Stones может принимать журналы из других инструментов, если они отформатированы в специальный формат EventStream на основе JSON. Формат подробно описан в веб-интерфейсе SteppingStones, включая схемы и примеры данных.

    После того как журнал EventStream принят Stepping Stones, отдельные подходящие записи можно клонировать в события для отчёта.

    Детали интеграции с Cobalt Strike

    Предпочтительный способ интеграции Cobalt Strike — через SSBot. Для этого требуется лицензионная копия Cobalt Strike в /opt/cobaltstrike или c:\tools\cobaltstrike, которая будет использоваться для подключения к любым (включённым) командным серверам, настроенным в веб-интерфейсе.

    После интеграции:

    • Раскрывающиеся списки Source/Target будут включать beacons
    • Раскрывающиеся списки файлов будут включать файлы, загруженные/скачанные через CS
    • Вкладка Credentials будет заполняться на основе вывода инструмента и любых учётных данных, добавленных в CS.
    • Отдельные действия CS можно превращать в события — пожалуйста, подходите к этому выборочно и добавляйте контекст к каждому событию, а не дублируйте действия полностью, чтобы сохранить качество отчётов.

    Существуют дополнительные команды CLI, которые можно использовать, если SSBot работает не так, как ожидалось:

    • .\manage.py reset_cs_data [-s SERVER] - Сбросит все данные, полученные от указанного командного сервера, или все данные, если имя не задано. Это не затронет данные, полученные из журналов CS, например вручную клонированные события или учётные данные.
    • .\manage.py parse_log_tar <file name> - Разберёт содержимое каталога журналов, упакованного в tar, взятое с командного сервера. Примечание: этот способ не включает все данные, доступные через SSBot, и поэтому не является предпочтительным методом приёма данных.

    Интеграция с BloodHound

    Серверы Neo4j, настроенные через веб-интерфейс, будут использоваться для:

    • Обновления статуса owned в BloodHound, когда добавляются учётные данные с паролем или beacon запускается на определённом хосте от имени системы.
    • Заполнения раскрывающихся списков Source/Target пользователями и компьютерами
    • Предоставления дополнительной отчётности по учётным записям в разделе учётных данных Stepping Stones

    Плагины для формирования отчётов

    Функциональность Stepping Stones можно расширять с помощью плагинов. Дополнительная документация доступна здесь.

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