MSEC - Chương I - Cơ bản về dịch ngược phần mềm

21
Chương 1 Căn bản về dịch ngược Trung Kiên – ATTT 10 12/06/2022 Trung Kiên - MSEC 1 REVERSE ENGINEERING

Transcript of MSEC - Chương I - Cơ bản về dịch ngược phần mềm

Page 1: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 1

Chương 1

Căn bản về dịch ngượcTrung Kiên – ATTT 10

Trung Kiên - MSEC

REVERSE ENGINEERING

Page 2: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 2

Mục lục

I. Dịch ngược là gì?

II. Ứng dụng của dịch ngược

III.Quá trình dịch ngược

IV.Các công cụ cần thiết

Page 3: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 3

Phần 1: Dịch ngược là gì?

Dịch ngược là quá trình rút ra những kiến thức hoặc thông tin thiết kế từ tất cả những thứ con người làm ra và thiết kế lại nó hoặc thiết kế lại những thứ khác dựa vào những thông tin lấy được Lý do và mục đích của việc dịch ngược rất rộng rãi, từ những việc làm mang đến lợi ích cho xã hội cho đến những hành động phi pháp.

Page 4: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 4

Phần 2: Ứng dụng của dịch ngược

I. Liên quan đến bảo mật

II. Dịch ngược trong phát triển phần mềm

III. Đánh giá chất lượng phần mềm

Page 5: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 5

Phần 2: Ứng dụng của dịch ngược

I. Liên quan đến bảo mật

1. Ứng dụng độc hại

2. Dịch ngược thuật toán mã hóa

3. Quản lý bản quyền kỹ thuật số

4. Kiểm nghiệm chương trình

Page 6: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 6

Phần 2: Ứng dụng của dịch ngược

I. Liên quan đến bảo mật

1. Ứng dụng độc hại

- Đối với người viết ứng dụng độc hại: tìm ra các lổ hỗng trong hệ điều hành và các chương trình khác

- Đối với nhà phát triển chương trình diệt mã độc: lần theo từng bước của chương trình và định mức thiệt hại có thể xảy ra, đánh giá mức độ lây nhiễm, và làm sao để gỡ bỏ nó khỏi hệ thống bị lây nhiễm

Page 7: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 7

Phần 2: Ứng dụng của dịch ngược

I. Liên quan đến bảo mật

2. Dịch ngược thuật toán mã hóa

- Thuật toán giới hạn: Sự bí mật của thuật toán chính là nó. Một khi thuật toán bị lộ, không còn an toàn. Thuật toán giới hạn cung cấp độ bảo mật thấp bởi vì dịch ngược khiến chúng rất khó giữ được sự bí mật của thuật toán. Một khi dịch ngược, vấn đề chỉ còn là thời gian trước khi thuật toán bị lộ - Thuật toán dựa theo khóa: sự bí mật chính là khóa, một số giới hạn giá trị được sử dụng để thuật toán mã hóa và giải mã. Thuật toán thường được công khai và key được giữ bí mật. Điều khó khiến cho việc dịch ngược vô dụng bởi vì thuật toán đã biết.

Page 8: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 8

Phần 2: Ứng dụng của dịch ngược

I. Liên quan đến bảo mật

3. Quản lý bản quyền kỹ thuật số- Máy tính hiện đại ngày nay chứa nhiều loại bản quyền

được đưa sang thông tin số. Nhạc, phim kể cả sách, những thức chỉ tồn tại ở dạng vật lý giờ đã được số hóa. Thông thường, các nhà phần phối nội dung đã được tích hợp công nghệ chống sao chép. Nó sẽ ngăn chặn người dùng sao chép nội dung số bất hợp pháp- Dịch ngược có thể bẻ khóa những công nghệ quản lý bản quyền số. Để làm được phải hiểu làm sao nó hoạt động. Bằng cách sử dụng dịch ngược, ta có thể biết được những bí mật bên trong công nghệ đó và tìm ra cách để vô hiệu hóa sự bảo vệ

Page 9: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 9

Phần 2: Ứng dụng của dịch ngược

I. Liên quan đến bảo mật

4. Đánh giá chương trình- Phần mềm mã nguồn mở vốn được hàng ngàn kĩ sư

phần mềm xem xét nên nó đem lại cảm giác an toàn.- Phần mềm mã nguồn mở dễ dàng đọc được từng dòng

lệnh nên có thể bị những lỗ hổng bảo mật có thể bị khai thác.

- Các phần mềm có bản quyền không cung cấp mã nguồn, vì vậy việc dịch ngược là một cách để tìm ra các lỗ hổng. Việc dịch ngược không thể giúp tiếp cận và đọc từng dòng lệnh như mã nguồn mở, nhưng có thể giúp tìm ra các lỗi chứa trong đó

Page 10: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 10

Phần 2: Ứng dụng của dịch ngược

I. Dịch ngược trong phát triển phần mềm

1. Sự tương thích với phần mềm độc quyền

2. Phát triển phần mềm cạnh tranh

