/
How to Submit a Fake Talk to a Con How to Submit a Fake Talk to a Con

How to Submit a Fake Talk to a Con - PowerPoint Presentation

calandra-battersby
calandra-battersby . @calandra-battersby
Follow
398 views
Uploaded On 2016-11-26

How to Submit a Fake Talk to a Con - PPT Presentation

Not that Crowley guy Step 1 Choose a Con Small cons First year cons Cons run by guys with green hair Step 2 Pick a talk Doesnt have to be your own Know your panelists ECCouncil con Use the word cyber as a noun AND a verb ID: 493703

oracles oracle ciphertext encrypted oracle oracles encrypted ciphertext encryption attack decryption input crypto encrypt padding data bad cipher output algorithms block step

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "How to Submit a Fake Talk to a Con" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

How to Submit a Fake Talk to a Con

Not that Crowley guySlide2

Step 1: Choose a Con

Small consFirst year cons

Cons run by guys with green hairSlide3

Step 2: Pick a talk

Doesn’t have to be your ownKnow your panelists

EC-Council con?

Use the word “cyber” as a noun AND a verb

Super technical con?

Steal a real talk from another recent con

Make sure it sounds all ninja

Crypto talks are good, nobody knows cryptoSlide4

Step 3: CFP

Is there a demo?YesIs this about a new vulnerability?

Yes

Are you releasing a tool or exploit?

Yes

Are you just saying all the things I want to hear?

YesSlide5

Step 4: Get out of presenting

Need an excuse!Family emergency

Overused

Nobody will call you on it

Can’t stay at the con afterwards

Fake lawsuit

Pretend some vendor is angry

Get talking slot replaced by some other chump

Got chutzpah?

Give the talk anyway

If people don’t get it they’ll blame themselvesSlide6

Step 5: Party!

Cons usually give speakersFree food

Free booze

Free swag

Usually just t shirts

Girlies love speaker badges

Speakers get into more partiesSlide7

Step 6: Reveal joke

LOL I TROL JOOSlide8

Speaking with Cryptographic Oracles

Daniel “unicornFurnace” Crowley

Application Security Consultant,

Trustwave

-

SpiderlabsSlide9

The Speaker and the Presentation

A quick introduction and a few distinctionsSlide10

The Speaker

Daniel CrowleyWeb application security d00d

IANAC (I am not a cryptographer)

dcrowley@trustwave.com

@

dan_crowleySlide11

The Presentation Topic

Finding and exploiting:Encryption Oracles

Decryption Oracles

Padding Oracles

With little to no cryptographic knowledge

More crypto knowledge, more useful attacksSlide12

NOT the Presentation Topic

The Oracle

We are not being harvested for energy by robot overlords

Maybe

ORACLE

If you Google “<any crypto word> oracle” it’s all you find

Crypto g00r00s like

Adi

Shamir

While also awesome and totally related, not the

topicSlide13

A Primer on Cryptographic Terms

Basic cryptographic terms, concepts and mistakesSlide14

Very Basic Terms

Key

A variable used to permute the cipher

Initialization

Vector (IV)

A second variable used to randomize the cipher

Plaintext

The data in readable form

Ciphertext

The data in unreadable

formSlide15

Stream vs. Block Ciphers

Block

Encrypt X characters at a time

X is the block size

Key is used to directly transform plaintext to ciphertext

Stream

Encrypt one character at a time

Key is used to generate pseudo-random numbers

Those numbers are used to transform plaintext to ciphertextSlide16

Very Basic Mistakes

Using a keyless cipher

Completely insecure if cipher is ever discovered

Reusing keys and/or IVs

Makes Oracle attacks far more dangerous

IV reuse can seriously weaken stream ciphers

Think WEP

Leaking data from crypto operations

Foundation for Oracle attacks

Flickr Creative Commons -

RosinoSlide17

What is an Oracle?

A system which takes queries and provides answers

Queries might be

Plaintext

C

iphertext

Answers might be

Corresponding plaintext

Corresponding ciphertext

Info about operation

Sample from PRNG

Picture by D Sharon Pruitt – Creative CommonsSlide18

Seek the Oracle

How to identify cryptographic OraclesFrom a black-box perspectiveSlide19

General Methodology

Look for ciphertextCiphertext as input

Possible decryption/padding oracle

Ciphertext as output

Possible encryption

oracleSlide20

General Methodology

Fiddle aboutCiphertext input: Potential decryption or padding oracle

Provide modified ciphertext

Provide no ciphertext

Provide ciphertext from another part of application

Ciphertext

output: Potential encryption oracle

Modify input and monitor

ciphertextSlide21

Identifying Ciphertext

Encrypted data is generally encoded

Base64

ASCII hex

URL encoding

Other non-standard

encodings

Decimal

UUEncode

BaseX

Decoded data is likely encrypted if seemingly random

Modification of values may result in decryption-related errorsSlide22

Decryption Oracles

Decrypted output may be

R

eflected

Normal output

Error

May be given in later response

May be inferred from modified output

May be stored and not shown

Additional vulnerabilities may reveal outputSlide23

Decryption Oracles: An Example

ScenarioConsider “

GetPage.php?file

=<

encrypted_stuff

>”

Opens a file to be included based on encrypted input

Allows for quick page additions

Prevents file inclusion attacks…?

