-
36c3 preroll music
-
Herald: The following talk of Fabian and
Frederico will be about hacking NFC toys
-
with a chameleon mini. Also, we have
special guests here on stage! What is your
-
name?
Luna: Luna
-
Herald: and
Mila: Mila
-
Herald: Give them a warm round of applause
-
Fabian: Well, hello everyone! We have some
nice little toy for kids. It's, ehm, it's
-
a Tonie Box. You're putting a little
figurine on top of that, and then the box
-
starts playing a song or reads a story,
and the tags are using NFC to authenticate
-
themselves, more or less. And maybe luna
will show how it is supposed to work.
-
Luna, möchtest du das einmal vormachen?
-
Music
-
Fabian: Really good!
Frederico: So, once you put in the the
-
figurine, it plays, and stops, and it
starts again with another one
-
Fabian: Yes that's fine! We got the
information from a forum where they just
-
tried to hack these things and they stated
that it was too difficult to do it with
-
the chameleon mini, and that was like a
challenge to us, since we are maintaining
-
the github repository, which is open
source, so we just did it yesterday and
-
the kids can play with it today. We
started by analyzing the communication by
-
inputting a sniffer. We just received the
communication from the box to the tag and
-
we looked at it what is actually a
incomprehensible authentication
-
happening. What we see here is the log of
the chameleon mini. This is ISO 15 693 and
-
the marked up part is some proprietary
commands. And from the forum, we knew that
-
it is ICODE-Tags, so we just looked it up
in the datasheet, and the command which we
-
are seeing here is "get random number". So
the tag responds with a 16… 16 bit random
-
number…
Frederico: …which is not shown here
-
because, sorry, it's only one-side
communication sniffing, so we have only
-
the commands that are given to the target
from the reader. So here we can see the
-
random part of it, and we'll just deal
with it later on, and we'll explain to you
-
how we broke it nonetheless.
-
Fabian: This is the normal ISO 15
-
inventory command that selects a tag and
expects the UID. But we are not
-
authenticated right now so the tag goes on
with the set password command. And that's
-
quite interesting: It is a 32-bit password
that is XORd with a random number. Twice.
-
So no real crypto here. And then we see
that we get selected, and here we see the
-
UID of the tag. So we can work on that. We
implemented the get random number command
-
and the set password but we just did not
send a random number back. So we just sent
-
zeros and that's when we get the password.
Then we emulated it, and let's take a look
-
at the log again.
Frederico: This is the full emulation log,
-
so when I finally have both transmission
and reception from the reader, so we are
-
receiving data from the reader, and we are
sending back transmission of – this is our
-
this random number which is a zero zero
zero zero. So we are sending all zeros.
-
Then, it means that the password that will
be sent by the reader to the tag will be
-
XORd with only zeros. So, this is the
authentication command, and you can see,
-
now we have the password in plain text.
Because they simply XORd it with the… with
-
0. Now we finally have the password, so we
can also use it to read the other tags.
-
Because we actually need to authenticate
in the right way, with proper tags. And we
-
can read them and – if Mila… yeah… thanks
Lula! It should be emulating a real target
-
beeping from box
Music playing
-
Frederico: It's indeed emulating a real
target. So once you have the password ,
-
you can authenticate, read the data from
the from the tag, and reverse-engineer it.
-
But actually, it's not even needed.
Because somehow , the… the box is trusting
-
the UID itself. So once you have emulation
in place and you can read the UID from the
-
sniffer we had before, you already good to
go. You now have a perfect emulation and
-
the kids can now play without
incomprehensible toys
-
Fabian: The interesting thing here is that
we did not even start to read the tag, the
-
actual data on the tag. As you see below
here, we just sent back zeros and the tag
-
still plays. So it doesn't even care
what is written on the tag, they just
-
check the UID once you put the tag on top
of it and then you can just create a nice
-
little backup. If the kids are breaking
the toys or you exchange some figurines
-
with your friends and…
Frederico: No. No, that won't would be
-
legal. Who would do that?
Fabian: I won't do that, but Mila might!
-
Frederico: We speculate that the data in
the tag might be used to authenticate the
-
first time with the box. Because once you
buy a figurine it's linked to your account
-
and probably it's… that they have decided
it's used only the first time. So then
-
later on, the Box just stores your UID and
then it authenticates. And that's the
-
reason why the Box does not care about the
content, because it recognized the UID as
-
one, it's already saved inside the thing.
Fabian: Yes, and… but we did want to read
-
the tag anyway. Actually we cannot do it
with the Chameleon Mini right now, because
-
there are some missing implementations. So
we would like to join you to contribute
-
something on our GitHub project. We
quickly scripted something and I'm I'm…
-
I'm going back… in Python for another
reader, so we could read the tag and dump
-
it. But we did not upload it to the
Chameleon since we are already getting a
-
full emulation on the tag. So we just save
the time.
-
Frederico: It will be on my gist for the
time being I guess, because I need Python
-
script to read those tags which are not
totally supported by many readers now. You
-
have to go to the bare commands. There is
no read support really we made support for
-
phones or something like that once the tag
is in privacy mode.
-
Fabian: Well, we are already finished
Frederico: Yeah. We didn't have much to
-
say I guess.
Fabian: We'll just link the GitHub
-
repository that's where you can also ask
questions if you are playing with the
-
chameleon and don't know how it works or
getting stuck on something. We will be
-
also here around for questions and
answers, and if you want to buy a
-
chameleon you still can do. You just have
to find this man.
-
Frederico: The yellow guy
Fabian: At his parking spot which is up
-
there, A2. Well I just found him, he's
right in front of me. What a coincidence!
-
And
Frederico: That's it I guess.
-
Fabian: That's it.
-
Herald: Thank you Fabio and Frederico and
especially thanks to Luna and Mila! We
-
have time for some quick questions I
think. Are there any questions? One
-
question I see there. You were first.
-
Q: From the point of what you know now, do
-
you think it's possible that we have some
kind of repository where I can download
-
codes and play anything?
A: Yeah, it's already available in my own
-
fork of the repository, but we are
probably gonna merge it in the main one.
-
We will just tidy up the code and, it's a
bit hacky. We will do a pull request and
-
then we will merge it into the main GitHub
repository, in a couple of days . But
-
still, it's available as of now on my
GitHub repository.
-
Q: ok following question, on it there is a
function I think that people can use this
-
figures to record something, and this is
saved in the cloud. Is, could this be a
-
problem for privacy if I can technically
clone other recordings from random people?
-
Q2: Yes, if someone records his own
stuff, like secret messages, you can
-
download it.
A: It depends.
-
Q2: From my understanding yes, sorry
A: He's the owner of the Box!
-
Q2: From my understanding, yes, because
you can upload your own, say, private
-
discussion with your wife to one Tonie and
since it's all, it goes through their
-
cloud, and is stored on this box, if
someone can copy my UID, very likely he
-
can listen to what I was saying to my wife
on this Tonie box. Yeah, this could be
-
some privacy threat, while it's a bit far-
fetched in the end of the day that's
-
mostly children's music.
A: Well it would be nice if, if you want
-
to take a look at it, the code is online
and you can do so and tell us!
-
Q: Just a quick comment on that. As far as
I know, you can like, if you have this
-
Tonies where you can speak something on
them, you can enable others to take your
-
figurine and put it on their Tonie box, so
you can enable this function or you can
-
disable it. So even if you, as far as I
know, even if you cloned this UID, you
-
cannot necessarily put it on some other
Tonie box and listen to this private ones
-
at least. The other ones that would be
possible but the private ones, the ones
-
where you can put some music or some
speech on, these you can disable the
-
function to share them. That's what I
know.
-
A: Thanks
H: So, any more questions? One more
-
question or comment?
Q: I was just wondering since now many
-
kids will start going with the Chameleons
through the supermarket – which is
-
illegal! But most kids are too young to be
prosecuted, no? And then they would steal
-
several UIDs and, or maybe exchange them
with friends, I was wondering, where do we
-
collect the archive of valid UIDs and what
the content is, say with which I'm using
-
A: I'm not hosting it. I'm not hosting it.
Q: Oh you are only into backups, into say
-
a privacy backup
A: Well, er, we have a little… – strict
-
backup only! – comment within our source
code that we know which UID belongs to
-
which tag we worked with, but we will not
expand it.
-
Q: Okay so thank you, we have to collect
it somewhere, the criminal stuff. Thank
-
you!
A: On your servers, [name]!
-
36c3 postroll music
-
Subtitles created by c3subtitles.de
in the year 2021. Join, and help us!