slide1

advertisement
SoK: Introspections on Trust and
the Semantic Gap
Bhushan Jain, Mirza Basim Baig, Dongli Zhang,
Donald Porter, Radu Sion, s&p14
Fall 2014
Presenter: Kun Sun, Ph.D.
Thank Bhushan and Radu for sharing the slides.
VMI: Rootkit Detection Technique

VMI is building block for layered security


Common VMI goal: Identify processes in guest


Trusted hypervisor monitors less trusted guest
Rootkit goal: Confuse VMI & hide malicious process
This paper/talk:



Organize prior VMI work by principal design choices
Pervasive trust assumptions in VMI systems
Search other related problems for ideas to remove
trust
Guest OS
Hyper
visor
Semantic Gap: A challenge for VMI
Compromised
Guest OS
Guest Kernel
Kernel Heap
Heap
Guest
Guest OS
Hypervisor
01010011
11110010
11010110
01101010
Process
VMI
Descriptors
10111001
11010100
10011100
10101011
Semantic Gap
VMI
Guest Kernel Heap
01010011
11110010
11010110
01101010
10111001
11010100
10011100
10101011
VMI Challenge : Bridge the semantic gap
even for compromised guest
Main Takeaways

Survey 12 years of VMI research ; 100 papers


Contradiction: VMI reintroduces some trust in
guest


Present a framework to reason about design choices
Assume benign, initially uncompromised guest OS
Promising avenues to remove trust assumptions



Force guest OS to aid in its own introspection
Continuous adversarial learning on untrusted guest OS
Fine grained hardware support for memory protection
VMI Techniques

Learning and Reconstruction

Code Implanting

Data Outgrafting
Learning and Reconstruction
Guest Kernel Heap
Offline safe
environment
Linux Guest OS
Hypervisor
Guest Kernel Heap
01010011
11110010
11010110
01101010
Learning Phase: Generate
data structure signature
10111001
11010100
10011100
10101011
Continuous over
guest lifespan
Searching Phase: Find
data structure instances
Assumption: Same OS behavior in learning and monitoring
Code Implanting
Guest Kernel Heap
Linux Guest OS
Guest Kernel Heap
01010011
11110010
11010110
01101010
Inject code in
guest OS
Protect the
injected code
struct task_struct *task;
for_each_process(task)
call_home("%s\n",task->comm);
return 0;
Hypervisor
10111001
11010100
10011100
10101011
Assumption: Guest OS reports correct information
Data Outgrafting
Reuse static trusted
kernel code
Guest Kernel Heap
Guest
Kernel
Heap
10111001
01010011
11110010
11010110
01101010
11010100
10011100
10101011
Linux Guest OS
Trusted Sibling Guest OS
Hypervisor
Guest Kernel Heap
01010011
11110010
11010110
01101010
CO
W
Guest Kernel Heap
10111001
11010100
10011100
10101011
Input runtime
heap & data
Assumption: Identical guest OS behavior in both VMs
Assumptions in VMI Techniques




One VMI technique: Learning and
Reconstruction
An example attack: Structure Manipulation
More VMI assumptions about attacker
Assumptions across all VMI design techniques
Ubiquitous trust assumptions across all VMI designs
Data Structure Manipulation Attack
Malicious Guest OS
struct task_struct{
Guest
Guest
Kernel
Kernel
Heap
Heap
……
Offset Process Command
……
strlcpy(tsk->comm,”Chrome”,16);
strlcpy(tsk->comm,
buf, 16);
1128 char comm[16];
notifier = kmalloc(16,GFP_KERNEL);
void *notifier;
strlcpy(tsk->notifier, buf, 16);
……
Initialization
}
Change field
Linux Guest OS
interpretation
Hypervisor
Typecast & offset Guest Kernel Heap
10111001
01010011
Firefox
= Chrome
11010100
math
11110010
10011100
11010110
= Chrome
Skype
All processes
10101011
01101010
= Chrome
Adore-ng
are benign
Malicious or Compromised OS can violate VMI assumptions
Fragile Trust Assumptions



Assumption: Consistent structure interpretation
Attack: Change interpretation of a data structure
 Mislead VMI tools by presenting false system state
Defense: No existing defense
 CFI on benign kernel may help prevent
bootstrapping
 Attack obviated by generous threat models
 Trust guest OS to be uncompromised and benign
Structure manipulation: Realistic but outside threat model
More Assumptions About Attacker
Invariant: Set of processes in
Scheduler tree = Process list
Guest Kernel Heap
Guest Kernel Heap
Process list
used to
enumerate
Process tree
used by
scheduler
Invariant Violated!!!
Guest Kernel Heap
01010011
11110010
11010110
01101010
Linux
Guest
OS
Hypervisor
10111001
11010100
10011100
10101011
Assume attacker can’t win race with asynchronous checking
Other Attack Techniques


Write text Segment
Kernel Object Hooking (KOH)


Direct Kernel Object Manipulation (DKOM)


Change function pointers (data segment)
Manipulate heap objects – violate invariants
Dynamic Kernel Structure Manipulation
(DKSM)

Change data structure interpretation
A Fresh Look at Semantic Gap
Challenge
App
Guest
OS
T
T
U
Hyperv
isor
T
T
T
Weak Semantic Gap
Semantic Gap
Strong Semantic Gap
U
U
U
Untrusted Guest OS
T
U
T
Untrusted Cloud
Hypervisor
T
T
U
Untrusted Guest OS
and Hypervisor
T
U
U
T Trusted
U Untrusted
VMI
Problems
Any
Insights?
Search related problems for techniques to remove trust
Force Guest OS to Aid
Introspection

Untrusted OS: Trusted app bridges semantic
gap



VMI tools implicitly assume unmodified guest
OS


Guest gives hypervisor evidence of correct
behavior
Not directly applicable to problems solved by VMI
Relaxes threat model and induces trust
Can we force guest OS to help introspection?

Relax the constraint of unmodified OS
Make light modifications to guest OS to prove correctness
Continuously Train on Untrusted OS

VMI assumes same training & classification
behavior


Apply continuous, adversarial machine learning


Least fundamental assumption
Incrementally train the VMI classifiers on untrusted
OS
Detect inconsistent control flow, data access
pattern
Adapt adversarial learning for continuous VMI training
Fine-grained Hardware Support

Only detection of kernel invariant violation
attacks


All prevention systems use memory protection


Asynchronous scanning to check violations
Expensive at page granularity
Map invariant detection to memory protection

Need lightweight fine-grained memory protection
Fine-grained protection hardware can reduce trust assumption
Conclusions



Semantic gap problem for benign OS is solved
Difficult open VMI problem for malicious OS
Adapt techniques from other trust models



Force guest OS to aid in its own introspection
Continuous adversarial learning on untrusted
guest OS
Fine grained hardware support for memory
protection
Download