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
BokuLoader — Un chargeur réflectif (Reflective Loader) de Cobalt Strike, preuve de concept, qui vise à recréer, intégrer et améliorer les fonctionnalités d'évasion de Cobalt Strike ! | Kitploit
Outils/GitHubGitHub/boku7/bokuloader
Frameworks de Tests d'IntrusionFrameworks d'ExploitationShellcodeAnalyse de BinairesRed TeamingDéveloppement de Charges Utiles
GitHubboku7/bokuloader

BokuLoader

Un chargeur réflectif (Reflective Loader) de Cobalt Strike, preuve de concept, qui vise à recréer, intégrer et améliorer les fonctionnalités d'évasion de Cobalt Strike !

Voir le dépôt
1.4k275il 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

BokuLoader : Chargeur Réflexif pour Cobalt Strike

Une preuve de concept de Chargeur Réflexif Défini par l'Utilisateur (UDRL) qui vise à recréer, intégrer et améliorer les fonctionnalités d'évasion de Cobalt Strike !

Contributeurs :

ContributeurTwitterContributions notables
Bobby Cooke@0xBokuAuteur original et mainteneur du projet
Santiago Pecin@s4ntiago_pAméliorations majeures du chargeur réflexif
Chris Spehn@ConsciousHackerScripting Aggressor
Joshua Magri@passthehashbrwnAccrochage IAT
Dylan Tran@d_tranmanUsurpation de la pile d'appels réflexive
James Yeung@5cript1diotAppels système indirects

Considérations d'utilisation de l'UDRL

Le chargeur réflexif intégré de Cobalt Strike est robuste, gérant toutes les fonctionnalités d'évasion PE Malleable que Cobalt Strike a à offrir. Le principal inconvénient de l'utilisation d'un UDRL personnalisé est que les fonctionnalités d'évasion PE Malleable peuvent ou non être prises en charge directement.

L'objectif du projet public BokuLoader est d'aider les équipes rouges à créer leur propre UDRL Cobalt Strike interne. Le projet vise à prendre en charge toutes les fonctionnalités d'évasion PE Malleable de CS qui en valent la peine. Certaines fonctionnalités d'évasion tirent parti de l'intégration CS, d'autres ont été entièrement recréées, et certaines ne sont pas prises en charge.

Avant d'utiliser ce projet, sous quelque forme que ce soit, vous devez tester correctement que les fonctionnalités d'évasion fonctionnent comme prévu. Entre le code C et le script Aggressor, la compilation avec différentes versions de systèmes d'exploitation, de compilateurs et de Java peut donner des résultats différents.

Fonctionnalités d'évasion

Fonctionnalités d'évasion spécifiques à BokuLoader

  • Usurpation de la pile d'appels réflexive via des trames synthétiques.
  • Code de chargeur réflexif personnalisé en ASM/C
  • Appels système NT indirects via les techniques HellsGate et HalosGate
    • Toutes les modifications de protection mémoire pour toutes les options d'allocation sont effectuées via un appel système indirect à NtProtectVirtualMemory
  • obfuscate "true" avec implémentation de script Aggressor UDRL personnalisé.
  • NOHEADERCOPY
    • Le chargeur ne copiera pas les en-têtes de la DLL beacon brute vers la DLL beacon virtuelle. Les premiers 0x1000 octets seront des zéros.
  • XGetProcAddress pour résoudre les symboles
    • N'utilise pas Kernel32.GetProcAddress
  • xLoadLibrary pour résoudre l'adresse de base de la DLL et le chargement de la DLL
    • Pour les DLL chargées, obtient l'adresse de base de la DLL depuis TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList
    • N'utilise pas Kernel32.LoadLibraryA
  • Chiffrement César pour l'obfuscation des chaînes
  • Taille UDRL de 100k
  • Les noms de DLL importées et les chaînes de noms d'entrée d'importation sont écrasés dans la DLL beacon virtuelle.

Fonctionnalités d'évasion PE Malleable prises en charge

Test

  • (22/02/23) Les 4 méthodes d'allocateur testées avec threatexpress/malleable-c2/master/jquery-c2.4.7.profile