3. Đánh giá chất lượng phần mềm

Page 11: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 11

Phần 2: Ứng dụng của dịch ngược

I. Dịch ngược trong phát triển phần mềm

1. Sự tương thích với phần mềm độc quyền- Khi làm việc với thư viện chương trình hoặc các hàm API

hệ thống, các tài liệu gần như là không đủ.- Mặc dù các nhà phát hành làm mọi cách để đảm bảo

những hàm thư viện được đảm bảo, những nhà phát triển sẽ ngoan cố và tiếp tục cho đến khi lấy được những thứ họ cần, hoặc liên hệ để tìm ra câu trả lời.

- Hoặc có thể sử dụng kỹ thuật dịch ngược để tìm ra các giải quyết nhiều vấn đề trong thời gian ngắn với sự tương thích cao.

Page 12: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 12

Phần 2: Ứng dụng của dịch ngược

I. Dịch ngược trong phát triển phần mềm

2. Phát triển sản phẩm cạnh tranh- Phần mềm đang ngày càng trở nên phức tạp hơn, vậy

nên dịch ngược toàn bộ phần mềm nhằm mục đích tạo ra một sản phẩm cạnh tranh gần như là không thể

- Thường sẽ không dịch ngược hoàn toàn lại phần mềm ngoại trừ những thiết kế, thuật toán phức tạp hoặc độc nhất mà rất khó hoặc tốn kém để phát triển

- Ngoài ra, hầu như các chương trình được phát triển độc lập, nhưng độ phức tạp cao hay những thành phần bất thường có thể được dịch ngược và tích hợp vào sản phẩm mới.

Page 13: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 13

Phần 2: Ứng dụng của dịch ngược

I. Dịch ngược trong phát triển phần mềm

3. Đánh giá chất lượng phần mềm- Có thể đánh giá chương trình qua tính bảo mật và dễ bị

tổn thương.- Phần mềm mã nguồn mở như quyển sách cho phép mọi

người đọc và đánh giá chất lượng trước khi sử dụng- Phần mềm bản quyền không cung cấp mã nguồn và cho

người dùng một thông điệp “hãy tin tưởng”. Bạn không biết về thứ mà bạn đang mua.

- Vì vậy dịch ngược sẽ giúp đánh giá tính bảo mật của những phần mềm và sức chịu đựng trước những nguy cơ tấn công.

Page 14: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 14

Phần 3: Quá trình dịch ngược

I. Dịch ngược cấp độ hệ thống

II. Dịch ngược cấp độ dòng lệnh

Page 15: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 15

Phần 3: Quá trình dịch ngược

1. Dịch ngược cấp độ hệ thống

- Dịch ngược hệ thống liên quan đến chạy một vài công cụ trên chương trình và khởi tạo một vài dịch vụ hệ điều hành để lấy thông tin, điều tra sự thực thi của chương trình, theo dấu chương trình nhật xuất,..

- Phần lớn thông tin này đến từ hệ điều hành, bởi bất cứ phản ứng của chương trình từ bên ngoài phải được thông qua hệ điều hành. Đó là lý do tại sao người dịch ngược phải hiểu hệ điều hành, họ có thể thu được một lượng lớn thông tin về chương trình đó trong quá trình dịch ngược

Page 16: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 16

Phần 3: Quá trình dịch ngược

2. Dịch ngược cấp độ dòng lệnh

- Dịch ngược cấp độ dòng lệnh thực sự là một nghệ thuật. Lấy ra những mẫu thiết kế và thuật toán từ chương trình là một quá trình phức tạp đòi hỏi phải thành thạo kĩ thuật dịch ngược cùng với nắm vững phát triển phần mềm, CPU, hệ điều hành

- Dịch ngược cấp độ dòng lệnh phải quan sát dòng lệnh ở mức rất thấp, điều đó cho phép chúng ta thấy được từng chi tiết của việc thực thi chương trình.

Page 17: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 17

Phần 4: Các công cụ cần thiết

I. Theo dõi hệ thống

II. Disassemblers

III.Debuggers

IV.Decompilers

Page 18: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 18

Kết luận

Dịch ngược phần mềm là một Kỹ thuật quan trọng trong công việc Bảo mật, Phát triển phần mềm và Đánh giá chất lượng phần mềm.

Dịch ngược phần mềm là một công việc đòi hỏi nhiều kỹ thuật, người làm Dịch ngược phần mềm ngoài việc hiểu rõ chi tiết về phần mềm, về hệ thống cũng như là người lập trình giỏi để có thể làm tốt công việc Dịch ngược.

Tuy nhiên, vẫn còn một số vấn đề về luật pháp và đạo đức nghề nghiệp cần phải lưu ý.

Page 19: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 19

Thảo luận

Page 20: MSEC - Chương I - Cơ bản về dịch ngược phần mềm

18/04/2023 Trung Kiên - MSEC 20

Tài liệu tham khảo

[1] “Reversing – Secret of Reversing Engineering” – Eldad Eilam

[2] “Reversing” - Wikipedia

[3]

[4]

[5]