contents in detail - sae.org · introduction xxi why car hacking is ... the sae j1850 protocol ......
TRANSCRIPT
C o n t e n t s i n D e t a i l
Foreword by Chris evans xvii
ACknowledgments xix
IntroduCtIon xxiWhy Car Hacking Is Good for All of Us . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiiWhat’s in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii
1understAndIng threAt models 1Finding Attack Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Threat Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Level 0: Bird’s-Eye View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Level 1: Receivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Level 2: Receiver Breakdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Threat Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Level 0: Bird’s-Eye View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Level 1: Receivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Level 2: Receiver Breakdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Threat Rating Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11The DREAD Rating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11CVSS: An Alternative to DREAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Working with Threat Model Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2Bus ProtoCols 15The CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
The OBD-II Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Finding CAN Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17CAN Bus Packet Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18The ISO-TP Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19The CANopen Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20The GMLAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
The SAE J1850 Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20The PWM Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21The VPW Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
The Keyword Protocol and ISO 9141-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22The Local Interconnect Network Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24The MOST Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
MOST Network Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25MOST Control Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Hacking MOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith
x Contents in Detail
The FlexRay Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Network Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27FlexRay Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Packet Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Sniffing a FlexRay Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Automotive Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30OBD-II Connector Pinout Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31The OBD-III Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3VehICle CommunICaTIon wITh soCkeTCan 35Setting Up can-utils to Connect to CAN Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Installing can-utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Configuring Built-In Chipsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Configuring Serial CAN Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Setting Up a Virtual CAN Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
The CAN Utilities Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Installing Additional Kernel Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42The can-isotp .ko Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Coding SocketCAN Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Connecting to the CAN Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Setting Up the CAN Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45The Procfs Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
The Socketcand Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Kayak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4dIagnosTICs and loggIng 51Diagnostic Trouble Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
DTC Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Reading DTCs with Scan Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Erasing DTCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Unified Diagnostic Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Sending Data with ISO-TP and CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Understanding Modes and PIDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Brute-Forcing Diagnostic Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Keeping a Vehicle in a Diagnostic State . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Event Data Recorder Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Reading Data from the EDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62The SAE J1698 Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Other Data Retrieval Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Automated Crash Notification Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Malicious Intent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith
Contents in Detail xi
5reVerse engIneerIng The Can bus 67Locating the CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Reversing CAN Bus Communications with can-utils and Wireshark . . . . . . . . . . . . . . . 68
Using Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Using candump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Grouping Streamed Data from the CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . 70Using Record and Playback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Creative Packet Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Getting the Tachometer Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Creating Background Noise with the Instrument Cluster Simulator . . . . . . . . . . . . . . . . 81Setting Up the ICSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81Reading CAN Bus Traffic on the ICSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Changing the Difficulty of ICSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Reversing the CAN Bus with OpenXC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Translating CAN Bus Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Writing to the CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Hacking OpenXC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Fuzzing the CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Troubleshooting When Things Go Wrong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6eCu haCkIng 91Front Door Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
J2534: The Standardized Vehicle Communication API . . . . . . . . . . . . . . . . . . 92Using J2534 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93KWP2000 and Other Earlier Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Capitalizing on Front Door Approaches: Seed-Key Algorithms . . . . . . . . . . . . 94
Backdoor Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Exploits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Reversing Automotive Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Self-Diagnostic System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Library Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Comparing Bytes to Identify Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Identifying ROM Data with WinOLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Code Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106A Plain Disassembler at Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Interactive Disassemblers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7buIldIng and usIng eCu TesT benChes 115The Basic ECU Test Bench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Finding an ECU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Dissecting the ECU Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Wiring Things Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith
xii Contents in Detail
Building a More Advanced Test Bench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119Simulating Sensor Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Hall Effect Sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Simulating Vehicle Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8aTTaCkIng eCus and oTher embedded sysTems 127Analyzing Circuit Boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Identifying Model Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Dissecting and Identifying a Chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Debugging Hardware with JTAG and Serial Wire Debug . . . . . . . . . . . . . . . . . . . . . 130JTAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Serial Wire Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132The Advanced User Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Nexus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Side-Channel Analysis with the ChipWhisperer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Installing the Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Prepping the Victim Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Brute-Forcing Secure Boot Loaders in Power-Analysis Attacks . . . . . . . . . . . . . . . . . . . 138Prepping Your Test with AVRDUDESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Setting Up the ChipWhisperer for Serial Communications . . . . . . . . . . . . . . 140Setting a Custom Password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141Resetting the AVR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Setting Up the ChipWhisperer ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Monitoring Power Usage on Password Entry . . . . . . . . . . . . . . . . . . . . . . . . 145Scripting the ChipWhisperer with Python . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Fault Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Clock Glitching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Setting a Trigger Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Power Glitching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Invasive Fault Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
9In-VehICle InFoTaInmenT sysTems 157Attack Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Attacking Through the Update System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Identifying Your System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Determining the Update File Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Modifying the System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Apps and Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163Identifying Vulnerabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Attacking the IVI Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Dissecting the IVI Unit’s Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Disassembling the IVI Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith
Contents in Detail xiii
Infotainment Test Benches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170GENIVI Meta-IVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Automotive Grade Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Acquiring an OEM IVI for Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
10VehICle-To-VehICle CommunICaTIon 177Methods of V2V Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178The DSRC Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Features and Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Roadside DSRC Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181WAVE Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Tracking Vehicles with DSRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Security Concerns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186PKI-Based Security Measures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Vehicle Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Anonymous Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Certificate Provisioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Updating the Certificate Revocation List . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Misbehavior Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
11weaPonIzIng Can FIndIngs 193Writing the Exploit in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Converting to Assembly Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Converting Assembly to Shellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Removing NULLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Creating a Metasploit Payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Determining Your Target Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Interactive Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Passive CAN Bus Fingerprinting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Responsible Exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
12aTTaCkIng wIreless sysTems wITh sdr 209Wireless Systems and SDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Signal Modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Hacking with TPMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Eavesdropping with a Radio Receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212TPMS Packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Activating a Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Tracking a Vehicle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith
xiv Contents in Detail
Event Triggering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Sending Forged Packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Attacking Key Fobs and Immobilizers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Key Fob Hacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216Attacking a PKES System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Immobilizer Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220Physical Attacks on the Immobilizer System . . . . . . . . . . . . . . . . . . . . . . . . 228Flashback: Hotwiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
13PerFormanCe TunIng 233Performance Tuning Trade-Offs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234ECU Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Chip Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Flash Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Stand-Alone Engine Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
aTools oF The Trade 241Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Lower-End CAN Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Higher-End CAN Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246PyOBD Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Linux Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247CANiBUS Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Kayak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248SavvyCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248O2OO Data Logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Caring Caribou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249c0f Fingerprinting Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250UDSim ECU Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250Octane CAN Bus Sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250AVRDUDESS GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251RomRaider ECU Tuner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251Komodo CAN Bus Sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251Vehicle Spy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
bdIagnosTIC Code modes and PIds 253Modes Above 0x10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253Useful PIDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith
Contents in Detail xv
CCreaTIng your own oPen garage 255Filling Out the Character Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
When to Meet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Affiliations and Private Memberships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Defining Your Meeting Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Contact Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Initial Managing Officers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
abbreVIaTIons 261
Index 263
The Car Hacker's Handbook: A Guide for the Penetration Tester © 2016 Craig Smith