Subtitles section Play video
A couple of guys are here. I want to stand in front of you and talk about the PCI express.
Joe and Miles, give them a round of applause. ( Applause ) >> Hey, how's it going? Ok, who
here went to Mike Osman's RF Reflectors NSA Playset Talk? Ok, who went to Josh Jatko and Teddy
Reed's ITC Implant Talk? Who went to Dean Anlooki's GSM talk? Okay. Who here bought any NSA
Playset kit from Vendor Village? You don't have to say if your employer sent you to buy one for
research purposes, you know. So this is Stupid PCIe Tricks featuring NSA Playset PCIe. It
didn't really start out as an NSA Playset talk, but it fights right in because this is a
capability that they've got to have. It's got to be on one of the pages rejected or missing.
I'm Joe Fitzpatrick. I have an electrical engineering education with focus on CS and Infosec. I
spent eight years doing security research, speed debut and tool development for CPUs including
hardware pen testing of CPUs and security training for functional validators worldwide. I also
teach a really cool class, software exploitation via hardware hacking, aka SEx via
HEx, so if any of you are interested, you should google look for that. It's somewhat
safe. It's work safe. And our mandatory meeting, "if Joe Fitz, he sitz". If you missed the hot
tub at Tour Camp, you should go next time. It runs in two years. >> I'm Miles Crabill, I'm a
current student and hardware Newbie, but interested in computer science and met up with
Joe last year and have been working with him on the last couple months on this NSA
Playset PCIe stuff. I didn't come in with much hardware experience SP and I've pretty
much been learning as I went. It's been a great time. So I couldn't show this, of course.
>> Miles has been great because he makes it all look presentable. I'm a hardware guy
and not a coder. So a slight disclaimer, I didn't do really good research, I didn't cite a
lot of people, but there are tons of people who have done PCIe work and other stuff so,
the difference is in line with the NSA Playset goals, we try to make it accessible and
inexpensive. We want any 10 years olds to start doing DAM attacks and memory jumps and
lock screen bypasses. Miles will give us the run-down of what the heck is PCIe, because even
though you might know it, you may not know the next layer in detail. >> Okay. So what is
PCIe? Well, the answer is that PCIe is PCI extending on this old specification. It's been
around forever. It's for fast IO, right? If you have a video card or something like that,
network card, sound card, anything really that goes in an extension, it'll probably on
your motherboard, whether you're on a laptop, desktop, most modern computers use PCI and so
this is how you get fast stuff going on the hardware level. So there are also things that don't
match up. As you see here, they don't look exactly the same. However, PCIe is backwards
compatible with PCI and PTIX. On the lower level you have packets that are being transmitted
across lanes, and so a lane is four wires. When you see on a PCI card something like XX 4 or
X 16, that's the number of lanes and it corresponds to throughput, so the amount of
data you're able to transfer. Most video use X 16, because they're transferring a lot of
data. PCI enables DAM access. So PCI hierarchy. The root complex is the highest node in the
hierarchy and pretty much everything else descends from there. You see the switch
connected to the root complex, and PCI devices will connect to the switch and other PCI devices
can be connected to other PCI devices so you get a whole mess when you try underwriting this
stuff. So switching. This is the inside of the switch. From the upstream you have the bus, and
then you have these virtual PCI to PCI bridges, and then these actually interface with the real
devices that you have connected, the real PCI devices. So the layers of PCI building up from
the bottom, you have RxTX on the physical layer of things, the logical side and electrical side
data and then up to the transaction where you're actually working with packets. I
don't know how well you can see this, but this is the actual PCI spec stuff in the top like
device I.D. and vendor I.D. is how you would identify a device. So diving into that we have
LSPCI output, just checking out a specific device. You can see this highlighted area is the
vendor I.D. of a device, and so you can see this highlighted area is the vendor ID of the
device and so this is how you would check the manufacturer. They all have codes associated
and then this would be the device I.D. so this is like per a specific product or family of
products. Then the revision, so you can see that all of this is just right in these bytes that
you can access through LSPCI. And this is your class. Device class. Yes. So you can see that
this is a PCI bridge that's 0604. It's just the code that's assigned to this type of device.
And so enumeration, as I said before, it gets pretty messy because it's depth first,
traversal of the tree hierarchy and everything like switches and PCI‑ to‑ PCI bridges show up
multiple times. And so any kind of LSPCI VD output is just a headache to look out. It's huge.
So ‑ ‑ >> Okay. I'm back on. Routing PCIe. So we talked a little bit about what PCIe is
from a conceptual level. The fundamental difference is PCI was 32 bits in parallel, a big
flat parallel bus with multiple devices sitting on it. PCI express is this high‑ speed
serial with differential signaling. When you route high‑ speed signaling and high speed
differential signals you have some rules to follow, okay? If you wanted to make your own PCI
express device, you have to follow the step by step complicated mandatory and
inflexible rules to routing PCIE. For every single one of these. Number one, route your
pairs at roughly equal length. That's pretty much it. They made this spec to make it easier for
designing boards, because routing 32 lines in parallel along with the cloth, they have
to be equal lengths. That's a pain in the ass. They said ok, we'll do each pair on it's own,
TX pair and RX pair, and as long as each pair is the same length, the next line over can be a
different length, the next line over can be a different length, which works well when you have a
long card. It doesn't matter. All of that is taken care of by the physical layer of the PCIE.
There's some specs, right? You have to have board traces and 12 inches or less, cards are
supposed to be 13 1/2 total. 2 chips on one board supposed to be 15 inches. And if you follow
the rules, your board might work. If you don't follow these rules, it might still work. So
PCI express 1 X, the lowest common denominator, is 2.5GHz TX, 2.5GHz RX and 100MHz Clock.
That is a common clock and that's actually optional. The device can actually generate
it's own clock. It depends on the system and device. You can do it with the clock. But we'll
throw it in there, just for, you know, because we have room. If we wanted to make a table to
connect this, what do we need? We need something that can do high‑ speed, and PCI express
specifies actually like external cabling and it's really expensive. I don't like
expensive things, because I'm cheap. This is a cross‑ section of the USB 3 cable. If you look
inside, you've got the red and the black are ground to BCC, and the green and white are your old
school USB, USB 2.0 wires, right? Those are designed go up to 240 megabytes, right? That's
what USB megabyte was and that's plenty to carry our clock. You have the two level pockets, the
red, blue, and the purple and orange and those hold the high speed lanes and those go at 5
gigahertz. Right? So we have this cable we can get them for a couple of bucks at pretty much
any store and they carry exactly what they need, they carry 5 gigahertz, 5GHz and 500MHz.
That's actually more than we need. I threw together this little PCB. It looks like a PCIe
card. There's a dotted line in a middle. That's because I'm cheap again. And you can get a 5x5 cm
board for one price and I wanted two boards, but I didn't want to have to pay for two boards, so I
put them on the same board. Cut them in half if you want or use as is. You can see those red and
blue lines those are the top and bottom layers where I just connect the wires together and I
actually did a really bad job of this. You can do your own production stuff, do your own.
You can actually buy these premade from several manufacturers on eBay and all
express and other places in China, but that's no fun. So I made my own. This is what the
board looks like, and I have the cool silk solder mask, silver lettering because that's really
important when you make PCB to have your logo on there. I call it PEXternalizer. There's the
board cut in half at the other end and assembled on the populated board. They're a 1X
PCI express socket up there and the end looks kind of mundged up and molten, that's because I
just got my soldering iron and ran through that to open it up so I could put a 16 X card in.
Here's a quick screen shot basically. This PCI express wireless adapter in, and it's
connected and running, and I can connect to wireless networks. That's all well and good, but
that's old news. What else can we do? What devices can we add PCI express to that don't
generally have it? Have you seen this? Intel Galileo. It's an arduino board, but it actually
has a mini PCIe board on the back. What can you do with that? It's supposed to only work with
WiFi adapters, but that's no fun. Anybody can put a WiFi adapter in an arduino. Yeah,
make light flash. Oh, I'm not wearing that shirt. Oops. Makers make lights flahs. Hackers make
other people's lights flash. I made another version of the board, a mini‑ PCIE version.
I'll show you pictures. We'll look over. I'll actually show you. Oh, whoa. So we've got here
a nice ‑ ‑ oh, there. It's upside graphics card backwards. We've got our Intel Galileo and
flip on the other side we have the mini PCIe card with the USB header. Again it's USB header
it's just USB header and cable because they're cheap. On the other end I have the populated
thingy‑ do which has a little power regulator on the end. We don't have the power supply and
cables and extra VGA to hook it up and show you, but basically we plug ‑ ‑ stay still. I'm
looking at the screen. Whoo! Anybody sick yet? Pop it in the slot. >> Oh, gosh. >> There we
go. So you got that, right? You got it. There we go. You have more than 12 inches. Yeah. Do
you think it still works? Yeah, it still works. And so here's a screen shot. Whoa, here we go.
Actually when we tried it out, we used a bigger graphics card because bigger is better, right?
So wired them up PCIe that tiny Arduino and that nice big burly graphics card hovering over it
and if we hook it and we look, I had to do a little bit of custom building of that, which is
annoying because of the software and I hate software. If you do all this PCIe, same tools as
before. It's on the Galileo board already. You see a whole bunch of 8086, 8086, 8086.
Anybody knows who vendor I.D. that is? All the way down at the bottom is the 10de. Who do you
think that might be? Invideos. So, ya know. Sneak it in there and put it Invidy with Intel in
bed a little longer. Here we go. I hooked you up to my full HD display, to say, hey, I have X
running. There's no keyboard input or anything like that, but at this point it's a software
problem and I'm a hardware guy. It's someone else's problem, right? So let's move on. The
other device I played around with, and I don't have it here to show off is not fully working
yet. This is a Pogoplug. It's a network storage device. It has an Ethernet port and USB port
and you plug it in. It shares it with the whole world. It doesn't tell you about that part. If we
look at two versions of the PCE, the cheap and expensive one. The big difference in the upper left
corner is an extra chip that's a USB‑ 3 chip. You want USB 3 on your very slow network storage
device. The way it's connected is PCI express. If you see on this one, the purple wires on
the left hand side, those are my PCI express lanes. I have TX and Rx pairs and then I've got a
clock line. He took it with my phone through my magnifying glass, but you see on the left
we have a couple tiny little resistors that have it over it. Can you see it? You can't? Oh,
no. You can. So you see right there, there's a couple resistors because the resistance
loaders, you have to put on the clock lines, and over here's they're still very small, but
you see that little brown spot right there and there? Those are capacitors that are soldered to
the tip of USB connector and then the wire is soldered to the other edges side. It looks
pretty fancy. But a year and a half ago I sucked at soldering and still do. You find a friend
who can do it. Thanks, Kenny. He's not here, but you know. Those of you who know Kenny, he
does good work. Again, that goes out to a USB connector, which is the same Pen out as this chain
again. So my plan there is to get it working and see if I can compile those drivers for ARM
instead. So introducing SLOTSCREAMER. This is where we get into the NSA Playset side of
things. It reset our timer. Oh, its 2:16. We're good. Introducing SLOTSCREAMER, its in
all CAPS because it's cool to have things in all CAPS. I've had some critiquing because the
name sounds too good, it's not random and silly enough for NSA Playset because it actually is a
device that goes in a slot. I apologize. Again, I mentioned before I didn't do a lot of
research or citation, but I was at Black Hat and I saw this awesome slide which was from
Steven Weiss talking about protecting date in-use from firmware and physical attacks,
which is kind of what we're about to do. I figured I'd throw his slide in here. Thank you to
all of these people for all the work they have done, because I wouldn't have done this if it
wasn't done before me including all the citations. So it's also really cool to go into someone
else's talk and see my name on it. Whoo. This is my first time talking at DEF CON. ( Applause
) >> It's Miles' first time, too. I'm glad we could have our first time together Miles. (
Applause ) >> A lot of people are playing with this doing these PCI Express attacks, but a
lot of them are using FPGAs. FPGAs are expensive and they're difficult and they're hard and
you have to download like 28 bytes of software to get them working. Which who cares about
that software stuff. So I looked around and found this cool it'll ASIC. It's a PLX technology.
It's a USB 3380 its aPCI‑ to‑ USB bridge that works. It's a USB device port. You can plug it
into your system and load drivers and make it look like a mass storage control. You can
use this configure differently and make a PCI express device work over the USB. You can have
an attached graphics adapter, right? Right? This is a block diagram, one side you have PCI
Express, the other side you have USB. That's all there is to it. You know, every chip that is
configurable is configurable in ways they didn't intend, so that's what I did. They have
this PCI out end point. An endpoint is something that shows up from USB, so from USB ‑ ‑
I'm going really fast, aren't I? Am I going too fast? I apologize. >> We have a lot of
slides. >> We're on 49 of 92. Okay. We're actually going a little fast. Let's slow down.
PCI out. Okay. It's actually good, because I thought we wouldn't have enough time, and I
was going to tell them to go away. Since he came at the right time. How is it going? >> Good.
>> What's all this? >> We heard this track was going a little bit fast, so we thought we would
mellow it out a bit. That's why we're here. How are they doing? ( Cheers and applause ) >> I
guess they really want you to slow down. The slides are a bit of an eye‑chart, although when
you had the picture of the device up, the board. I got the detail on that. >> All right.
New speakers to DEF CON. >> Cheers. ( Applause ) >> I did that for all of you. Hold on.
Thank you. Can I continue now? PCI out end point. This shows up on the USB side of things,
right? This is a packet format. We need to write a bunch of bytes for USB so this guy and
actually fills out what's called a PCI master control register and the PCI master address
register. What happens is when these registers get filled up, the chip, this guy, receives the
data from the USB side. He takes it into his little hardware stuff. Don't worry about it,
it's hardware. You guys wouldn't understand and he generates a PCI Express packet. Which goes
out over PCI Express to the root complex, the root complex processes it, does whatever you
want or whatever you told it to and sends back a response. Once we enabled it, so this comes out
of the spec, sorry for the eye chart, if we look down here we have this little end point
enabled bit. So you think something silly like this would be off by default. But look
actually oh, Others = 1, it's on by default. How convenient. This makes sense because if you look
at the drivers for this device, the standard Linux drivers for USB gadget events, which lets
you use it as a device port so you can turn your computer into a mass storage controller, they
have this little section where they explicitly disabled these dedicated end points. And I
think in another kernel version they have like, for security reasons, we need to disable
these end points, which is great. I like when I see things like that in documentation. I
talked to PLX service engineers asking about this. We don't do that. That's not what it's for.
We can try it and see if it works. Didn't really say what would happen if I turned it on
in this mode, but I heart undefined behavior. Is that sticker still on there? At least
it's not on my shirt. Thank you, Mike, for the shirt. Anyway. So let's enable it. We're still not
going too fast. I showed you the three registers here. If we look inside, this is the PCI master
control register. Basically what we do is we need to write bits that will end up in here and do
these things that it says and this bits 5 to 4 two bits, we can basically say, do a memory
read and memory write, or an IO read, an IO write or conf read or config write, or PCI express
message. Let me explain for a second what each of these are. Memory read/memory write is
exactly that. PCI express devices need to have the memory maps so they can read and write
to buffers in the main memory. So if you want to read some memory, we can do that. If we
want to write to memory, and we can do that. IO read and write, really nobody uses this anymore,
it's all legacy stuff, but we might as well try it because all of the Legacy stuff wasn't
tested as well as all of the new stuff. Configuration read and write, those are when we are
actually directly accessing PCI Express devices. So when you enable things on the graphic
cards you do a configuration write to a bunch of registers on the card. That's what maps to
the table of class codes and stuff Miles talked about briefly before. Another eye chart. This
is all well and good, but we need to have this device just work. We want to plug it in a
socket and have it do stuff. We don't want it to deal with loading drivers, because who is
going to load drivers to a fax machine? No one clicks on silly things, right? So we can modify
the firmware. Basically there's a little chip on the POX board. Where is my board? That will
hold configuration data, and when the chip turns on and powers up, it will read this
data and set the registers right. You think, okay, a lot of work put into this custom
firmware that I made, I've been talking all about it, you think I did a lot of work? I'm lazy.
It's these. How many bytes is that? That's it. That's the content of the E prompt. To
decode it for you to those that speak XXD. Basically I have two registers I wrote to. The first
register that 497000049, right, that's the content of the what ports to a register and I slap
the bit to enable USB. When the device turns on, first thing it does is enable USB. Second thing
I do is this E414BC16. That's the vendor ID and device I.D. of the Broadcom secured digital
card reader. Because it's a secured digital card readers everyone trusts them. If I tell
them I'm one of them, they'll turn everything on. They'll turn on bus master even if they don't
need to. That's pretty much all that I did to configure this chip to make it do my bidding.
So let's attack the PCIe. >> So as Joe said, who wants to load a driver? We have this whole
category of target side software where we have to make sure the target has all the stuff we need
to get the attack roll, but no, no, nothing. So on the attacker side, we actually do have some
stuff. So what we do is use high USB, which is a nice Python library for interacting with
devices over USB to interact with the PCI end points on the swat screen, the USB 3380. So
this is just a little snippet of code showing a dirty PCI memory read and write by PyUSB. At the
top you see read where we're actually making a packet to send and you can see this OXCF and
the F denotes the read, and down at the bottom here you see the 4F means that it's a write and
so now we have a demo. >> Well you ‑ ‑ >> So you do the whole switches of screens here.
Basically we have this little device here. It's a Nook Intel makes them, they're tiny and
they compute. We hook up this device to a little board. It's upside‑ down. >> Oh, no. It's
still on my screen. >> I stepped on the power strip. You're flaky power strip. I saw the light.
There we go. I have to reboot my Nook. Luckily it boots fast. Oh. I'm sorry. Please. I won't step
on it again. I promise. What time is it? 2:27. Are you ready in no. We need to unplug and
play it. That's not it. That is it. You just need to mirror your screens. I didn't recognize the
picture. It's not my desktop. I never got around to changing the default desktop anyway. That's
my fault. There you go. There we go. Patience, patience. So I'm using Python, and I'll stay away
from the power strip. I'll step back from here. Can you see that? It's backwards, isn't it?
>> Yeah. >> I'm sorry. It's a crypto challenge. So what I'm going to do is basically I wrote
this little sampler in init PCI and I'm going to hit enter and it actually worked. Whoohoo! So
it initialized the link from this PC to the hacker's hack device over PCI. It found two
endpoints 0x0e and 0x0e out. Those actually line up to what I showed you on the chart before.
I'm sure you all wrote those down. Then I'm going to read PCI and so I give it an address and
how many byes to read and right there and I just get a whole bunch of, it's Python software
you see, Fs and 0s and Bs and some strings and stuff. So yeah I just read memory. This is off
of this guy on PCI. Whoo. It's not the greatest demo, but you know, we're getting there. All
right. >> Okay. And so how many of you have heard of inception, not the movie? That's a few.
There's a cool utility that Carston wrote that exploits the DNA features of fire wire to
basically patch some ‑ ‑ you might see here there's some selections that you can choose
to target with signatures. So it can identify based on the signatures certain operating
systems and inject code into it bringing it up. For example the OSX one makes all passwords
nothing. So what we have instead of inception, we have into PCIe, which is an extension that
we're ‑ ‑ >> It's an anagram. >> I didn't know that. Yeah, so, we extended inception to PCIE
and we're still working on it. Ironing out bugs and that kind of thing, but that's the goal.
>> This is right from Carson's documentation. What we're doing is hopping through memory and
looking for the page that contains whatever authentication or password. You did a whole
process up in the password. Yes, you got it right and no you didn't at the very end. It has a
signature, which is listed as a chunk of memory data. It looks for that signature at a certain
offset in every 4k page. So it doesn't matter if you have ASLR or anything within a 4k page it
always ends up the same spot. Then you go and patch it, and the patch goes to offset.
Basically just change the jump to an up or something like that. You bypass, so when you type in
blah, blah, blah enter, no matter what blah, blah, blah is it lets you bypass the locked
screen. ( Applause ) >> We didn't do the work there. Other people have been doing the
Spyware stuff for a long time. Don't clap. We just imported into this PCI Express interface,
which is great because you don't require drivers. Firewire require that the host offers
install drivers, and you're supposed to talk about this later on. >> So you see here the
chunk, which is actually the signature that you're trying to look for to identify in this
case OS X 2.9. So earlier this week Joe and I were in a hotel room taking dumps together. As
you can see from this little highlighted into PCIe business and all of the SLOTSCREAMERS on
the desk. I decided after taking all those dumps, Jason stool analysis, you've heard of
volatility is a cool analysis framework, so this is the demessage log of the attack
straight off of the victim. You can see my solarized color scheme there. So at the top you
can see the thunderbolt first being recognized when plugged in, and then some PCI
configuration going on. And I decided, hey SHTHS why not do more analysis because the
utility has all these nice scripts? This is just another dump. This is a MAC that we're
dumping apple dot something, something, something. And various other ‑ ‑ >> I was
looking around for the files, and I find some of Miles' cookies in his dumps . >> Here
you can see, I don't know if its major version or minor version what it means, but I'm running
10.9.4.6 OS X. I had the perfect amount of memory, 4 gigs, on this machine not for not
actually using things because these kind of attacks are a little limited because of PCIe
is at 32 bit addresses and so we can't actually go over the 4 gig over the threshold. However, if
you know what you're doing, 4 gigs is for our assessment. >> You know what thunderbolt is.
It's fun stuff. It's basically PCI Express out of your system. Kind of that whole USB crap, but
without the sketching boards and stuff. When you have Thunderbolt, you have two chips,
and it's straight from the thunderbolt device programming guide, and you have a chip
inside your Macintosh and you have a chip on your device. The chip takes PCI Express in
display port in and they crunch it together into some other physical layer really fast to
transport mechanism, and the other side extracts what it needs to, right? You can also
even pass the stuff through. You can connect a display port to something else, daisy chained
along the end or fun stuff like that. Of course, we try to plug our device into the PCI express
thunderbolt enclosure, and in line with the NSA Playset, we decided to give that a new name.
So HALIBUTDUGOUT is the slotscreamer when inserted into a thunderbolt enclosure. And
you'll see the little logo for Great Scott Gadgets, he's awesome, he sent me a bunch of
hardware when he heard what I was working on and that kind of motivated me to keep working on
this. Thank you, Mike. So I'm forgetting what's next. In my mind there's a gap here. Again,
we talk about DMI. People have showed off the DMI for a long time and they're inaccessible
they didn't give full disclosure on exactly how to do it all or the code for the FPJ or anything
like that. So in line with the NSA Playset, there's a little page, click on there. We have
all of the utilities and firmware available for you to download and do this yourself.
The hardware itself is this ‑ ‑ right now I'm using a reference board, and you don't even have
to solder to make it work, right? You buy the reference board from a sketchy company in
China, H.W. tools.net. I sent thousands of dollars and they sent me cards and they're pretty
reliable. And I've talked to their tech support a few times. They're pretty good with that.
That's a device on there. Its got the chip on there. Instead of that, there's a little bit of
hardware hacking. You have to find a jumper. Do you remember what jumpers are? You have to
put it over the first set of pins to connect the E prong with that chip right there. And then
you have to go and flash it yourself. We sold a bunch of these in the vendor area
yesterday all preflashed and ready to go for all of you wants to go back to the undisclosed
employers to show off what you learned at DEF CON. All the software is on the NSA play set
get DAIB hub. We put it all up there, did you make it all private? It will be up there
very soon, but now that we've got all of you basically enabled to dump people's memories and
check out their dumps and modify and do all that stuff, what could be done to fix this,
right? Part of the NSA Playset mission is like ok state actor has had this capability for a
long time. Forensics has had this ability. Now that all of you have this ability, maybe
they'll actually fix it. I started with an anti‑ Apple, anti‑ Thunderbolt slant to this,
but it actually came out pretty good. In Linux, if you look for this Bus Master enable bit, any
device plug in the system gets Bus Master enabled turned on. Welcome to the show. What memory
would you like? There really isn't a software remediation for this, right? You can't just not
load the Fire wire drivers like you could with the regular inception attack. You can use an
IOMMU. Are you familiar with virtualization? How about virtualization of hardware?
Virtualization on the left, you just have software VMs that run a code and interfaced with an
extraction layer. On the other side you've got ‑ ‑ whether you use BTD or an IOMMU of some
sort, where you can actually assign a device to a specific software VM, you can actually
have two graphic cards plugged into your system, each running native drivers in a separate VM
and no one knows the difference. All that memory DMA access is remapped. If you configure a BTD
write like Apple does 10.8.2 on IP version they actually configure BT later, unless you
change the argument and turn BT off, which is good for a demonstration. You can go and
modify memory. Why those limitations? Why haven't they rolled them back to IP bridge?
Any system with thunderbolts should have BTD on to protect you against certain things. Any
system that has an express card. Any system you leave anywhere you don't see that someone can
open it up and pop a card in. You should be careful. Your operating system vendor should
be writing and providing this stuff by default. It's just important. Until then what
solution do we have? Abstinence, right. Miles would ever plug into sketchy into your display
port/Thunderbolt port? >> Of course not. >> What's plugged in there right now? >> It's just a
VGA cable. >> Where does it go? What's this? Oh, oh. >> Whoops. >> I have the power cord out,
too. We have five minutes. Okay. So yeah, yeah. Miles plugged in this little cable that looks
pretty simple. It's like one of those stupid $30 Apple adapters. But actually we look at the
other end and its really just a thunderbolt cable going to the thunderbolt enclosure attached
to an adapter. So this is how you could basically one of these yourself. We call this
ALLOYVIPER. We need a new name, because it's a cosmetic change to commercial products. So ‑ ‑
actually this one has a list price of 300,000, maybe a little less if you buy them in bulk.
It's actally pretty pricey because one cable alone is 50 bucks. So you take one of these
Thunderbolt cables and you go to radio shack and GED get one of these module telephone Jack and
use these little metal thingies. Thank you. I can push buttons now. You can get heat shrink
tubing, open everything up and thread your thunderbolt cable through that. Close it up, get
your heat shrink tubing, thread the Thunderbolt cable through that. Put the metal enclosure on
the end, and that's pretty much it. You basically say here, I already got an adapter for you.
Thanks for presenting. My apology to Joe Grand. You were here last. My apology to Miles,
that dump I did was actually not your Nook. I didn't find any cookies in your dump, though.
And basically on the other end, you put a standard adapter, look, I'm using the laser
pointer on the screen. I apologize. Right here I can point at this one. Is this
better? This is a screen that was used on the corner and draws it on the projector. It's the
disclosure. Pay no attention to the man behind the curtain. When you plug this in, it defines the
display port to the adapter on the other end and It just passes it through. That's what we've
been presenting the whole time. That's why it stopped when I stepped on the power cable.
Sorry. I thought I almost blew the cover. So some acknowledgements, this is an
incomplete list. Thanks for all the NSA Playset Crew for working together on some awesome talks
and working together getting things up there and running. Carsten for his work on
inception again he built inception based on many many prior works before his. Again
Great Scott Gadgets, thank you motivating me to get it started. Thanks for Dean for telling me,
you haven't submitted that to DEF CON yet? I'm like oh I haven't done any work on it yet.
Just submit it. You'll get it done. Don't worry. Snare and Sam did a talk just last year using
FPGA board, which is basically the exact same thing as this, but you know. It's expensive.
And everyone else who I forgot to. And Miles for fixing my ugly software code. So any questions?
( Applause ) What's your question? ( Inaudible question ) >> Did you have a question?
Yes? ( Inaudible question ) >> I don't know anything about the mitigation in Windows 8.1. So
the questions are what mitigations are built into Windows 8.1. I don't know. I
haven't tried it yet. I haven't tried it with 8.1 before. You want an NSA Playset pin. I'm
sorry. >> Anybody that has questions can come to the microphone right here so
everybody can hear the question as well. Thank you. >> It doesn't matter what operating
system they're running or anything because you don't need any drivers? You just go ahead
and plug and play? >> Yeah. No drivers needed unless you've got to figure something out in those
Mac versions that we mentioned. >> Is it 4 gigs? Because why isn't it 2 gigs? >> Why 4 gigs?
PCIe has 32 bit DMA natively. That's just... >> Can you offset? >> You can offset it.
You need to change the DMA offset register which requires some device side drivers or
software. Again, you have access to the 40 bits of memory. You can do it with memory and a lot
of stuff there and inject whatever code you want and do fun stuff. >> Thanks for doing
this. >> We have time for two more questions. >> Did you look into USB DMA 3. >> It will
require drivers, though. >> I don't know. Most likely. I don't know. >> I'm more interested in
the ‑ ‑ running the VMs with certain PCIe. Is the information you presented going to be up on
your website? >> I'm sorry. I can't really hear everything. >> I'm looking for the information
on building external PCIe connected to virtual machines. Have you discussed that a little
bit? >> Using the ‑ ‑ >> Yes. >> Let me just make an announcement. Somebody dropped
their iPhone in this section. Everybody please check and make sure you have your iPhone on you
if you have such a device. >> I work in building a virtual machine connecting external
PCIe. The information you presented, will they be up on the website? >> I'm sorry. I
thought ‑ ‑ I can't hear what you are saying. I'm sorry. Yeah. ( Inaudible question ) >>
We'll talk offline. He wanted to know how to connect external devices to a virtual machine
with PCIe. I think we have one more moment. I guess not. No more questions? Okay. (
Applause )