Httpillage lascon-2015

57
Httpillage Calling all nodes

Transcript of Httpillage lascon-2015

Page 1: Httpillage lascon-2015

Httpillage

Calling all nodes

Page 2: Httpillage lascon-2015

• John Poulin– Sr. App. Sec. Consultant @ nVisium– I’m from Maine

• Hobbies–Writing Code– Stacking Wood– Picking Apples

Page 3: Httpillage lascon-2015

In the business of: Helping developers fix things, by breaking them.

Page 4: Httpillage lascon-2015

I built a thing.

Page 5: Httpillage lascon-2015

Intro

Page 6: Httpillage lascon-2015
Page 7: Httpillage lascon-2015

Penetration Testing

vs Vulnerability Assessment

Page 8: Httpillage lascon-2015

Depth over Breadth

vs Breadth over

Depth

Page 9: Httpillage lascon-2015
Page 10: Httpillage lascon-2015

“An attacker could…”

Page 11: Httpillage lascon-2015

If you’re being paid, you are the

attacker.

Page 12: Httpillage lascon-2015
Page 13: Httpillage lascon-2015

Impact statements must

be practical

Page 14: Httpillage lascon-2015

“An attacker could intercept

the NSA’s unicorns, and ride

them to mars.”

Page 15: Httpillage lascon-2015

“An attacker could enumerate

a list of user accounts.”

Page 16: Httpillage lascon-2015

Traditional Attack

Page 17: Httpillage lascon-2015

Unrealistic; Slow

Page 18: Httpillage lascon-2015
Page 19: Httpillage lascon-2015

We can improve.

Page 20: Httpillage lascon-2015

Tool Overview

Page 21: Httpillage lascon-2015

httpillage

Page 22: Httpillage lascon-2015

httpillage• Designed for easy

distribution of attacks.

• Still super beta

• Originally a hackathon project

Page 23: Httpillage lascon-2015

httpillage: features• Web Interface (Rails 4)– Job Creation– User Management– Response Tracking

• Burp Suite Integration– Easily send requests to httpillage

Page 24: Httpillage lascon-2015

httpillage: features• Attack Types– Repeating (aka. DoS mode)–Dictionary– Bruteforce

• Response Flagging– String– Regex

Page 25: Httpillage lascon-2015

httpillage: Architecture• Server: – Command and Control Server–Delegates work to nodes

• Nodes: – Sends requests to target– Processes responses for matches

Page 26: Httpillage lascon-2015

httpillage: Architecture

Page 27: Httpillage lascon-2015

httpillage• Easy

distribution

Page 28: Httpillage lascon-2015

Poll for Job

NODE

Parse Payloads

Send request to target

Detect Match

Send to C&C

Work Complete?

Payload?Received

Job?

Has match?Yes

No

No

No

No

Yes

Yes

Page 29: Httpillage lascon-2015

Live Demos

Page 30: Httpillage lascon-2015
Page 31: Httpillage lascon-2015

Username Enumeration

Page 32: Httpillage lascon-2015

Username Enumeration• Application discloses

existence of username– Login– Forgot Password– Registration

Page 33: Httpillage lascon-2015

Username Enumeration• Discoverable via:– Verbose Error Message– Response Diffing• Response Code• Spacing

– Timing (can be practical)• https://nvisium.com/blog/2015/06/25/time-

based-username-enumeration/

Page 34: Httpillage lascon-2015

Username Enumeration

Page 35: Httpillage lascon-2015

Username Enumeration

Page 36: Httpillage lascon-2015

Username Enumeration• Useful for many things– Phishing Attacks– Password Discovery– Insecure Dir. Obj. Reference–De-anonymization

Page 37: Httpillage lascon-2015

Username Enumeration• Process for exploitation– Build list of email addresses /

usernames• Adobe database dump

– Establish a baseline request– Automate that request for each

username– Search for pattern matches,

indicators of enumeration

Page 38: Httpillage lascon-2015

Username Enumeration• Generally low impact• Generally low difficulty

• Results in: Moderate Risk.–Most orgs consider it low risk.

Page 39: Httpillage lascon-2015

Live Demo

Page 40: Httpillage lascon-2015

Username Enumeration• Easy to exploit• Very fast when distributed

• Classic example of vulnerability chaining.

Page 41: Httpillage lascon-2015

Expiring Tokens

Page 42: Httpillage lascon-2015

Expiring Tokens• (hopefully) random tokens• Out-of-band identification• Expire after creation

Page 43: Httpillage lascon-2015

Expiring Tokens• Super common–Multi-factor authn, 6 digit token– Forgot password mechanisms

Page 44: Httpillage lascon-2015

Expiring Tokens

Page 45: Httpillage lascon-2015

Live Demo

https://github.com/nVisium/django.nV

Page 46: Httpillage lascon-2015

Defeating Expiring Tokens• Possible to exploit with

adequate resources

• Should never be vulnerable!

Page 47: Httpillage lascon-2015

Mitigating Expiring Tokens• Increase token length +

entropy–Why 4 digits? Why 6 digits?– Users are can be lazy

• Reduce length of expiration– 15-30 minutes should be adequate

for 8-alphanumeric characters.

Page 48: Httpillage lascon-2015

Denial of Service

Page 49: Httpillage lascon-2015

Denial of Service• Common in politically

motivated attacks

• Generally not in scope for assessment (Vuln. or Pentest)

Page 50: Httpillage lascon-2015

Denial of Service• Exploitable via:– Large amounts of requests (DDoS)

– Large amounts of parameters (Hash Table Collisions)

– Unsafe application functionality (xml-rpc)

Page 51: Httpillage lascon-2015

Denial of Service• Super easy to perform when

distributed

• A Startups nightmare

Page 52: Httpillage lascon-2015

Live Demo

Page 53: Httpillage lascon-2015

Denial of Service• DoS testing needs to be

performed

• Load-balance all the things

• Monitor costly operations (crypto, sleep)– Secure Client Renegotiation in SSL

Page 54: Httpillage lascon-2015

Future Work• Job Prioritization• Job Scheduling• Node Allocation• Direct API Integration

Page 55: Httpillage lascon-2015
Page 56: Httpillage lascon-2015

We’re in the business of breaking things

Page 57: Httpillage lascon-2015

Questions?–Httpillage:• https://github.com/nVisium/httpillage

–Django.nV:• https://github.com/nVisium/django.nV

@forced_request