Symbolic execution: The next chapter of the game

24
tràđáhacking Symbolic execution The next chapter of the game Trà Đá Hacking #3 Nguy„n Minh H£i Lê Nguyên Dũng Ngày 15 tháng 1 năm 2017

Transcript of Symbolic execution: The next chapter of the game

tràđáhacking

Symbolic execution

The next chapter of the game

Trà Đá Hacking #3

Nguyễn Minh Hải

Lê Nguyên Dũng

Ngày 15 tháng 1 năm 2017

Danh mục

1. About me

2. Symbolic execution

3. Demo

1

About me

About me

Nguyễn Minh Hải

• Hiện đang là nghiên cứu sinh tại Đại học Bách Khoa TP.HCM

• Đã có thời gian dài nghiên cứu về mã độc và ứng dụng symbolic

execution

Lê Nguyên Dũng

• zun - botbie team

• Đã có một thời gian dài nghiên cứu về bảo mật qua Zing News

2

Symbolic execution

Phân tích binary: Hướng tiếp cận thông dụng

• Phân tích tĩnh - Static analysis: Hiểu code bằng mắt

• Phân tích động - Dynamic analysis: Sleep,isDebuggerPresent ... và nhiều chiến lợi phẩm giúp rèn luyện sự

kiên trì khác

• (1) F7, F8, F9, patch ...

• (2) Eureka: Sắp ra rồi

• (3) Làm lại

• (4) Eureka: Gần lắm rồi

• (5) Làm lại

• (6..n) ...

• (n+1) Oh sh!t, flag

3

Why ?

4

Why ? (Code example)

1: x = input ();

2: x = x + 5;

3:

4: if (x > 0)

5: y = input ();

6: else

7: y = 10;

8:

9: if (x > 2)

10: if (y == 2789)

11: assert (0); // error

5

Why ? (Branch)

Hình 1: Mỗi lối rẽ một câu chuyện, và thường là buồn

6

Symbolic execution: Giới thiệu

Symbolic execution

Công nghiệp hóa và hiện đại hóa mò nhánh

• Cho phép nhận dạng các điều kiện rẽ nhánh

• Xác định điều kiện đường đi, từ đó giải toán để xác định giá trị cụ

thể để tiếp cận đường đi tương ứng

Ví dụ: Chọn nhánh Error đầu tiên. Ta có điều kiện đường đi:

a+ 5 > 0 ∧ a+ 5 > 2 ∧ b = 2789

⇔a > −3 ∧ b = 2789

7

Symbolic execution: Kiến trúc (1)

Hình 2: Kiến trúc BE-PUM8

Symbolic execution: Kiến trúc (2)

Các thành phần thông dụng của một symbolic execution engine:

• Static analysis: Disassembler, có thể có IL (Intermediate Language)

• Dynamic binary instrumentator - DBI: Emulator hoặc một công

cụ phân tích binary động có thể lập trình tương tác được như Pin,

DynamoRio... Phải có cơ chế lưu và trở về một state nhất định

• Symbolic execution - SE: Sử dụng SMT (Satisfiability modulo

theories) để giải các điều kiện đường đi (path condition)

9

Symbolic execution: Làm việc như thế nào ?

• Thành phần SE sẽ tương tác với quá trình thực thi của DBI

• SE nhận dạng các điều kiện sinh biến symbolic

1: x = input (); <-- symbolic here: x = k

2: x = x + 5;

3: x *= 2;

4: if (x > 2)

5: assert (0); <-- target

• Theo dõi các tính toán liên quan tới biến symbolic

2: x = x + 5; <-- x = k + 5

3: x *= 2; <-- x = (k + 5) * 2

• Tại các điểm rẽ nhánh có điều kiện chứa biến symbolic, giải toán

xem nhánh có khả thi không, đồng thời xác định được giá trị của

biến symbolic tương ứng

4: if (x > 20) <-- (k + 5) * 2 > 20

• Nếu muốn duyệt nhiều nhánh, phải cơ chế lưu tại state thực thi hiện

