🔍 Contexte
Publié le 2 juillet 2023 sur le blog personnel de memn0ps (mis à jour en 2025), cet article présente RedLotus, un bootkit UEFI Windows expérimental écrit en Rust, développé à des fins de recherche et d’éducation en sécurité offensive.
🛠️ Description technique
RedLotus (codename) est implémenté comme un UEFI_RUNTIME_DRIVER (redlotus.efi) qui s’exécute avant ntoskrnl.exe. Il contourne le Driver Signature Enforcement (DSE) via un hook de pointeur .data, et installe un mapper de drivers en mode noyau (redlotus.sys) contrôlé depuis l’espace utilisateur via un client Rust (client.exe).
⚙️ Flux d’exécution (13 étapes)
- Chargement de
redlotus.efidepuis un shell UEFI (USB FAT32) - Hook de
ImgArchStartBootApplicationdansbootmgfw.efi - Hook de
OslFwpKernelSetupPhase1etBlImgAllocateImageBufferdanswinload.efi - Mapping manuel du driver noyau
redlotus.sys - Copie des headers PE, sections, relocations, résolution des imports depuis
ntoskrnl.exe - Hook du
DriverEntrydedisk.syspour rediriger versredlotus.sys - Restauration des octets originaux de
OslFwpKernelSetupPhase1 - Transfert de contrôle vers
ntoskrnl.exeviaOslArchTransferToKernel - Exécution de
redlotus.sysvia le hookDriverEntry - Restauration des octets volés de
disk.sys - Hook
.data ptrsurxKdEnumerateDebuggingDevicesdansntoskrnl.exe→HalDispatchHook - Communication user-mode → kernel via
NtConvertBetweenAuxiliaryCounterAndPerformanceCounteravec magic value0xdeadbeef - Second-stage manual mapping d’un driver non signé supplémentaire
🎯 Techniques clés
- Hook de pointeur
.datapour la communication user-mode/kernel - Trampoline hooks 64-bit sur des fonctions de boot Windows
- Manual mapping de drivers non signés sans patcher le kernel
- Pattern scanning pour localiser les fonctions cibles (indépendant des offsets hardcodés)
- Inspiré de BlackLotus (CVE-2022-21894), ESPecter, umap, Bootlicker
🖥️ Compatibilité
- Windows 10 Home 10.0.19045 (Build 19045)
- Windows 11 Home 10.0.22621 (Build 22621)
- Nécessite Secure Boot désactivé (ou BYOVB)
📄 Nature de l’article
Il s’agit d’une publication de recherche technique à visée éducative, documentant l’implémentation complète d’un bootkit UEFI en Rust. Le projet est explicitement présenté comme un PoC sans mécanisme de furtivité ni persistance.
🧠 TTPs et IOCs détectés
TTP
- T1542.003 — Pre-OS Boot: Bootkit (Defense Evasion)
- T1014 — Rootkit (Defense Evasion)
- T1055 — Process Injection (Defense Evasion)
- T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
- T1106 — Native API (Execution)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1547.001 — Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder (Persistence)
IOC
- CVEs :
CVE-2022-21894— NVD · CIRCL - Fichiers :
redlotus.efi - Fichiers :
redlotus.sys - Fichiers :
client.exe - Fichiers :
bootmgfw.efi - Fichiers :
winload.efi - Fichiers :
disk.sys - Fichiers :
testing123.sys - Fichiers :
bootx64.efi
Malware / Outils
- RedLotus (other)
- BlackLotus (other)
- ESPecter (other)
- umap (tool)
- Bootlicker (other)
- EfiGuard (tool)
🟡 Indice de vérification factuelle : 50/100 (moyenne)
- ⬜ memn0ps.github.io — source non référencée (0pts)
- ✅ 23617 chars — texte complet (fulltext extrait) (15pts)
- ✅ 9 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)
- ⬜ 0/1 CVE(s) confirmée(s) (0pts)
🔗 Source originale : https://memn0ps.github.io/rusty-windows-uefi-bootkit/