Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same...

26
Python Arsenal for Reverse Engineering Dmitriy ‘D1g1’ Evdokimov Head of research center Digital Security

Transcript of Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same...

Page 1: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse

Engineering Dmitriy ‘D1g1’ Evdokimov

Head of research center

Digital Security

Page 2: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

#whoami • Security researcher from Digital Security

• Section editor in the Xakep magazine

• Co-organizer of DEFCON Russia & ZeroNights

• Author of “Python Arsenal for Reverse Engineering”

• I specialize in finding vulnerabilities in binary applications without source code.

• I perform analysis of mobile applications designed for Android OS, iOS, and WindowsPhone OS.

• Speaker at ZeroNights, Confidense, HackInParis, BlackHat, and SAS conferenсes.

2

Page 3: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Real life tasks vs. CTF tasks • Same goal but different conditions

– Time

– Environment

– Code size

– Code complexity

• Instruments are common

3

Page 4: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Vuln finding

4

Find vuln

Exploitable ?

Write exploit

RE

Fuzzing

Shellcode

ROP

RE

- Recovery data format

- Increase code coverage

input

Suspicious

code

Fu

zzin

g/R

E

RE

- Decompilation

- Emulation

- Programmable debugging

- DBI

- Timeless debugging - Symbolic execution

- Concolical Execution

+

- Intermediate languages

- SMT solvers - …

Page 6: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

History • ~ 2010 – Internal usage

• 5 October, 2011 – Public PDF document

• 21 November, 2012 – Site – Thx to Anton Astafiev

– Slides “Python Arsenal for Reverse Engineering”

from ZeroNights 2012

• 20 October, 2014 – Twitter account – @PythonArsenal

6

Page 7: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Site • 143 libraries

• Advanced search

• Examples, articles and etc.

7

Page 8: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Bindings\Interface\Wrapper\API\... • IDA Pro

• WinDbg

• gdb

• OllyDbg

• Radare

• ImmunityDbg

• BAP

• BinNavi

• Capstone

• ptrace

8

• Hopper

• LLVM

• Pin

• Medusa

• Bochs

• Libemu

• OpenREIL

• Frida

• Valgrind

• Unicorn

• Z3

• LibVMI

• …

• Different engines but same language.

It allows us to easily integrate them into each other.

Page 9: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Example • Programmable debugging in WinDBG with pykd

• WinDBG commands execution – dbgCommand(commandStr)

• Debugger control commands – go()

– trace()

– step()

• Conditional breakpoints – setBp(addr, callback)

• Debugging events monitor

• class eventHandler – onBreakpoint/onException/onLoadModule/onUnloadModule

9

Page 10: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Python everywhere

10

CHIPSEC, BITS, UEFI Firmware Parser

PyVMI, ramooflax

Kplugs, LLA, pykd, …

~130 libraries

UEFI Firmware Parser

Page 11: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Demo • Easy access to hardware resources with CHIPSEC

11

Page 12: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

File formats • PE

• ELF

• DWARF

• Mach-O

• BIOS/ME/….

12

Page 13: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Example • Check security compilation flags (ASLR, DEP,

SafeSEH) with pefile

13

Page 14: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

DEMO • Work with exec file like OS loader with cle

– A part of anrg framework

14

Page 15: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Architectures • X86/x86_64

• ARM/ARM64

• PPC

• MIPS

• AVR

• ….

15

Page 16: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Example • Semantic analysis with Capstone

16

Page 17: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Example • How to add new arch in miasm

– DEFCON Russia talk by snk

17

Page 18: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Analysis • Static

– Disassembler

– Assembler

– Decompiler

– Emulation

– SAE

• Dynamic – Debuggers

– DBI

– DAE

• Intermediation languages

• SMT solvers

18

Page 19: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Example • IDAPython for Hex-Rays decompiler

19

Page 20: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Example • Instrumentation Android app with Frida

– Python + JavaScript =)

20

Page 21: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Demo • Emulation (based on IL) exotic architectures with radare2

21

Page 22: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Demo

• IDAPython + iPython + Unicorn

22

Page 23: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Demo • angr

23

See "Angr - a powerful binary analysis platform for CTFs.

The Cyber Grand Challenge" talk

from Nick Stephens и Chris Salls (UCSB)

;)

Page 24: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Useful links and additional materials • "Python in a hacker's toolbox" from Gynvael Coldwind (Captain of Dragon Sector)

– Must see for all CTF commands!

• "Python & Reverse Engineering Software“ from Alexander Hanel

• “Gray Hat Python” and “Black Hat Python” from Justin Seitz

• “Python tools for penetration testers”

24

Page 25: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

Python Arsenal for Reverse Engineering

© 2002—2016, Digital Security

Conclusion • Python is great language for reverse engineering tasks

• There are a lot of cool libraries – Do not reinvent the wheel

– Use and contribute

• Create new tools!

• Thanks to my team members for getting it done today! Roman Bazhin, Georgy Nosenko, Maxim Malyutin and Boris Ryutin.

25

Page 26: Python Arsenal for Reverse Engineering - Digital Security · Real life tasks vs. CTF tasks •Same goal but different conditions – Time ... – Slides Python Arsenal for Reverse

[email protected] @evdokimovds

Digital Security, Moscow: (495) 223-07-86 Digital Security, Saint Petersburg: (812) 703-15-47

Thank you for your attention! Any questions?

26

Internship in Digital Security http://dsec.ru/about/traineeship/