JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security ...

45
JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security http://www.aspectsecurity.com/ http://i8jesus.com/ @nahsra

Transcript of JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security ...

Page 1: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

JavaSnoophow to hack anything in java

arshan dabirsiaghidirector of research

aspect securityhttp://www.aspectsecurity.com/

http://i8jesus.com/@nahsra

Page 2: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Any more detail is theoretically irrelevant. A client is a client.

Page 3: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Why hacking Java apps is practically difficult

Showing how JavaSnoop solves the problem

Demos, videos, details

Agenda

Page 4: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.
Page 5: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Hey, Security Company X. I want you to test the security of this important applet. Can you do it in 40 hours?

No problem we do it all the time!! What’s an applet again?

Absolutely. I can scan that with WebInspect, right?

Page 6: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Zero intel on applet.

Looks to be some kind of chat thing.

Not sure about protocols, exit points, data types.

After eating Panda Express and bitching about lack of useful docs, time left:

38 hours.

Page 7: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Option #1 (hack the traffic)

1. Pray it uses HTTP2. Pray it has configurable proxy settings3. Pray it doesn’t use serialized

objects/layer 7.5 encryption/custom protocols

Applet MITM yourselfServer

Page 8: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

What am I even looking at?Never mind, this clearly didn’t work.

Time left: 35 hours.

I setup Wireshark to look at the data.

Crap, it’s not HTTP. It’s some kind of bizarroprotocol. That rules out Ethereal/Middler too.

Page 9: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Option #2 (hack the client)

1. Grab classes/jars2. Decompile them3. Perform source code review

Theoretical next steps:4. Alter code5. Recompile evil client6. Send custom attacks

Real next steps:4. Alter code5. Nothing compiles/works6. Tests never happen or are invalid

Page 10: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

I don’t have that kind of time. Time left: 31 hours.

1. I download the applet codebase.2. I decompile the codebase.3. I load the decompiled code into Eclipse.

Are you serious? 3800+ errors? Is every single line of code broken?

Page 11: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Option #3 (hack the server)

1. Pray the endpoints are HTTP2. Pray it doesn’t require client certificates3. Pray it doesn’t use serialized objects/layer

7.5 encryption/custom protocols

Fiddler, Burp, Webscarab, SoapUI Application

endpoints

Page 12: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

I need some “me” time. Time left: 27 hours.

Tried to talk to the server.

Not sure about this traffic - some new raw-byte protocol?

F*#&ing stupid Java s*%#, mother*@#& bananas.

Entering Mel Gibson rage.

Page 13: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

We need some inspiration. Anna?

If only there was a “WebScarab” or “Burp”, but for

the Java Virtual Machine.

If there was, I could tamper with method parameters like

HTTP traffic. That certainly would have made Scary Movie

3 easier to make.

Also, I love you Arshan.

-- Anna Faris

Page 14: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

That sounds like something we could

do with instrumentation.

we miss you pdp, come back

Page 15: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

What is instrumentation?

Page 16: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

How would instrumentation help?

Page 17: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Target application Our evil hacking program(JavaSnoop)

Methodparameters

Returnvalue

Tamperedmethodparameters

Tamperedreturnvalue

Page 18: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Number of flaws found: zero.

Have to read up on instrumentation.

Time left: 20 hours.

Am I really good at my job? Maybe I should have stayed in development/snarky Slashdot commenting.

Page 19: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

To redefine a class we need the actual raw bytecode. I tried putting in: alert(document.cookie) …but it didn’t work.

Page 20: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

reJhttp://rejava.sourceforge.net

Example of wedgingin a println() at the top and bottom of a function.

Page 21: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Userland

Dailydaver’s guide to Java VM

Bootstrapclassloader

System classloader

Core Java classes(/jre/lib)

Extensionclassloader

Supporting classes

(/jre/lib/ext)

Custom classes (java.class.path)

Ring0

Runlevel 0 Runlevel 1 Runlevel 2

Java VM

JavaAgent

Page 22: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Userland

Dailydaver’s guide to Java VM

Bootstrapclassloader

System classloader

Core Java classes(/jre/lib)

Extensionclassloader

Supporting classes

(/jre/lib/ext)

Custom classes (java.class.path)

Ring0

Runlevel 0 Runlevel 1 Runlevel 2

Java VM

JavaAgent

Page 23: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Java Snoop Agent

Java Snoop Managing UI

JavaSnoop

= awesome

Page 24: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Time left: 12 hours. It’s Thursday.

THERE’S NOT ENOUGH TIME

Page 25: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Why hacking Java apps is practically difficult

Showing how JavaSnoop solves the problem

Demos, videos, details

Agenda

Page 26: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #1: Startup JavaSnoop

Okay, I can do that.

Page 27: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #2: Startup target

Okay, that’s easy too. Can I call myself a hacker now?

Page 28: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #3: Attach evil agent to target VM

Hurry up, only 8 hours left.

JavaAgent

Page 29: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Aside: how do I know which Java process to target?

Page 30: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #4: pick a method to hack and how

Let’s check “Tamper with parameters”. Clock is ticking.

Page 31: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #5: JavaSnoop inserts a callback into method, which soon gets called

Can I start name dropping yet?Better yet, will you name drop me?

JavaAgent

Page 32: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #6: Tamper with the data

Parameter #

Parameter value

Parameter type

Page 33: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Aside: JavaSnoop has custom views for editing Lists, Maps, Java primitives, arrays, byte arrays, and even custom objects

Page 34: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #7: Edit that carp.

I’ll change that byte that contains my user ID, and hopefully the chat message will look like it came from Alice!

Page 35: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Step #8: Profit.

You spoofed the message. A serious flaw.

Time left: 2 hours. That was close.

Page 36: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Why hacking Java apps is practically difficult

Showing how JavaSnoop solves the problem

Demos, videos, details

Agenda

Page 37: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

demo

Page 38: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Aside: How do I know which method to hook? Answer #1

Browse classes and their methods

Search bymethod name

Search by return type

Page 39: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Aside: How do I know which method to hook? Answer #2

Page 40: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Aside: How do I know which method to hook? Answer #3

Page 41: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Dailydaver’s guide to applets

Bootstrapclassloader

System classloader

Core Java classes(/jre/lib)

Java VM

Extensionclassloader

Supporting classes

(/jre/lib/ext)

Ring0

Runlevel 0 Runlevel 1 Runlevel 2

Applet classloader

Applet classes(sun.applet.*, sun.plugin2 .a

pplet.*)

Userland

Your classes (codebase

param)

ACL-atraz

Page 42: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Remember that evil Java agent we install in our target program?

That little guy requires a lot of privileges to do the things he does

Those privileges aren’t usually granted to untrusted applets (which is smart)

How come JavaSnoop turns off Java security when it runs?

Page 43: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

JavaSnoop doesn’t create new vulnerabilities.

It just makesfinding and exploiting

flaws in Java apps possible.

And practical.

Page 44: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

Supported Operating Systems

Windows XP/Vista/7Mac OSXLinux

Page 45: JavaSnoop how to hack anything in java arshan dabirsiaghi director of research aspect security   @nahsra.

That’s all. Thanks to Dave (Wichers|Anderson|Lindner), Jeff

Williams, Nick Sanidas, Mike Fauzy, Jon Passki, Jason Li, Eric Sheridan, basically all the engineers at Aspect Security and Marcin Weilsdfisdfsdklfsdf of GDS for help/feedback/code

RIP #madcircle #dwordCheck it out for yourself:

http://www.aspectsecurity.com/tools/javasnoop/

http://i8jesus.com/

http://twitter.com/nahsra

Arshan Dabirsiaghi