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
frostbyte — Combine l'injection AppDomain Manager avec l'incorporation de shellcode dans des binaires signés pour contourner la détection EDR/AV des payloads red team. | Kitploit
Outils/GitHubGitHub/pwn1sher/frostbyte
ShellcodeGénération de Shellcode
GitHubpwn1sher/frostbyte

frostbyte

Combine l'injection AppDomain Manager avec l'incorporation de shellcode dans des binaires signés pour contourner la détection EDR/AV des payloads red team.

Voir le dépôt
383466il 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

FrostByte

Prologue :

Ces derniers jours, j'ai expérimenté la technique d'injection via le gestionnaire AppDomain et j'ai obtenu un certain succès lors de mes précédentes missions Red Team contre certains EDR. Bien que cette méthode soit très efficace pour un vecteur d'accès initial, j'ai voulu publier une POC qui aidera à dissimuler votre shellcode ailleurs. Finis les fichiers DLL contenant du shellcode intégré !

Le problème !

Bien qu'il s'agisse d'une excellente technique lorsqu'elle est utilisée indépendamment, lorsqu'elle est couplée à une technique de livraison comme l'envoi d'un C# ClickOnce dans un fichier ISO/ZIP/VHD/VHDX, le vrai problème est que, 1 fois sur 10, la DLL pour le domaine d'application était détectée par les heuristiques IA/ML de l'AV/EDR. Cela est dû au fait que le fichier DLL doit être déposé sur le disque avant d'initialiser le domaine d'application. En ignorant les chargements de DLL distants pour l'instant (chemins UNC dans .config), la DLL du domaine d'application contiendrait le shellcode, et j'ai fortement ressenti que c'était la raison d'une probable détection statique, car le reste du code (les appels WINAPI) peut être résolu dynamiquement et assez bien obfusqué.

Je voulais améliorer cette technique en minimisant ce que la DLL contiendrait initialement. J'ai commencé par déposer un shellcode chiffré dans un fichier séparé sur le disque avec la DLL d'injection, mais je suis tombé sur cet article étonnant de Checkpoint intitulé « Campagne de Zloader » (https://research.checkpoint.com/2022/can-you-trust-a-files-digital-signature-new-zloader-campaign-exploits-microsofts-signature-verification-putting-users-at-risk/)

Version TLDR : Nous pouvons intégrer des données arbitraires dans certains champs du PE sans compromettre la signature du fichier. Ainsi, nos données seront intégrées et l'exécutable restera signé numériquement.

Plus d'informations à ce sujet - https://www.blackhat.com/docs/us-16/materials/us-16-Nipravsky-Certificate-Bypass-Hiding-And-Executing-Malware-From-A-Digitally-Signed-Executable-wp.pdf

L'idée est donc d'intégrer un stub de shellcode chiffré dans un exécutable signé connu et de parvenir à le garder signé, comme le faisait le malware Zloader. Ainsi, la DLL du gestionnaire AppDomain ne contiendra plus le shellcode en elle-même, mais aura seulement la logique pour extraire le shellcode du binaire PE qui le charge, le déchiffrer et l'exécuter dans un thread séparé. Cette approche pourrait réduire le taux de détection statique de la DLL, tandis que votre shellcode est bien caché dans un binaire signé.

J'ai essayé d'y parvenir en modifiant manuellement des échantillons de ZLoader obtenus sur VirusTotal, mais j'ai ensuite découvert un projet qui avait déjà implémenté toutes ces techniques assez bien - Sigflip. Dans cette POC, j'ai utilisé le code du chargeur de Sigflip pour construire la DLL de l'AppDomain et l'injecteur SigFlip pour intégrer le shellcode chiffré dans notre exécutable C#.

Avantages :

Les gros blobs de shellcode, comme le shellcode Stageless de Cobalt Strike, ne résideront plus sur une DLL non signée sur le disque, quelles que soient les techniques d'obfuscation/encodage utilisées. La DLL est plus propre, plus petite et plus furtive avec un minimum de code, réduisant ainsi les chances de détection.

Fonctionnement

Diagram

Étapes pour construire un exécutable signé contenant du shellcode

  • Choisissez n'importe quel binaire C# signé x64 de votre choix, un binaire dans lequel vous souhaitez que le beacon de Cobalt Strike réside et s'exécute : Par exemple : CasPol.exe, etc.
  • Générez votre shellcode Stageless de Cobalt Strike - x64-stageless.bin
  • Placez les deux dans un dossier où SigFlip est également présent et exécutez la commande ci-dessous :
    SigFlip.exe -i "Z:\ZLoader\CasPol.exe" "Z:\ZLoader\x64-stageless.bin" "Z:\ZLoader\update.exe" "S3cretK3y"
  • Grâce à SigFlip, vous avez maintenant un binaire (signé Windows ?) nommé update.exe qui sera un PE signé numériquement avec un shellcode chiffré intégré.

Étapes pour construire la DLL du chargeur AppDomain

  • Prenez le code modèle C# depuis ici
  • Remplacez votre clé secrète de chiffrement par celle que vous avez choisie lors de l'exécution de SigFlip à la ligne 163 (vous devrez peut-être ajuster quelques octets pour confirmer que votre shellcode CS est correctement déchiffré)
  • Remplacez par le chemin du binaire à la ligne 146
  • Modifiez les chemins des fichiers de log dans les lignes 158,165
  • Compilez le code en DLL en utilisant la commande suivante - csc /target:library /out:test.dll test.cs
  • Placez la DLL compilée et le fichier update.exe.config dans le même dossier que votre exécutable signé avec shellcode.
  • Exécutez update.exe.

Conclusion :

Cette POC n'est qu'une idée que j'avais en tête pour combiner deux techniques d'évasion de défense totalement différentes afin d'aider moi et d'autres Red Teamers à construire de meilleurs payloads d'exécution initiale pour leurs opérations. Ce projet utilise l'injection via le gestionnaire AppDomain comme exemple, mais cette idée est également applicable à d'autres techniques d'injection comme le DLL SideLoading, le DLL Hijacking, etc.

Crédits :

Tous les crédits reviennent à med0x2e, cette POC est construite sur la base de son projet SigFlip

Références :

  • https://research.checkpoint.com/2022/can-you-trust-a-files-digital-signature-new-zloader-campaign-exploits-microsofts-signature-verification-putting-users-at-risk/
  • https://www.blackhat.com/docs/us-16/materials/us-16-Nipravsky-Certificate-Bypass-Hiding-And-Executing-Malware-From-A-Digitally-Signed-Executable-wp.pdf
  • https://pentestlaboratories.com/2020/05/26/appdomainmanager-injection-and-detection/
  • https://github.com/med0x2e/SigFlip
Télécharger l’outil