The Avatar project: Improving embedded security with S²E, KLEE and Qemu
http://www.s3.eurecom.fr/tools/avatar/
Luca Bruno <lucab@debian.org>,
- J. Zaddach, A. Francillon, D. Balzarotti
The Avatar project: Improving embedded security with SE, KLEE and - - PowerPoint PPT Presentation
The Avatar project: Improving embedded security with SE, KLEE and Qemu http://www.s3.eurecom.fr/tools/avatar/ Luca Bruno <lucab@debian.org>, J. Zaddach, A. Francillon, D. Balzarotti About us Eurecom, a consortium of European
Luca Bruno <lucab@debian.org>,
2 02/02/2014
3 02/02/2014
4 02/02/2014
5 02/02/2014
6 02/02/2014
– Often monolithic binary-only firmwares
7 02/02/2014
A B C D E >0 ≤0 <8 ≥8 0<x<8
8 02/02/2014
9 02/02/2014
– In-vivo analysis of any kind of device – Advanced debugging – Easy prototyping
10 02/02/2014
11 02/02/2014
Firmware Embedded device
Emulator Proxy Avatar Emulator Backend Target Backend Plugins
read/write memory interrupt read/write memory value value interrupt . . . mov r2, r0 mov r3, r1 add r3, r3, #1 add r2, ip, r2 ldr r2, [r2], #0 cmp r2, r3 . . .
12 02/02/2014
– IDA Pro, Capstone, Netzob...
13 02/02/2014
14 02/02/2014
15 02/02/2014
Emulator
RemoteMem plugin S²E QMP/Lua Qemu GDB Qemu config
VM state
Qemu executer
Qemu frontend
LLVM
Symbolic states KLEE
TCG S²E hooks
Avatar
16 02/02/2014
Avatar Analysis script Target backend
GDB adapter Telnet adapter BinProto adapter GDB/MI adapter
Emulator backend
Memory forwarder QMP/Lua interface GDB interface Config writer
Analysis Plugins Emulator Target
17 02/02/2014
– Orchestrate execution – Bridge between emulator
– Intercept/manipulate memory accesses – External integration, exposing GDB or
18 02/02/2014
Avatar Open OCD Target device In-memory stub
Target state
JTAG UART
19 02/02/2014
20 02/02/2014
21 02/02/2014
22 02/02/2014
23 02/02/2014
– Trap execution on device and transfer state to the
– Detect and drop forwarding for non-IO memory
24 02/02/2014
25 02/02/2014
26 02/02/2014
– Enable dynamic analysis – And perform symbolic execution – On embedded devices – Where only binary code is available
27 02/02/2014
Thanks to Pascal Sachs and Luka Malisa who built an earlier prototype of the system, and Lucian Cojocar for contributions
28 02/02/2014
Jonas Zaddach, Luca Bruno, Aurelien Francillon, Davide Balzarotti
Traian Stancescu, Herbert Bos
Volodymyr Kuznetsov, George Candea
Kuznetsov, George Candea
Asia Slowinska, Matthias Neugschwandtner, Herbert Bos
29 02/02/2014