Selon une publication technique signée par Pierre Le Bourhis (Sekoia.io), cette recherche détaille le fonctionnement d’OysterLoader (a.k.a. Broomstick/CleanUp), un loader C++ multi‑étapes distribué via faux sites d’installateurs MSI signés, utilisé dans des campagnes menant au ransomware Rhysida et à la diffusion de l’infostealer Vidar.
— Aperçu et chaîne d’infection (4 étapes)
Stage 1 – Packer/Obfuscator (TextShell) : API hammering massif (appels GDI/DLL sans but), résolution dynamique d’API par hachage custom, anti‑debug basique (IsDebuggerPresent → boucle infinie), allocation RWX et copie « mélangée » du stage suivant. Structure interne « core » embarquant données compressées, API résolues et config. Stage 2 – Shellcode : décompression LZMA custom (en‑tête et bitstream non standards), fixups de relocalisation (patch E8/E9), résolution d’imports via LoadLibraryA/GetProcAddress, changement des protections mémoire puis saut vers le payload reconstruit. Stage 3 – Downloader : vérifications d’environnement (compte les processus et quitte si < 60 ; fonction de test langue russe non appelée ; mesures de timing), premier contact C2 via HTTPS avec enregistrement (/reg) et déguisement réseau (entêtes x-amz-cf-id, Content-Encoding, UA « WordPressAgent » puis « FingerPrint »). Récupération du stage suivant via stéganographie dans une icône retournée par /login, décryptée en RC4 avec une clé hardcodée ; dépôt d’une DLL dans %APPDATA% et persistance par tâche planifiée (rundll32 DllRegisterServer, toutes les 13 min). Stage 4 – Core (COPYING3.dll) : réemploi de l’obfuscation (shellcode + LZMA custom), C2 HTTP clair (port 80) avec fallback sur 3 IPs, beacons et schéma JSON encodé par Base64 non standard avec décalage aléatoire (Mersenne Twister) et alphabet custom. Évolution récente vers /api/v2/ avec init/facade et rotation d’alphabet fournie par le C2 (champ tk) ; empreinte enrichie (t11/t12 : liste des processus et PIDs). — Déguisement, évasion et communication C2
...