Files
hpr-knowledge-base/hpr_transcripts/hpr0489.txt

249 lines
22 KiB
Plaintext
Raw Normal View History

Episode: 489
Title: HPR0489: SSL Attack
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0489/hpr0489.mp3
Transcribed: 2025-10-07 21:37:48
---
.
Good evening gentlemen. I wasn't going to say ladies in gentlemen but I think it's only just
been kidding us. My name is Aaron Finnan and I'm going to be talking to you about
maximum all-on-spikes and all-prefax attack when using defeating SSL. Ever since I
first kind of heard about this attack I've been particularly fascinated by it. I was
also very lucky enough to interview this security researcher who did this attack. The torque
should outline and you should hope by the end to know these following things. What a
normal prefix attack is and how it's used in defeating SSL. What are SSL implementations?
What is an online domain validation? What is a universal wildcard cert and how we defeat
OCSP? I show introduction. My name is Aaron Finnan. I'm an ethical hacker of security
podcaster. I interviewed the researcher of this attack. I want to talk to you about this
attack because it's mind-blowingly simple and just the knock-on effects are massive.
It's an implementation vulnerability in a secure protocol. I think every ethical hacker
in the room will be going, wow, it's really nice to see one of those. There's a lot of
content available online if you want to find out more information.
Tonight's aim is just basically to be a crush course in this particular attack and vulnerability
that it exploits. It's only supposed to wet your appetite. I will give you a couple of
web addresses and suggestions at the end if you want to find out more information. It's
going to be a little bit of a tight squeeze to get it all into 10 minutes but I should
just about do it. If I could ask, if you have any questions, if you could just keep them
towards the end for me and that will give me a chance to get through this.
In short, tonight's talk is focusing on the implementation vulnerability in a secure
protocol, SSLTLS, which was left on patched in some operating systems for well over
10 weeks. At its heart, the null prefix attack enables an attacker to read usernames and
passwords of otherwise encrypted web traffic such as ebay, Facebook, PayPal, you name it,
without the user or the owner of those sites ever knowing. This attack basically broke
browsers as HTTPS padlocks. It basically enabled an attacker to conduct a man in the middle
attack and to steal information which we shouldn't be able to do. SSL and HTTPS, we should
be able to rely on. However, it's not just broken in browsers. It's broken in a vast
array of different programs and lots of SSLTLS implementations are vulnerable to this particular
attack. Although this has been predominantly patched, it's not my job to imply to you
that there isn't a real world threat from it. It will get smaller as time goes by. The
reason that I say this is, if we take in October 2009, nearly 2% of Firefox users were running
a vulnerable version of Firefox, which may not sound so much, but when you look at Firefox
there's 47% market share for that same month that number starts to become bigger. Also,
when you look at Microsoft for half of that month, all of Microsoft's products range was
vulnerable to this attack as well. So, it gives you a rough idea that this is only just
starting to get fixed. So, in lane of groundwork, I want to just very quickly touch on what
TLS is and it's predecessor SSL. And where it's in common use today, however, it's not
my aim for this to be a definitive guide. If you decide that you want to find out more
information about SSL, TLS, there's plenty of content available on the internet. But
long story short, TLS transport layer security and secure socket layer or SSL are cryptographical
protocols whose aim is to provide security for communication over networks such as the
internet. The protocols are in widespread use and applications, such as web browser's
email, instant messaging, VoIP and some virtual private networks. TLS is based on the earlier
SSL specifications for our Netscape Corp. TLS allows a client server program to communicate
over networks and a method that makes use-dropping data tampering a message forgery very
hard to accomplish. And a typical deployment such as web browser, TLS authentication is
what's known as unilateral, which is that the server is authenticated, but the client
isn't. So, the client knows the server, but the server doesn't know the client. So, a simple
TLS handshake wouldn't, where the server is authenticated by certificate, would look
as follows. We'll start off with an negotiation phase with a client where the client would send
a client hello. In this message, the client would inform server of the TLS protocol versions
it supports. It will give it a random number and a list to prefer to say for sweets and
compression methods. The server then responds with a server hello message, and within that
message it will choose the TLS version. It will also supply a random number and it will
also say which site for sweet compression method that they'll go on with. The server then
sends a certificate followed by a server hello done, indicating that the negotiation
phase of the handshake is over with. The client then responds with a client key exchange
message which contains a pre-master secret and a public key. Both the client and the server
use the random numbers generated from the negotiation phase and the pre-master secret to compute
a common master secret. Key data for the connections will be derived from the master secret and the
random numbers generated which have been passed through carefully designed pseudo-random
functions. The client then will send a change of site for spec record and form a server
that the communications will be authenticated. The client will then follow up with an authenticated
encrypted finish message which contains the hash of the previous handshake message. It's
a server fails to verify that hash then the handshake will be considered fail and the
connection will be torn down. The server will follow this up by sending its own change of
site for spec to the client informing the client that everything it now passes will be authenticated
and encrypted and the finish message will also be encrypted and hashed and the client needs
to verify it. I know it sounds pretty complicated but it's not really. It's just a basic handshake.
The certificates that are in general use in this process are a type of certificate called the X509 type.
I'm not expecting anyone just to go oh I know what that is but it's a pretty predominant standard
used in certificates. I mean in fact the X509 is also known as a like a public key infrastructure or
PKI, PKI for sure. It also has standard formats for public key certificates and certificates
revocation lists. The X509 was initially issued out on July 3rd 1988 and was associated with the
X509 standard and it assumed a strict hierarchy system so that it was able, you know this
directory tree could be built where we were able to see you know all the bits of the certificate
had a meaning and we could find out where they came from and so on and so forth. It didn't work out
as long story short there. However in our case in web server and communicating from client to
server what's actually only ever really checked in the X509 certificate is the common name in
the subject field. I'll talk about that very short. However browser such as
Internet Explorer, NetScape, ArtPros far have come with Roops certificates pre-installed so in
essence it's really developers that are choosing who Roops EA's of your standard browser
trust and verifies. Also as I said early on X509 holds this certificate revocation list standard.
In the same breath the ITF have an approved way of checking if a certificate is valid online
using the online certificate status program called OCSP. Firefox 3 comes with that by default.
Defeating OCSP is a very important part of this attack I will talk about it but not just right now.
If we look at an X509 structure for a certificate it's very bland to be honest with you,
nothing very exciting. It has lots of information in there that you would be interested in but
as far as the web browser is interested then they're only interested in the information in the
subject and more to the point the common name field within that subject. Oops it doesn't look good.
We're back. Now for an SSL TLS protocol it's the common name field and subject field that's
verified and especially when proving the identity of a particular server so if eBay were to
get a certificate they would lessen the common name field www.eba.com if PayPal were to do the same
they would less www.paypal.com and if I was to do the same www.finix.co.uk
When we request a certificate when we do a certificate signing request to a certificate authority
which will be I'll refer to as a CA throughout this the request is validated by establishing the
proof of owner of the actual domain and this can be as simple as checking the who is database
for the root domain checking the technical email address and emailing them to say
have you requested to get a certificate signed only the root domain is checked in this process
nothing else is checked so we could have whatever we want is that subdomain I mean www.is
essentially subdomain we can have whatever we want in there we could have phubar.finix.co.uk
we could have certificate authority sock.finix.co.uk we could even have this subdomain doesn't
exist.co.uk but the bottom line is the root domain is the only thing that's being checked no one's
being offended no one's seeing that end part and it's at that point that really this attack starts
to take place so I'm sorry I have bored you with all the technical side of it but it was just
important for me to get that out of the way the x509 certificates come a format in what's
known as ACN1 notation which supports lots of different string types however all of them are
represented in some variation of Pascal when they're in memory Pascal represent strings
by series of bytes specifying the length of the string and the string data one character per byte
it's very very important to pay attention to that particular point that I'm saying now because
that's very very different to how c reads strings c has basically one character per byte until it
comes to a null character and then the string is terminated it's important also to remember that
a null character means absolutely nothing in Pascal it has no special meaning whatsoever at all
so in essence what we could do is we could register an x509 certificate from a certificate authority
for www.paypal.com back with slash 0.finix.co.uk the null character has absolutely no meaning
the the CA only checks the root domain well we open the root domain that's finix.co.uk if they
send me a request I am the owner of that domain as I've discussed earlier and I've pointed
earlier on that the root is the only important part and this is how this attack works how the most
modern SSL TLS implementations will view data from x509 certificates as ordinary c strings
and anyone who's a favorite programming will start to see where I'm going with this
so it uses a standard functions to seeing it comparing it to manipulating it one of the consequences
of that is that we take our issued CA cert that we got from their assigned or whoever for the x509
certificate that says www.paypal.com null character.finix.co.uk isn't anyone guess what the brows
of c's the brows of c's it is the brows that terminates it it sees a c string and it terminates
at paypal.com so all the tests that it uses to verify that it is in fact seeing a certificate
from a site that it's being told it's being seen it's been beat we've defeated it it really is as
simple as that if we set up a man in the middle attack we can present that certificate say we
get a certificate for paypal we can set up a man in the middle attack on a man and sniff
all data that's going to paypal.com without any worries and it's true to say that the authenticity
the authenticity of SSL TLS has been defeated here however the story really doesn't end here
as I mentioned previously we have the online certificate status protocol
or OCSP as I will now be calling it because it's a bit of a mouthful. It's a pretty effective way
of defeating us and how OCSP was designed it was designed to be this lightweight protocol
that when it sees a certificate for the first time or it hasn't seen it recently it will contact
the it will contact the CA to say is this certificate with this serial number valid
which wouldn't mean which means it wouldn't take long for certificate authorities to defeat
our null prefix so it's a bit of a problem we need to watch out for this however lucky enough
the researcher of this attack marks the defeated OCSP with less effort than he did to defeat
the null prefix as I said earlier on it's a lightweight protocol the idea is it's real-time
certificate revocation the old way of doing it was pretty bad so I'm by default and this should
kill the null prefix attack however after however marks the after studying the response codes had
noticed that the response code three try later and didn't generate any negative indicators
of the browser level it didn't stop what it was doing it didn't finish anything it just try
again later it doesn't sound like there's going to be a problem later on it just you know
oh the busy come back later on it doesn't if you look at the other ones you know successful would
be nice you know but we really wouldn't want to send one but the said mouth forms request I think
that kind of might give the game away or certainly unauthorized as well but after some
enumeration what he'd found out was that some of the response data the response status
isn't signed by the by the authority by the authority back it doesn't cover that it actually
only covers the optional response data so what he'd found out is he could sit on a line we're
already doing the man-in-middle attack to listen for any request that has OCSP and then what we
can do is we can block that and supply our own one that says three it doesn't require any signatures
it doesn't mean that we have to forge anything so the online certificate status protocol was
defeated today for you by the number three and it literally is as simple as that this is this
lightweight protocol that was specifically designed for this particular so there's a
particular situation and it really no forging no anything I mean just literally the ASCII
three and that defeats OCSP I'm going to pick on Firefox for a little here because this is
my favorite subject about this attack and it really kind of demonstrates this as a platform
I have to say from the outset that Firefox responded the Mozilla team responded in a fast
appropriate manner and patched this incredibly quickly when they look at their other peers
well there was only one other peer that could have done something which was Microsoft
and I said they took about ten weeks but that was only when a PayPal was out in the wild
that they got around to patching it and when I talk about that as well it's worth remembering that
if you are not Firefox on a Windows system you will still have been vulnerable
opera safari were all vulnerable on a Windows system to us
so there is two kind of key vulnerabilities that kind of came across here how
in certificates you can request a almost a universe a wildcard cert and it's not like organizations
like Google ebay and lots of commerce that lots of subdomains so rather than ebay having a
Google having to get an SSL cert and an X509 cert for mail and docs and so on and so forth
they have this wildcard certificate which is a star basically dot wherever the domain name is
going to be well it turns out that an SS which is the library used in Firefox checked them very
strange to say the least and what he was able to register was a domain a certificate for star
dot non-character dot thought crime dot org and when any site that Firefox went to that required
a certificate it would say yes we're here and it was termed a universal wildcard cert because
you would only need one certificate and you would just constantly reissue them there's another
similar attack that uses base constraints but you had to get root CA and science certificates on
the fly this one you just keep on giving it's it's almost better than a CA so a root cert to be
honest with you which it's very interesting and then as to say Firefox is very quick and patching
it and this is patched all the way through the three series of Firefox version two is not so
lucky so if you know anyone anyone running version two I would break their arm to to get it upgraded
which kind of nicely leads on to this salute that this is being the most scariest part of it all
is that this attack being used as a platform to deliver payloads okay think of the piece of software
on your system that contacts a server out on the internet and waits for that server to tell it to
I to to download and run an unsigned data block or as we like to call it Firefox auto updates
now bearing in mind this is all authenticated over TLS SSL well we've already cracked that
we've already we can be any certificate that we want to be so how about we intercept
all the auto updates and we send it an update so we could in in theory not have had time to
to make it work we could in theory find a vulnerable version of Firefox on a corporate network
update all of those machines to a non vulnerable version of Firefox which we would have ever so
nicely put in our own root CA and embed that in the trusted list maybe we could bind some other
nasty little toys like root and boot kits and you know and maybe we can do something really crazy
like you know deploy woobie.xc and really kind of get all the windows users convert
as I thought was a particularly interesting part of this attack
now and we've talked to you about a piece of software because in the moment I've just
talked to you all about things that can happen but there is actually a piece of software that does
all of that for you and it's released under the gpl version three is designed by a guy called
Monksy Marl and Spike who I've mentioned god knows how many times through this but this guy is a
very very interesting guy he uh this is not just one of that this is not just the first protocol
level sort of vulnerability he's found he's found quite a bit in his time um as to self sniff
has ocsp denial Firefox auto update and hijacking
supports no prefix and wildcard certs and it's available for you to be able to download
I played around with it uh I did modern play around with it I've spent probably god knows how many
hours ago wow this is really cool and when I should have actually been doing slides maybe about
some screenshots for you as I said earlier on I do have the uh I do have a virtual appliance
you have six hundred and eight to make spare on your usb pen you're more than happy to take away
with you and have a play with it um really is you you run us ourselves and if with these command
options you can choose any command options it's quite well documented if not if you go to like
remote exploit forum they have a an SSL sniff page funny enough
so this is me on a test account using iE6
but about a week after the the black Tuesday of patches for Microsoft when they have 13 of them
um as you can see i'm padlocked i'm on HTTPS in fact if i go and check the certificate
the certificate will tell me that i'm on paper there is absolutely no way for the end user to be
able to tell because the mechanism that's telling them is also vulnerable to the no prefix
um this is my favorite part um being told that the certificate was okay because the next slide
will make even more sense because this is me taking the username and password and you can't see
it so well for yeah the login details i'm the password um for a certificate that i'm being told
it's fine i'm not throwing up any hours no warnings you have to take my word for it or you can play
with the uh with the virtual machine that i've set up so in conclusion i hit you all say yes
um i hope that we've covered basically what the no prefix attack is what a wildcard certificate is
how ocsp is defeated how we can get a browser to run unsigned data blobs and have lots of fun
there and a software that can be used for and that's me finished as i say only one of it to be a
short introduction is there any questions i surely i have not answered everything so quickly
does anyone heard about this the type before can you tell us from the yellow subroom
you can do it all from the yellow subroom depending if it's got virtual machines
i can do anything with the virtual machine you know much about the uh remote x plane
it leads to an SS through the way that it handles the certificates
yeah i don't know a lot about it but it's a very interesting point that someone is obviously
watched Marx's talk actually how nss verified certificates actually led them up to having a
buffer which you could just about squeeze a shell code then so you could present them with this
certificate with basically a shell code and uh the way that if you ever look at the checking
mechanism for an ss going visit Marx's site his talk is up and about on defconn and being
does an excellent example of basically you look at this line of code it's got old all declarations
in it it's big long and messy and he just unfocuses the slide and says you know don't don't look
and focus your eyes back in and you can just tell by looking at a piece of code like this that
there's going to be problems and he doesn't get halfway through it before he basically finds
a buffer overflow and which is you know buffer overflow via certificate certificate i mean that's
pretty awesome uh any other questions
thank you for listening to hacker public radio hpr responses by caro.net so head on over to
c frr.co.c clouds but