50
AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik www.phdays.com www.scadasl.org www.ptsecurity.com

Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

  • Upload
    trananh

  • View
    233

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

AI FOR HACKER: EXPLOIT COOKING MACHINE

Sergey Gordeychik

www.phdays.com

www.scadasl.org

www.ptsecurity.com

Page 2: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

TO ANALYZE ~ 400 APPLICATIONS…

Page 3: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

WE NEED THE AI

Page 4: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

THERE ARE DIFFERENT KINDS OF ROBOTS

Marketing approach

Interactive Application Security Testing (IAST)

Dynamic Application Security Testing (DAST)

Static Application Security Testing (SAST)

Technical approach

Black Box/White Box

Static/Dynamic

Scientific approach

It's all relative

Page 5: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

DAST

We don’t have access to [server] application

Fuzzing/Fault injection

Pro

Easy to implement/Easy to verify results/~Low level of false positives

Language/Framework/Backend independent

Cons

Weak API coverage/Auth/Web 2.0

Application should be deployed/Can terminate app*

**

*And admins will terminate you

**Never stops

Page 6: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SAST

We have access full access to application [source code]

Model checking/correctness properties of finite-state systems

Pro

[possible] Good coverage/Don’t need to deploy app

[possible] Good performance*

Cons

Hard to implement**/Hard to verify results

[can generate]a lot of of false positives/Language dependent

K := { (i, x) | program i will eventually halt if run with input x} ***

*Because of computation timeouts

**If you don’t use grep lexemes stream pattern matching

**The halting problem

Page 7: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SAST

Page 8: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SAST

Page 9: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

IAST

Have full access to application [source code]/system and can patch it

Fuzzing/Instrumentation/Data [control] flow tracing

Pro

Can combine strengths of SAST and DAST

Control of dataflow/Second chance vulns/binary analysis

Cons

Can combine weaknesses of SAST and DAST

Need a fuzzer/Need to patch a server

Generates tons of results (execution trace)

Need to have/patch “live” system

Page 10: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

CAN WE USE (.AST)?

http://ibm.co/HeDsGw

Page 11: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

URL-TO-SOURCE MAPPINGS

SAST and DAST have produces incompatible output

SAST: line of code, CFG

DAST: Input data (HTTP Request)

?

Page 12: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

HYBRID ANALYSIS!

http://bit.ly/17wbvnL

Page 13: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

REALITY

Need to have and to patch “live” system/source code

Need to analyze application several times

Magic to correlate “line number” (SAST) and “input data” (DAST)

*

*Never stops

Page 14: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

PERFECTION?

No live system

Low level of false positives

Automatic exploits generation!

Page 15: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

PERFECTION?

No live system

Low level of false positives

Automatic exploits generation!

Page 16: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

PERFECTION: NO LIVE SYSTEM

Need to use static analysis

Proper model representation is half the battle

Page 17: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

ABSTRACT SYNTAX TREE

Page 18: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

CONTROL FLOW GRAPH

Page 19: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

PROGRAM DEPENDENCE GRAPH

Page 20: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SYMBOLIC EXECUTION

Page 21: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SYMBOLIC EXECUTION!

Microsoft Automata

KLEE/Kleaver

