Kỹ thuật kiểm thử an ninh bảo mật dựa trên công nghệ FUZZING phân tán

99 478 2
Kỹ thuật kiểm thử an ninh bảo mật dựa trên công nghệ FUZZING phân tán

Đ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

LỜI CAM ĐOAN Tôi xin cam đoan mà viết luận văn tìm hiểu nghiên cứu thân Mọi kết nghiên cứu ý tưởng tác giả khác trích dẫn đầy đủ Luận văn chưa bảo vệ hội đồng bảo vệ luận văn thạc sĩ toàn quốc nước chưa công bố phương tiện thông tin Tôi xin hoàn toàn chịu trách nhiệm mà cam đoan Hà Nội, ngày 02 tháng năm 2013 Tác giả Lê Đức Anh Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B LỜI CẢM ƠN Trước tiên, xin phép bày tỏ lòng biết ơn chân thành tới PGS.TS Huỳnh Quyết Thắng tận tình giúp đỡ hoàn thành luận văn Tôi xin chân thành cảm ơn thầy cô Viện Công nghệ Thông tin Truyền thông Đại học Bách Khoa Hà Nội giảng dạy truyền đạt cho kiến thức quí báu suốt trình học tập suốt thời gian khóa Thạc sĩ 2011 Cuối cùng, không phần quan trọng, xin cảm ơn đồng nghiệp Bkav Security tạo điều kiện để có hội biến nghiên cứu luận văn thành thực Hà Nội, ngày 02 tháng năm 2013 Lê Đức Anh Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU A Tình hình an ninh ứng dụng B Giải pháp đảm bảo chất lượng phần mềm 12 C Nhiệm vụ đề tài 12 CHƯƠNG I: CƠ SỞ LÝ THUYẾT CHUNG 1.1 Tổng quan lỗ hổng phần mềm 14 15 1.1.1 Lỗ hổng tràn đệm 18 1.1.2 Lỗ hổng tràn số nguyên 19 1.1.3 Lỗ hổng format string 20 1.2 Kiểm thử bảo mật 22 1.2.1 Khái niệm 22 1.2.2 Các thuật ngữ 22 Kết chương 25 1.3 CHƯƠNG II: CƠ SỞ CỦA KỸ THUẬT FUZZING 26 2.1 Khái niệm 27 2.2 Lịch sử Fuzzing 28 2.3 Mô hình fuzzing cổ điển 29 2.4 Phân loại phương pháp Fuzzing 31 2.5 Phân loại Fuzzer 33 2.5.1 Fuzzer cục (Local fuzzer) 33 2.5.2 Fuzzer từ xa (Remote fuzzer) 34 2.5.3 Fuzzer nhớ (In-memory fuzzer) 35 2.5.4 Fuzzing framework 36 2.6 Các bước Fuzzing 37 2.7 Hạn chế Fuzzing 38 2.8 Các vấn đề fuzzing 39 2.8.1 Sinh liệu Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 39 2.8.2 Phân tích khả khai thác lỗi 41 2.8.3 Tăng hiệu suất với fuzzing phân tán 42 2.9 Kết chương CHƯƠNG III: XÂY DỰNG HỆ THỐNG FUZZING TRÌNH DUYỆT 3.1 Trình duyệt 43 44 45 3.1.1 Tổng quan 45 3.1.2 Trình duyệt hoạt động nào? 46 3.1.3 Các thành phần trình duyệt 48 3.1.4 Trình duyệt: Đích ngắm số tội phạm mạng 50 3.2 Bài toán Fuzzing trình duyệt 52 3.2.1 Mô hình Fuzzing đơn giản hơn, mang tính phân tán sẵn 52 3.2.2 Xuất lỗi liên quan tới xử lý nhớ nguy hiểm khác 55 3.2.3 Dữ liệu Fuzzing đa dạng 57 3.2.4 Ý tưởng cải tiến chế sinh liệu Fuzzing 60 3.3 Đề xuất phương pháp xây dựng hệ thống Fuzzing trình duyệt 3.3.1 Thiết kế ngôn ngữ mô tả liệu fuzzing 61 61 3.3.2 Thiết kế chức hệ thống 75 3.3.3 Thiết kế kiến trúc hệ thống 76 3.4 Một số hình ảnh hệ thống 85 3.5 Kết chương 87 CHƯƠNG IV: THỬ NGHIỆM VÀ ĐÁNH GIÁ 88 4.1 Các tiêu chí đánh giá 89 4.2 Tính sử dụng 89 4.3 Khả phát lỗ hổng 91 4.3.1 Với lỗ hổng biết 91 4.3.2 Với lỗ hổng chưa biết 93 4.4 Hiệu suất 93 4.4.1 Phương pháp tiến hành 94 4.4.2 Kết 94 Đánh giá 96 4.5 KẾT LUẬN A Kết luận Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 97 97 B Hướng phát triển đề tài THAM KHẢO Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 98 99 DANH MỤC CÁC HÌNH VẼ Hình 1: Thống kê sâu Conficker (Nguồn: Bkis) .10 Hình 2: Thống kê vùng ảnh hưởng Stuxnet (Nguồn: Threatpost.com) 11 Hình 3: Thống kê số lỗ hổng 25 năm (nguồn: SourceFire) 15 Hình 4: Thống kê phần mềm có nhiều lỗ hổng nguy hiểm 25 năm (nguồn: SourceFire) 16 Hình 5: Thống kê loại lỗ hổng nguy hiểm 25 năm (nguồn: SourceFire) .16 Hình 6: Các hàm Format .21 Hình 7: Các tham số format 21 Hình 8: Quét dịch vụ chạy với Nmap 23 Hình 9: Quét lỗ hổng Website với Acunetix 24 Hình 10: Kiểm thử đâm xuyên với Metasploit .25 Hình 11: Phần mềm Internet Explorer gặp lỗi xử lý 27 Hình 12: GS Miller 28 Hình 13: Mô hình Fuzzing cổ điển .29 Hình 14: Mô hình Fuzzing thu gọn 30 Hình 15: Lưu đồ hoạt động trình Fuzzing 31 Hình 16: Fuzzing với chế phản hồi từ debugger 39 Hình 17: Các mức lỗ hổng phần mềm .42 Hình 18: Một mô hình fuzzing phân tán 43 Hình 19: Thống kê thị phần trình duyệt vào tháng 10/2012 (Nguồn: Wikimedia) 46 Hình 20: Một trang HTML đơn giản 47 Hình 21: Trang HTML hiển thị trình duyệt Internet Explorer 10 48 Hình 22: Các thành phần trình duyệt 48 Hình 23: Luồng thực thi Rendering Engine đơn giản 49 Hình 24: Số lỗ hổng trình duyệt giai đoạn 2007-2011 51 Hình 25: Tự động tải lại trang Web qua mã Javascript 52 Hình 26: Mô hình fuzzing không cần debugger .53 Hình 27: Mô hình fuzzing debugger & server riêng 54 Hình 28: Màn hình Cross_Fuzz hoạt động 55 Hình 29: File HTML demo lỗi CVE-2012-4792 56 Hình 30: Sinh liệu Fuzzing với Python .58 Hình 31: Các bước hoạt động LangFuzz .60 Hình 32: Các bước xây dựng hệ thống 61 Hình 33: Dẫn hướng biên dịch zBNF 66 Hình 34: Ví dụ sử dụng zBNF .67 Hình 35: Luật sinh liệu chưa chuẩn hóa 68 Hình 36: Các luật dạng chuẩn Chomsky 68 Hình 37: Các bước trình biên dịch 69 Hình 38: FSM trình Tokenizing liệu zBNF 70 Hình 39: Lưu đồ lưu kết biên dịch 72 Hình 40: Lưu đồ giải thuật không đệ quy sinh liệu fuzzing .73 Hình 41: Biểu đồ phân rã chức 75 Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B Hình 42: Mô hình Fuzzing phân tán hay Fuzzing Cluster .76 Hình 43: Mã Exception ý nghĩa 83 Hình 44: Biên dịch liệu zBNF 85 Hình 45: Dữ liệu mẫu sinh từ đặc tả zBNF 85 Hình 46: Trang Web hiển thị trình Fuzzing .86 Hình 47: Quá trình fuzzing phía agent 86 Hình 48: Hiển thị lỗi fuzz Crash Bench .87 Hình 49: Văn phạm dùng zBNF cho fuzz tag 91 Hình 50: Các trình duyệt lỗi lựa chọn để fuzz 92 Hình 51: Cây DOM .93 Hình 52: Văn phạm cho thí nghiệm đo hiệu suất 94 Hình 53: Số liệu thu từ thí nghiệm đo hiệu suất 95 Hình 54: Sự biến đổi hiệu suất theo số máy tham gia .95 Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B MỞ ĐẦU A Tình hình an ninh ứng dụng B Giải pháp đảm bảo chất lượng phần mềm C Nhiệm vụ đề tài Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B A Tình hình an ninh ứng dụng Với phát triển vũ bão công nghệ thông tin truyền thông nay, máy tính trở nên thân thiết với Có lẽ có nhiều bạn phải gắn bó với máy tính công việc riêng thường ngày Nếu bạn lập trình viên, môi trường phát triển tích hợp (IDE) quen thuộc với bạn nhất? Nếu nhân viên văn phòng, trình xử lý văn mà bạn hay dùng nhất? Hoặc giả dụ, đơn bạn gamer, bạn thử qua game Dante's Inferno, tựa game hot mùa hè 2010 chưa? Môi trường mạng internet tạo điều kiện tốt cho ứng dụng len lỏi vào ngõ ngách đời sống người Các dịch vụ thương mại điện tử (E-commerce) ngày nở rộ Việt Nam toán online, mua hàng online Theo báo cáo khảo sát năm 2008, 40% doanh nghiệp có doanh thu từ thương mại điện tử mức doanh thu chiếm 15% tổng doanh thu Một hướng khác đẩy mạnh ứng dụng công nghệ thông tin xây dựng phủ điện tử, nhằm giúp công tác quản lý nhà nước hiệu hơn, minh bạch hóa, giảm chi phí, phục vụ nhân dân doanh nghiệp tốt Tuy nhiên, nhiều hacker lợi dụng internet cho mục đích xấu Bạn tưởng tượng ngày tài khoản ngân hàng bị rút số tiền lớn cách "đầy bí ẩn"? Bạn có biết kẻ gây công DDoS vào website phủ Mĩ Hàn Quốc mà báo chí tốn nhiều giấy mực năm 2009 chưa? Các phần mềm phổ biến Windows Media Player, Winamp, trình duyệt web Internet Explorer, Firefox mục tiêu hấp dẫn hacker Hầu ngày nào, trang tin an ninh mạng công bố lỗi phần mềm Hãng phần mềm Microsoft hàng tháng phải công bố vá cho sản phẩm Ngay Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B tháng 4/2010 vừa rồi, Microsoft tung 10 cập nhật an ninh, nửa số lỗi nguy hiểm Trước năm 2009, hàng triệu máy tính chạy hệ điều hành Windows XP toàn giới bị nhiễm sâu conficker Lỗ hổng bảo mật bị khai thác phát sinh từ Windows RPC Microsoft bít lại vá khẩn cấp mang mã số MS08-67 Sâu Conficker phức tạp, nguy hiểm đủ khả tạo mạng máy tính ma để công hạ gục hệ thống máy tính chưa vá lỗ hổng Theo thống kê trung tâm an ninh mạng Bkis, có nhiều biến thể Conficker xuất Trung Quốc nước có số lượng máy tính bị nhiễm nhiều Hình 1: Thống kê sâu Conficker (Nguồn: Bkis) Trong năm 2010, giới xôn xao sâu Stuxnet, vũ khí mạng biết đến Stuxnet xem virus máy tính tinh vi tạo ra, lây nhiễm vào hàng trăm ngàn hệ thống máy tính nhờ khai thác 20 lỗ hổng xếp loại “zero-day”, vốn có mặt phiên hệ điều hành Windows Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 10 3.4 Một số hình ảnh hệ thống Hình 44: Biên dịch liệu zBNF Hình 45: Dữ liệu mẫu sinh từ đặc tả zBNF Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 85 Hình 46: Trang Web hiển thị trình Fuzzing Hình 47: Quá trình fuzzing phía agent Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 86 Hình 48: Hiển thị lỗi fuzz Crash Bench 3.5 Kết chương Chương trình bày vấn đề liên quan tới trình duyệt, vấn đề liên quan tới thực fuzzing trình duyệt Dựa vấn đề đó, thiết kế hệ thống zFramework kiến trúc, chế liên quan tới việc biểu diễn & sinh liệu fuzzing Trong chương tiếp theo, xin trình bày thử nghiệm liên quan tới hệ thống xây dựng Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 87 CHƯƠNG IV: THỬ NGHIỆM VÀ ĐÁNH GIÁ 4.1 Các tiêu chí đánh giá 4.2 Tính sử dụng 4.3 Khả phát lỗ hổng 4.4 Hiệu suất 4.5 Đánh giá Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 88 4.1 Các tiêu chí đánh giá Trong thời gian có hạn, dể đánh giá hệ thống zFramework xây dựng được, dựa tiêu chí đánh giá sau:  Tính sử dụng: số black-box fuzzer trình duyệt (dạng hộp đen) lựa chọn để so sánh với zFramework để xem xét khả thay đổi để fuzz cho dự án khác  Khả phát lỗ hổng có chưa biết: zFramework cấu hình để fuzz trình duyệt với lỗi biết Trong phần này, trình bày cách thực để fuzz lỗ hổng  Hiệu suất: Hiệu suất 𝑃𝑓 đo công thức sau: 𝑁 𝑃𝑓 = 𝑇 N số fuzzing test cần thực T (phút) thời gian để thực xong test Ở đây, thực đánh giá ảnh hưởng số lượng máy tham gia tới 𝑃𝑓 test cụ thể với trình duyệt khác Các test tiến hành nơi công tác Fuzzing Team, Bkav Security từ 6/2013 zFramework chạy hệ thống với cấu sau: Thành phần Mô tả Server  Bộ xử lý: lntel(R) Core(TM) 13-21 20 cpu @ 3.306Hz 3.30 6Hz  RAM: 16.0 GB  Hệ điều hành: Windows Professional x64 Agent  Chạy máy ảo VMWare khác  Mỗi máy ảo cài đặt sẵn trình duyệt phổ biến như: Internet Explorer, Opera, Chrome, Firefox & Safari 4.2 Tính sử dụng Trong phần này, ta so sánh zFramework với fuzzer trình duyệt khác khả thay đổi để fuzz loại liệu khác nhau: Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 89 Fuzzer Grinder Đặc điểm  Có thành phần để cài đặt lên server client Trong đó, thành phần server phụ trách việc lưu giữ liệu gây crash; phía client fuzzer thực kiểm tra trình duyệt Do chế quản lý tập trung liệu fuzz phía server nên nhiều liệu sinh phía client trùng  Các test sinh phía client dựa biến đổi vô hạn (infinite mutation) mang tính ngẫu nhiên file có sẵn (seed file)  Tác giả Grinder không public hoàn toàn fuzzer Người dùng tự phải customize lại mã nguồn, thêm seed file thủ công để tiến hành fuzz Bf3 Cung cấp module C++ để fuzz CSS, DOM, HTML, Javascript & XML Tuy nhiên, module có hạn chế sau:  Để thay đổi liệu sinh ra, ta cần phải thay đổi mã nguồn Thêm token vào Khả kết hợp token hạn chế  Cần phải biên dịch lại toàn Bf3 thay đổi xong để fuzz Cross_Fuzz  Là fuzzer tĩnh (Xem mục 3.2.1.2), chuyên fuzz DOM  Để sử dụng, người dùng phải tiến hành thêm thuộc tính & hàm có đặc tả DOM; sửa đổi code Javascript để tạo kịch fuzz khác zFramework  Tách rời phần định nghĩa liệu fuzzing việc sinh liệu bên Người dùng không cần phải thay đổi mã nguồn, cần thay đổi đặc tả văn phạm (file text) để fuzz  Hỗ trợ fuzz nhiều loại liệu khác (do người dùng tự mô tả) Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 90 4.3 Khả phát lỗ hổng 4.3.1 Với lỗ hổng biết 4.3.1.1 Phương pháp tiến hành  Bước 1: Tìm thông tin lỗ hổng public mạng Thông thường, ta lấy trang http://www.exploit-db.com lỗ hổng có kèm PoC (Proof of Concept hay mã demo)  Bước 2: Bước ta dùng zBNF để viết văn phạm mô tả gần PoC Ví dụ, với lỗi "MS Internet Explorer (HTML Tag) Memory Corruption (MS06-013)" #project HTML Tags Fuzzing #output main.htm.z #target ie start='' body '' body = '' body '' | '' tag = 'a' | 'abbr' | 'acronym' | 'address' | 'applet' | 'area' | 'article' | 'aside' | 'audio' | 'b' | 'base' | 'basefont' | 'bdi' | 'bdo' | 'big' | 'blockquote' | 'body' | 'br' | 'button' | 'canvas' | 'caption' | 'center' | 'cite' | 'code' | 'col' | 'colgroup' | 'command' | 'datalist' | 'dd' | 'del' | 'details' | 'dfn' | 'dir' | 'div' | 'dl' | 'dt' | 'em' | 'embed' | 'fieldset' | 'figcaption' | 'figure' | 'font' | 'footer' | 'form' | 'frame' | 'frameset' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'head' | 'header' | 'hgroup' | 'hr' | 'html' | 'i' | 'iframe' | 'img' | 'input' | 'ins' | 'kbd' | 'keygen' | 'label' | 'legend' | 'li' | 'link' | 'map' | 'mark' | 'menu' | 'meta' | 'meter' | 'nav' | 'noframes' | 'noscript' | 'object' | 'ol' | 'optgroup' | 'option' | 'output' | 'p' | 'param' | 'pre' | 'progress' | 'q' | 'rp' | 'rt' | 'ruby' | 's' | 'samp' | 'script' | 'section' | 'select' | 'small' | 'source' | 'span' | 'strike' | 'strong' | 'style' | 'sub' | 'summary' | 'sup' | 'table' | 'tbody' | 'td' | 'textarea' | 'tfoot' | 'th' | 'thead' | 'time' | 'title' | 'tr' | 'track' | 'tt' | 'u' | 'ul' | 'var' | 'video' | 'wbr' Hình 49: Văn phạm dùng zBNF cho fuzz tag  Bước 3: Chuẩn bị hệ thống với phiên Trình duyệt có lỗi  Bước 4: Sử dụng zFramework để fuzz với văn phạm có bước Chờ kết Nếu kết mong muốn, ta buộc phải thay đổi lại văn phạm có kết tốt Học viên thực hiện: Lê Đức Anh Lớp 11BMTTT Khóa học 2011B 91 4.3.1.2 Kết Trình duyệt Version 11.51