Origines du projet

  • Basé sur l'incroyable projet de chargeur réflexif de Stephen Fewer :
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Créé initialement en travaillant sur les vidéos de DLL réflexive de Renz0h du cours Sektor7 Malware Developer Intermediate (MDI)

Utilisation

  1. Compilez le fichier objet BokuLoader avec make
  2. Démarrez votre serveur d'équipe Cobalt Strike
  3. Dans Cobalt Strike, importez le script Aggressor BokuLoader.cna
  4. Générez le beacon x64 (Attacks -> Packages -> Windows Executable (S))
  5. Utilisez la Script Console pour vous assurer que BokuLoader a été implémenté dans la construction du beacon
  • Ne prend pas en charge l'option x86. Le binaire x86 est le fichier objet du chargeur réflexif original.
  • La génération de beacons RAW fonctionne directement. Lors de l'utilisation du kit Artifact pour le chargeur de beacon, la variable stagesize doit être plus grande que la valeur par défaut.
    • Consultez la documentation Cobalt Strike User-Defined Reflective Loader pour plus d'informations

Conseils de détection

Chaînes codées en dur

  • BokuLoader modifie certaines chaînes couramment détectées en de nouvelles valeurs codées en dur. Ces chaînes peuvent être utilisées pour signer BokuLoader :
Chaîne Cobalt Strike d'origineChaîne Cobalt Strike BokuLoader
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

Allocateurs mémoire

Écrasement de module DLL

  • Kernel32.LoadLibraryExA est appelée pour mapper la DLL depuis le disque
  • Le 3ème argument de Kernel32.LoadLibraryExA est DONT_RESOLVE_DLL_REFERENCES (0x00000001)
    • le système n'appelle pas DllMain
  • Ne résout pas les adresses dans l'entrée LDR PEB comme détaillé par MDSec ici
  • Détectable en analysant la mémoire du processus avec l'outil pe-sieve

Allocation de tas

  • Une mémoire exécutable RX ou RWX existera dans le tas si le kit sleepmask n'est pas utilisé.

Allocateur mappé

  • Kernel32.CreateFileMappingA et Kernel32.MapViewOfFile sont appelées pour allouer la mémoire pour la DLL beacon virtuelle.

Détection Sleepmask

  • Si le kit sleepmask est utilisé, il existe des méthodes de détection pour cette allocation mémoire indépendante comme détaillé par MDSec ici

Appels système indirects

  • BokuLoader appelle les appels système NT suivants pour configurer la mémoire du beacon exécutable chargé : NtAllocateVirtualMemory, NtProtectVirtualMemory
  • Ceux-ci sont appelés indirectement depuis la mémoire exécutable de BokuLoader.
  • La définition de hooks en mode utilisateur dans ntdll.dll ne détectera pas ces appels système.
  • Il peut être possible d'enregistrer des callbacks noyau en utilisant un pilote noyau pour surveiller les appels système ci-dessus et détecter leur utilisation.
  • BokuLoader lui-même contiendra les instructions assembleur mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 dans sa mémoire exécutable.

En-tête de la DLL beacon virtuelle

  • Les premiers 0x1000 octets de la DLL beacon virtuelle sont des zéros.

Code source disponible

  • Le code source de BokuLoader est fourni dans le dépôt et peut être utilisé pour créer des signatures mémoire.
  • Si vous avez des conseils de détection supplémentaires, n'hésitez pas à contribuer en soumettant une demande de tirage.

Crédits / Références

Usurpation de la pile d'appels réflexive

  • LoudSunRun : Usurpateur de trames synthétiques de pile d'appels avec appels système indirects
  • SilentMoonwalk : Implémentation d'une preuve de concept d'un usurpateur de pile d'appels entièrement dynamique
  • Vulcan Raven : Implémentation d'une preuve de concept pour usurper des piles d'appels arbitraires lors des appels système
  • CallStackMasker : Implémentation d'une preuve de concept pour masquer dynamiquement les piles d'appels avec des timers
  • ThreadStackSpoofer : Preuve de concept d'usurpation de pile de threads
  • Derrière le masque : Usurpation de piles d'appels de manière dynamique avec des timers

