SSLstrip Stepan Shykerynets 23.03.2013

Preview:

Citation preview

SSLstrip

Stepan Shykerynets

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

!Attention

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

Private / Public key

Public key

Private key

SERVERCLIENT

http://wisc.org.ua/ 23.03.2013

Private / Public key

Public key

Private key

SERVERCLIENT

Public key CA

http://wisc.org.ua/ 23.03.2013

Private / Public key

Public key

Private key

SERVERCLIENT

Public key

CA

http://wisc.org.ua/ 23.03.2013

Private / Public key

Message Public key

Encrypted message

Private key Message

http://wisc.org.ua/ 23.03.2013

SSL And Certificate Chaining

http://wisc.org.ua/ 23.03.2013

Certificate

• X509 Certificateversionserial numberissuervaliditysubjectpublic key

• Signature algorithm• Signature

http://wisc.org.ua/ 23.03.2013

Certificate Chaining

CA CertificateEmbedded in browser.All powerful.Certifies that a site certificate is authentic.

Site CertificateIdentifies a particular URL.Is known to be authentic based on CA Certificate's signature.

http://wisc.org.ua/ 23.03.2013

Certificate Chaining

CA CertificateEmbedded in browser.All powerful.Certifies that a site certificate is authentic.

Site CertificateIdentifies a particular URL.Is known to be authentic based on CA Certificate's signature.

Intermediate CANot embedded in browser.Still sort of all-powerful.Certifies that a site certificate is authentic.

http://wisc.org.ua/ 23.03.2013

Certificate Chaining

VeriSign

Facebook.com

Intermediate CA

http://wisc.org.ua/ 23.03.2013

Certificate Chains Can Be > 3

VeriSign

Facebook.com

Intermediate CA

Intermediate CA

http://wisc.org.ua/ 23.03.2013

How do we validate these things?

• Verify that the leaf node has the name of the site you're connecting to.

• Verify that the leaf node hasn't expired.• Check the signature.• If the signing certificate is in our list of root

CA's, stop.• Otherwise, move one up the chain and repeat.

http://wisc.org.ua/ 23.03.2013

Very tempting to use a simple recursive function.

Everyone focuses on the signature validation.

The result of a naive attempt at validation is a chain that is complete, but nothing more.

http://wisc.org.ua/ 23.03.2013

What if …VeriSign

hack.org

Intermediate CA

Intermediate CA

http://wisc.org.ua/ 23.03.2013

What if …VeriSign

hack.org

Intermediate CA

Intermediate CA

Facebook.com

http://wisc.org.ua/ 23.03.2013

What they say :

• Verify that the leaf node has the name of the site you're connecting to.

• Verify that the leaf node hasn't expired.• Check the signature.• If the signing certificate is in our list of root

CA's, stop. • Otherwise, move one up the chain and repeat.

http://wisc.org.ua/ 23.03.2013

But …

• All the signatures are valid• Nothing has expired• The chain is in fact• The root CA is embedded in the browser and

trusted

http://wisc.org.ua/ 23.03.2013

The missing piece

http://wisc.org.ua/ 23.03.2013

The missing piece

!

http://wisc.org.ua/ 23.03.2013

The missing piece

http://wisc.org.ua/ 23.03.2013

• Most CA's didn't explicitly set basic Constraints: CA=FALSE

• A lot of web browsers and other SSL implementations didn't bother to check it, whether the field was there or not

• Any one with a valid leaf node certificate could create and sign a leaf node certificate for any other domain.

http://wisc.org.ua/ 23.03.2013

But we have one problem

http://wisc.org.ua/ 23.03.2013

Smart browsers

http://wisc.org.ua/ 23.03.2013

People are …

http://wisc.org.ua/ 23.03.2013

People are …LAZY

http://wisc.org.ua/ 23.03.2013

http://...https://...

http://wisc.org.ua/ 23.03.2013

SSLsniff

http://wisc.org.ua/ 23.03.2013

SSLsniff

• Intercept a connection from the client side.

• Generate a certificate for the site it is connecting to.

• Sign in with any random valid leaf node certificate.

• Pass that certificate chain to the client.

• Make normal SSL connection to the server.

• Pass data between client and server, decrypting and encrypting on each end.

http://wisc.org.ua/ 23.03.2013

Web browsing

• SSL is almost never encountered directly.• It is either encountered as a result of:

A 302 redirect from HTTP URL to an HTTPS URL.An HTTPS link that a user click on from an HTTP page.

http://wisc.org.ua/ 23.03.2013

SSLstrip

• Watch HTTP traffic go by.• Switch <a href="https://> to <a href="http://> and keep a map of what you've changed.• Switch Location: https:// to Location: http:// and keep a map of what you've changed.

http://wisc.org.ua/ 23.03.2013

SSLstrip

• Watch HTTP traffic go by.• When we seen an HTTP request for URL that we've stripped, proxy that out as HTTPS to the server.•Watch the HTTPS traffic go by, log everything that we want, and keep a map of all relative, CSS and JS links that go by.

http://wisc.org.ua/ 23.03.2013

SSLstrip

•The server never knows the difference. Everything looks secure on their end.•The client doesn't display any of the disastrous warnings that we want to avoid.•We see all the traffic.

http://wisc.org.ua/ 23.03.2013

http://wisc.org.ua/ 23.03.2013

Let's simplify it…

Time to action

http://wisc.org.ua/ 23.03.2013

BackTrack : Giving Machine Guns to Monkeys since 2006

http://wisc.org.ua/ 23.03.2013

Tools

• SSLstrip• ARPspoof• Ettercap

http://wisc.org.ua/ 23.03.2013

Commands

• #bt echo "1" > /proc/sys/net/ipv4/ip_forward• # bt iptables -t nat -A PREROUTING -p tcp --

destination-port 80 -j REDIRECT --to-port 10000• #bt sslstrip -a -l 10000 -w log.txt –f• # arpspoof -i <yourNetworkdDevice> -t <yourTarget>

<theRoutersIpAddress>• # ettercap -T –q –i <yourNetworkdDevice>

http://wisc.org.ua/ 23.03.2013

Protection

• Google services• High protection network equipment• Checking site certificates

http://wisc.org.ua/ 23.03.2013

Stepan Shykerynets

SShykerynets@gmail.com