Assumes properly encrypted input is sanitary

Errors are verbose

Usage

Feed the script some ciphertext

Record the “file” the error tells you wasn’t foundSlide24

Encryption Oracles

Determine point of entry

Mostly

guess-

work

Names help

Frequently encrypted data

Client-side state variables

Passwords

Financial data

Anything sufficiently sensitive

Often found in

Cookies

Hidden variables

Databases

File resident data

Flickr Creative Commons – Gideon van der

SteltSlide25

Encryption Oracles: An Example

Scenario

Consider “

auth

” cookie, encrypted

Username + “:” +

password_hash

+ “:” + timestamp

Assume usernames can’t contain “:” character

No delimiter injection

Timestamp to control expiration

Usage

Register with any username, log in

Copy cookie value and replace any encrypted input with it

Can’t use colons or control suffix

M

ight not matterSlide26

Padding Oracles

Input must be encrypted

Must be a padded block cipher

Valid vs. invalid padding is distinguishable

This is the essence of a padding Oracle

Modify ciphertext input, look for errors

Padding Oracles can SOMETIMES be used as decryption Oracles

Using the CBC-R technique they are also encryption Oracles

May be limited in that the first block will be garbledSlide27

Exploiting Cryptographic Oracles

Breaking bad crypto and bad crypto usageSlide28

Converting One Oracle Into Another

Padding Oracles only tell you whether padding is valid

This information can sometimes be used to decrypt or encrypt

Decryption Oracles

Can sometimes be converted to an encryption Oracle using brute force

Encryption Oracles

Can sometimes be converted to decryption Oracles

Easier if algorithm is deterministicSlide29

Attack 0: Crypto Recon Examples

Check for static key, IV, and deterministic cipherEncrypt the same plaintext twice

Check to see if they are identical

Check for stream vs. block ciphers

Encrypt plaintexts of various sizes

Compare plaintext size to ciphertext size

Check for ECB block cipher mode

Encrypt repeating plaintext blocks

Look for repetitive ciphertextSlide30

Attack 1: Bad Algorithms

Occasionally, people try to make their own algorithms

And they’re not cryptographers

And it doesn’t end well

Real homespun crypto seen in the wild:

Each character is replaced with a “random” but unique selection of two or three characters

Characters are separated by the letter “K”

hello

” might become “

KqIKefKPrPKPrPKuJXK

”Slide31

Attack 1: Bad Algorithms

Is there substitution?

Submit “

AAAA

” : Get “

KLoKLoKLoKLoK

There is!

We can already see patterns, too

Is there transposition?

Submit “

AABB

” : Get “

KLoKLoKaBeKaBeK

No transposition

W

e can see more patterns

The “K” seems to be a

delimeter

Substitution doesn’t change on position

O

ne replacement per letterSlide32

Attack 1: Bad Algorithms

Submit “

BABA

” : Get “

KaBeKLoKaBeKLoK

Exactly what we expected

Submit “

abcdefghi

…XYZ0123456789

” : Get

entire

key!

We now submit one of every character in sequence

The Oracle tells us what each maps toSlide33

Attack 1 and a half: Revenge of Bad Algorithms

Others use a simple xor operation to encrypt data

P

xor

B = C

C

xor

B = P

C

xor

P = B

Wikimedia Commons -

HerpderperSlide34

Attack 1.75: Bride of Bad Algorithms

For some simple ciphers like xor

Encryption

=

Decryption

THUS

Encryption Oracle

=

Decryption Oracle

THUS

Such ciphers are made

completely useless

by leaking output

THUS

For God’s sake

stop using

xorSlide35

Attack 1: Bad Algorithms

DEMOSlide36

Attack 2: Trusted Encrypted Input

People tend to reuse keys and IVsIf we can encrypt arbitrary data in one place

It may work in another

If

devs

don’t think you can mess with input

They probably won’t sanitize it

Encrypted inputs with MAC aren’t totally tamper-proofSlide37

Attack 2: Trusted Encrypted Input

Encrypted password with MAC in cookieChecked against database on each request needing auth

Find encryption Oracle with the same keys & IV

Use encryption Oracle to encrypt

‘ or 1=1--

Plug resulting value into cookie

Laugh all the way to the bankSlide38

Attack 2: Trusted Encrypted Input

DEMOSlide39

Attack 3: Let the client have it, it’s encrypted

Find a decryption Oracle

Find encrypted data

Decrypt that

sucka

?????

PROFIT!!!

This attack also relies on key/IV reuseSlide40

Attack 3: Let the client have it, it’s encrypted

DEMOSlide41

What encryption?

If you can findA

n encryption Oracle

A

decryption Oracle

You can encrypt or decrypt any data

As long as keys and IVs are reused

Algorithm doesn’t matter

Padding doesn’t matter

Cipher mode doesn’t matter

A

ll encryption which uses the same key and IV is now uselessSlide42

How Can I Fix My Code?

Avoid giving away information about crypto operationsOutputNot always plausible

Success/Failure

Suppress or generalize errors

Timing

Make code take the same time to finish no matter what happens

Don’t reuse keys and IVs

Authenticate your crypto

Encrypt then MACSlide43

Questions?

Daniel Crowley

Trustwave

SpiderLabs

@

dan_crowley

dcrowley@trustwave.com