Kỹ thuật tấn công dịch ngược mã nguồn phần mềm Reverse engineering

16 1.7K 14
Kỹ thuật tấn công dịch ngược mã nguồn phần mềm  Reverse engineering

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Kỹ thuật tấn công dịch ngược mã nguồn phần mềm Reverse engineeringDị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. 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.

LỜI MỞ ĐẦU Trong năm gần đây, chứng kiến phát triển mãnh liệt lĩnh vực nghiên cứu liên quan đến máy tính tin học Sự phát triển phi thường máy tính thay đổi sâu sắc phương pháp luận khoa học mở cho ngành CNTT phát triển vượt bậc, bên cạnh yếu tố an toàn bảo mật đặt lên hàng đầu Trong năm qua, có nhiều vụ án liên quan tới vấn đề an tồn thơng tin internet ăn cắp thông tin tài khoản ngân hàng, thơng tin cá nhân… Liên quan tới chủ đề đó, mơn học An tồn bảo mật thơng tin, nhóm chúng em tìm hiểu phần nhỏ lĩnh vực bảo mật để làm tiểu luận môn học Trong phạm vi tiểu luận này, nhóm trình bày vấn đề nhất, giúp chúng em nắm bắt kỹ thuật môn học An tồn bảo mật thơng tin cụ thể Kỹ thuật công dịch ngược mã nguồn phần mềm - Reverse engineering Chúng em xin chân thành cảm ơn thầy giáo TS Nguyễn Tấn Khôi giảng dạy giúp đỡ để chúng em hoàn thành tiểu luận Đà Nẵng, ngày 09 tháng 07 năm 2015 Nhóm học viên thực GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khơi MỤC LỤC Khoa học máy tính – K29 Khoa học máy tính – K29 Trang GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khơi PHẦN I TÌM HIỂU LÝ THUYẾT Kỹ thuật công dịch ngược mã nguồn phần mềm - Reverse engineering I.1 Dịch ngược gì? Dịch ngược q trình rút kiến thức thơng tin thiết kế từ tất thứ người làm thiết kế lại thiết kế lại thứ khác dựa vào thông tin lấy Lý mục đích việc dịch ngược rộng rãi, từ việc làm mang đến lợi ích cho xã hội hành động phi pháp I.2 Ứng dụng dịch ngược I.2.1 Liên quan bảo mật  Ứng dụng độc hại • Đối với người viết ứng dụng độc hại: tìm lổ hỗng hệ điều hành 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 bước chương trình định mức thiệt hại xảy ra, đánh giá mức độ lây nhiễm, để gỡ bỏ khỏi hệ thống bị lây nhiễm  Dịch ngược thuật toán mã hóa • Thuật tốn giới hạn: Sự bí mật thuật tốn Một thuật tốn bị lộ, khơng an tồn Thuật tốn giới hạn cung cấp độ bảo mật thấp dịch ngược khiến chúng khó giữ bí mật thuật tốn Một dịch ngược, vấn đề thời gian trước thuật tốn bị lộ • Thuật tốn dựa theo khóa: bí mật khóa, số Khoa học máy tính – K29 Khoa học máy tính – K29 Trang GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khôi giới hạn giá trị sử dụng để thuật tốn mã hóa giải mã Thuật tốn thường cơng khai key giữ bí mật Điều khó khiến cho việc dịch ngược vơ dụng thuật tốn biết  Quản lý quyền kỹ thuật số • Máy tính đại ngày chứa nhiều loại quyền đưa sang thông tin số Nhạc, phim kể sách, thức tồn dạng vật lý số hóa Thông thường, nhà phần phối nội dung tích hợp cơng nghệ chống chép Nó ngăn chặn người dùng chép nội dung số bất hợp pháp • Dịch ngược bẻ khóa cơng nghệ quản lý quyền số Để làm phải hiểu hoạt động Bằng cách sử dụng dịch ngược, ta biết bí mật bên cơng nghệ tìm cách để vơ hiệu hóa bảo vệ  Đánh giá chương trình • Phần mềm mã nguồn mở vốn hàng ngàn kĩ sư phần mềm xem xét nên đem lại cảm giác an tồn • Phần mềm mã nguồn mở dễ dàng đọc dòng lệnh nên bị lỗ hổng bảo mật bị khai thác • Các phần mềm có quyền khơng cung cấp mã nguồn, việc dịch ngược cách để tìm lỗ hổng Việc dịch ngược khơng thể giúp tiếp cận đọc dòng lệnh mã nguồn mở, giúp tìm lỗi chứa Khoa học máy tính – K29 Khoa học máy tính – K29 Trang GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khơi I.2.2 Dịch ngược phát triển phần mềm  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 hàm API hệ thống, tài liệu gần khơng đủ • Mặc dù nhà phát hành làm cách để đảm bảo hàm thư viện đảm bảo, nhà phát triển ngoan cố tiếp tục lấy thứ họ cần, liên hệ để tìm câu trả lời • Hoặc sử dụng kỹ thuật dịch ngược để tìm giải nhiều vấn đề thời gian ngắn với tương thích cao  Phát triển sản phẩm cạnh tranh • Phần mềm ngày trở nên phức tạp hơn, nên dịch ngược toàn phần mềm nhằm mục đích tạo sản phẩm cạnh tranh gần khơng thể • Thường khơng dịch ngược hồn toàn lại phần mềm ngoại trừ thiết kế, thuật tốn phức tạp độc mà khó tốn để phát triển • Ngồi ra, chương trình phát triển độc lập, độ phức tạp cao hay thành phần bất thường dịch ngược tích hợp vào sản phẩm  Đá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 dễ bị tổn thương Khoa học máy tính – K29 Khoa học máy tính – K29 Trang GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khơi • Phần mềm mã nguồn mở sách cho phép người đọc đánh giá chất lượng trước sử dụng • Phần mềm quyền không cung cấp mã nguồn cho người dùng thông điệp “hãy tin tưởng” Bạn thứ mà bạn mua  Bảo mật phần mềm • Việc chống dịch ngược giúp đánh giá tính bảo mật phần mềm sức chịu đựng trước nguy cơng • Kỹ thuật dịch ngược sử dụng để đảm bảo hệ thống khơng có lỗ hổng lớn lỗ hổng bảo mật Mục đích kỹ thuật dịch ngược làm cho hệ thống mạnh mẽ để bảo vệ khỏi phần mềm gián điệp tin tặc Tuy nhiên, điều thực hacker có đạo đức, nhờ mà ta xác định lỗ hổng hệ thống I.3 Quá trình dịch ngược I.3.1 Dịch ngược cấp độ hệ thống Dịch ngược hệ thống liên quan đến chạy vài cơng cụ chương trình khởi tạo vài dịch vụ hệ điều hành để lấy thông tin, điều tra thực thi chương trình, theo dấu chương trình nhật xuất, Phần lớn thơng tin đến từ hệ điều hành, phản ứng chương trình từ bên ngồi phải thơng qua hệ điều hành Đó lý người dịch ngược phải hiểu hệ điều hành, họ thu lượng lớn thơng tin chương trình trình dịch ngược I.3.2 Dịch ngược cấp độ dòng lệnh Dịch ngược cấp độ dòng lệnh thực nghệ thuật Lấy Khoa học máy tính – K29 Khoa học máy tính – K29 Trang GVHD: Nguyễn Thanh Bình An tồn bảo mật thông tin GVHD: Nguyễn Tấn Khôi mẫu thiết kế thuật tốn từ chương trình q trình phức tạp đòi hỏi phải thành thạo kĩ thuật dịch ngược 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 thấp, điều cho phép thấy chi tiết việc thực thi chương trình Kết luận Kỹ thuật dịch ngược áp dụng cho số khía cạnh hoạt động phần mềm phát triển phần cứng để chuyển tải ý nghĩa khác Nói chung, định nghĩa q trình tạo đại diện hệ thống mức độ trừu tượng cao hiểu biết nguyên tắc làm việc cấu trúc hệ thống nghiên cứu Với giúp đỡ kỹ thuật dịch ngược, hệ thống phần mềm xem xét kiểm tra kỹ lưỡng Có hai loại kỹ thuật dịch ngược; loại đầu tiên, mã nguồn có sẵn, khía cạnh cấp cao chương trình khơng Những nỗ lực thực để phát mã nguồn cho phần mềm phát triển gọi kỹ thuật dịch ngược Trong trường hợp thứ hai, mã nguồn cho phần mềm khơng có sẵn; đây, q trình phát mã nguồn gọi kỹ thuật dịch ngược Để tránh vi phạm quyền, kỹ thuật dịch ngược làm cho việc sử dụng kỹ thuật gọi phòng thiết kế Trong giới kỹ thuật dịch ngược, thường nghe kiểm tra hộp đen.Mặc dù thử nghiệm có API, mục tiêu cuối họ tìm lỗi cách nhấn sản phẩm cứng từ bên ngồi Ngồi ra, mục đích kỹ thuật dịch ngược để kiểm tra an ninh, loại bỏ bảo vệ, tùy chỉnh hệ thống nhúng, bao gồm tính bổ sung mà không chi tiêu nhiều hoạt động tương tự khác Khoa học máy tính – K29 Khoa học máy tính – K29 Trang GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khơi Tìm hiểu kỹ thuật dịch ngược để kiểm tra an ninh, loại bỏ sao… việc dịch ngược nhắm tới mục đích xấu để bẻ khóa quyền, hack chương trình, bên cạnh cần phải nghiên cứu sâu kỹ thuật chống dịch ngược nhằm bảo vệ quyền, bảo vệ lợi ích đáng vốn có phần mềm Khi tìm hiểu kỹ thuật dịch ngược phần mềm chúng em tìm hiểu sơ qua kỹ thuật chống dịch ngược, vấn đề Code Morphing Code morphing phương pháp sử dụng obfuscating (gây rối) phần mềm để bảo vệ phần mềm ứng dụng chống kỹ thuật dịch ngược Công nghệ bảo vệ mã cấp trung gian biên dịch từ ngôn ngữ Java NET ( ôxy , C # , Visual Basic , vv) mã nhị phân Code morphing phá vỡ mã bảo vệ vào số lệnh xử lý đoạn lệnh nhỏ thay chúng mã lệnh khác, đảm bảo kết cuối Do đó, gây rối bảo vệ mã cấp trung gian Code morphing cơng nghệ đa cấp có chứa hàng trăm mơ hình chuyển đổi mã Ngồi công nghệ chuyển số lệnh lớp trung gian vào máy ảo lệnh Code morphing không bảo vệ chống truy tìm thời gian chạy, mà tiết lộ logic thực mã bảo vệ Không giống bảo vệ mã nguồn, khơng có khái niệm mã giải mã với phương pháp khối mã bảo vệ trạng thái thực thi thực mã chuyển đổi Các mã trung gian ban đầu vắng mặt mức độ định, khơng làm gây rối cho nhìn rõ ràng dòng mã gốc Mã morphing thường sử dụng để gây rối bảo vệ chống chép kiểm tra chương trình để xác định xem cài đặt xác Khoa học máy tính – K29 Khoa học máy tính – K29 Trang An tồn bảo mật thơng tin GVHD: Nguyễn Thanh Bình GVHD: Nguyễn Tấn Khơi thực hợp lệ, chống chép lậu, để làm cho việc loại bỏ mã bảo vệ phần mềm khó Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 10 GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khôi PHẦN II THỰC HÀNH Thử nghiệm với công cụ dịch ngược mã nguồn phần mềm Net Reflector II.1 Các công cụ Reverse Engineering Như đề cập trên, kỹ thuật dịch ngược q trình phân tích phần mềm để xác định thành phần mối quan hệ Q trình kỹ thuật dịch ngược thực cách sử dụng số công cụ phân loại thành gỡ rối Disassemblers, biên tập viên hex, giám sát công cụ biên dịch ngược: Disassemblers - Một phận phân tách sử dụng để chuyển đổi mã nhị phân thành mã lắp ráp sử dụng để trích xuất chuỗi, nhập xuất chức năng, thư viện vv Disassemblers chuyển đổi ngôn ngữ máy sang định dạng thân thiện Có dissemblers khác mà chuyên điều định Debuggers - công cụ mở rộng chức phận phân tách cách hỗ trợ ghi CPU, duping hex chương trình, quan điểm chồng vv Sử dụng dò lỗi, lập trình viên thiết lập điểm ngắt chỉnh sửa mã lắp ráp thời gian chạy Debuggers phân tích nhị phân cách tương tự Disassemblers cho phép Reverser để bước qua mã cách chạy dòng thời gian để điều tra kết Biên tập Hex - Những biên tập viên cho phép nhị phân để xem trình biên tập thay đổi theo yêu cầu phần mềm Có nhiều Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 10 11 GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khơi loại khác hex biên tập viên có sẵn sử dụng cho chức khác PE Viewer Resource - Các mã nhị phân thiết kế để chạy cửa sổ dựa máy tính có liệu cụ thể mà nói để thiết lập khởi tạo chương trình Tất chương trình chạy cửa sổ nên có thực thi di động có hỗ trợ file DLL, chương trình cần phải vay từ Kỹ thuật dịch ngược phát triển đáng kể thực cách tiếp cận tích cực để tạo liệu mô tả tập hợp đối tượng ban đầu Ngày nay, có nhiều ứng dụng hợp pháp cho kỹ thuật dịch ngược Do phát triển nhiều thiết bị số hóa, phần mềm kỹ thuật dịch ngược cho phép lập trình để thao tác liệu vào hình thức hữu ích Các loại ứng dụng, kỹ thuật dịch ngược sử dụng nhiều lĩnh vực khác nhau, với lĩnh vực có với lợi ứng dụng riêng Kỹ thuật dịch ngược có lợi cho chủ doanh nghiệp họ kết hợp tính tiên tiến vào phần mềm họ để đáp ứng nhu cầu thị trường phát triển II Công cụ dịch ngược NET Reflector Giới thiệu: Net Reflector sản phẩm phần mềm hãng RedGate, phần Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 11 12 GVHD: Nguyễn Thanh Bình An tồn bảo mật thông tin GVHD: Nguyễn Tấn Khôi mềm thường dùng để dịch ngược crack phần mềm viết tảng Net (C#,VB.Net ) mà bảo vệ Hiện Net Reflector có phiên 8.3 hỗ trợ tốt đến phiên Net 4.5 Microsoft .NET Reflector chương trình dùng để Disassemble (dịch ngược source code) decompiler chương trình khác viết NET khơng có chức debug Hỗ trợ ngôn ngữ đầu ngơn ngữ lập trình NET thơng dụng như: IL, C#, VB, Delphi, MC++, Chrome Bằng việc sử dụng thêm số Add-in, người sử dụng sửa đổi code chương trình biên dịch lại thành chương trình hồn chỉnh Hiểu đơn giản patch chương trình Để sử dụng NET Reflector máy tính bạn phải cài đặt NET framework Hiện NET Reflector hỗ trợ NET framework 4.5 Sau cài đặt, chạy NET Reflector mở file exe ta thấy sau: Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 12 13 GVHD: Nguyễn Thanh Bình An tồn bảo mật thông tin GVHD: Nguyễn Tấn Khôi Trong tập này, chúng em sử dụng chương trình viết ngơn ngữ lập trình NET, chương trình quản lý Nhân sưu tầm Internet Sau biên dịch chương trình, chúng em lấy tồn nội dung thư mục Debug gồm file biên dịch thành file EXE DLL hình Desktop để thử nghiệm Để xem mã nguồn chương trình hay thư viện dll, click chọn Open toolbar hay menu File  Open Ctrl+O, duyệt đến file dll hay exe cần dịch  OK Nếu muốn dịch trực tiếp file source click phải chuột lên tên file cần dịch, chọn Export, muốn xem cấu trúc chọn Disassemble Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 13 14 An toàn bảo mật thơng tin GVHD: Nguyễn Thanh Bình GVHD: Nguyễn Tấn Khơi Ta xem nội dung mã nguồn: Chức kiểm tra mật form Đăng nhập chương trình Sau thủ tục đổi mật Form đổi mật khẩu: Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 14 15 GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khôi Trên nội dung phần thực hành kỹ thuật công dịch ngược mã nguồn chương trình NET Reflector mà chúng em tìm hiểu Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 15 16 GVHD: Nguyễn Thanh Bình An tồn bảo mật thơng tin GVHD: Nguyễn Tấn Khôi TÀI LIỆU THAM KHẢO Trang web http://www.red-gate.com/products/dotnetdevelopment/reflector/ [2] Trang web http://giaotrinhhay.com/ma-nguon-phan-mem-quan-lynhan-su-tien-luong-ttgdtx-an-giang/ [3] Trang web https://en.wikipedia.org/wiki/Code_morphing [4] Trang web http://courses.cs.washington.edu/courses/cse548/08wi/papers/transmeta.pdf [1] Khoa học máy tính – K29 Khoa học máy tính – K29 Trang 16

Ngày đăng: 11/11/2017, 23:37

Từ khóa liên quan

Mục lục

  • PHẦN I TÌM HIỂU LÝ THUYẾT Kỹ thuật tấn công dịch ngược mã nguồn

  • phần mềm - Reverse engineering

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

    • I.2. Ứng dụng của dịch ngược

      • I.2.1. Liên quan bảo mật

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

      • I.3. Quá trình dịch ngược

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

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

        • Kết luận

        • PHẦN II THỰC HÀNH Thử nghiệm với công cụ dịch ngược mã nguồn phần mềm .Net Reflector

          • II.1. Các công cụ Reverse Engineering

          • II. 2. Công cụ dịch ngược .NET Reflector 

          • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan