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
inject-assembly — Injecter des assemblies .NET dans un processus existant | Kitploit
Outils/GitHubGitHub/kyleavery/inject-assembly
ExploitationShellcodePost-ExploitationRed Teaming
GitHubkyleavery/inject-assembly

inject-assembly

Injecter des assemblies .NET dans un processus existant

Voir le dépôt
50874il y a 4 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

inject-assembly - Exécuter .NET dans un processus existant

Cet outil est une alternative à l'exécution traditionnelle fork and run pour Cobalt Strike. Le chargeur peut être injecté dans n'importe quel processus, y compris le Beacon actuel. Les assemblys de longue durée continueront à s'exécuter et à renvoyer la sortie au Beacon, similaire au comportement de execute-assembly.

Il y a deux composants de inject-assembly :

  1. Initialiseur BOF : Un petit programme responsable de l'injection du chargeur d'assembly dans un processus distant avec les arguments passés. Il utilise BeaconInjectProcess pour effectuer l'injection, ce qui signifie que ce comportement peut être personnalisé dans un profil Malleable C2 ou avec des BOF d'injection de processus (à partir de la version 4.5).

  2. Chargeur d'assembly PIC : La majeure partie du projet. Le chargeur initialisera le runtime .NET, chargera l'assembly fourni, et exécutera l'assembly. Le chargeur créera un nouvel AppDomain dans le processus cible afin que l'assembly chargé puisse être totalement déchargé une fois l'exécution terminée.

La communication entre le processus distant et Beacon se fait via un tube nommé (named pipe). Le script Aggressor génère un nom de tube et le passe à l'initialiseur BOF.

Fonctionnalités notables

  • Patche Environment.Exit() pour empêcher le processus distant de se fermer.
  • Écrasement de l'en-tête d'assembly .NET (octets MZ, e_lfanew, en-tête DOS, Rich Text, en-tête PE).
  • Génération aléatoire de nom de tube basée sur SourcePoint.
  • Pas de blocage du Beacon, même si l'assembly est chargé dans le processus actuel.

Utilisation

Télécharger et charger le script Aggressor inject-assembly.cna dans Cobalt Strike. Vous pouvez ensuite exécuter des assemblys en utilisant la commande suivante :

root@kitploit:~
inject-assembly pid assembly [args...]

Spécifiez 0 comme PID pour exécuter dans le processus Beacon actuel.

Il est recommandé d'utiliser un autre outil, comme FindObjects-BOF, pour localiser un processus qui charge déjà le runtime .NET, mais ce n'est pas une exigence pour le fonctionnement de inject-assembly.

Avertissements

  • Ne supporte actuellement que les processus distants x64.
  • Il y a plusieurs vérifications tout au long du programme pour réduire la probabilité de planter le processus distant, mais cela pourrait encore arriver.
  • L'injection de processus par défaut de Cobalt Strike peut vous faire repérer. Envisagez un BOF d'injection personnalisé ou un crochet IAT UDRL.
  • Certains assemblys dépendent de Environment.Exit() pour terminer l'exécution. Cela empêchera la phase de nettoyage du chargeur de se produire, mais vous pouvez toujours déconnecter le tube nommé en utilisant jobkill.
  • Décommentez les lignes 3 ou 4 de scmain.c pour activer respectivement les modes erreur ou verbeux. Ils sont désactivés par défaut pour réduire la taille du shellcode.

Références

Ce projet n'aurait pas été possible sans les projets suivants :

  • Définitions et implémentation liées au CLR - https://github.com/TheWover/donut
  • Interface de tâche Beacon et structure du projet - https://github.com/SecIdiot/netntlm

D'autres fonctionnalités et inspirations ont été tirées des ressources suivantes :

  • https://github.com/med0x2e/ExecuteAssembly
  • https://github.com/anthemtotheego/InlineExecute-Assembly
  • https://www.mdsec.co.uk/2020/08/massaging-your-clr-preventing-environment-exit-in-in-process-net-assemblies
Télécharger l’outil