Full Program »
Down to the Bare Metal: Using Processor Features for Binary Analysis
In this paper, we focus on two aspects. As a first contribution, we introduce several novel mechanisms by which an attacker can delude an emulator. In contrast to existing detection approaches that perform a dedicated test on the environment and combine the test with an explicit conditional branch, our detection mechanisms introduce code sequences that have an implicitly different behavior on a native machine when compared to an emulator. Such differences in behavior are caused by the side-effects of the particular operations and imperfections in the emulation process that can- not be mitigated easily. Even powerful analysis techniques such as multi-path execution cannot analyze our detection mechanisms since the emulator itself is deluded. Motivated by these findings, we introduce a novel approach to generate execution traces. We propose to utilize the processor itself to generate such traces. Mores precisely, we propose to use a hardware feature called branch tracing available on commodity x86 processors in which the log of all branches taken during code execution is generated directly by the processor. Effectively, the logging is thus performed at the lowest level possible. We evaluate the practical viability and effectiveness of this approach.
Author(s):
Carsten Willems
Ruhr-University Bochum
Germany
Ralf Hund
Ruhr-University Bochum
Germany
Andreas Fobian
Ruhr-University Bochum
Germany
Dennis Felsch
Ruhr-University Bochum
Germany
Thorsten Holz
Ruhr-University Bochum
Germany
Amit Vasudevan
CyLab/CMU
United States