🔍 Contexte

Publié le 15 septembre 2026 par Mr.Z sur le blog de recherche 0xsp, cet article présente une technique offensive originale exploitant WerEnc.dll (Windows Error Reporting Dump Encoding Library), une DLL signée Microsoft présente sur tous les systèmes Windows 10 1607+ et Windows 11.

🧩 Technique principale : BYOK (Bring Your Own Key)

WerEnc.dll exporte deux fonctions : EncryptDumpFile (ordinal 1) et EncryptDumpStream (ordinal 2), qui appliquent un chiffrement AES-256 avec une clé de session wrappée via RSA-4096 vers une clé publique Microsoft embarquée dans la DLL.

La technique BYOK consiste à :

  1. Scanner l’image mappée en mémoire pour localiser le blob de clé publique RSA (magic RSA1 / 0x31415352) à RVA 0x5610
  2. Utiliser VirtualProtect pour rendre la section .rdata accessible en écriture
  3. Remplacer les 539 octets du blob Microsoft par un blob de clé publique contrôlée par l’attaquant via memcpy
  4. Appeler ensuite EncryptDumpFile ou EncryptDumpStream : la clé de session est alors wrappée vers la clé de l’attaquant

📦 Format du conteneur chiffré

Le conteneur produit suit une structure documentée :

  • Header 64 octets (constantes de format, version, offsets, tailles)
  • Blob RSA public (539 octets, post-BYOK)
  • Clé de session AES-256 wrappée RSA (512 octets)
  • IV wrappé RSA (512 octets)
  • Ciphertext AES-256-CBC

🪝 Hooks IAT CNG

Pour analyser le pipeline interne, les chercheurs ont patché la IAT (Import Address Table) de WerEnc.dll pour intercepter les appels CNG : BCryptGenRandom, BCryptSetProperty, BCryptImportKeyPair, BCryptEncrypt. Le pipeline complet a été reconstitué.

🛠️ Proof of Concept publié

Un PoC fonctionnel (werenc_byok.exe) est publié sur GitHub avec les modes suivants :

  • Déchiffrement de payload pré-chiffré (conteneur .byok.enc)
  • Chiffrement en mémoire d’un payload brut via WerEnc.dll puis déchiffrement/exécution
  • Mode beacon : récupération des clés BYOK depuis un serveur C2 (werenc_keyserver.py) via HTTP, patch unique de WerEnc.dll, puis boucle sleep/chiffrement/déchiffrement avec deux threads

⚠️ Intérêt offensif

Cette technique permet d’obtenir du chiffrement AES-256 + RSA-4096 via des appels CNG légitimes, produisant des artefacts indiscernables de dumps WER légitimes. Aucune règle de détection publiée ne couvre le chargement de cette DLL, contrairement à advapi32!SystemFunction033 (RC4) massivement détecté par les EDR.

📌 Type d’article

Publication de recherche offensive à visée technique, destinée aux red teamers et développeurs de malwares, avec PoC public et documentation complète du format de conteneur.

🧠 TTPs et IOCs détectés

TTP

  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1027.002 — Obfuscated Files or Information: Software Packing (Defense Evasion)
  • T1574.002 — Hijack Execution Flow: DLL Side-Loading (Defense Evasion)
  • T1218 — System Binary Proxy Execution (Defense Evasion)
  • T1055 — Process Injection (Defense Evasion)
  • T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)

IOC

  • Fichiers : WerEnc.dll
  • Fichiers : WerFaultSecure.exe
  • Fichiers : werenc_byok.exe
  • Fichiers : werenc_keyserver.py
  • Fichiers : werenc_probe.c

⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 20 septembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.

Malware / Outils

  • werenc_byok (tool)
  • werenc_keyserver.py (tool)

🟡 Indice de vérification factuelle : 50/100 (moyenne)

  • ⬜ 0xsp.com — source non référencée (0pts)
  • ✅ 13465 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 5 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ pas d’IOC vérifié (0pts)
  • ✅ 7 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://0xsp.com/research/turning-werenc-dll-lolbin-into-an-attacker-controlled-encryption-primitive-byok/