-
33C3 preroll music
-
Herald Angel: And without further to do,
please welcome Guillaume and P1ckachu on
-
stage now.
applause
-
Guillaume: Thank you.
P1kachu: Okay. So hi everybody. Hi bingu.
-
So we are going to present what we've been
doing lately with cars actually. So who
-
are we? My name is Stanislas Lejay
"P1kachu". I'm an IT student in EPITA a
-
school in France and I'm part of EPITA's
system and security laboratory the LSE.
-
I'm currently an intern at Quarkslab. I
like a lot of stuff, like reverse
-
engineering, everything that is related to
cars or mechanics and if there is
-
something stupid to do I shall already be
doing it. And with me will be Guillaume
-
Heilles.
Guillaume: Hello my name is Guillaume. I
-
work as at Quarkslab as a security
engineer. I'm quite new to the security
-
field as I worked in the industry before.
And I switched to the security field
-
because it's very fun and I like to
reverse almost everything and I will give
-
a small talk about reversing a piece of
hardware that you can find in an
-
automobile.
P: So what is this talk about? This
-
talk will be in two different parts the
first one is how to drift with any car.
-
And it's an introduction to how to automotive
systems what you can do with them and what
-
we actually did with them. And the second
part, which name is out to properly write
-
an amazon review, you'll see why just
after, is OBD dongle. So analysis, reverse
-
engineering, stuff like this. So first
part "drifting with any car". The idea is
-
that I'm a student, so I work at my
school's lab, so I had to find a way to
-
explain why I was bringing different cars
every day at my school's garage. So the
-
official goal was to look at our car works
and what arise from this is what can I do
-
what can one do with a modern car system.
The restriction I had was that since I'm a
-
student I'm poor so I don't have a lot of
money and I don't have a lot of cars. So I
-
was actually taking my family's different
cars and trying to analyze them. So I
-
wouldn't, I wasn't able to break anything
or remove any parts from the car. So the
-
test subjects, what which cars was I
playing with. I had five or six of them.
-
The first one for posterity, is mine
actually. It's a 2006 Volkswagen Polo.
-
What is nice is that you can spend the
whole day trying to find some messages on
-
your bus. If your car is too old there are
no messages. So you can take the
-
oscilloscope and try to find them, you
won't find them. Anyway, just before doing
-
anything try to think is the something I'm
looking for ready in there. The second car
-
is my grandmother's car it's a Volkswagen
Polo of 2013. And the last guy we'll talk
-
about is my mom's Fiat 500 convertible.
It's from 2010. The dates are important
-
because the CAN bus I will talk about just
after is quite recent in a way that
-
security on the CAN bus changes greatly
from one year to another. So the CAN bus I
-
was playing with on this car was quite
different from the 2013 Volkswagen Polo
-
for example. Okay, so talking with the
car. So this is the introduction part, so
-
if people already know about what I'm
going to talk about, but I want everybody
-
to be on the same first step. So first of
all an ECU it stands for electronic
-
control unit and it's a small computer
that you get all around your car. So there
-
are many of them. You can have at most 70
of them in very modern cars and take
-
control different parts of it. So you have
the engine, the powertrain, the
-
transmission, ABS, stuff like this. And
they talk to each other on what we call
-
the CAN bus. The CAN bus is a message
based broadcast protocol. Messages are
-
mostly composed of two important things
which are the arbitration ID which, I will
-
refer to ID from now on, they can be 11 or
29 bits long and you have data. Data is 8
-
bytes long on the standard that CAN
message but they are on top protocols, I
-
can group messages together to get bigger
lengths of data. What is interesting is
-
that it's a broadcast protocol, so the
collision detection system is based on the
-
ID. The lower your ID the higher your
priority. So very important CAN message
-
will have a very low IDs they will be sent
from an ECU that are very low ID and less
-
important one will have a bigger
arbitration ID. How do you talk to your
-
CAN bus without cutting any wire in the
car? For this you see there is the OBD2
-
port so OBD stands for onboard diagnostic
and is the vehicle self diagnostic and
-
reporting capability. When you are driving
you have allowed a LED that start to blink
-
on your dashboard saying "ok something's
wrong", you bring your car to your car
-
repair shop and the car repair guy will
just plug itself to this port which is
-
located around the steering wheel often
and query information using PIDs. So PID
-
is a parameter ID. It means "okay I want
to have information about for example the
-
RPM or the speed or the fuel level
something like this" and you can set or
-
reset diagnostic trouble codes a
diagnostic trouble code means "ok
-
something is wrong with this part of the
car" for example. Here is my setup. So
-
with just a Raspberry Pi, PiCAN 2 shield
and a DV 9 to OBD 2 cable, I was able to
-
have a full linux that that can understand
CAN messages and talk with the CAN bus. So
-
with that I could just communicate with my
car without breaking anything, which is
-
quite nice. What does it look like? So in
Python, I just import import can, so it's
-
a standard package, python-can, you create
an interface, so it's socket CAN, so it's
-
like any kind of interface you just create
a can0 interface and you can communicate
-
with your CAN bus. You create your
message, so the data is here. What is
-
important is that the first byte tells how
many bytes are important in the message.
-
You can have 8 bytes of data. The number
of bytes processed will be this number, so
-
like there it says "ok, there are only 2
bytes of data that are interesting, just
-
discard the 5 of the ones.". Here, it asks
for the first mode, so OBD have different
-
mode. The first mode says "Okay, I want
the current value of what I'm looking for"
-
and 0x0c is RPM. So I want the current
value of the RPM. If I put two there, it's
-
the second mode and it asks for the RPM
when the last data trouble code was
-
actually set. You have different like
that, but what interested me was "Okay
-
what is a current RPM?". You create your
message, 0x7df is the classic ID for
-
diagnostic tools, so most ECUs will answer
to OBD queries if you have this ID. On 29
-
bits, it depends on the car, on the Fiat
500, for example, it was this one. You
-
send your message, you get your answer and
that's it. Okay, so this was the theory:
-
how do you talk, but how did I actually
talk with my cars? So the first OBD answer
-
I was able to get was on my grandmother's
Polo. It's quite a recent car, 2013, so
-
there was a gateway, a sort of firewall
between the OBD2 port and the actual CAN
-
bus. So when I plugged myself to the CAN
bus, I wouldn't receive anything unless I
-
send an OBD query. I would receive my
answer but that's all. Else, the bus would
-
be completely silent. So here are some
examples, so this is the one from just
-
before, how can I get the RPM, so this is
the value of the RPM. Here, I can get the
-
engine coolant temperature, very
important, so the idea is that it answers
-
83 and 83 is 131 degrees. The idea is that
you are working with unsigned bytes, so if
-
you want to get a negative temperature,
the standard tells you to subtract 40 from
-
your temperature. If you are outside of
-40 or 215 degrees, you have other
-
problems than your coolant temperature.
So, seems to work. Okay, nice. So,
-
displaying everything. This was to explain
to my grandmother why I was stealing her
-
car for two weeks right now. So, with
this, I'm able to get the RPM, the speed,
-
engine coolant temperature, always very
important, throttle and accelerator pedal
-
pedal position and the elapsed time since
engine started. So anyway, kind of
-
graphical, my grandmother understands,
everybody's happy. Right, so right now I
-
can query standard OBD PIDs, I can have
the RPM, speed, fuel level, anything you
-
would want to have on your dashboard, but
if you want to get some probably more
-
interesting stuff, you have to go with the
constructor-specific PIDs. For example,
-
the steering wheel position, brake and
clutch pedal, gearbox status light or
-
blinkers are constructor-specific, so you
have to break stuff to be able to find
-
them or are very good friends with
manufacturer, which I haven't. Nice, we
-
can query stuff, mostly. Can we modify
anything interesting from OBD? Because,
-
still, I don't want to mess with the car
by cutting any wire. So first issue: what
-
protocol am I actually talking to? There
are on-top protocols like with KWP, which
-
is Keyword Protocol 2000, Unified
Diagnostic System is OTP, the volkswagen
-
version of ISO-TP, like really, and stuff
like this. Which protocol am I talking to?
-
Okay, let's just brute-force by sending
the classic introduction kind of message
-
and try to find for valid answer. With
this on the 2013 Polo, I could speak UDS.
-
So UDS enables different kind of thing
like resetting ECUs, which can be quite
-
interesting, query-specific PIDs, read DTC
information, stuff like this. However,
-
nice stuff like dump the firmware, are
only available through security session.
-
And security session on this car requires
an authentication through a challenge
-
response kind of algorithm, so here is the
example: I would start a diagnostic
-
session, UDS diagnostic session, first,
then query for seed to get through the
-
security session, compute my answers, send
it back, the cars compute its own answer,
-
compare and I would fail, because I would
just send the feedback like, maybe they
-
didn't implement a real algorithm, you
never know. But hey, okay, well done
-
Volkswagen, they did it quite well.
Actually, the car has a four-byte seed,
-
which is different at each try. This is
important to notice because on Guillaume's
-
car, it's a 2-byte seed, which is always
the same. You have more than three seconds
-
required between each try and if you fail
multiple time, it will just freeze for ten
-
minutes if you don't want to remove the
battery, all that kind of complicated
-
stuff. So, how to break this? Brute-force?
Way too long. Timing attack would be too
-
unstable because of the priority-kind of
thing, because you can just get delayed by
-
other more important messages and so it
will delay your timing attack. Disassemble
-
the car is out of the question, you know
why, and get PCs from a repair shop is
-
tedious. You know, get an ECU, try to
recreate the CAN bus around, stuff like
-
this, and I'm broke, so I don't have any
money. Okay, so, my car, let's sum up, way
-
too old. My grandmother's car, bit too recent
because of the Gateway, my family's car is
-
a Lancia Voyageur 2014, so even more
recent, but it has Uconnect, so maybe for
-
another time. Who's left? Oh, mommy? So,
my mom has a 2010 Fiat 500 convertible,
-
she loves it, so she doesn't like when I
take it and she even more doesn't like when
-
I tried to do stuff with it. So one night
I stole the key. Laughter Sorry. And I
-
tried to plug myself in and oh! It talks, it
talks a lot. In four seconds, I was able
-
to get 2000 around message, so it's about
500 messages per second. There is no
-
gateway, so I have a lot of broadcasted
message already. They are from few
-
different arbitration IDs, so a few
different ECUs are actually talking on
-
this bus. When I'm in the car, I tried
pressing random buttons and I see that the
-
data evolves, so the nice funny things to
do is to try to understand what each
-
message mean. It's quite tricky with CAN
dump, which is the standard Linux utils
-
which will just flood your stdout with CAN
messages, but Python CAN monitor helps a
-
lot by grouping messages by arbitration
ID. So here I'm in the Fiat 500 and I am
-
driving actually, and you can see the
different arbitration ID there and the
-
data that is evolving. The two last one,
which are way bigger, are the standard
-
OBD, meaning that okay, I have a priority
that is way lower than the other kind of
-
messages. So, reversing a bit, what can we
find? I found the speed, four time, the
-
values were quite different but quite
close anyway, so was it at four different
-
time or at the for different wheels? And
it was actually at the four different
-
wheels, because when I turned it would
change drastically two values out of four.
-
I have the clutch pedal with respect to
the accelerator am i accelerating while
-
depressing or pressing the clutch, the
brake data are the doors closed which one
-
are closed is a contact on is the
handbrake up or down and this one is quite
-
interesting because it would change every
minute. Actually it's the time and date.
-
So it was 9:00 p.m. on the 24th May of
2017 meaning that they created an ECU
-
would which only job was to send the
current time and date readable in
-
hexadecimal format on the CAN dump like
this.
-
laughter
But what that was I found it funny I've
-
weird sense of humor, anyway so this thing
even masters this time to explain to my
-
mother what I'm doing with her car so this
was a kind of capture was doing from my
-
school to my home like I was recording
what I was doing in the car, recording at
-
the same time a CAN dump and displaying
what I could display so I have the
-
handbrake, start and stop and engine is on
okay it seems to be the doors are closed
-
hopefully okay. So this was quite fun
to do actually. Okay what can we do with
-
that? Can we do something useful for
humanity can we do maybe something a
-
little bit challenging or else it's
absolutely not interesting? How can I at
-
least put something on my resume after
that something I can be proud of? Yes or
-
we could try to do something completely
stupid and that's what I was I mean to do.
-
So I created CANPad. The idea of CANPad is
that with the steering wheel or brake and
-
an accelerator pedal you can drive any car
in any video game. So.. Laugher
-
Applause
So that's what I did. I take the CAN
-
messages from OBD sensor and back pass it
to a piece on CAN and client and float
-
them through libuinput to be able to
create a virtual gamepad and plays it in
-
V-Drift. So V-drift is an open-source
racing game that allows one to play on
-
Linux through at least libuinput. So
this is a start and stop button that I use
-
as a toggle to send data and here I'm
driving with my mum's car, a car in a
-
video game.
driving noise
-
So I have the steering wheel the handbrake
all every pedals is quite it's quite hard
-
to drive right now.
laughter
-
And my official goal is to drift. So at
first I have to learn how to drive at all.
-
It was actually quite nice when I managed
to do anything at all. So you can see that
-
data is only like 16 bytes long and
music
-
applause
That's the best drift I was able to do on
-
this game. So I was actually quite
disappointed right now. So features and
-
limitation of this. So the features is
what I was explaining right now. But the
-
limitation are that the engine needs to be
running because else I don't have the
-
assisted direction which makes the wheel
quite hard to turn. Also on a real car if
-
you really see steering wheel it will by
itself try to match the car direction
-
which I don't have so I would just spend
all my time turning the wheel. And the
-
control simplicity going through libuinput
limits it to V-Drift because no
-
other Linux game recognized my virtual
gamepad as a real one. So I was quite sad
-
and but I really wanted to drift. Oh wait
I created another version which is CANpad
-
v2. CANpad v2 I just understood that on
the real game pad game box - Xbox, Xbox
-
gamepad. If I plug the Xbox gamepad and
don't touch anything no inputs will be
-
sent. On the other hand if I put a PS4
gamepad and don't touch anything it will
-
flood the status of every button all the
time so what I would do is take the Xbox
-
controller put it on the table and hijack
its port to send data instead of it. So I
-
would have a real, a real plugged-in
controller that is recognized by nicer
-
games like V-Drift, like DiRT and I could
send inputs by my, myself. I change this
-
few stuff like the gas pedal because I had
to flow in the real world to flow in the
-
game which was quite fuel consuming, the
steering wheel rotation was adjusted so
-
that it matches, it matches rally cars
like if I turn it 180 degrees it will turn
-
all the way in the game so quite nice, and
I found the direct command to query and
-
break in the in the video. In the next
video you'll see that when I turn abruptly
-
in the game and I release at the same time
the brake the wheel will take a little bit
-
of time before stopping to turn because I
have a small delay. But now I have the
-
real input so it's way easier. so:
demonstration. So, some sensors:
-
soundtrack Start and Stop soundtrack
I just wanted the music. So, anyway, as you
-
can see it's way easier to play because of
the steering wheel which was adjusted it's
-
way nicer to drift in it. I can do the
crane drift
-
applausesoundtrack
my brothers were very fond of this. My
-
mother was only thinking about her tires
right now
-
audience laughing
soundtrack
-
Anyway. Sorry. I'll give you the title of
the song later if you want. So I can now
-
drift with my front-wheel drive car in any
kind of video game which is almost quite
-
very nice. So possible upgrades - yes
there're always upgrades: I could get the
-
gearbox tattoos to put the car on the lift
and try to put it in manual which would a
-
be a bit more life... life kind and
create a better gamepad so that I'm able
-
to race on my Micro- windows because right
now it's only on Linux. Okay this was fun
-
but it was actually consuming a lot of gas
for nursing. So with Guillaume we try to
-
find a way to reduce gas consumption and
that's what he will - he is going to talk
-
to you about right now.
Guillaume?
-
Guillaume: Thank you, Stan.
Applause
-
So, Stan had a little problem about the
gas consumption and the friend of us told
-
us about this little nitro OPD dongle
which is supposed to save fuel. It's sold
-
on Amazon and the reviews are quite good
so we said "ok, strange but ok" let's try
-
it. First of all just a reminder about the
- what is an OBD2 dongle? An OBD2 dongle
-
is a small device that you plug into the
OBD2 port of your car. Any recent car has
-
an OBD2 port you can find it by googling
the model of your car and OBD2 port and
-
you will find a picture of it and the
interesting thing is that you just have to
-
pull the panel to access to your OBD2 port
and it's very cool because we don't have
-
to take anything apart or whatever. So,
just buy the thing on Amazon, pull the
-
panel and put it there. That's all. So,
this dongle is supposed to save fuel by
-
reprogramming the main ECU - the engine
ECU of your car. And this is done for
-
quite some times: This is known as a chip
tuning and you can find it on internet. It
-
works pretty well it will break your
warranty, but the very interesting
-
thing about this dongle is that you will
not break your warranty because, if you
-
remove it you will go back to factory
settings and this is very new. So, it
-
works on any car, well any recent car and
well it seems to work really well. Ok so
-
why did we reverse engineer this dongle?
Because it just an amazing piece of
-
hardware. If you think about it: it works
on any car and it also reprograms any car
-
so it must contain all authentication
codes. Stan explained the challenge and
-
response mechanisms so this one must
contain all of them. It will also contain
-
the reprogramming software for any car of
any manufacturer and this is also just
-
amazing and I just wanted to have a look
at this and it is able to adapt itself to
-
the way you are driving for a few
kilometers then it will reprogram your
-
engine and I say wow there must be a very
smart algorithm inside this very small
-
piece of hardware and I just wanted to
have a look at this software. As I said
-
also - it also modifies the RAM of your
engine and I was not aware of anything
-
that will be able to do that because from
the things I know about chip tuning it
-
will change the flash of your ECU. That's
why the warranty is broken but not this
-
one, not this one. And this is just
amazing. I just wanted to have a look at
-
the source code while the binary. Ok so.
The first thing about reverse engineering
-
such a piece of hardware is monitoring the
CAN signals to see if it's talking and
-
what he - what it is doing exactly if it's
opening security sessions or not. Well,
-
all this stuff. So, here you see in my
car. There is the OBD2 port right there
-
and I used the same configuration as Stan
to record the CAN messages which is a
-
Raspberry Pi here and the PI CAN2 shield
and well just for fun a picoscope to
-
check the signals and a computer to - to
monitor this. The thing is you just have
-
one OBD2 port in a car and - here - and
you cannot plug at the same time the
-
dongle like - like this and the
wires for the Raspberry Pi. So we took
-
apart the dongle and after a bit of
reversing the PCBs we found the can lines
-
and ground and we just soldered three
wires on it. And with using this approach
-
you can reverse the messages sent on the
bus. The interesting thing is that as you
-
are plugged directly on the dongle
you will monitor exactly what the
-
dongle is doing and what he's seeing. Just
for reference you just have three wires to
-
put in a car to hijack or to communicate
on the CAN bus. Those are CAN high, CAN
-
low and the ground and that's basically
all you need to connect to a CAN bus. Just
-
for reference: you can find on today's
cars you can find many many CAN buses in
-
in the different parts of the car. So the
OBD2 port is just more accessible but it's
-
basically another CAN bus just like
another one. Okay. So, we did two
-
measurements: one with basically no OBD
dongle plugged in and there is a one with
-
the OBD dongle plugged in. Stan explained
in the first part of the presentation that
-
every CAN message is sent by an ECU and
the identifier of the ECU is called the
-
message ID and the lower it is the higher
priority is. Here you are the most - you
-
have the most prior - you have the message
with the - the biggest priority and here
-
with the lowest priority and you see here
the - the content of the messages. The
-
thing is, if you look at the lists of the
message IDs - here - and the list of the
-
of the message IDs - here - you can see:
it's the same list. Basically it means
-
that no other ECU was talking on the bus
when we plugged the OBD - the Nitro OBD2
-
dongle. So, it means that the dongle
basically doesn't speak at all on the CAN
-
bus. And that's too bad because we say how
is it possible that it works if it's not
-
talking on the CAN bus? Okay. Is it over,
is it just not working? Well not really. The
-
dongle is advertised as working after 120
kilometres. It will just listen silently
-
to the way you are driving, then reprogram
your engine after this small amounts of
-
kilometres. So it was still possible that
the dongle was not sending anything during
-
the first kilometers. And - but we
couldn't just monitor the CAN bus during
-
such a big period of time and so we needed
another approach and we chose to reverse
-
the PCB. If you take the dongle apart, you
can see two PCBs. The first one here is
-
just connected on the OBD 2 port and the
other one seems to contain, well,
-
something. Okay, so this is a picture of
the first one. As you can see, there is no
-
components on it at all. It's just routing
the CAN wires from there to the second
-
board. So okay, let's go on, and the
second one is more interesting. On the
-
front side, you can see, well, a few
components, but there are not so many. You
-
have a voltage regulator here, 7805, you
have a push-button, this diode is part of
-
the voltage regulation and that's pretty
much all you have here. And three LEDs,
-
you have three LEDs, okay. On the back
side, you can see, here there is the
-
footprints of a very small
microcontroller, and here is a picture
-
before dissoldering it. And the
interesting thing is that there is
-
absolutely no reference on this device, as
if the manufacturer took a special care to
-
hide what was inside. And this is not so
common because usually you can find a
-
reference in a chip. Also, there is no CAN
transceiver on this device, yeah, it's
-
strange. What is a CAN transceiver? A CAN
transceiver is a piece of hardware to
-
translate the signals from the CPU, which
are basically UARTs, into CAN signals
-
which, are CAN high, CAN low, this is a
differential pair. But this device is not
-
just about adapting the signals and
electric conversion. It's also about real-
-
time monitoring and checking. Stan
explained before that in each frame, you
-
got a CRC and an error bit. And if there
is a transmission error on a frame, any
-
CAN transfer has the duty to assert the
fault in real-time, so it just has a few
-
microseconds to compute the CRC in real-
time and say "Okay, no you just have to
-
discard this frame". Basically, two tasks
for this one: electrical signal conversion
-
and checking in real-time. Okay, so you
have no CAN communication, no CAN
-
transceiver, okay, it smells weird. A few
guys told us "yeah but maybe it's possible
-
to do that in software because, you see,
those are just signals and maybe with an
-
IDC and so on you can do that in
software." I put a link, if you are
-
interested, here, for Stack Overflow
discussion, which is very interesting and
-
a few guys say "ok, yes, it's possible to
do that in full software, so you basically
-
don't need a CAN transceiver". The thing,
is as the CAN transceiver has to react in
-
a real-time, you have to have a very fast
CPU to do that in real-time. And the guys
-
on Stack Overflow say "Ok, it's possible,
but at a very low speed like 10 kilobits
-
per seconds or something like this." But
on a real CAN bus on a real car, the speed
-
is more like 500,000 bits per second, so
it's not the same order of magnitude. And
-
then, some of the guys say "Okay, maybe
there is some CAN transceiver inside this
-
chip", and I say "okay, yes, it's just a
small A Super8 chip, there is nothing
-
there, just a small microcontroller ",
but, just to be sure and because we like
-
to decap chips, laughing I asked my intern to do
that because, you know, there are toxic
-
fumes and things like that. So here is
Stan in my garden and, well, it was pretty
-
- it was the first time I did that, and
Stan also, and the thing is, it's pretty
-
easy to do that, but if you want to do it,
just be careful because it is very
-
dangerous stuff. You can buy it on the
internet, it's very cheap, and, what do
-
you need? You need cooking plates, here,
to produce some heat, crème brûlée, or
-
just the ceramic plate. You pour the
sulfuric acid in it, you wait for it to be
-
hot enough and that's all, basically. Just
throw your chip in it and you're done.
-
Just wait 10 minutes and that's all. So
again, if you want to do it, just do it
-
because it's fun, but use protections
because it's very dangerous. Okay, well,
-
here is the results. I put a real CAN
transceiver here, and this is the chip you
-
have in the nitro OBD 2 dongle. Some of
you, you will recognize the basic
-
structure of a small microcontroller.
Here, you have the CPU logic, here you
-
have the memory banks and some glue logic
there. And that's pretty much all you have
-
there. The interesting thing is that, this
does not fit into this. So definitely,
-
there is no CAN transceiver in the Nitro
OBD 2 dongle. The other thing I would like
-
to show is if you look at this, we said
before that the Nitro OBD 2 had to contain
-
a database for all authentication
algorithms. All the way to reprogram any
-
car on the market and so on. And this is
all the flash you have inside. I was
-
expecting at least a big chip of flash,
but there is nothing here. So basically,
-
it just looks like a tiny microcontroller,
like an Arduino or something like this.
-
But I really wanted to know what chip it,
was so we have a game at the office, it
-
was looking for Waldo, and because the
chip manufacturer like to write chip
-
reference inside their chip, and, well,
there is something here. If you look at
-
the chip, the big magnification power, you
will see this and this is the chip
-
reference. Unfortunately, I could not find
any reference on the internet about this
-
chip. I asked a few friends on Twitter and
so on, but nobody could find it, which
-
means, well, I don't know, this is not a
big chip, very well-known. If you know
-
what it is, just tell me, send a mail or
whatever and take the microphone during
-
the question answer session, it will be
nice. So, just to sum up this part, this
-
dongle is very nice but there is no CAN
communication, does not contain any CAN
-
transceiver, it has not enough CPU power
to emulate a CAN transceiver in full
-
software, and the most important thing is
that it has no flash in it to contain the
-
database, you know, to reprogram any
engine and so on. But the links are
-
blinking very well, so, yeah. If you
really want to reprogram your car, use
-
something else. Thank you. Applause I
would like to invite all of you, if you
-
are interested in car hacking, to try and
put some OBD cable into your car because
-
it's very easy. You just have to pull a
panel to get access to your OBD port. You
-
will just need a Raspberry Pi, CAN shield
and a cable and that's pretty much all you
-
need. Just a few words: so you don't need
to take anything apart, so it's pretty
-
easy, you can do many interesting things
just by using the OBD2 port of your car,
-
like fuzzing and so on. But please be
careful, you can hurt yourself or break
-
your engine if it's running, so if you do
some fuzzing, please stop the engine
-
before.
P1kachu: Because as you saw at the
-
beginning, I was actually recording CAN
data or querying stuff while I was
-
driving, which was the stupidest thing I
did from the hole analysis. I was able to
-
disengage ABS by fuzzing, too - stuff like
this - because they have some systems that
-
if they receive too many invalid kind of
messages, they will just shut off, so I
-
was able to disengage stuff like this, so,
yeah, if you are doing stuff like this,
-
just don't drive while doing it, for
example. That's the kind of stupid mistake
-
you do when - or disable the airbags.
Guillaume: That's very important.
-
P: You never know.
G: Well, thank you again, and, yeah, if
-
you want to speak with us, you're more
than welcome. Thank you!
-
applause
Herald Angel: Thank you deep guys, I could
-
normally skip the car hacking talks. This
time it was really amusing and I'm happy
-
that I didn't do that. We have a lot of
time for questions, if you want to line
-
up, there's one over there or two of
there, one over here and one over there.
-
Are there questions from the audience?
Signal angel?
-
Signal Angel: So, people on the stream are
wondering where they can find your
-
software and whether you contributed any
signals you found to the open DBC project
-
that is collecting signals from the CAN
bus.
-
P: I haven't really heard about this -
yet. So right now, not that much, but I
-
will take a look at this after this. Sorry
-
Herald Angel: Mic 1.
Q: I was wondering you try to reverse
-
engineer to get into the secure mode so
that you can access all the issues. You
-
want to... we reverse engineer this
challenge/response authentication.
-
P: Yes.
Q: Why does he not try to reverse engineer
-
the diagnostic software that is used by
the dealers?
-
P: Because this infringe, we call this
valise, like luggage, and it costs if I
-
recall correctly about 5,000 Euros by car
manufacturer. So we went to a garage and
-
asked the guy "Can you lend us your
valise?" and he just laughed at us because
-
no he didn't wanted to but there are some
partnership you can have. [There] is a
-
group of manufacturers that offer that
kind of information if you pay every month
-
a very huge sum of money.
Q: [...] pay 6 Euros and can be used for
-
an hour.
P: I haven't heard of it I just saw a big
-
numbers and I told myself, okay, I find
another way.
-
Herald Angel: Microphon 3.
Q: A great presentation. Thank you very
-
much. I was just wondering, how much more
work is needed to actually control your
-
car with an Xbox controller? Laughter
Applause
-
P: I was asked this question before. Not
that much Laughter if you find the right
-
guys with the right amount of knowledge.
The idea that you'll get, of course. You
-
have to find a way to control the car from
the CAN bus which is not something that
-
easily done. Because for all I know right,
now the CAN bus I was only used for
-
broadcasting information not really using
this information for real-time data. We
-
actually tried to find some way to know
how the ECU's interact with each other
-
with Young's car. So the idea was that we
go to a field, I am on the passenger seat,
-
and he would just tell me "okay try to
find the ABS ECU I will brake very hard"
-
so he was driving fast breaking. I was
just checking which ECU would actually
-
send something different and after we've
tried to recreate some messages,
-
but without a lot of luck.
So from the CAN bus I don't think
-
that's quite possible. But they did it.
Nissan did it like two months ago with the
-
GTRC. They created a Nissan GTR that is
actually controlled by a gamepad
-
controller. But they have a full robot in
it just controlling the steering wheel and
-
pedal so it's quite easy when you have
money. Laughter
-
Herald Angel: Microphone 2 in the back,
please
-
Q: Okay, hi nice talk. Thank you. First of
all don't play around with the Airbags
-
please. I tried to reverse engineer my old
Mitsubishi - I'm a passionate Mitsubishi
-
driver - please don't try mine. You get
hurt, really. So my real question is: Did
-
you try to reverse engineer cars with an
older bus then OBD, ever? Because mine is
-
from the 90s.
P: Yeah, No I didn't because I had my and
-
full already with the with OBD. To be
honest before this analysis I hadn't
-
touched any kind of bus or any kind of car
systems ever. So I was really discovering
-
everything from scratch. So I just focused
on the OBD port and the CAN bus and stuff
-
like this. But I know there are a lot of
different stuff Valasek and Miller already
-
did different kind of attacks on the Jeep
for example of the Prius with different
-
buses. So I ought to be looking at them
but right now no I didn't do anything else
-
from the OBD or CAN bus.
Herald Angel: Is there another question
-
from the internet? Okay otherwise mic 1.
Q: Sorry, just one sentence. I guess
-
because of the Mitsubishi stuff you've
mentioned the car your parents or so I
-
guess we should talk about the Lancer.
Okay?
-
P: Okay. laughter
Herald Angel: Mic 1.
-
Q: Thank you. There are some other buses
like EtherCAT or Flex Ray in other car
-
manufacturers. What about hacking them? So
you also said, you already said that maybe
-
you will try it in the future?
P: Well quite the same answer also. I read
-
the car CAN books, so I just have a few a
little grasp of other kind of protocols
-
and other stuff like this. Right now I
didn't do anything. I am planning on
-
trying different new buses but right now
just the - I haven't touched them I can't
-
answer and more honestly than this - I don't know.
G: The other thing is that on the OBD 2
-
port you just have access to the CAN bus
and as far as I remember the Flex bus is
-
internal and dedicated to high speed
buses. So it's not as easy to plug
-
yourself onto this bus because
you have to open your car and take things
-
apart and stuff like this. But it's
definitely interesting to look at it also.
-
P: Sorry.
Herald Angel: Okay, another question from
-
the 3, please.
Q: Oh it's 4. Okay, so just a little
-
hint. OBD2 is actually just half of the
fun so you should definitely remove your
-
car radio and check if there's a CAN bus
behind that I know for BMW have it and
-
there of course it's much easier to
control of all of the fancy buttons that
-
you have in your car. Like window and
wipers and all that stuff because that's
-
completely unencrypted and so can simply
listen on this and also send your own
-
commands.
P: Okay, so, check the other CAN bus in
-
the car, right?
Q: Yeah it's I mean it's maybe the car
-
radio, because you don't have to cut
anything just plug it off, take an adaptor
-
and put your own bias on that.
P: Thank you. Maybe another talk.
-
Herald Angel: And yet we have one question
from the internet now and then the 1.
-
Signal Angel: So there's a person from the
darknet who would like to leak you
-
original diagnostic software for that kind
of hardware and the person wants to know
-
whether you would be interested in that?
P: I haven't heard the end of the sentence
-
but the beginning.
Signal Angel: Would you be interested in a
-
software leak of original diagnostic
software? laughter Actually you don't have to
-
answer that because the person is outside
but if you want to say something you can.
-
P: Coughing You have my Twitter.
Herald Angel: Yeah question please.
-
Q: First thank you for your very inspiring
speech luckily or unfortunately I don't
-
own a car myself otherwise... Well, what I
wanted to say was, you now have your hands
-
on a few Volkswagens. If you could choose
a car yourself what brand would you like
-
to monitor.
P: Ah, to monitor. Actually, what I wanted
-
but I haven't taken the time right now,
was to play with the Lancer, the big mother's
-
bus, because it has UConnect and as far as
I remember it was one of the attack
-
vectors Miller and Valasek used in the past,
so I think I would go with the one with
-
full features everywhere and remove parts
to be able to get to the fun stuff. So I
-
would take one with a lot of electronics,
not too much, because it's expensive, but
-
at least a bit of electronics, so that I
could remove stuff and do interesting and
-
nice stuff.
Herald Angel: Thank you okay and another
-
one over there.
Q: Hi thank you and I enjoyed your talk. I
-
think I read you already online or I read
something about doing that what what you
-
have done. It's really fun just a few
correction to the last part - the
-
transceiver does not do any error
correction it's just a transceiver. And
-
there are chips actually available which
have a cortex m0 and D transceiver on chip
-
for few bucks.
P: Okay.
-
Q: So those chips exist and are used in
automotive and just for your fun for next
-
year: choose the right car just depending
that question from that girl. There are
-
car manufacturers who can do networking
and who can do and your... let's say you
-
are candy with the right brands. Like the
Italian.
-
P: Thank you very much. I have way more
information that when I started this talk
-
which isn't much what I expected at first.
Herald Angel: I would say final question
-
Mic 1.
Q: Very small question but did you
-
consider lifting the front wheels instead
of starting the engine to make it steer
-
easy. Yes I put it on parpar - the block
of cement you find - but it's not the
-
easiest part. What would be easier what
was done was to put cardboard under the
-
wheels to make it easier with a little bit
of oil to turn but here to be able to play
-
without the engine turned on and with
assistic direction. Kind of putting the
-
car on a car lift would be the safest way.
Because just putting the front wheels I
-
wouldn't see anything from the windscreen
which would be a bit disappointing.
-
laughter And yes I indeed I plan to put
it on a car lift soon.
-
Herald Angel: Anyone who didn't get the chance
to pass the question on stage, I'm sure that
-
the speaker's can be approached next to
it. Thank you again for being here and
-
drift on.
P: Thank you very much.
-
G: Thank you.
-
Applause
-
34C3 postroll music
-
subtitles created by c3subtitles.de
in the year 2020. Join, and help us!