VMM Based Rootkit Detection on Android

Download Report

Transcript VMM Based Rootkit Detection on Android

Midterm Meeting
Pete Bohman, Adam Kunk, Erik Shaw (ONL)
Outline
 The problem and why it is important
 Our solution and why it is better
 Proof of concept
 LKM syscall table hook
 Preliminary Design
 Defensive syscall integrity LKM
 Android VMM
 Preliminary Results
The Problem
 Detecting rootkits on Android smart phones
 This is important because:
 Smart phone use is tremendously growing (especially
Android, it just took 1st place)
 Phones are starting to be used like mini computers
 Phones carry lots of sensitive data (more than a
computer at times)


GPS location, contacts, text messages, call data,
People make purchases on their phones (billing info)
The Problem (cont.)
 Rootkits are a major problem on any traditional
monolithic operating system on our desktop
computers
 Android OS is modeled after the Linux kernel
 This means that many of the attack methods (LKM
rootkits) that are targeted for the Linux OS may be
applicable to Android
 Currently, power consumption is a major factor in the
prevention methods
Our Solution
 Two part solution:
 VMM layer to live below the guest Android OS



Layer below approach to ensure integrity of the LKM that lives
alongside the kernel
This is necessary in the event that another LKM attempts to
hook into our LKM
Minimal execution in the VMM to preserve power
 LKM that monitors the integrity of the syscall table and
corresponding functions

Would be executed at regular intervals
Proof of concept
 Demonstrating that the
syscall table can be
hooked
 This is how a rootkit can
try to hide from the
operating system
 (NOTE: We need to add
a design picture of the
syscall hooking LKM)
Preliminary Design (cont.)
 Android VMM lives a
layer below the guest
operating system, the
Android kernel
 Android VMM will check
integrity of the LKM that
monitors the syscall
table and pointed to
functions
 (picture will go here of
our VMM design)
Preliminary Design (cont.)
 Modifying the boot
order is not enough
 We must also modify the
QEMU emulator to trap
to our VMM
 This allows our VMM to
get execution after
booting the Android
guest OS
 (picture will go here of
our VMM interaction
with qemu, how we trap
into our VMM)
Preliminary Design (cont.)
 (Picture will go here of
our design for our LKM
that checks integrity of
syscall table and the
functions contained
within)
 LKM checks integrity of
syscall table and
functions pointed to
 This is checked
periodically
 Root of trust is placed
within the VMM
 The VMM checks
integrity of this LKM
from a layer below
Preliminary Results (boot time)
 Boot times of normal Android (zImage) image versus the
VMM (zVmm) image were measured.
 The results to the right demonstrate the average of three
boots for each image.
 The Linux ‘time’ utility was used to obtain the ‘real’, ‘user’,
and ‘sys’ running times of each boot.
 The ‘boot time’ was measured as the time from booting the
image in the Android emulator to the time it took for the
emulator to boot up and unlock the initial screen.
Preliminary Results (boot time)
Android Boot Times of Images
90
80
70
Time (s)
60
50
40
30
20
10
0
zImage
real
70.263
user
46.65233333
sys
22.10233333
zVmm
84.05
58.64533
23.84267
Preliminary Results (cont.)
 If we get the syscall hooking LKM up and running,
maybe we can show some data here
 (Or, we might be able to do some power measurements
by invoking some random function that does a hash of
memory every minute or something, be creative)