tại và lần lượt đi từng nhánh

10

Symbolic execution: Mayhem

1st Cyber Grand Challenge == Trúng 20 giải đặc biệt xổ số truyền thống

Hình 3: Kiến trúc Mayhem

11

Symbolic execution: Công cụ

• Binary: BitBlaze, Mayhem, S2E, Miasm, Angr, Triton, BINSEC/SE,

BE-PUM (nhà trồng)

• Source: KLEE, CUTE, Otter ...

12

Symbolic execution: Ứng dụng

• Các ứng dụng kiểm thử phần mềm

• Tự động phân tích hành vi malware

• CTF game

13

Symbolic execution: Phân tích malware

Malware thường nhận dạng có đang bị phân tích hay không nhằm che

dấu hành vi nguy hiểm, các kỹ thuật thường sử dụng:

• Yếu tố thời gian

• Hệ thống phân tích chưa hiện thực một số tập lệnh thông dụng: Tập

lệnh xử lý số thực, tập lệnh tạo số ngẫu nhiên ...

• Cơ chế quản lý tiến trình (process) của hệ điều hành

• Kiểm tra có đang bị theo dõi (monitor) hay không

Bằng cách nhận dạng các tập lệnh và các API liên quan, từ đó sinh

ra toán tử ký hiệu tương ứng, SE có thể tiếp cận các đường thực

thi ẩn của mã độc

14

Symbolic execution: Giới hạn

• Nhiều điều kiện đường đi SMT chưa hoặc không thể giải quyết được

md5("cái gì đó") == số_nào_đấy

• Sự bùng nổ số đường đi khả thi

Hình 4: Sự bùng nổ các đường thực thi

15

Demo

Demo

• KLEE: hackyou2016 re100

• BE-PUM: flareon2015 level 1, Triton example

16

Cảm ơn các bạn đã lắng nghe

Q&A

16

References i

[1] Nguyen Minh Hai, Mizuhito Ogawa and Quan Thanh Tho,

"Obfuscation code localization based on CFG generation of

malware", The 8th International Symposium on Foundations &

Practice of Security, Springer, Clermont-Ferrand, France, 2015.

[2] Research Topics in Software Quality – Session 1: Lime Concolic

Tester, "http://soft.vub.ac.be/ qstieven/sq/session1.html", 2015.

[3] Hyunmin Seo, Sunghun Kim, "How We Get There: A Context-Guided

Search Strategy in Concolic Testing", 2014.

[4] Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager,

Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin

Poosankam, Prateek Saxena, "BitBlaze: A new approach to computer

security via binary analysis", 4th Information Systems Security, 2008.

References ii

[5] Sang Kil Cha, Thanassis Avgerinos, Alexandre Rebert and David

Brumley, "Unleashing MAYHEM on Binary Code", IEEE Security and

Privacy, 2012.

[6] Yan Shoshitaishvili, Ruoyu Wang, Christopher Salls, Nick Stephens,

Mario Polino, Andrew Dutcher, John Grosen, Siji Feng, Christophe

Hauser, Christopher Kruegel, Giovanni Vigna. "(State of) The Art of

War: Offensive Techniques in Binary Analysis", 2016.

[7] Triton: Dynamic binary analysis, "http://triton.quarkslab.com", 2016.

[8] Robin David, Sébastien Bardin, Thanh Dinh Ta, Laurent Mounier,

Josselin Feist, Marie-Laure Potet, Jean-Yves Marion, "BINSEC/SE: A

Dynamic Symbolic Execution Toolkit for Binary-level Analysis,

SANER 2016.

References iii

[9] Min Gyung Kang, Pongsin Poosankam, and Heng Yin, Renovo: A

Hidden Code Extractor for Packed Executables, 5th ACM Workshop

on Recurring Malcode (WORM), Oct 2007.

[10] Alexander Chailytko, Stanislav Skuratovich, Defeating sandbox

evasion: how to increase the successful emulation rate in your virtual

environment, Virus Bulletin (VB), 2016.