Skip to content

AMD-V (SVM/Pacifica) thin rootkit hypervisor

"Blue Pill" sınıfı thin hypervisor rootkit: AMD-V (SVM, kod adı Pacifica) kullanarak çalışan bir OS'u anında bir guest'e indirgemek; böylece rootkit OS'un altında ring -1'de çalışır ve OS habersizce execute etmeye devam eder.

Mechanism

Note

Hardware virtualization, bir hypervisor'ın bir OS'un altında, OS'un içeriden inceleyemeyeceği bir privilege level'da (sıkça ring -1 denir) çalışmasına izin verir. AMD-V VMRUN/VMSAVE/VMLOAD, VMCB ve intercept control'lerini sunar; en önemlisi, zaten çalışan bir OS'u reboot olmadan virtualize edebilir — klasik virtualize-an-already-running-OS primitive'i. Thin bir rootkit mevcut CPU state'ini bir guest VMCB'ye yakalar, minimal bir hypervisor kurar ve orijinal OS'u bir guest olarak VMRUN'lar. İzolasyon inversion'ı güvenlik noktasıdır: trust boundary ters çevrilir. Normalde hypervisor guest'leri koruyan TCB'dir; burada kötü niyetli bir hypervisor meşru bir OS'un altına enjekte edilir ve OS habersiz bir guest olur. Seçili event'leri intercept edebilir (MSR/IO/CR access'leri, VMMCALL) ve aksi halde stealth için dormant kalabilir.

"Thin" denmesinin nedeni mümkün olduğunca az intercept etmesidir — VM-exit latency'sini ve footprint'i minimize ederek detection'dan kaçınır. VT-x Blue Pill / on-the-fly injection konseptinin AMD karşılığıdır.

Walkthrough

Public reference: Joanna Rutkowska'nın orijinal "Blue Pill"i (Black Hat 2006) ve AMD64 APM Vol. 2 (SVM). Kavramsal adımlar:

  1. SVM desteğini kontrol et (CPUID Fn8000_0001 ECX SVM bit'i) ve EFER.SVME'de SVM'i etkinleştir.
  2. Bir host save area ve bir guest VMCB tahsis et; mevcut CPU/control-register state'ini guest VMCB'ye snapshot'la ki OS tam kaldığı yerden resume etsin.
  3. VMCB'de minimal intercept'leri programla (örn. VMMCALL ve rootkit'in ihtiyaç duyduğu her şey); hız ve stealth için çoğu event'i un-intercept bırak.
  4. VMRUN execute et — orijinal OS artık guest olarak çalışır; rootkit her yapılandırılmış intercept'te #VMEXIT ile kontrolü kazanır.
  5. Uninstall için state'i restore et ve SVM'i devre dışı bırak.

Beklenen gözlem: OS çalışırken SVM etkin hale gelir; bir guest VMCB OS'un kendi state'ini tanımlar; yapılandırılmış intercept'ler aksi halde normal OS işlemlerinde tetiklenir.

Warning

Thin-hypervisor rootkit'ler bir konsept ve research konusudur. Bu entry detection/defense için çerçevelenmiştir; uçtan uca bir implementasyon sunmaz.

Detection

  • Timing: VMRUN/#VMEXIT round-trip'leri intercept edilen instruction'lara ölçülebilir latency ekler; RDTSC delta ve VM-exit latency fingerprinting beklenmedik bir hypervisor'ı ortaya çıkarabilir (rootkit'in counter-detection'ı bir silahlanma yarışıdır).
  • State kontrolleri: bare metal sanılan bir sistemde EFER.SVME set; rootkit onu temizlemezse CPUID hypervisor present bit.
  • Measured/attested boot ve ring -1'i önce işgal eden meşru bir hypervisor, slot'u reddeder.

Mitigation

  • Boot'ta virtualization-based security / trusted bir hypervisor etkinleştir ki SVM slot'u zaten alınmış olsun ve OS'tan VMRUN trap'lensin ya da reddedilsin.
  • Desteklenen yerde SVM'i firmware ile kilitle; mevcut olmaması gereken bir hypervisor'ı saptamak için measured boot ve remote attestation kullan.
  • SVM'i etkinleştirmek için gereken MSR'lara ve instruction'lara erişimi kısıtla (kernel-only); on-the-fly injection için attack surface'i azalt.

References