< Return to Video

36C3 ChaosWest: Look at ME! - Intel ME Investigation

  • 0:00 - 0:18
    36c3 preroll music
  • 0:18 - 0:28
    Herald: Okay, let's go? You're ready?
    Let's hand for Cyrevolt, please.
  • 0:28 - 0:31
    applause
  • 0:32 - 0:36
    Cyrevolt: Alright, hello everyone. I am
    Daniel. You might have seen me before, I
  • 0:36 - 0:42
    sometimes speak about open source
    firmware. And at some point I also had to
  • 0:42 - 0:49
    start to look into more specific stuff. So
    this talk here is about the Intel
  • 0:49 - 0:54
    Management Engine, sometimes also known as
    the unmanageability engine, it always depends
  • 0:54 - 0:58
    on, you know, what website you find or
    what person you ask, you might get either
  • 0:58 - 1:09
    response or both. So let's see. A little
    disclaimer first: I am not trying to blame
  • 1:09 - 1:15
    Intel for anything they have done, or
    something. This year is not about whether
  • 1:15 - 1:20
    we can trust Intel as a company or any
    other chip vendor or vendor in general,
  • 1:21 - 1:28
    because I cannot read their minds. I don't
    know their intentions. What we can only do
  • 1:28 - 1:34
    is see what they put out in the public or
    what we find in the machines that we buy.
  • 1:38 - 1:43
    And on the other hand, we don't really
    know that much because especially with the
  • 1:43 - 1:49
    Intel ME there is not very much public
    information. So people try to figure
  • 1:49 - 1:55
    things out, there are forums, there are
    certain small projects, like analysis
  • 1:55 - 2:02
    tools and stuff, but all of these are
    based on reverse engineering or educated
  • 2:02 - 2:10
    guessing or whatever people could just
    figure out. And me especially I don't know
  • 2:10 - 2:15
    very much about it, actually. So I'm just
    here because I'm interested in the field
  • 2:15 - 2:21
    and at some point there was an event which
    made me look into it, but more about that
  • 2:21 - 2:29
    later. The agenda for today: I will give a
    very brief introduction, it will be a very
  • 2:29 - 2:36
    bold introduction, though, into the entire
    field around firmware, then I will be
  • 2:36 - 2:44
    switching over to the open source firmware
    stuff we do, I will briefly try to explain
  • 2:44 - 2:54
    the hardware we know as Intel's x86
    platforms, then I will try to give you a
  • 2:54 - 2:58
    motivation to also look into what I have
    been looking into and tell you what made
  • 2:58 - 3:05
    me look into it, I will give you some
    entry points for analysis, and eventually
  • 3:05 - 3:13
    we will just get a conclusion and start to
    think about what we just heard. So for the
  • 3:13 - 3:19
    introduction: Who of you in the audience
    has already done something with
  • 3:19 - 3:26
    microcontrollers? Please raise your hands.
    Okay, we see lots of hands here. And in
  • 3:26 - 3:30
    fact we actually have like hundreds or
    thousands or millions of microcontrollers
  • 3:30 - 3:39
    here, right, so all the lights we see over
    here, there are ESP8266, that board, you
  • 3:39 - 3:45
    see in the middle there's Arduino and
    there's something which I like to call NOT
  • 3:45 - 3:49
    - the network of things, because
    apparently you just need a network you
  • 3:49 - 3:53
    don't really need the Internet for it. And
    we can connect all of those devices. We
  • 3:53 - 4:00
    can remotely control them. And I'm now
    going to show you, that what you have in
  • 4:00 - 4:11
    your laptop is actually the very same
    thing. Now this is lots of bullet points,
  • 4:11 - 4:17
    and I'm very sorry for it, but this gives
    you a feeling of what we are dealing with
  • 4:17 - 4:25
    here. In your laptop you have multiple
    such controllers which are very similar to
  • 4:25 - 4:32
    the Arduino or ESP microcontrollers that
    you already know. Some of them are for
  • 4:32 - 4:38
    very, very specific functionality - so
    everyone knows the USB controllers, we
  • 4:38 - 4:46
    have USB controllers, we have PCI, where
    other devices are connected, we have GPUs,
  • 4:48 - 4:57
    we have a whole lot more. But the very
    core - that's what is known as the chipset
  • 4:57 - 5:05
    and the CPU. It can sometimes also be one
    single chip, like in this graphic here,
  • 5:05 - 5:10
    which I have borrowed from Intel - just
    adjusted the colors a bit to make it fit
  • 5:10 - 5:14
    with the slides - and here you can see
    lots of lines connecting all of those
  • 5:14 - 5:22
    controllers. Now there's some other
    controllers which I also started to look
  • 5:22 - 5:28
    into. They are called the embedded
    controller which is an additional
  • 5:28 - 5:35
    microcontroller on your laptop for power
    management, for controlling the charging
  • 5:35 - 5:42
    circuit. When you connect your charger to
    your battery you will see an LED, that's
  • 5:42 - 5:46
    what this device is doing. It might be
    connected to a keyboard, to your mouse.
  • 5:47 - 5:53
    And there is a very similar concept also
    for servers. It's called BMC or Baseboard
  • 5:53 - 6:00
    Management Controller. It's purpose is to
    remotely control a server, so you don't
  • 6:00 - 6:05
    have to actually go to a data center.
    Imagine you're administrating 5 data
  • 6:05 - 6:10
    centers all across the world, you can't
    literally be in all of them at the same
  • 6:10 - 6:16
    time. So that's why they came up with an
    interface to remotely control it and
  • 6:16 - 6:20
    they've made a dedicated chip for it which
    is also connected to many devices on the
  • 6:20 - 6:26
    server platform. Then there is one thing
    you might also have heard about: a so
  • 6:26 - 6:34
    called TPM - a Trusted Platform Module -
    and it's main purpose is to give you a
  • 6:34 - 6:40
    very small trust anchor from which you can
    run all of your top-level applications,
  • 6:40 - 6:47
    below which is an operating system, which
    is actually running after a bootloader,
  • 6:47 - 6:51
    which is actually started from your
    firmware, which is actually loaded from
  • 6:51 - 6:59
    your chipset. And that's how deep the
    rabbit-hole goes. Now let's look at open
  • 6:59 - 7:09
    source projects. We have projects for all
    sorts of features around the CPU. The CPU,
  • 7:09 - 7:15
    before your laptop can even start up, it
    has to be initialized. It also has to know
  • 7:15 - 7:21
    the RAM. When you boot up a machine it
    doesn't yet really know anything about
  • 7:21 - 7:30
    RAM. That's what the coreboot project is
    doing. Now today we have a bit of a
  • 7:30 - 7:36
    problem, because we don't have enough
    information to actually program coreboot
  • 7:36 - 7:44
    for modern machines. So there is a
    different approach now. You know the UEFI
  • 7:44 - 7:52
    or Unified Extensible Firmware Interface?
    It's a bit of a different approach also to
  • 7:52 - 7:58
    initialize hardware but also to hand over
    to an operating system. But the thing is
  • 7:58 - 8:02
    there is lots of drivers in there and
    stuff. So we want to replace that with the
  • 8:02 - 8:06
    Linux kernel - that's what the LinuxBoot
    approach is doing - there're different
  • 8:06 - 8:12
    implementations - there is Heads, there is
    u-root. And that's how we can start modern
  • 8:12 - 8:19
    machines with a bit more knowledge. For
    embedded controllers we have the projects
  • 8:19 - 8:24
    from Google for the Chromebooks. There's
    lots of open source implementations but
  • 8:24 - 8:29
    they only apply to very specific hardware.
    You could find all of those stuff on the
  • 8:29 - 8:36
    web of course. And, then System76 is also
    currently working in that field for their
  • 8:36 - 8:44
    laptops, and eventually for the BMCs I
    just introduced you to, there is also two
  • 8:44 - 8:52
    projects there is the OpenBMC project and
    the euro project. Okay, so that's how far
  • 8:52 - 8:57
    we are, but that's not what I'm talking
    about today, I'm talking about something
  • 8:57 - 9:06
    else. And that's why we have to take a
    closer look at Intel x86 hardware. This
  • 9:06 - 9:12
    here is an example of a platform which has
    a dedicated chipset and a processor.This
  • 9:15 - 9:20
    is also a graphic I borrowed from Intel,
    once again. It shows you where all of
  • 9:20 - 9:27
    those peripherals are connected, so,
    again, we have USB, we have Ethernet, but
  • 9:27 - 9:33
    there is more to it, actually. And, you
    can clearly see that this chipset here,
  • 9:33 - 9:39
    it's quite a large box and there is a
    reason for it, because that's where
  • 9:39 - 9:46
    actually most of the chips are connecting.
    That's why Intel calls it the Platform
  • 9:46 - 9:53
    Controller Hub, or a PCH for short. Now
    let's look closer at the Denverton
  • 9:53 - 9:58
    platform. Denverton is one of those model
    names for the platforms - Intel always
  • 9:58 - 10:05
    comes up with these names and here we have
    a very brief summary of what peripherals
  • 10:05 - 10:12
    we have and if you look very closely in
    the upper right corner, there is two so-
  • 10:12 - 10:20
    called engines mentioned: one of them is
    the Innovation Engine, the other one is
  • 10:20 - 10:25
    the Management Engine, which we're dealing
    with today. The Innovation Engine has a
  • 10:25 - 10:32
    very brief description, it says it's
    something about innovation, it's something
  • 10:32 - 10:37
    about firmware, but actually I have not
    yet found any use for it but it's there in
  • 10:37 - 10:42
    your hardware. So if you have a Denverton
    chip in your laptop, or wherever you might
  • 10:42 - 10:47
    find it, you have some features there but
    I don't know what they are for. Okay, so
  • 10:47 - 10:54
    let's look at the Management Engine,
    today. Because the thing is: Hardware is
  • 10:54 - 11:02
    evolving. The Management Engine today is
    not the Management Engine from a few years
  • 11:02 - 11:07
    ago. So with new hardware we get different
    chips over time, the y are attached to
  • 11:07 - 11:14
    different other peripherals over time, and
    they're given different purposes. So
  • 11:14 - 11:22
    basically the ME itself is just a
    microcontroller like Arduino and it's part
  • 11:22 - 11:28
    of your chipset. If you have a combined
    chipset and main processor, it's in that
  • 11:28 - 11:33
    one single chip and that's where it is.
    But that's not where it started. It
  • 11:33 - 11:40
    actually started as the so called Active
    Management Technology. The idea was that
  • 11:40 - 11:45
    you could remotely control a device and
    provision it, just like what I described
  • 11:45 - 11:52
    you as the Baseboard Management Controller
    for servers. It's the same thing but for,
  • 11:52 - 11:57
    let's say, laptops, desktop PCs. Imagine
    you're running a very huge company and you
  • 11:57 - 12:03
    have hundreds of devices to maintain. Now,
    you have to this BMC thingy for servers
  • 12:03 - 12:07
    and this thing here for your desktop
    devices. Now the question is: why is it
  • 12:07 - 12:17
    actually connected to all of those
    peripherals? First of all there was a bit
  • 12:17 - 12:25
    of a renaming recently: it's no longer
    just called the ME, it's called the CSME:
  • 12:25 - 12:33
    Converged Security and Manageability or
    Management Engine. It can load your
  • 12:33 - 12:40
    firmware and verify it and with that
    firmware we are now talking about the host
  • 12:40 - 12:46
    CPU firmware. That thing that coreboot can
    be doing or what your vendors UEFI
  • 12:46 - 12:54
    firmware is doing. If that firmware is not
    as expected, which means it's not signed
  • 12:54 - 13:03
    with a certain key from either Intel or
    your OEM, the equipment manufacturer which
  • 13:03 - 13:12
    can be HP or Asus or whatever, then your
    laptop might not boot. That's a feature
  • 13:12 - 13:20
    it's a security feature. Now the problem
    is: if we want to legitimately replace the
  • 13:20 - 13:27
    firmware with our own implementations we
    can't do it. If this certain feature is
  • 13:27 - 13:32
    activated. It's also known as boot guard.
    But, again, this is not what we're talking
  • 13:32 - 13:42
    about today, I want to look at something
    else. This here is how your machine boots
  • 13:42 - 13:50
    up: On the left-hand you see the flow I
    just described you, what the ME is doing.
  • 13:50 - 13:55
    You press the power button on your
    machine. The ME is coming up, it's
  • 13:55 - 14:02
    initializing itself first with its own
    firmware, that's the RBE-phase - a bit
  • 14:02 - 14:10
    more about that later. Then there is a
    bringup phase, which hands over to the ME
  • 14:10 - 14:16
    operating system, if that version of your
    ME actually has an operating system, which
  • 14:16 - 14:26
    is not necessarily the case. It will reset
    the CPU itself. It will trigger the
  • 14:26 - 14:32
    firmware on the CPU to start, that's where
    coreboot could take over or your vendors
  • 14:32 - 14:39
    UEFI firmware, it notes some microcode
    updates, it comes to the initialization
  • 14:39 - 14:45
    phase where you get RAM and the CPU and
    eventually all the features you have in
  • 14:45 - 14:52
    your chipset itself, until you can boot
    your host operating system. Now at the
  • 14:52 - 14:57
    same time there is two more chips even
    being powered on: one is the PMC, the
  • 14:57 - 15:02
    Power Management Controller, which also
    gets some updates or patches from the ME
  • 15:02 - 15:07
    firmware, and the EC, the Embedded
    Controller, I already described you, which
  • 15:07 - 15:16
    is just running in parallel. But in fact
    these are all connected to each other. And
  • 15:16 - 15:20
    here's some of the features summarized
    which we have in ME: so the Active
  • 15:20 - 15:25
    Management Technology is implemented for
    example in the Linux kernel, there is a
  • 15:25 - 15:33
    driver for it. It could do hardware
    monitoring, it can monitor if your chips
  • 15:33 - 15:40
    are overheating, it can have other sensors
    connected to it, it can do power control,
  • 15:41 - 15:45
    that's why I just described you, just like
    a BMC you can power cycle your system
  • 15:45 - 15:50
    through it. You could update your
    operating system out-of-band, so not like
  • 15:50 - 15:55
    using apt-get upgrade or something. No,
    instead you would just do it from outside.
  • 15:58 - 16:04
    So you could reformat an entire disk,
    replace it with a new image. You have a
  • 16:04 - 16:10
    bit of storage and you even have a proxy
    for a keyboard and mouse and the video
  • 16:10 - 16:17
    interface, so it's like VNC literally.
    That's what we know from the public
  • 16:17 - 16:24
    documentation. Now the interface that is
    implemented in the Linux kernel has been
  • 16:24 - 16:30
    extended a bit. Now we have a dedicated
    chip, which was pulled out of the ME, the
  • 16:30 - 16:36
    ISH, or Integrated Sensor Hub. It just
    does the very basic things I just
  • 16:36 - 16:40
    described you about sensors just in a
    dedicated chip. That's a good development
  • 16:40 - 16:45
    actually because now we don't have a
    single point of failure which has
  • 16:45 - 16:51
    everything, we have a single point of
    failure which has everything but this
  • 16:51 - 16:58
    part. There is BIOS extensions. In your
    host firmware there can also be certain
  • 16:58 - 17:06
    libraries or drivers which are connecting
    to the ME. You can control the ME through
  • 17:06 - 17:13
    it. If you have a business laptop you
    might be running the corporate version of
  • 17:13 - 17:19
    the ME firmware and then you might press
    F6 or Ctrl+P when booting up, and you
  • 17:19 - 17:26
    might get a prompt. If you are still in
    the manufacturing mode or you just bought
  • 17:26 - 17:30
    the machine very fresh, just type "admin"
    that's the default password - that's
  • 17:30 - 17:35
    publicly documented by the way it's not
    something I found somewhere but in Intels
  • 17:35 - 17:40
    own documentation. And then you can start
    using that feature. So this might apply, I
  • 17:40 - 17:45
    haven't confirmed it, but it might apply
    to the HP EliteBooks for example which are
  • 17:45 - 17:50
    for business use or certain Lenovo
    ThinkPads from the T-series. You could try
  • 17:50 - 17:59
    it on your machines, maybe. Now I've
    already described you that there are lots
  • 17:59 - 18:06
    of different variants and versions of the
    Management Engine. We have a very, very
  • 18:06 - 18:11
    long timeline here, we are talking about
    years starting from 2004 until now, so
  • 18:11 - 18:21
    it's 15 years since the Active Management
    Yechnology was announced until today where
  • 18:21 - 18:25
    we have version 12 of the Management
    Engine. The problem with this timeline
  • 18:25 - 18:33
    here is, again the disclaimer, I cannot
    really verify all of this information. I
  • 18:33 - 18:38
    have mostly gathered it from different
    sources, so don't take all of this for
  • 18:38 - 18:43
    granted. Some of this might also just
    include some educated guessing from my
  • 18:43 - 18:49
    side. If you find any errors, you will get
    the links later, you can file me bugs or
  • 18:49 - 18:54
    send your pull requests. So we're at
    version 12 now. For each version of the
  • 18:54 - 19:00
    Management Engine there's release notes,
    they are public. So in ME 12 they just
  • 19:00 - 19:08
    dropped version 1 for TLS, 1.2 is now in
    and we have a few other features. Some of
  • 19:08 - 19:11
    them I don't even know but you can look it
    up on Intels documentation. Those are the
  • 19:11 - 19:23
    variants we already know, consumer,
    corporate, a slim version apparently,
  • 19:23 - 19:28
    there's the SPS version which was made for
    servers and now there is something called
  • 19:28 - 19:37
    Ignition. Which actually brings us to our
    motivation here. This is an email from the
  • 19:37 - 19:44
    EDK to non-osi mailing list. They
    announced a version of the ME binary which
  • 19:44 - 19:49
    can finally be distributed. So you can
    give it to other people. You couldn't do
  • 19:49 - 19:54
    that before. Well, at least not
    officially. Of course when you get
  • 19:54 - 20:00
    firmware updates from your supplier, you
    get those binaries in a way, but it's not
  • 20:00 - 20:06
    like you download them from Intel
    directly. Which means that now we can
  • 20:06 - 20:13
    offer full images of custom firmware based
    on coreboot, based on this ME binary here
  • 20:13 - 20:23
    and whatever we want to tailor it for. So
    let's follow the yellow-brick road. This
  • 20:23 - 20:31
    is the license. The license allows
    basically only redistribution, you may not
  • 20:31 - 20:37
    make any changes, you may not reverse it,
    you may not decompile it, you may not
  • 20:37 - 20:43
    disassemble it. Now how do we actually
    verify, that it works as desired and as
  • 20:43 - 20:49
    promised? Pay no attention to the man
    behind the curtain! If you have seen The
  • 20:49 - 20:55
    Wizard of Oz, you know the scene. That's
    literally what they want. Their philosophy
  • 20:55 - 21:05
    is kind of a shallow thing, so they don't
    really want to be very open with
  • 21:05 - 21:10
    information. This here is from a training
    slide, it's an official training that
  • 21:10 - 21:15
    Intel is giving at certain events. They
    tell people: "Well, we have lots of
  • 21:15 - 21:19
    firmware developers, we want to support
    them in a way, but not too much actually."
  • 21:22 - 21:28
    I have to be a bit quick because I have
    more slides than time.Here's the vendor's
  • 21:28 - 21:33
    perspective from Intel's FSP white paper.
    FSP is the Firmware Support
  • 21:33 - 21:40
    Package.They're saying they're working
    towards, well, releasing something, but
  • 21:40 - 21:44
    actually not. So if you have a binary and
    it works as desired then it's okay,
  • 21:44 - 21:50
    otherwise, well, not so much but they
    promise it works. And the same applies for
  • 21:50 - 21:57
    ME, I guess. Which is where Dexter's law
    applies, which is saying that only
  • 21:57 - 22:04
    proprietary software vendors actually want
    proprietary software. And now that's the
  • 22:04 - 22:09
    issue, if somebody is attacking your
    system, they do not play by the rules.
  • 22:11 - 22:15
    Let's take some first steps into that
    direction. There are some analysis tools,
  • 22:15 - 22:21
    there's the me_cleaner, MEAnalyzer and
    more. There has been some reverse
  • 22:21 - 22:26
    engineering, not from my side, because of
    course the license doesn't allow it. More
  • 22:26 - 22:31
    information can be found in other talks.
    There was the Plundervolt attack, just
  • 22:31 - 22:38
    recently, which was actually based on
    reverse engineering. And now I'm afraid I
  • 22:38 - 22:42
    have to cut it here. We have security
    issues. We want to analyze firmwaer.
  • 22:42 - 22:54
    Here's a bit of data structures, I will
    just briefly skim through those now. You
  • 22:54 - 23:04
    can approach me later for more. And I want
    to briefly come to this conclusion because
  • 23:04 - 23:09
    this is the important part. So for
    security all firmware has to be open
  • 23:09 - 23:17
    source. Here's the list of acronyms, some
    other talks to refer to again. Thanks to
  • 23:17 - 23:21
    everyone who has actually helped me with
    this, that's all the hacker spaces, I hang
  • 23:21 - 23:26
    out at, the Chaos West team and the stage
    here, of course, and the open source
  • 23:26 - 23:31
    firmware projects. Please come to our
    assembly, it's right over there, if you
  • 23:31 - 23:40
    want to know more. So thanks, first. If
    you have any questions, please approach me
  • 23:40 - 23:46
    now or, well, just in a bit at the
    assembly. I guess we have time for one
  • 23:46 - 23:49
    very small question, now.
    Herald: Yeah, thank you very much, let's
  • 23:49 - 23:53
    have a hand.
    Applause
  • 23:53 - 24:01
    Herald: There'll be two mics, they're lit.
    We have time for one question or maybe two
  • 24:01 - 24:09
    but short ones. Anybody has a question?
    No? About all the fun you can have and not
  • 24:09 - 24:21
    supposed to have. Okay. Thank you very
    much. Okay, in which case let's close it
  • 24:23 - 24:30
    and take your trash, please, and be
    excellent to each. Thank you very much.
  • 24:30 - 24:34
    Applause
  • 24:34 - 24:36
    36c3 postroll music
  • 24:36 - 24:59
    Subtitles created by c3subtitles.de
    in the year 2020. Join, and help us!
Title:
36C3 ChaosWest: Look at ME! - Intel ME Investigation
Description:

more » « less
Video Language:
English
Duration:
24:59

English subtitles

Incomplete

Revisions