8

Contents in Detail - sae.org · IntroduCtIon xxi Why Car Hacking Is ... The SAE J1850 Protocol ... Scripting the ChipWhisperer with Python

  • Upload
    dolien

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

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