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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/nccgroup/async-pico-hub
Penetration Testing FrameworksPost-ExploitationCommand and ControlRed TeamingPayload Development
GitHubnccgroup/async-pico-hub

async-pico-hub

Async PICO Hub is a work-in-progress framework to extend Cobalt Strike with custom event monitoring and in-process Asynchronous BOFs

Репозиторий
2632 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Async PICO HUB

Async PICOs — это фреймворк для запуска долгоживущих, событийно-ориентированных Beacon Object Files внутри процесса Cobalt Strike Beacon. Он обеспечивает асинхронное выполнение, отслеживание задач, корректное завершение работы и безопасный асинхронный вывод, сочетая Crystal Palace PICOs с моделью выполнения на стороне Beacon.

В отличие от нативных асинхронных BOF в Cobalt Strike, Async PICOs выполняются в процессе Beacon и могут пробуждать Beacon для вывода результатов при наступлении событий.

Почему Async PICOs?

Нативные асинхронные BOF в Cobalt Strike решают другую задачу. Async PICOs предназначены для длительных, событийно-ориентированных задач, которые выполняются внутри Beacon и могут безопасно передавать результаты оператору немедленно.

Подробности реализации и обоснование дизайна см. в сопроводительной статье в блоге:

https://www.nccgroup.com/research/async-picos-and-custom-beacon-wakeups-in-cobalt-strike/

Сборка

Требования

Перед сборкой необходимы следующие компоненты:

  • Локальная копия этого репозитория

  • Собранная версия Crystal Palace

  • Visual Studio с поддержкой MSVC и CMake

  • Tradecraft Garden

  • Клонируйте репозиторий

Клонируйте или скопируйте репозиторий локально:

root@kitploit:~
git clone <repo-url>
cd async-pico-hub

Установка Crystal Palace

Async PICOs полагаются на Crystal Palace для генерации PICO.

Загрузите последнюю сжатую версию Crystal Palace и соберите её в соответствии с её инструкциями. После сборки поместите бинарные файлы Crystal Palace в:

root@kitploit:~
pico-tools/crystal-palace/

Ожидаемая структура должна выглядеть примерно так:

root@kitploit:~
pico-tools/
└── crystal-palace/
    ├── src/
    ├── lib/
    └── ...

Загрузите последнюю версию Tradecraft Garden и поместите её в

root@kitploit:~
pico-tools/tradecraftgarden

Ожидаемая структура должна выглядеть примерно так:

root@kitploit:~
pico-tools/
└── tradecraftgarden/
    ├── libtcg/
    ├── simple_pic/
    └── ...

Убедитесь, что вы собрали libtcg и пример simple_pic, чтобы иметь возможность собрать Async PICOs.

Откройте проект в Visual Studio

Проект использует CMake для упрощения сборки с помощью MSVC.

В корне репозитория щёлкните правой кнопкой мыши по папке и выберите:

root@kitploit:~
Open with Visual Studio

Это загрузит CMake-проект и отобразит доступные конфигурации сборки.

Конфигурации сборки

Доступны следующие конфигурации сборки:

x64 Debug

Собирает локальные исполняемые версии PICO и BOF для отладки.

Используйте эту конфигурацию при локальной отладке поведения или пошаговом проходе по коду в Visual Studio.

x64 Release

Собирает оптимизированные локальные исполняемые версии PICO и BOF.

Используйте эту конфигурацию для проверки поведения релизной версии вне Beacon.

x64 Release Objects

Собирает артефакты для развертывания:

  • Позиционно-независимые PICO на основе Crystal Palace
  • Стандартные BOF, такие как AsyncPICOMgr

Это конфигурация, используемая для создания объектов для Cobalt Strike.

Результаты сборки

После завершения сборки созданные артефакты можно найти в:

build/x64-ReleaseObject/obj/

Этот каталог содержит скомпилированные PICO и BOF, готовые к использованию.

Быстрый старт

Настройка пользовательского sleepmask

Async PICOs требуют, чтобы Beacon использовал пользовательский sleepmask.

В вашем malleable profile включите поддержку пользовательского sleepmask перед попыткой использовать Async PICOs.

Скрипт picos-cna/sleepmask.cna загружает async-sleepmask — минимальную эталонную реализацию, используемую для поддержки асинхронного вывода и координации пробуждения Beacon.

