0wning Vista from the boot
The VBootkit authors speak out
How was vbootkit developed?
Nitin & Vipin: Last year during pentesting a client, we needed something that could load our code in kernel, without touching hard-disk.
This started bootkit development. We developed a bootkit for the complete family of Windows NT (including 2000 /XP/ 2003 except Windows NT itself). Then Vista RC1 arrived, since it contained a brand new OS loading mechanism (the boot process is completely different from previous versions), we started analyzing Vista. The process included studying Vista's MBR, NT Boot sector, Boot manager (Bootmgr.exe), Windows Loader (Winload.exe) and Vista's Kernel (NTOSKRNL.EXE). Several kernel-land shell codes were developed to be used as a payload in different scenarios.
Why haven't you released the source code yet?
Nitin & Vipin: We don't want someone to misuse it.We want to show that an attack vector like vbootkit can be used to circumvent whole kernel protections.
Do you need any particular hardware feature?
Nitin & Vipin: No, it doesn't need any particular hardware or cpu capable of virtualization.
What does it patch exactly?
Nitin & Vipin: Mainly we patch the windows boot manager, the windows loader, and the vista kernel.
In the reboot persistent version of vbootkit we also patch MBR. It patches few security checks such as PE security patch, digital signature patch and other patches to maintain control of the boot process. If we miss any patch system won't boot at all.
Please tell us more about the code you had to modify, the shellcodes you developed, and the code that runs when the system is loaded.
Nitin & Vipin: The code modifications are done for the security checks. For example, the PE checksum, since we modify files in memory, they should pass through checks, so, we calculate the new checksum and put it in place.
We have to modify the Vista kernel to keep ourselves in control. The modification lets us stay in spare parts of the kernel, and then we dispatch our payload, which is a shellcode which keeps on escalating commands to System privileges. We also have other kernel land shellcodes such as registry modifications to start the telnet server.
The POC video shows a privilege escalation shellcode. It is just another thread which finds cmd's, escalates them and then sleeps for another 30 secs, so that no noticeable performance loss occurs. The shellcode has negligible affect on system performance.
How much does Vbootkit affect the performance of the system?
Nitin & Vipin: vbootkit has a very little affect on the performance (less than .01%). This is because it doesn't execute at all times, it works, sleeps, awakes, completes work, sleeps and so on (by the way, sleeping doesn't take much CPU cycles).
In the proof of concept videos, Vista is running in vmware on our 4 years old Pentium-IV 2.00Ghz, 512 Ram, 40 Gb hard-disk, Geforce2 MX 400 graphics card. That is why it seems slow :)
Are you taking advantage of a bug in Vista to launch your attack?
Nitin & Vipin: We can't say that we exploited a bug in Vista's kernel (at least related to this scenario). We just created a tunnel to Vista's kernel which doesn't have any protection barriers. Therefore restores full control of the machine to the user.
Could you use vbootkit to bypass Vista's product activation?
Nitin & Vipin: Yes, It can be programmed to bypass Vista's product activation.
Have you had any contact with Microsoft about this?
Nitin & Vipin: We don't have any official contact. But we have discussed this with several Microsoft guys.
What is your suggestion to fight bootkits?
Nitin & Vipin: Software only protections are not enough to protect from bootkits. The only protection available is from hardware (Trusted Platform Module).
Microsoft can just raise the barrier for bootkits by changing algorithms, but there can be no real protection from bootkits using only software methods. Use Secure Boot (TPM).
Would you like to add something?
Nitin & Vipin: The beauty of VBootkit lies in the fact that it isn't about someone else controlling your machine. It's about you controlling your own machine, so you can run software of your choosing. Vbootkit gives control back to the user.
This article originally appeared in Security Focus.
Copyright © 2007, SecurityFocus
Federico Biancuzzi is freelancer. In addition to SecurityFocus he also writes for ONLamp, LinuxDevCenter, and NewsForge.