📅 Source : Blog de Maor Sabag (maorsabag.github.io), publié le 14 mars 2026. Article de recherche offensive détaillant l’amélioration de l’agent Adaptix C2 par encapsulation dans un Reflective DLL Loader (RDLL) Crystal Palace.

🔧 Contexte technique : L’agent Adaptix par défaut est chargé en mémoire avec des permissions RWX sur toutes les sections, sans hooking IAT ni obfuscation du sommeil, ce qui le rend facilement détectable par les solutions EDR/SOC.

🏗️ Architecture mise en place :

  • Correction des permissions de sections : .text → RX, .data → RW, conformément à un PE correctement chargé
  • Hooking IAT via PICO Crystal Palace : interception de WaitForSingleObject(Ex), WaitForMultipleObjects, ConnectNamedPipe via le mécanisme addhook + __resolve_hook() basé sur hash ROR13
  • Obfuscation Ekko : chiffrement RC4 de l’image DLL en mémoire pendant les périodes d’attente, via une chaîne ROP construite avec CreateTimerQueueTimer + NtContinue

🔗 Problème résolu - PEB Walk : L’agent Adaptix résolvait WaitForSingleObject via un PEB walk (hash-based), empêchant Crystal Palace de l’intercepter. La correction consiste à forcer une référence directe (&WaitForSingleObject) pour générer une entrée IAT réelle.

⛓️ Chaîne ROP Ekko (9 étapes) :

  1. WaitForSingleObject (gate)
  2. GetThreadContext (sauvegarde contexte)
  3. SetThreadContext (spoofing de contexte)
  4. VirtualProtect → PAGE_READWRITE
  5. SystemFunction032 (chiffrement RC4)
  6. Opération d’attente originale
  7. SystemFunction032 (déchiffrement RC4)
  8. restore_section_permissions (restauration par section)
  9. SetEvent (signal de fin)

🛠️ Outils et composants : Crystal Palace (linker PIC, PICOs), MinGW cross-compilation, addhook/attach, NtContinue, RtlCaptureContext, SystemFunction032 (advapi32)

📄 Type d’article : Analyse technique offensive / recherche red team. But principal : documenter pas à pas l’intégration d’obfuscation mémoire avancée dans un agent C2 open-source pour contourner la détection EDR.

🧠 TTPs et IOCs détectés

TTP

  • T1055 — Process Injection (Defense Evasion)
  • T1620 — Reflective Code Loading (Defense Evasion)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
  • T1574.012 — Hijack Execution Flow: COR_PROFILER (Defense Evasion)
  • T1106 — Native API (Execution)
  • T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)

Malware / Outils

  • Adaptix C2 (framework)
  • Crystal Palace (loader)
  • Ekko (tool)

🔗 Source originale : https://maorsabag.github.io/posts/adaptix-stealthpalace/sleeping-beauty/