Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
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 | Kitploit
Outils/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

Voir le dépôt
263il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Async PICO HUB

Async PICOs est un framework pour exécuter des fichiers d'objet Beacon de longue durée, pilotés par événements, dans un processus Beacon Cobalt Strike. Il fournit une exécution asynchrone, le suivi des tâches, un arrêt gracieux et une sortie asynchrone sûre en combinant les PICOs de Crystal Palace avec un modèle d'exécution côté Beacon.

Contrairement aux BOF asynchrones natifs de Cobalt Strike, les Async PICOs s'exécutent dans le processus de Beacon et peuvent réveiller Beacon pour afficher la sortie lorsque des événements se produisent.

Pourquoi les Async PICOs ?

Les BOF asynchrones natifs de Cobalt Strike résolvent un problème différent. Les Async PICOs sont destinés à des tâches de longue durée, pilotées par événements, qui s'exécutent dans Beacon et peuvent communiquer immédiatement et en toute sécurité les résultats à l'opérateur.

Pour les détails d'implémentation et la justification de la conception, consultez l'article de blog associé :

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

Compilation

Prérequis

Avant la compilation, les composants suivants sont requis :

  • Un checkout local de ce dépôt

  • Une version compilée de Crystal Palace

  • Visual Studio avec prise en charge de MSVC et CMake

  • Tradecraft Garden

  • Clonez le dépôt

Clonez ou copiez le dépôt localement :

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

Installer Crystal Palace

Les Async PICOs dépendent de Crystal Palace pour la génération de PICO.

Téléchargez la dernière version compressée de Crystal Palace et compilez-la selon ses instructions. Une fois compilée, placez les binaires de Crystal Palace dans :

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

La structure attendue devrait ressembler à ceci :

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

Téléchargez la dernière version de Tradecraft Garden et placez-la dans

root@kitploit:~
pico-tools/tradecraftgarden

La structure attendue devrait ressembler à ceci :

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

Assurez-vous de compiler libtcg et l'exemple simple_pic pour pouvoir compiler les Async PICOs.

Ouvrir le projet dans Visual Studio

Le projet utilise CMake pour simplifier la compilation avec MSVC.

Depuis la racine du dépôt, faites un clic droit sur le dossier et sélectionnez :

root@kitploit:~
Open with Visual Studio

Cela charge le projet CMake et expose les configurations de compilation disponibles.

Configurations de compilation

Les configurations de compilation suivantes sont disponibles :

x64 Debug

Compile des versions exécutables locales des PICO et des BOF pour le débogage.

Utilisez cette configuration lorsque vous déboguez un comportement localement ou lorsque vous parcourez le code dans Visual Studio.

x64 Release

Compile des versions exécutables locales optimisées des PICO et des BOF.

Utilisez cette configuration pour tester le comportement de release en dehors de Beacon.

x64 Release Objects

Compile les artefacts de déploiement :

  • PICO indépendants de la position utilisant Crystal Palace
  • BOF standard tels que AsyncPICOMgr

C'est la configuration utilisée pour produire les objets pour Cobalt Strike.

Sortie de compilation

Une fois la compilation terminée, les artefacts générés se trouvent dans :

build/x64-ReleaseObject/obj/

Ce répertoire contient les PICO et les BOF compilés, prêts à l'emploi.

Démarrage rapide

Configurer un sleepmask personnalisé

Les Async PICOs nécessitent que Beacon utilise un sleepmask personnalisé.

Dans votre profil malleable, activez la prise en charge d'un sleepmask personnalisé avant d'essayer d'utiliser les Async PICOs.

Le script picos-cna/sleepmask.cna charge async-sleepmask, une implémentation de référence minimale utilisée pour prendre en charge la sortie asynchrone et la coordination du réveil de Beacon.

Ce sleepmask est volontairement simple et présente les limitations décrites dans la section Limitations. Il est fourni pour démontrer le framework et simplifier les tests, et non comme un composant final prêt pour la production.

Si vous disposez déjà d'un sleepmask personnalisé avec des techniques OPSEC, telles que la manipulation de la pile ou autres, consultez Modifier votre sleepmask existant pour en faire un Async sleepmask pour intégrer la prise en charge des Async PICO dans votre implémentation existante.

