Reverse Engineering of Automotive Firmware
Reverse Engineering of Automotive Firmware
Engineering of
Automotive Firmware
Alyssa Milburn
Security Analyst, Riscure
[email protected] / @noopwafel
1
Reverse Engineering Tuning /
manipulation
IP
Getting Reverse
Understanding
Firmware Engineering
Hacking
???
• 32-bit CPU
• CAN bus
• I2C bus
• EEPROM
4
How can we get the firmware?
External Software
flash vulnerabilities
Leaks
Hardware
Debug attacks
interfaces
• “Non-standard” platforms
• New concepts
• Complexity
• Timers, interrupts
• CAN controller
• I2C controller
• EEPROM
• Display controller
Efficient Reverse Engineering of Automotive Firmware 9
Emulating the CPU architecture
~ 1 man-week of work
13
Debugging gdb
gdb Break!
“stub”
Step!
Watch!
(gdb) c
Continuing.
0x00011032 in ?? ()
(gdb)
0x02920
0x02922 (jump)
0x02926
0x02928
0x0292c
0x02930
0x02920
0x02922 (jump)
0x02926
0x02928
0x0292c
0x02930
Running (booted)
4 ??
Data[7] =
5 ?? Data[2]
6 ??
7 ??
CAN message
8 ??
Data[7] == Y?
Memory[5] == 0xc7?
Path 1 Path 2
Random key ==
Random key
calculateKey(seed)?
We found calculateKey!
Odometer
Alyssa Milburn
Security Analyst, Riscure
[email protected] / @noopwafel Challenge your security
• Training
• Tools
• Services
icons8.com
32