
Chargeur réfléchi défini par l'utilisateur basé sur Rust pour les charges utiles de Cobalt Strike. Évite les pages mémoire RWX pour la sécurité OPSEC. Inclut un outil d'extraction pour l'extraction de section de chargeur.

Un chargeur réflexif défini par l'utilisateur pour Cobalt Strike, écrit entièrement en Rust. Je voulais juste voir à quel point il serait difficile de le construire. Il s'avère que ce n'est pas si difficile. Je pourrais ajouter une fonctionnalité d'obfuscation de sommeil à un moment donné. Pour l'instant, ce n'est qu'un chargeur basique sans fonctionnalités spéciales. La seule fonctionnalité de "sécurité opsec" est qu'il n'utilise pas de pages RWX à aucun moment.
Téléchargez la version et chargez le fichier .cna.
Vous pouvez le compiler vous-même. Assurez-vous d'utiliser la chaîne d'outils MSVC et le profil de release. Vous pouvez utiliser l'extractor inclus pour extraire la section .text du chargeur. Par exemple :
cd extractor
cargo run --release -- ../target/release/crabloader.exe ../bin/crabloader.bin
J'ai utilisé ce profil pour les tests : https://github.com/BC-SECURITY/Malleable-C2-Profiles/blob/master/APT/apt1_virtuallythere.profile
Il ne contient pas de paramètres pour modifier les indicateurs mémoire, seulement des trucs réseau. Donc je suppose que tous les paramètres par défaut fonctionnent. Si vous modifiez l'en-tête MZ avec magic_mz_x64, le chargeur ne fonctionnera pas car il recherche cet en-tête.