Этот sleepmask намеренно прост и имеет ограничения, описанные в разделе Ограничения. Он предоставлен для демонстрации фреймворка и упрощения тестирования, а не как готовый production-компонент.

Если у вас уже есть пользовательский sleepmask с OPSEC-техниками, такими как манипуляция стеком или другими, см. Изменение вашего существующего sleepmask на Async Sleepmask, чтобы интегрировать поддержку Async PICO в вашу существующую реализацию.

Загрузка скрипта Aggressor

После сборки проекта с конфигурацией x64 Release Objects загрузите скрипт Aggressor picos.cna и sleepmask.cna в Cobalt Strike:

root@kitploit:~
Script Manager → Load → picos-cna/picos.cna
Script Manager → Load → picos-cna/sleepmask.cna

После загрузки Async PICOs можно управлять через команду picos.

Запуск Async PICO

Для запуска PICO:

root@kitploit:~
picos start [path to pico] [arguments]

Например:

root@kitploit:~
picos start C:\temp\MonitorTGT.pico

Или с аргументами:

root@kitploit:~
picos start C:\temp\MonitorTGT.pico DOMAIN\serviceaccount

Просмотр запущенных PICO

Для просмотра запущенных Async PICO:

root@kitploit:~
picos

Это отображает текущие запущенные задачи и их идентификаторы.

Остановка запущенного PICO

Для остановки Async PICO:

root@kitploit:~
picos stop [pico id]

Например:

root@kitploit:~
picos stop 3

PICO получает сигнал остановки и корректно завершает работу после выполнения очистки.

Справка

Дополнительная информация об использовании доступна непосредственно в Cobalt Strike через встроенные меню справки для команд picos.

Создание собственного Async PICO

Подробности см. в docs/writing_custom_async_pico.md.

Изменение вашего существующего sleepmask на Async Sleepmask

Подробности см. в docs/modifying_existing_sleepmask.md.

Включённые примеры

  • tgt-monitor-pico: async pico, который прослушивает входы в систему и выводит билеты Kerberos. Основан на https://github.com/jakobfriedl/tgt-monitor-bof
  • example-pico: очень простой PICO, демонстрирующий асинхронные возможности, такие как открытие окна без зависания главного потока Beacon и отправка вывода.

Рекомендации по OPSEC

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

Создание потоков

Async PICO запускаются с помощью CreateThread. Это сохраняет модель выполнения простой и понятной, но также создает поверхность для обнаружения. В публичной реализации поток начинает выполнение из памяти, не поддерживаемой образом модуля, что может быть обнаружено продуктами или эвристиками, которые проверяют стартовые адреса потоков.

Пользователям следует оценить, насколько альтернативные стратегии создания потоков или выполнения более подходят для их окружения.

Интеграция Sleepmask

Фреймворк полагается на модифицированный sleepmask для передачи асинхронного вывода обратно в Beacon и координации событий пробуждения. Включенная здесь реализация намеренно минимальна и должна быть проверена перед оперативным использованием.

Sleepmask является частью модели выполнения, а не просто удобным слоем. Любые изменения в том, как вывод ставится в очередь, извлекается или сигнализируется, должны тщательно оцениваться, чтобы избежать проблем с параллелизмом или неподдерживаемых взаимодействий с внутренними механизмами Beacon.

Ограничения

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

Общее хранилище глобальных переменных

Crystal Palace позволяет PICO использовать глобальные переменные, но публичная реализация использует простую модель общего хранилища для глобального состояния. В результате глобальные переменные не изолированы для каждого потока.

На практике это означает, что одновременный запуск нескольких Async PICO может потребовать дополнительной осторожности, если они зависят от глобальных переменных.

Зависимость от Sleepmask

Async PICO зависят от модифицированного sleepmask для асинхронного вывода и координации пробуждения Beacon. Поэтому фреймворк не является полностью автономным и не может рассматриваться как готовый BOF для подстановки.

Не предназначен как полностью готовый артефакт для развертывания

Репозиторий предназначен для демонстрации фреймворка и подхода к реализации, а не для предоставления готового production-компонента. Включенные примеры предназначены для расширения, изменения и адаптации под индивидуальные сценарии использования.

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