Page 22: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SYMBOLIC EXECUTION :(

Path Explosion *

Full support of language (functions/frameworks/environment)**

[sometimes] too far from real code [execution flow]***

*Number of paths grows exponentially with program size and can be infinite ****

**Zillions man-hours with endless updates****

***SAT was the first known NP-complete problem, as proved by Stephen Cook in 1971

**** Never stops

Page 23: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SYMBOLIC EXECUTION?!!

Source code

<?php // test.php

if ($_GET['p'] == 'P@ssw0rd') {

print base64_decode($_GET['text']);

}

Logical formula

($_GET[‘p’] == ‘P@ssw0rd’) && (base64_decode($_GET['text']) == <script>alert('test');</script>)

Page 24: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

PERFECTION?

No live system

Low level of false positives

Automatic exploits generation!

Page 25: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

EXPLOITS IIF !FALSE POSITIVES

Application Input Space Preconditions (Bad Input)

Unsafe (Bad Input)

Exploits

Page 26: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

EXPLOIT IS USEFUL TO

prove that vulnerability exists*

make additional [dynamic | automatic] checks**

create test cases for QA

generate signatures/virtual patches for AF/IDS***

* drive DevOps to shut up fix the bug

**automatic verification via fuzzing

***self-defending application

Page 27: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik
Page 28: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

KNOWLEDGE BASE

Languages grammar Input functions

Filtering functions

Potentially Vulnerable Functions (PVF) Related Vulnerabilities

Related Preconditions (Bad Inputs)

Related Exploit Creation Rules

Safe functions Can be called without any risk

Page 29: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

STATIC ANALIS IS HARD!

Page 30: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

DYNAMIC SLICING

Page 31: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

PREPARATORY CALCULATIONS

Page 32: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

TRICKY CASES

Page 33: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

WHY DYNAMIC EXECUTION?

<?php

$_F=__FILE__;$_X='Pz48IS0tIGI1ZzRuIGYyMnQ1ciAtLT4NCg0KPGQ0diBzdHlsNT0iY2w1MXI6YjJ0aDsiPjwvZDR2

Pg0KPGQ0diBzdHlsNT0iY2w1MXI6YjJ0aDsiPjwvZDR2Pg0KDQo8ZDR2IDRkPSJmMjJ0NXJiZyI+DQo8ZDR2IDRkPSJmMj

J0NXIiPg0KDQoJPGQ0diA0ZD0iZjIydDVybDVmdCI+DQoJCTxoYT5SNWM1bnRseSBXcjR0dDVuPC9oYT4NCgkJCTwzbD4N

CgkJCQk8P3BocCBnNXRfMXJjaDR2NXMoJ3Ayc3RieXAyc3QnLCA2MCk7ID8+DQoJCQk8LzNsPg0KCTwvZDR2Pg0KCQ0KCT

xkNHYgNGQ9ImYyMnQ1cm00ZGRsNTYiPg0KCQk8aGE+TTJudGhseSBBcmNoNHY1czwvaGE+DQoJCQk8M2w+DQoJCQkJPD9w

aHAgd3BfZzV0XzFyY2g0djVzKCd0eXA1PW0ybnRobHknKTsgPz4NCgkJCTwvM2w+PGJyIC8+DQoJPC9kNHY+DQoJDQoJPG

Q0diA0ZD0iZjIydDVybTRkZGw1YSI+DQoJCTxoYT5CbDJncjJsbDwvaGE+DQoJCQk8M2w+DQoJCQkJPD9waHAgZzV0X2w0

bmtzKC02LCAnPGw0PicsICc8L2w0PicsICcgLSAnKTsgPz4NCgkJCTwvM2w+DQoJPC9kNHY+DQoJDQoJPGQ0diA0ZD0iZj

IydDVycjRnaHQiPg0KCQk8aG8+DQoJICAgIEY0bmQgSXQ8L2hvPg0KCSAgIAkJPGYycm0gNGQ9InM1MXJjaGYycm00bmJs

MmciIG01dGgyZD0iZzV0IiAxY3Q0Mm49Ijw/cGhwIDVjaDIgJF9TRVJWRVJbJ1BIUF9TRUxGJ107ID8+Ij4NCgkgICAJCT

w0bnAzdCB0eXA1PSJ0NXh0IiB2MWwzNT0iVDIgczUxcmNoLCB0eXA1IDFuZCBoNHQgNW50NXIuLi4iIG4xbTU9InMiIDRk

PSJzNG5ibDJnIiAybmYyYzNzPSI0ZiAodGg0cy52MWwzNSA9PSAnVDIgczUxcmNoLCB0eXA1IDFuZCBoNHQgNW50NXIuLi

4nKSB7dGg0cy52MWwzNSA9ICcnO30iIDJuYmwzcj0iNGYgKHRoNHMudjFsMzUgPT0gJycpIHt0aDRzLnYxbDM1ID0gJ1Qy

IHM1MXJjaCwgdHlwNSAxbmQgaDR0IDVudDVyLi4uJzt9IiAvPg0KCQkJPC9mMnJtPg0KCQk8aG8+QWRtNG48L2hvPg0KCQ

kJPDNsPg0KCQkJCTw/cGhwIHdwX3I1ZzRzdDVyKCk7ID8+DQoJCQkJPGw0Pjw/cGhwIHdwX2wyZzRuMjN0KCk7ID8+PC9s

ND4NCgkJCQk8P3BocCB3cF9tNXQxKCk7ID8+DQoJCQkJPGw0PjwxIGhyNWY9Imh0dHA6Ly92MWw0ZDF0MnIud28uMnJnL2

NoNWNrPzNyND1yNWY1cjVyIj5YSFRNTDwvMT48L2w0Pg0KCQkJPC8zbD4NCgkJCQ0KCQk8aG8+Q3I1ZDR0czwvaG8+DQoJ

CQk8cD48MSBocjVmPSJodHRwOi8vd3d3LjFmZjRsNDF0NWRyMWcybi5jMm0vZnI1NS10NW5uNHMtdzJyZHByNXNzLXRoNW

01LW4zbWI1ci0ybjUvIj5UNW5uNHMgVzJyZHByNXNzIFRoNW01PC8xPjxiciAvPmJ5IDwxIGhyNWY9Imh0dHA6Ly93d3cu

YjV0YjJuM3MuYzIuM2siPkZyNTUgQjV0cyBUNW5uNHM8LzE+PGJyIC8+UDJ3NXI1ZCBieSA8MSBocjVmPSJodHRwOi8vdz

JyZHByNXNzLjJyZyI+VzJyZFByNXNzPC8xPi48L3A+DQoJPC9kNHY+DQoJCQ0KPC9kNHY+DQoNCjxkNHYgNGQ9ImYyMnQ1

cmIydHQybSI+DQo8aG8+QzJweXI0Z2h0ICZjMnB5OyA8P3BocCBibDJnNG5mMignbjFtNScpOz8+IDw/cGhwIDVjaDIgZD

F0NSgnWScpOz8+IEFsbCBSNGdodHMgUjVzNXJ2NWQuPC9obz4NCjwvZDR2Pg0KDQo8L2Q0dj4NCg0KPD9waHAgZDJfMWN0

NDJuKCd3cF9mMjJ0NXInKTsgPz4NCg0KPC9iMmR5Pg0KPC9odG1sPg==';eval(base64_decode('JF9YPWJhc2U2NF9k

ZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZS

gnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Page 34: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

DYNAMIC EXECUTION!

Page 35: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

FIND EXPLOIT!

Page 36: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SOLVER AND EXPLOIT

<?php // /test.php

print base64_decode ($_GET['x']) ;

?>

exploit:

GET

/test.php?x=PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg%3D%3D

Page 37: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SOLVER AND EXPLOIT

Page 38: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

DEMO

Page 39: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

INSIDE IN [ISLAND] GRAMMAR

Change MySQL Grammar

Page 40: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

CONDITIONS

We can’t [symbolically | interactive] resolve all part of equation

Session id’s in files: (file('../admin/conf/config.inc')[2] == session_id())

Session values are set: $_SESSION["admin_login"]==true

External connections: ftp_connect(str_replace('ftp://', '', $_POST['ftpsite']))

Configuration: !((strpos(php_sapi_name(), 'apache') !== False))

sqlsrv_connect('***', array('Database' => '', 'UID' => '***', 'PWD' => '***'))==True

Page 41: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

BACKDOORS?

Exploit:

GET/core/jscss.php?files=%2F..%2F..%2Fetc%2Fpasswd

Conditions:

(md5($_GET['PA']) === 'bb2a4974d7aca7da8735c70371361c0f')

Page 42: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

BACKDOORS!

…we use it

for emergency

support cases

when we need

to access files

but we don’t

have a password…

Page 43: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

DEMO

Page 44: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SECOND CHANCE

Application

Server DB

Inject Exploit

Trigger Exploit

Page 45: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SECOND CHANCE?

Cross Site Scripting Vulnerability

Exploit: GET /viewResults.php HTTP/1.1

Code: print $question . "<BR>";

Condition

(mysql_fetch_assoc(mysql_query(('SELECT * FROM tblquestions, answers WHERE tblquestions.QID = answers.QID AND answers.QID = \'' . $_GET['h1'] . '\'')))['Question'] === '<script>alert(1)</script>')

Page 46: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

SECOND CHANCE!

Page 47: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

CONCLUSIONS

Exploit generation can improve .AST

Reduce false positive

Add transparency

Helps to hack stuff

Condition resolver can help do detect

Authentication condition and access control issues

Hidden execution paths (e.g. backdoors)

Hardcoded conditions

Combination of symbolic and real execution is useful

Reduce labor input

Improve performance

Helps to balance CPU/time/memory

Page 48: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

RELATED WORKS

Chandrasekhar Boyapati, Paul Darga. Eficient software model checking of data structure properties.

Keshav Pingali, Micah Beck, Richard Johnson, Mayan Moudgill, and Paul Stodghill. Dependence flow graphs: an algebraic approach to program dependencies.

E. Morel and C. Renvoise. Global optimization by suppression of partial redundancies.

R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. An eficient method of computing static single assignment form.

Vugranam C. Sreedhar and Guang R. Gao. Computing u-nodes in linear time using dj-graphs

Mark N. Wegman and F. Kenneth Zadeck. Constant propagation with conditional branches.

Ron K. Cytron and Jeanne Ferrante. Eficiently computing u-nodes on-the-fly.

Thomas Ball, Rupak Majumdar, Todd D. Millstein, and Sriram K. Rajamani. Automatic predicate abstraction of c programs.

Page 49: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

RELATED WORKS

Thomas Ball and Sriram K. Rajamani. Bebop: A symbolic model checker for boolean programs.

David Binkley. Interprocedural constant propagation using dependence graphs and a data-flow model.

Thanassis Avgerinos, Sang Kil Cha, Brent Lim Tze Hao and David Brumley. AEG: Automatic Exploit Generation

Sang Kil Cha, Thanassis Avgerinos, Alexandre Rebert and David Brumley. Unleashing MAYHEM on Binary Code

The Essence of Command Injection Attacks in Web Applications,

Zhendong Su, Gary Wassermann, The Essence of Command Injection Attacks in Web Applications

Manar H. Alalfi, A Verification Framework for Access Control in Dynamic Web Applications

Page 50: Ai for hacker - SECUINSIDEsecuinside.com/archive/2014/2014-2-3.pdf · AI FOR HACKER: EXPLOIT COOKING MACHINE Sergey Gordeychik

AI FOR HACKER: EXPLOIT COOKING MACHINE

Sergey Gordeychik

www.phdays.com

www.scadasl.org

www.ptsecurity.com