Skip to content

UEFI firmware implant in SPI flash (MoonBounce / LoJax)

Boot chain'i hook'lamak ve OS seviyesinde malware inject etmek için bir DXE firmware bileşenini değiştiren, işletim sisteminin altında persist eden SPI-flash-resident UEFI implant'ları.

Mechanism

Note

SPI flash, platformun UEFI/BIOS firmware'ini tutar. Oraya yazılan bir implant her boot'ta, OS'tan önce çalışır ve OS reinstall'ını hatta sabit disk değişimini atlatır — herhangi bir firmware rootkit ile aynı persistence özelliği, ama burada kötü amaçlı byte'lar doğrudan anakartın SPI flash chip'inde yaşar.

İki kamuya açık, in-the-wild aile bu sınıfı örnekler:

  • MoonBounce (Kaspersky) yeni bir driver eklemek yerine mevcut bir firmware bileşenini, CORE_DXE'yi (DXE Foundation), değiştirir — bu da onu daha gizli ve enumeration ile fark edilmesi daha zor kılar. Boot flow'unun bileşene eklenmiş attacker shellcode'una saptırılması için çekirdek EFI Boot Services'i hook'lar.
  • LoJax (ESET) — in-the-wild raporlanan ilk UEFI rootkit, Sednit/APT28'e atfedilmiş — bunun yerine vulnerable bir signed driver'ı istismar ederek OS'tan SPI flash'a yazar; tek işi başlangıçta Windows partition'ına userland malware drop etmek olan kötü amaçlı bir DXE modülü ekler.

Kırılan ortak invariant: firmware, kendisinden sonra yüklenen her şey tarafından değişmez ve trusted varsayılır. İmplant ister bir DXE bileşenini değiştirerek (MoonBounce) ister vulnerable bir driver üzerinden reflash ile (LoJax) gelsin, bir kez resident olduğunda root of trust'ın içinde oturur ve OS'u her boot'ta yeniden enfekte eder.

Walkthrough

Yüksek seviyeli, kamuya açık Kaspersky (MoonBounce) ve ESET (LoJax) writeup'larından — yalnızca kavramsal.

MoonBounce — bir DXE bileşenini yerinde değiştir
  1. Attacker-controlled shellcode, SPI flash'taki CORE_DXE bileşenine eklenir.
  2. İmplant, boot flow'unu shellcode'a saptırmak için EFI Boot Services fonksiyonlarını — Kaspersky AllocatePool, CreateEventEx ve ExitBootServices'i adlandırır — hook'lar.
  3. Boot sırasında Windows loader'a ek hook'lar yerleştirilir; kötü amaçlı bir kernel driver kernel belleğine inject edilir.
  4. Kernel driver, son payload'u getirmek için C2'ye beacon atan svchost.exe üzerinden user-mode malware'i deploy eder. Kaspersky kampanyayı orta-yüksek güvenle APT41'e atfeder (ScrambleCross/StealthVector tooling ile örtüşme).
LoJax — vulnerable bir driver üzerinden OS'tan SPI reflash et
  1. Bir toolset low-level platform bilgisi toplar, sonra mevcut SPI flash içeriğini dump eder (firmware backup).
  2. Bir patching utility, image'a kötü amaçlı bir DXE modülü ekler; protection'lar disabled olduğunda ya doğrudan yazar ya da daha eski platformlarda bilinen bir chipset write-protection zayıflığını istismar eder.
  3. Bunların hepsi, firmware region'larına ulaşmak için kullanılan RWEverything'in signed kernel driver'ı RwDrv.sys üzerinden yapılır.
  4. Boot'ta, hileli DXE modülü userland agent'ını Windows partition'ına drop eder ve başlangıçta çalışmasını sağlar. ESET LoJax'ı Sednit/APT28'e atfeder.

Detection

  • SPI-flash dump ve karşılaştırma. SPI flash image'ını edin (out-of-band ya da vendor tooling ile) ve DXE bileşenlerini known-good bir baseline'a karşı diff'le — MoonBounce için eklenmiş kodlu değiştirilmiş bir CORE_DXE; LoJax için beklenmedik fazladan bir DXE driver.
  • Boot-services hook kontrolleri. AllocatePool/CreateEventEx/ExitBootServices üzerindeki hook'ları ya da boot-time control-flow saptırmalarını inceleyen firmware scanner'ları.
  • Vulnerable-driver telemetry'si. Bir production host'ta RwDrv.sys / RWEverything'in (ya da diğer firmware-access driver'larının) yüklenmesi son derece şüphelidir; buna alert ver (bkz. vulnerable-signed-firmware-access-drivers).
  • Host artifact'ları. Temiz bir reinstall'dan sonra yeniden ortaya çıkan, svchost.exe/Windows partition'ından spawn edilen kernel driver injection'ı ve user-mode payload'lar firmware seviyesinde persistence'a işaret eder.

Mitigation

  • SPI write protection / BIOS region kilitleri. Doğru yapılandırılmış flash write protection, LoJax tarzı OS-to-firmware reflash path'ini bloklar (bkz. spi-flash-bios-write-protection-misconfig).
  • Intel Boot Guard / verified boot. Desteklenen platformlarda hardware-rooted firmware verification, yetkisiz firmware'in çalışmasını engeller — ESET özellikle Boot Guard'ı ilgili bir savunma olarak gösterir; bkz. intel-boot-guard-bypass-key-leak.
  • Vulnerable driver'ları blokla. Bilinen RwDrv.sys gibi firmware-access driver'larını reddetmek için Microsoft'un vulnerable-driver blocklist'i / WDAC'ı kullan.
  • Firmware güncellemeleri ve remediation. Firmware'i güncel tut; doğrulanmış enfeksiyonda, temiz bir image ile reflash etmek ya da anakartı değiştirmek gerekebilir, çünkü OS reinstall remediate etmez.

References