Charger le script Aggressor

Après avoir compilé le projet avec la configuration x64 Release Objects, chargez les scripts Aggressor picos.cna et sleepmask.cna dans Cobalt Strike :

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

Une fois chargés, les Async PICOs peuvent être gérés via la commande picos.

Démarrer un Async PICO

Pour démarrer un PICO :

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

Par exemple :

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

Ou avec des arguments :

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

Lister les PICO en cours d'exécution

Pour afficher les Async PICOs en cours d'exécution :

root@kitploit:~
picos

Cela affiche les tâches en cours d'exécution et leurs identifiants.

Arrêter un PICO en cours d'exécution

Pour arrêter un Async PICO :

root@kitploit:~
picos stop [pico id]

Par exemple :

root@kitploit:~
picos stop 3

Le PICO reçoit un signal d'arrêt et se termine proprement après avoir effectué le nettoyage.

Aide

Des informations d'utilisation supplémentaires sont disponibles directement dans Cobalt Strike via les menus d'aide intégrés pour les commandes picos.

Écrire un Async PICO personnalisé

Consultez docs/writing_custom_async_pico.md pour plus de détails.

Modifier votre sleepmask existant pour en faire un Async sleepmask

Consultez docs/modifying_existing_sleepmask.md pour plus de détails.

Exemples inclus

  • tgt-monitor-pico : PICO asynchrone qui écoute les connexions et affiche les tickets Kerberos. Basé sur https://github.com/jakobfriedl/tgt-monitor-bof
  • example-pico : un PICO très simple qui montre les capacités asynchrones, comme ouvrir une fenêtre sans bloquer le thread principal de Beacon, et envoyer la sortie.

Considérations OPSEC

L'implémentation publique est volontairement maintenue simple, sans techniques évasives avancées. Elle est conçue comme une base à adapter plutôt que comme quelque chose à déployer tel quel.

Création de threads

Les Async PICOs sont lancés à l'aide de CreateThread. Cela maintient le modèle d'exécution simple et facile à appréhender, mais introduit également une surface de détection. Dans l'implémentation publique, le thread commence son exécution depuis une mémoire qui n'est pas adossée à une image de module, ce qui peut être détecté par des produits ou des heuristiques qui inspectent les adresses de début des threads.

Les utilisateurs doivent évaluer si des stratégies alternatives de création de threads ou d'exécution sont plus appropriées à leur environnement.

Intégration du sleepmask

Le framework repose sur un sleepmask modifié pour relayer la sortie asynchrone vers Beacon et coordonner les événements de réveil. L'implémentation incluse ici est volontairement minimale et doit être examinée avant une utilisation opérationnelle.

Le sleepmask fait partie du modèle d'exécution, pas simplement une couche de confort. Toute modification de la façon dont la sortie est mise en file d'attente, vidée ou signalée doit être évaluée avec soin pour éviter d'introduire des problèmes de concurrence ou des interactions non prises en charge avec les composants internes de Beacon.

Limitations

L'implémentation publique comporte plusieurs limitations pratiques qui doivent être comprises avant son utilisation.

Stockage partagé des variables globales

Crystal Palace permet aux PICO d'utiliser des variables globales, mais l'implémentation publique utilise un modèle de stockage partagé simple pour conserver l'état global. Par conséquent, les variables globales ne sont pas isolées par thread.

En pratique, cela signifie que l'exécution simultanée de plusieurs Async PICOs peut nécessiter une attention supplémentaire lorsqu'ils dépendent de variables globales.

Dépendance au sleepmask

Les Async PICOs dépendent d'un sleepmask modifié pour la sortie asynchrone et la coordination du réveil de Beacon. Le framework n'est donc pas entièrement autonome et ne peut pas être traité comme un BOF interchangeable (drop-in).

Non conçu comme un artefact de déploiement entièrement finalisé

Le dépôt est conçu pour démontrer un framework et une approche d'implémentation plutôt que pour fournir un composant final prêt pour la production. Les exemples inclus sont destinés à être étendus, modifiés et adaptés à des cas d'utilisation individuels.

Télécharger l’outil