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
TrollDump — Injecte des DLL managées x64 dans des processus GUI via SetWindowsHook, avec un exécuteur de charge utile modulaire en C# et un POC de dump LSASS pour les tests offensifs/red-team sous Windows. | Kitploit
Outils/GitHubGitHub/cybersectroll/trolldump
Escalade de PrivilègesPost-ExploitationRed TeamingDéveloppement de Charges Utiles
GitHubcybersectroll/trolldump

TrollDump

Injecte des DLL managées x64 dans des processus GUI via SetWindowsHook, avec un exécuteur de charge utile modulaire en C# et un POC de dump LSASS pour les tests offensifs/red-team sous Windows.

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

TrollDump

  • Injecte une DLL managée x64 dans un processus managé/non managé x64 (le processus doit avoir une interface graphique car nous obtenons son handle de fenêtre) via setwindowshook
  • Ici, en tant que TROLL, nous injectons dans la fenêtre masquée de taskmgr pour effectuer un dump de lsass non détecté (voir la section Cas de test ci-dessous)
  • La DLL injecteuse et la DLL injectée sont la même DLL, donc aucune DLL supplémentaire n'est requise
  • Le niveau d'intégrité du processus cible doit être identique ou inférieur à celui du processus injecteur

Crédits (amélioration/réécriture du projet)

Projet d'origine : https://github.com/enkomio/ManagedInjector

  • porté le code pour injecter dans des binaires 64 bits ---> le projet d'origine ne permet l'injection de DLL que dans des binaires 32 bits
  • supprimé la logique IPC car elle était envahissante
  • créé un code squelette pour exécuter directement votre payload dans la fonction RunOnRemoteProcess() au lieu de l'ancienne méthode alambiquée
  • le projet utilise toujours DLLExport pour faire exporter des fonctions par une DLL .NET
    • Notez que ce n'est pas une dépendance du projet mais plutôt un post-traitement. DLLExport modifiera votre DLL .NET finale pour exporter une fonction.
    • Vous pouvez faire l'exportation des fonctions manuellement si vous le souhaitez https://blog.xpnsec.com/rundll32-your-dotnet/

Compilation

  • Téléchargez le projet et compilez la solution en X64, Release
  • Aucune dépendance externe requise

Utilisation

root@kitploit:~
> Requires High Integrity depending on use case
> [System.Reflection.Assembly]::LoadFrom("C:\Users\public\TrollDump.dll")
> [TrollDump.ForFun]::Main("C:\windows\system32\taskmgr.exe")
  • Dans cette POC, nous effectuons un dump de lsass, vous pouvez exécuter toute « logique de fonction exportée par la DLL » que vous souhaitez en modifiant la fonction RunOnRemoteProcess() et en recompilant.
  • Comme mentionné précédemment, le code sert de squelette pour l'injection de DLL, ce que vous choisissez de faire ensuite peut être aisément écrit en code managé C#.

Cas de test

  • Win 2019 build 17763.737 avec les derniers correctifs Windows Defender
    • à la fois l'injection de DLL et le dump de lsass
  • Autres AV (non nommés)
    • l'injection de DLL fonctionne correctement
    • évidemment, que le dump de lsass fonctionne ou non dépend de si l'AV autorise taskmgr à dumper lsass
  • Non testé sur des EDR -> je soupçonne que l'injection de DLL devrait toujours fonctionner sur certains EDR

OPSEC

  • La DLL doit être présente sur le disque, elle doit donc être obscurcie
  • La DLL ne doit être utilisée que pour faire l'injection, le payload réel ne doit jamais être intégré dans la DLL et doit être chargé de manière réflective
  • Évidemment, injecter le CLR dans un processus non managé est suspect, mais bon !
  • setwindowshook, bien qu'étant une technique classique, est le plus souvent associé au keylogging, pas à notre cas d'utilisation
  • On peut être très créatif avec le processus GUI dans lequel on souhaite injecter (si lancé en tant que système, on peut aussi injecter dans dwm.exe)

Liste de souhaits - Le projet a été réalisé pendant le week-end et je n'ai ni le temps ni l'intention de poursuivre ce qui suit :

  • Injecter dans un processus sans interface graphique (gui-less)
    • actuellement pour setwindowshook, cela utilise WH_CALLWNDPROC, vous pouvez le modifier pour utiliser WH_GETMESSAGE mais le processus cible doit exécuter une boucle de messages (GetMessage())
    • si vous pouvez trouver un binaire non GUI qui implémente une boucle de messages (je soupçonne que c'est peu probable), vous pouvez alors aussi injecter dans des binaires sans GUI
    • il est courant que les processus GUI exécutent GetMessage()
  • Entièrement réflectif et sans nécessité de le déposer sur le disque
    • Sur la base de setwindowshook, il semble que la DLL doive être sur le disque ?
    • j'ai essayé d'utiliser des délégués C# pour passer un pointeur de fonction à exécuter à la place de la fonction exportée de la DLL et cela n'a pas fonctionné (c'est la technique classique de keylogger en C# pour un processus local, mais nous faisons un processus distant)
    • vous pouvez essayer en intégrant d'autres techniques, je pense que c'est faisable
  • Taskmgr se lancera automatiquement en High Integrity même si notre processus actuel est Medium (donc techniquement, si nous injectons une DLL dedans, c'est un contournement de l'UAC)
    • L'injection semble bien fonctionner selon les résultats de retour de l'API WIN
      • bien que sendMessage() réussisse, le message est silencieusement abandonné. Explication ici https://stackoverflow.com/questions/40122964/cross-process-postmessage-uipi-restrictions-and-uiaccess-true
    • Cependant, taskmgr ne parvient pas à appeler la fonction exportée

Avertissement

Ne doit être utilisé qu'à des fins éducatives !

Télécharger l’outil