• Transient Attacks. The RKRD architecture
prevents transient attacks through the use of a
hypervisor which monitors events that may alter
previously measured code or structures. The
monitoring can intercept a modification at the
moment it occurs. On interception, control is
transferred to the higher privilege of the
hypervisor and returns to the guest OS if and
only if the modification is found to be valid.
8 RELATED WORK
Copilot (Petroni et al., 2004) is a kernel integrity
monitor that runs on a coprocessor system attached
to the PCI bus of the host being monitored. This
removes the dependence on the host kernel and can
thus independently monitor the kernel. Copilot
accesses the contents of the host’s main memory
over the PCI bus. However it has been shown that
memory access over the PCI bus can be spoofed to
limit or even alter the contents of the memory being
examined (Rutkowska, 2007). Such an attempt
thwarts the independent monitor. Our technology
does not rely on the PCI bus. Instead we utilize
hardware virtualization to run our monitor and
manager from the highest privilege of a hypervisor.
This provides us with direct access to the system
memory. Furthermore, Copilot cannot detect
transient attacks, those that change the kernel state
and then change it back before Copilot rescans the
system. In our design, the hypervisor can initiate a
system scan the moment measured code or data
structure changes from its last measured state.
PatchGuard (Microsoft Corporation, 2007) is a
Microsoft technology that monitors and measures
essential system data structures and modules in order
to detect tampering. The measuring is done by
performing a checksum. It is however still
dependent on the OS. A kernel rootkit can exploit
that dependency to its own advantage. Our
technology provides protection to the system data
structures and modules by measuring them using a
cryptographic hash from a higher privilege entity,
i.e. the hypervisor using hardware virtualization.
This also enables us to similarly measure any OS
without modifying its source code.
SecVisor (Seshadri et al., 2007) is a hypervisor
that is designed to ensure code integrity for
commodity kernels. It attempts to ensure that code
executing at the kernel privilege level has been
approved by the user. However, it makes no attempt
to ensure that code executing at the kernel privilege
does not tamper with system modules or structure. It
is well understood that such a scenario is possible
using standard driver loading procedures or
exploiting bugs in the kernel. With our approach we
can protect the trusted areas of the kernel from other
areas to detect such attacks. Also, unlike SecVisor,
our approach does not need any modification to the
OS kernel source.
System Virginity Verifier 2.3 (Rutkowska, 2005)
makes sure that a user program or any kernel module
does not modify the code sections in the kernel code.
It is done by verifying if the code sections of
important system DLLs and system drivers (kernel
modules) are the same in memory and in the
corresponding PE file on disk. Our technology is
capable of checking all system drivers loaded, not
just the important kernel modules as in SVV. SVV
uses a software based approach to compare the code
section in the memory and the PE file, unlike our
approach which is based on hardware virtualization.
9 CONCLUDING REMARKS
We presented a runtime rootkit detection system that
uses hardware virtualization technology to measure
and monitor the integrity of a kernel. It ensures
system integrity against an adversary with complete
access to the kernel. We believe that our work has
some importance because it addresses a number of
limitations of the state-of-the-art, as discussed in the
related work section. Our approach is independent of
the OS and does not require any modification to the
measured kernel or system modules. We have
demonstrated the feasibility of our approach via a
prototype implementation that has minimum impact
on the performance on the system.
There are several classes of attacks that RKRD
does not address. RKRD does not address
buffer/integer overflow/underflow attacks. RKRD
also does not address attacks resulting from
conversions to/from canonical formats, input
verification errors and string formatting. In addition
it does not defend against race conditions used for
privilege escalation and DMA device-based attacks.
Another issue not addressed is the management of
signed manifest keys and in the threat model, the
attacks against manifests. In future work, we
propose to enhance the threat model to include some
of these attacks as well as more sophisticated
malware. We would also like to address the main
source of performance impact i.e. the copying of
memory pages from the guest OS to the IMM VM.
AN EVENT-DRIVEN, INCLUSIONARY AND SECURE APPROACH TO KERNEL INTEGRITY
419