Avatar is an event-based arbitration framework that orchestrates the communication between an emulator and a target physical device. Avatar's goal is to enable complex dynamic analysis of embedded firmware in order to assist in a wide range of security-related activities including (but not limited to) reverse engineering, malware analysis, vulnerability discovery, vulnerability assessment, backtrace acquisition and root-cause analysis of known test cases.The analysis environment consists of several components:
This modular architecture let Avatar perform dynamic analysis of firmware behaviour, such as recording and sandboxing memory accesses, performing live migration of subroutines, symbolically executing specific portion of code as well as detecting vulnerabilities.
Avatar's capabilities have been demonstrated by performing symbolic execution and vulnerability analysis of several devices, including a hard-disk controller, a GSM feature phone and a wireless sensor node.
You can find our code on GitHub:
This is the same procedure recommended here by S²E upstream authors.
Please note that 32-bits hosts are NOT supported by S²E, and we additionally recommend using an amd64 Debian Wheezy.
# Install all build-dependencies sudo apt-get build-dep qemu llvm sudo apt-get install build-essential flex subversion git gettext liblua5.1-dev libsdl1.2-dev libsigc++-2.0-dev binutils-dev python-docutils python-pygments nasm bison # Get the source code from github git clone https://github.com/eurecom-s3/s2e.git # Make it building out-of-tree mkdir build cd build make -f ../s2e/Makefile # This will take some time to build...
# Install Python3 and dependencies sudo apt-get install python3 python3-pip # Install Avatar module from github sudo pip-3.2 install git+https://github.com/eurecom-s3/avatar-python.git#egg=avatar
# Install all build-dependencies sudo apt-get build-dep openocd # Get the source code from github git clone git://git.code.sf.net/p/openocd/code cd openocd git submodule init git submodule update # Configure OpenOCD (make sure to enable the driver for your adapter) autoreconf -i ./configure # Build and install make -j sudo make install
The Eurecom S3 group will present the Avatar paper at NDSS 2014, on February 24th morning in San Diego (USA).
Jonas Zaddach will present the Avatar project at EPFL, on January 24th afternoon in Lausanne (CH).
Luca Bruno will present the Avatar project at FOSDEM, on February 2nd morning in Bruxelles (BE) - PDF slides.
Spawning from Hinduism, the term avatar is mostly translated with "incarnation" or "appearance". Drawing from this, an homonimous 2009 movie took the same concept to depict a sci-fi scenario where an "Avatar Program" enables humans to explore a remote and hostile alien planet called Pandora without endangering human life, by connecting their mind to an Avatar body (the local alien indigenous people).
A reconnaissance marine in an Avatar body... that's a potent mix!
Gives me the goosebumps!
Applying Bytecode Level Automatic Exploit Generation to Embedded SystemsHonours Report, Christchurch, New Zealand: University of Canterbury, October 16, 2015