Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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
Inline-Execute-PE — Exécuter des exécutables Windows non gérés dans les Beacons CobaltStrike | Kitploit
Outils/GitHubGitHub/octoberfest7/inline-execute-pe
Escalade de Privilèges
GitHuboctoberfest7/inline-execute-pe

Inline-Execute-PE

Exécuter des exécutables Windows non gérés dans les Beacons CobaltStrike

Voir le dépôt
7231037il y a 3 ansVé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

Inline-Execute-PE

AVERTISSEMENT :

Ce projet est complexe et ne pas comprendre son fonctionnement ni le tester correctement peut entraîner le crash des Beacons et la perte d'accès !

Je vous encourage vivement à lire toute la documentation jusqu'à la section « Design Considerations and Commentary » !

Introduction

Inline-Execute-PE est un ensemble de fichiers objet Beacon (BOF) et d'un script Aggressor pour CobaltStrike qui permet aux opérateurs de charger des exécutables Windows non managés dans la mémoire du Beacon et de les exécuter, en récupérant la sortie et en l'affichant dans la console Beacon.

Cela permet aux opérateurs d'utiliser de nombreux outils tiers (Mimikatz, Dsquery, outils Sysinternals, etc.) sans avoir à les écrire sur le disque, à les reformater en code indépendant de la position à l'aide d'un outil comme Donut, ou à créer un nouveau processus pour les exécuter.

Ces exécutables sont mappés dans la mémoire du Beacon afin de pouvoir être exécutés à plusieurs reprises sans avoir à les envoyer sur le réseau, à allouer de la nouvelle mémoire et à créer un nouveau processus conhost.exe à chaque fois.

Les exécutables chargés dans les Beacons sont accessibles et peuvent être exécutés par tous les clients CobaltStrike connectés au serveur d'équipe CobaltStrike.

Inline-Execute-PE a été conçu autour des Beacons x64 et des exécutables Windows x64 C ou C++ compilés avec Mingw ou Visual Studio. Ce projet ne prend pas en charge les exécutables x86 ni les exécutables x64 écrits dans un autre langage ou compilés avec un autre compilateur.

Configuration

Clonez le dépôt et exécutez éventuellement make pour recompiler les BOF.

Chargez Inline-Execute-PE.cna dans le client CobaltStrike. Assurez-vous que le répertoire à partir duquel CobaltStrike s'exécute est inscriptible par votre utilisateur ; Inline-Execute-PE y crée un fichier texte (petable.txt) afin de garantir la disponibilité des données nécessaires au fonctionnement d'Inline-Execute-PE.

Commandes

Inline-Execute-PE comprend 3 commandes orientées cible qui exécutent des BOF, et 3 commandes internes qui manipulent la structure de données du projet :

Commandes orientées cible :

  1. peload
  2. perun
  3. peunload

Structure de données interne :

  1. petable
  2. peconfig
  3. pebroadcast

peload

peload est le point de départ d'Inline-Execute-PE. Cette commande est utilisée pour charger un PE dans la mémoire du Beacon. Elle effectue les actions principales suivantes :

  1. Envoie le PE spécifié sur le réseau vers le Beacon OU envoie le nom du PE à lire depuis le disque sur la machine cible
  2. Crée une structure dans la mémoire du Beacon pour contenir divers pointeurs et handles nécessaires à Inline-Execute-PE tout au long de son cycle de vie
  3. Alloue de la mémoire dans le Beacon et y écrit le PE avec une protection RW
  4. Chiffre le PE en mémoire par XOR en utilisant une clé spécifiée par l'utilisateur
  5. Alloue un autre bloc de mémoire et y copie le PE chiffré par XOR. Cela est nécessaire pour pouvoir « restaurer » le PE pour les exécutions ultérieures
  6. Crée un processus fils conhost.exe sous le Beacon afin d'initialiser stdin/stdout/stderr
  7. Redirige stdout et stderr vers un tube anonyme afin que la sortie du PE puisse être capturée

perun

perun est la deuxième étape d'Inline-Execute-PE. Elle effectue les actions principales suivantes :

  1. Envoie les arguments de ligne de commande sur le réseau vers le Beacon
  2. Déchiffre le PE en mémoire par XOR
  3. Corrige la table d'importation du PE, en hookant certaines API liées aux arguments de ligne de commande et à la sortie des processus
  4. Change la protection mémoire du PE en RWX
  5. Exécute le PE dans son propre thread
  6. Capture la sortie du PE et la renvoie à CobaltStrike
  7. Rétablit la protection mémoire du PE en RW
  8. Écrase le PE en mémoire avec la copie chiffrée par XOR effectuée lors de peload

peunload

peunload est appelé pour supprimer le PE de la mémoire du Beacon lorsque l'opérateur en a terminé ou souhaite charger un autre PE. Elle effectue les actions principales suivantes :

  1. Ferme les handles et les pointeurs de fichier créés lors de peload
  2. Termine le processus conhost.exe créé lors de peload
  3. Remet à zéro puis libère les deux copies du PE en mémoire
  4. Tente de décharger les éventuelles DLL chargées par le PE dans le processus Beacon (optionnel)

petable

petable est utilisé pour afficher des informations sur tous les PE actuellement chargés dans les Beacons.

Chaque client CobaltStrike a son propre petable ; Inline-Execute-PE fait de gros efforts pour assurer la synchronisation de ses données entre tous les clients CobaltStrike connectés, afin que les PE puissent être utilisés par tous les opérateurs. Pour plus d'informations, voir « Design Considerations and Commentary ».

image

peconfig

peconfig est utilisé pour configurer les options relatives au fonctionnement d'Inline-Execute-PE. Les deux options actuellement modifiables sont :

  1. Timeout. Cela détermine combien de temps perun attendra la fin de l'exécution du PE avant de le terminer. Cela existe comme mesure de sécurité au cas où des arguments incorrects sont donnés à un PE qui l'empêcheraient de revenir/terminer son exécution. Ce paramètre est de 60 secondes par défaut mais peut être modifié pour prendre en charge des PE de plus longue durée.
  2. UnloadLibraries. Cette option contrôle si peunload essaiera de libérer les DLL du processus Beacon qui ont été chargées par le PE. Elle est définie sur TRUE par défaut. Certains PE causent des problèmes lorsque les DLL sont déchargées du processus Beacon et peuvent provoquer un crash du Beacon, auquel cas il est préférable de laisser toutes les DLL chargées par le PE dans le processus Beacon. Cela a été observé lors de l'utilisation de powershell.exe (peut-être en raison du chargement du CLR .Net dans le processus Beacon).

pebroadcast

pebroadcast peut être utilisé pour diffuser manuellement le contenu du petable d'un client à tous les autres clients CobaltStrike connectés.

Tous les autres clients CobaltStrike mettront à jour leur petable avec les données diffusées. Cela ne devrait jamais vraiment être nécessaire, mais la fonctionnalité existe au cas où.

Utilisation

Utilisez peload pour charger un PE dans la mémoire du Beacon
image

Sinon, s'il y a un PE sur la machine cible que vous souhaitez utiliser sans créer de nouveau processus, fournissez le chemin et l'option --local
image

Appelez perun en passant les arguments au PE chargé
image

Les guillemets doubles dans les arguments doivent être échappés avec des barres obliques inverses
image

Si vous avez identifié qu'un PE cause des problèmes lors de la tentative de libération des DLL pendant le déchargement, utilisez peconfig pour définir unloadlibraries sur false
image

Une fois que vous avez fini d'utiliser un PE, appelez peunload pour le nettoyer du Beacon
image

Télécharger l’outil