Ngày đăng: 25/07/2017, 21:38

Từ khóa liên quan

Mục lục

  • LỜI CAM ĐOAN

  • LỜI CẢM ƠN

  • MỤC LỤC

  • DANH MỤC CÁC HÌNH VẼ

  • MỞ ĐẦU

    • A. Tình hình an ninh ứng dụng hiện nay

    • B. Giải pháp đảm bảo chất lượng phần mềm

    • C. Nhiệm vụ của đề tài

    • CHƯƠNG I: CƠ SỞ LÝ THUYẾT CHUNG

      • 1.1. Tổng quan về lỗ hổng phần mềm

        • 1.1.1. Lỗ hổng tràn bộ đệm

        • 1.1.2. Lỗ hổng tràn số nguyên

        • 1.1.3. Lỗ hổng format string

        • 1.2. Kiểm thử bảo mật

          • 1.2.1. Khái niệm

          • 1.2.2. Các thuật ngữ

          • 1.3. Kết chương

          • CHƯƠNG II: CƠ SỞ CỦA KỸ THUẬT FUZZING

            • 2.1. Khái niệm

            • 2.2. Lịch sử của Fuzzing

            • 2.3. Mô hình fuzzing cổ điển

            • 2.4. Phân loại phương pháp Fuzzing

            • 2.5. Phân loại Fuzzer

              • 2.5.1. Fuzzer cục bộ (Local fuzzer)

              • 2.5.2. Fuzzer từ xa (Remote fuzzer)

              • 2.5.3. Fuzzer trong bộ nhớ (In-memory fuzzer)

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

Tài liệu liên quan