Chargeur réflexif

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Consultez ces vidéos si vous vous intéressez aux DLL réflexives :
    • Danser avec la table d'adresses d'importation (IAT) - Cours Sektor 7 MDI
    • Parcourir la table d'adresses d'exportation - Cours Sektor 7 MDI
    • Injection réflexive expliquée - Cours Sektor 7 MDI
    • Revue du code source de ReflectiveLoader - Cours Sektor 7 MDI
  • TitanLdr
  • AceLdr
  • KaynLdr

Appel système HalosGate

  • Reenz0h de @SEKTOR7net
    • Consultez les excellents cours et blogs de Reenz0h !
    • Meilleurs cours sur le développement de malwares que j'ai suivis.
    • Créateur de la technique halos gate. Son travail a initialement motivé ce travail.
    • Blog Sektor7 HalosGate

Appel système HellsGate

  • @smelly__vx & @am0nsec (Créateurs/éditeurs de la technique Hells Gate)
    • Je n'aurais pas pu réaliser mon implémentation de HellsGate sans eux :)
    • Excellent travail sur cette méthode, j'ai vraiment apprécié la travailler moi-même. Merci !
    • https://github.com/am0nsec/HellsGate
    • Lien vers le document Hell's Gate : https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

Scripting Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Chargeur réflexif défini par l'utilisateur Cobalt Strike

  • https://www.cobaltstrike.com/help-user-defined-reflective-loader

Excellente ressource pour apprendre l'ASM Intel

  • Pentester Academy - SLAE64

Contournement ETW et AMSI

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - pour l'idée géniale d'implémenter des contournements dans le chargeur réflexif !
  • @XPN Cacher votre .NET – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

Implémentation d'ASM en code C avec GCC

  • https://outflank.nl/blog/2020/12/26/direct-syscalls-in-beacon-object-files/
  • https://www.cs.uaf.edu/2011/fall/cs301/lecture/10_12_asm_c.html
  • http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Extended-Asm.html#Extended-Asm

Profils C2 Cobalt Strike

  • L'incroyable projet SourcePoint de Tylous
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
Télécharger l’outil
CommandeOption(s)Pris en charge
allocatorHeapAlloc, MapViewOfFile, VirtualAllocTous pris en charge via l'implémentation BokuLoader
module_x64chaîne (Nom de la DLL)Pris en charge via l'implémentation BokuLoader. Mêmes exigences d'écrasement de DLL que l'implémentation CS
obfuscatetrue/falseLes beacons HTTP/S sont pris en charge via l'implémentation BokuLoader. Les SMB/TCP ne sont actuellement pas pris en charge pour obfuscate true. Détails dans le problème. Acceptez l'aide si vous pouvez corriger :)
entry_pointRVA en nombre décimalPris en charge via l'implémentation BokuLoader
cleanuptruePris en charge via l'intégration CS
userwxtrue/falsePris en charge via l'implémentation BokuLoader
sleep_mask(true/false) ou (Sleepmask Kit+true)Pris en charge. Lors de l'utilisation de "sleepmask true" par défaut (sans kit sleepmask), définir "userwx true". Lors de l'utilisation du kit sleepmask qui prend en charge la mémoire RX beacon.text (src47/Ekko), définir "sleepmask true" && "userwx false".
magic_mz_x64chaîne de 4 caractèresPris en charge via l'intégration CS
magic_pechaîne de 2 caractèresPris en charge via l'intégration CS
transform-x64 prependchaîne hexadécimale échappéeModification du script Aggressor BokuLoader.cna
transform-x64 strrepchaîne chaîneModification du script Aggressor BokuLoader.cna
stomppetrue/falseNon pris en charge. BokuLoader ne copie pas les en-têtes de la DLL beacon. Les premiers 0x1000 octets de la DLL beacon virtuelle sont 0x00
checksumnombreExpérimental. Modification du script Aggressor BokuLoader.cna
compile_timechaîne date-heureExpérimental. Modification du script Aggressor BokuLoader.cna
image_size_x64valeur décimaleNon pris en charge
namechaîneExpérimental. Modification du script Aggressor BokuLoader.cna
rich_headerchaîne hexadécimale échappéeExpérimental. Modification du script Aggressor BokuLoader.cna
stringwchaîneNon pris en charge
stringchaîneNon pris en charge