Saturday, October 29, 2011
Hall 1-2 (San Jose Convention Center)
Embedded systems are computers designed to perform a specific task within larger electronic bodies, such as household appliances and medical instruments. These devices frequently lack exhaustive security mechanisms as the addition of such features might increase costs or compromise performance (Kocher). However, lacking appropriate security mechanisms might jeopardize the integrity of a system, such as pacemakers and implantable cardiac defibrillators (Halperin). An embedded system is normally composed of at least one microcontroller (processor, memory, and input/output devices) interacting with other components within a larger system. These components communicate through serial interfaces using electrical signals which comply with standard communication protocols, such as I2C (Inter-Integrated Circuit). Reverse engineering of embedded systems can generate a better understanding of a system's functionality, which in turn can be used to design and model equivalent devices for further testing. This study uses reverse engineering to determine internal communication within an embedded system by obtaining, parsing, and analyzing binary signals. A logic analyzer is used to tap internal wires to measure voltage signals and record them as sequences of binary values. The resulting binary waveforms are decoded using a Python script in order to determine what transactions and data have been transmitted. Inspection of this information will provide insight into the functionality of the system. If unexpected behavior is found, future debugging will be used to trace the problem and identify faulty components or vulnerabilities. Using reverse engineering, binary sequences can be abstracted and made available for further analysis.