Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Công nghệ thông tin Nghiên cứu phát hiện lỗ hổng bảo mật web và thử nghiệm tt...

Tài liệu Nghiên cứu phát hiện lỗ hổng bảo mật web và thử nghiệm tt

.PDF
25
1358
71

Mô tả:

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG ---------------------------------- NGUYỄN THỊ THÁI NGHIÊN CỨU PHÁT HIỆN LỖ HỔNG BẢO MẬT WEB VÀ THỬ NGHIỆM CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH MÃ SỐ: 8.48.01.01 TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) HÀ NỘI – 2019 Luận văn được hoàn thành tại: HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Người hướng dẫn khoa học: TS. Vũ Văn Thỏa Phản biện 1: ................................................ Phản biện 2: ............................................... Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn Thạc Sĩ tại Học Viện Công Nghệ Bưu Chính Viễn Thông Vào lúc: .......... giờ ......... ngày ........ tháng ......... năm .......... Có thể tìm hiểu thêm luận văn tại: - Thư viện của Học Viện Công Nghệ Bưu Chính Viễn Thông 1 MỞ ĐẦU 1. Tính cấp thiết của đề tài Vấn đề an toàn an ninh mạng hiện nay đang là vấn đề cấp bách, đặc biệt là việc tấn công vào các website. Việc tấn công vào hệ thống mạng trong ứng dụng web ngày càng gia tăng, cho thấy việc bảo mật an toàn thông tin trên website chưa thực sự đảm bảo. Theo thống kê của BKAV[12] về an ninh mạng trong năm 2017, mức thiệt hại do virus máy tính gây ra đối với người dùng Việt Nam lên tới 10.400 tỷ, vượt qua mức 8.700 tỷ đồng năm 2016. Đây là kết quả từ chương trình đánh giá an ninh mạng được Tập đoàn công nghệ Bkav thực hiện vào tháng 12/2017. Mã độc mã hóa dữ liệu Ransomware, virus lây qua USB, vấn nạn tin nhắn rác và nguy cơ từ các cuộc tấn công có chủ đích APT là những chủ điểm nóng nhất của năm 2017. Cũng theo thống kê của Trung tâm Ứng cứu khẩn cấp máy tính Việt Nam [13], năm 2017 Trung tâm này đã ghi nhận tổng số 134.375 sự cố tấn công mạng của cả 3 loại hình Phishing (lừa đảo), Malware (mã độc) và Deface (thay đổi giao diện). So với năm 2016, số lượng vụ tấn công mạng năm 2017 nhiều gấp hơn 4,2 lần (năm 2016 là 31.585), trong đó, loại hình tấn công Phishing là 10.057 sự cố (gấp hơn 1,7 lần so với năm 2016), Malware là 46.664 sự cố (gấp gần 2,8 lần năm 2016) và Deface là 77.654 sự cố (gấp hơn 8,7 lần năm 2016). Mặt khác, theo khảo sát của Hiệp hội An toàn thông tin Việt Nam, chỉ số an toàn thông tin của Việt Nam trong năm 2017 là 59,9%. Đây là bước tiến đáng kể trong những năm qua, bởi năm 2016, con số này là 47,4%. Đặc biệt theo thống kê của Microsoft, trong 5 nước đứng đầu toàn cầu về nguy cơ nhiễm mã độc có 2 nước thuộc khu vực Đông Nam Á là Việt Nam và Indonesia. Đây là hai nước có tỷ lệ nhiễm mã độc hơn 45% vào quý II/2016, gấp đôi so với mức trung bình cùng kỳ là 21% của thế giới Do nhu cầu phát triển các dịch vụ thông tin trên mạng internet ngày càng lớn, đòi hỏi các cơ quan, tổ chức và doanh nghiệp phải đảm bảo an toàn cho các website của mình. Vì vậy, vấn đề nghiên cứu các giải pháp phát hiện lỗ hổng bảo mật website có tính cấp thiết, có ý nghĩa khoa học và thực tiễn. Từ những lý do trên, học viên lựa chọn đề tài: “NGHIÊN CỨU PHÁT HIỆN LỖ HỔNG BẢO MẬT WEB VÀ THỬ NGHIỆM” cho luận văn tốt nghiệp trình độ đào tạo thạc sĩ. 2 2. Tổng quan về vấn đề nghiên cứu World Wide Web (gọi tắt là Web hoặc WWW - mạng lưới toàn cầu) là một không gian thông tin toàn cầu mà mọi người có thể truy cập (đọc và viết) qua các thiết bị kết nối với mạng Internet. Website là một tập hợp các trang Web (web pages) bao gồm văn bản, hình ảnh, video, flash, ..., thường chỉ nằm trong một tên miền (domain name) hoặc tên miền phụ (subdomain). Kể từ khi ra đời vào năm 1990, công nghệ WEB đã phát triển mạnh mẽ và là hạ tầng cung cấp các dịch vụ phổ biến nhất trên Internet. Cho đến nay, đã có công nghệ WEB 1.0, WEB 2.0 và thế giới đang hướng tới công nghệ WEB 3.0. Trong thực tế, do thiếu Logging và Monitoring trong quá trình vận hành, khai thác các dịch vụ WEB dẫn đến sự thiếu giám sát và phát hiện kịp thời các tấn công lỗ hổng bảo mật Website. Sự phát triển đa dạng về chủng loại cũng như số lượng các thiết bị truy nhập Website, trong nhiều trường hợp cũng gây ra khó khăn trong quá trình phát hiện lỗ hổng bảo mật Website. Vì vậy, các vấn đề về bảo mật Website luôn được quan tâm do các tấn công Website ngày càng phổ biến và gây nhiều hệ lụy khôn lường. Các lỗ hổng bảo mật Website là các điểm yếu cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểm soát ứng dụng web, hoặc thậm chí kiểm soát cả hệ thống máy chủ chạy ứng dụng web. OWASP (Open Web Application Security Project ) là một dự án cộng đồng mở hoạt động với mục đích tăng cường an toàn cho các ứng dụng web. Từ những năm 2010 cho đến nay, OWASP khởi động dự án “OWASP Top 10” nhằm đưa ra danh sách 10 lỗ hổng bảo mật nghiêm trọng nhất trong các ứng dụng web. Kết quả của dự án này đã được công bố như sau [16]: (1) Injection (Chèn mã). (2) Broken Authentication and Session Management (Xác thực và quản phiên yếu). (3) Cross-Site Scripting (XSS – Lỗi XSS). (4) Insecure Direct Object References (Tham chiếu các đối tượng trực tiếp không an toàn). (5) Security Misconfiguration (Lỗi cấu hình an ninh). (6) Sensitive Data Exposure (Rò rỉ dữ liệu nhạy cảm). (7) Missing Function Level Access Control (Thiếu kiểm soát truy nhập ở mức tính năng). (8) Cross-Site Request Forgery (CSRF - Lỗi CSRF). 3 (9) Using Components with Known Vulnerabilities (Sử dụng các thành phần chứa lỗ hổng đã biết). (10) Unvalidated Redirects and Forwards (Tái định hướng và chuyển tiếp không được kiểm tra). Hiện nay, có nhiều tác giả trong và ngoài nước đã đề xuất nhiều giải pháp và công cụ phát hiện lỗ hổng bảo mật Website để đảm bảo an toàn Website và quá trình cung cấp dịch vụ WEB. 3. Mục đích nghiên cứu Mục đích nghiên cứu của luận văn là nghiên cứu phát hiện các lỗ hổng bảo mật website và thử nghiệm một số giải pháp phát hiện các lỗ hổng bảo mật website thường gặp. 4. Đối tượng và phạm vi nghiên cứu Đối tượng và phạm vi nghiên cứu của luận văn là nghiên cứu các giải pháp và công cụ phát hiện các lỗ hổng bảo mật website. 5. Phương pháp nghiên cứu - Về mặt lý thuyết: Thu thập, khảo sát, phân tích các tài liệu và thông tin có liên quan đến phát hiện lỗ hổng bảo mật website. - Về mặt thực nghiệm: Xây dựng một số chương trình để mô phỏng phát hiện lỗ hổng bảo mật website. Kết cấu của luận văn gồm 3 chương chính với các nội dung sau: Chương 1: Tổng quan về tấn công lỗ hổng bảo mật website Nội dung của chương 1 sẽ tập trung vào khảo sát nền tảng công nghệ website và các vấn đề liên quan đến phát hiện lỗ hổng bảo mật website. Chương 2: Nghiên cứu phát hiện một số dạng lỗ hổng bảo mật website Nội dung của chương 2 là khảo sát một số giải pháp phát hiện một số lỗ hổng bảo mật website và các vấn đề liên quan. Chương 3: Thử nghiệm Trong chương 3 luận văn sẽ tiến hành thử nghiệm phát hiện một số dạng lỗ hổng bảo mật website và các vấn đề liên quan. 4 CHƯƠNG 1: TỔNG QUAN VỀ TẤN CÔNG LỖ HỔNG BẢO MẬT WEBSITE Nội dung của chương 1 sẽ khảo sát tổng quan về công nghệ web, một số phương thức tấn công lỗ hổng bảo mật website, một số nguyên nhân gây ra lỗ hổng bảo mật website và một số vấn đề khác liên quan. 1.1. Tổng quan về công nghệ Web 1.1.1. Giới thiệu chung Trang web (web page) trên mạng Internet là nơi giới thiệu những thông tin, hình ảnh về doanh nghiệp và sản phẩm, dịch vụ của doanh nghiệp (hay giới thiệu bất cứ thông tin gì) để khách hàng có thể truy cập ở bất kỳ nơi đâu, bất cứ lúc nào. Website là tập hợp nhiều trang web. Khi doanh nghiệp xây dựng website nghĩa là đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ, .... Để tạo nên một website cần phải có 3 yếu tố cơ bản [1]:  Cần phải có tên miền (domain).  Nơi lưu trữ website (hosting).  Nội dung các trang thông tin [web page]. Hiện nay, hầu hết các doanh nghiệp đều sử dụng website động, thế hệ công nghệ website được mọi người biết đến là web 2.0 [1]. - Tên miền (domain): Tên miền chính là địa chỉ website, trên internet chỉ tồn tại duy nhất một địa chỉ (tức là tồn tại duy nhất một tên miền). Có 2 loại tên miền: - Tên miền Quốc tế: là tên miền có dạng .com; .net; .org; .biz; .name ... - Tên miền Việt Nam: là tên miền có dạng .vn; .com.vn; .net.vn; org.vn; .gov.vn;... - Lưu trữ website: Dữ liệu thông tin của website phải được lưu trữ trên một máy tính (máy chủ - server) luôn hoạt động và kết nối với mạng Internet. Một server có thể lưu trữ nhiều website, nếu server này bị sự cố chẳng hạn tắt trong một thời điểm nào đó thì không ai có thể truy cập được những website lưu trữ trên server tại thời điểm bị sự cố. - Tùy theo nhu cầu lưu trữ thông tin mà doanh nghiệp có thể thuê dung lượng thích hợp cho website [thuê dung lượng host]. - Dung lượng host: Là nơi để lưu cơ sở dữ liệu của website (hình ảnh, thông tin, …), đơn vị đo dung lượng thường là MB hoặc GB. 5 - Băng thông hay dung lượng đường truyền: Là tổng số MB dữ liệu tải lên máy chủ hoặc tải về từ máy chủ (download, upload) nơi đặt website, đơn vị đo thông thường là MB/giây. 1.1.2. Dịch vụ và cơ chế hoạt động Web Dịch vụ Web là sự kết hợp các máy tính cá nhân với các thiết bị khác, các cơ sở dữ liệu và các mạng máy tính để tạo thành một cơ cấu tính toán ảo mà người sử dụng có thể làm việc thông qua các trình duyệt mạng. Web Service là một giao diện truy cập mạng đến các ứng dụng chức năng, được xây dựng từ việc sử dụng các công nghệ chuẩn Internet [10]. Được minh hoạ trong hình 1.1 sau: Hình 1.1. Dịch vụ Web Service[10]. Web Service cho phép truy cập tới các code ứng dụng sử dụng chuẩn công nghệ Internet. 1.1.3. Công nghệ web 2.0 Khái niệm Web 2.0 đầu tiên được Dale Dougherty, phó chủ tịch của Oreilly Media, đưa ra tại hội thảo Web 2.0 lần thứ nhất do OReilly Media và MediaLive International tổ chức vào tháng 10/2004. Dougherty không đưa ra định nghĩa mà chỉ dùng các ví dụ so sánh, phân biệt Web 1.0 và Web 2.0: "DoubleClick là Web 1.0; Google AdSense là Web 2.0. Ofoto là Web 1.0; Flickr là Web 2.0. Britannica online là Web 1.0; Wikipedia là Web 2.0. v.v...". Web 2.0 là một cách tiếp cận mới để sử dụng web như là một nền tảng nơi mà người dùng cùng nhau tham gia vào việc tạo ra, chỉnh sửa, và xuất bản thông tin thông qua những công cụ hợp tác sáng tạo nội dung trên nền web. Web 2.0 liên quan tới người dùng không phải chỉ ở chỗ người dùng tạo ra nội dung mà người dùng giúp thu thập, tổ chức, mô tả, cập nhật, chia sẻ, truyền bá, sắp xếp lại, bình luận, hiệu chỉnh, và đóng gói lại nội dung 1.1.4. Công nghệ web 3.0 Web 3.0 còn có tên gọi là Semantic Web, được định nghĩa bởi Hiệp hội World Wide Web (W3C) nhằm xác định một thế hệ web mới với những tính năng độc đáo, hiện đại hơn, chú trọng vào việc sử dụng các định dạng dữ liệu và các giao thức chung để mọi trang web, mọi dịch vụ online đều có thể giao tiếp với nhau một cách nhanh chóng, tiện lợi và dễ dàng. 6 1.2 Một số phương thức tấn công lỗ hổng bảo mật website 1.2.1 Giới thiệu chung Có thể được phân chia các dạng lỗ hổng bảo mật trên một hệ thống nói chung thành ba cấp độ nguy hiểm như sau [2]: Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức tấn công theo DoS (Dinal of Services – Từ chối dịch vụ). Mức độ nguy hiểm thấp, chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ, gián đoạn hệ thống; không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập bất hợp pháp. Lỗ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền trên hệ thống mà không cần thực hiện kiểm tra tính hợp lệ. Mức độ nguy hiểm trung bình; Những lỗ hổng này thường có trong các ứng dụng trên hệ thống; có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật. Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể truy nhập vào hệ thống bất hợp pháp. Lỗ hổng rất nguy hiểm, có thể làm phá hủy toàn bộ hệ thống. Các lỗ hổng bảo mật Website là các điểm yếu của hệ thống cung cấp dịch vụ Web cho phép tin tặc tấn công đánh cắp dữ liệu người dùng, dữ liệu hệ thống, kiểm soát ứng dụng web, hoặc thậm chí kiểm soát cả hệ thống máy chủ chạy ứng dụng web. Các lỗ hổng bảo mật Website rất đa dạng và bao gồm cả ba loại trên. 1.2.2 Các phương thức tấn công lỗ hổng bảo mật website 1.2.2.1. Tấn công SQL injection 1.2.2.2. Tấn công kiểu Broken Authentication And Session Management 1.2.2.3. Tấn công Cross Site Scripting (XSS) 1.2.2.4. Kiểu tấn công Insecure Direct Object References 1.2.2.5. Tấn công Security Misconfiguration 1.2.2.6. Tấn công Sensitive Data Exposure 1.2.2.7. Tấn công Missing Function Level Access Control 1.2.2.8. Tấn công Cross-Site Request Forgery (CSRF) 1.2.2.9. Tấn công Using Components with Known Vulnerabilities 7 1.2.2.10. Tấn công Unvalidated Redirects and Forwards 1.2.2.11. Tấn công APT 1.2.3 Nhận xét và đánh giá Thực tế với tình hình hiện nay, các ứng dụng Web ngày một nhiều. Sự thay đổi chóng mặt của công nghệ đã giúp ứng dụng Web được cải tiến nâng cao rất nhiều, và vấn đề bảo mật cho ứng dụng Web không ngừng tăng lên. Một khi ứng dụng Web bị rò rỉ lỗ hổng, các hacker sẽ dễ dàng chiếm quyền quản trị Web, ứng dụng và phần mềm của công ty. Nguyên nhân dẫn đến các ứng dụng Web bị rò rỉ thông tin, các nguy cơ về lỗ hổng, là do các đoạn mã lệnh, mã code không phù hợp trong ứng dụng Web. Chỉ cần một lỗ hổng, hacker cũng có thể xâm nhập và truy cập vào cơ sở dữ liệu, thông tin và thực hiện các hành vi sai trái như đánh cắp, thay đổi, chỉnh sửa, mã hóa dữ liệu…Đối với các doanh nghiệp, tổ chức, cơ quan nhà nước, việc tăng lớp bảo mật, rà quét lỗ hổng ứng dụng là điều cần thiết. 1.3 Một số nguyên nhân gây ra các lỗ hổng bảo mật website 1.3.1 Nguyên nhân do nền tảng xây dựng website Với sự bùng nổ của thương mại điện tử, có rất nhiều nền tảng website ra đời để đáp ứng nhu cầu cho người dùng. Cũng chính vì vậy, sẽ gây khó khăn cho các tổ chức và cá nhân để chọn riêng cho mình nền tảng website phù hợp. Rất nhiều nền tảng xây dựng website hiện nay như: nền tảng tự code riêng, nền tảng wordpress, nền tảng Laravel, hoặc có thể xây dựng công nghệ giữa web 2.0 và web 3.0 khi tham gia môi trường mạng internet không tích hợp được các công nghệ hệ thống, dẫn đến làm suy giảm tính năng của ngôn ngữ hoặc công nghệ, cũng làm cho rủi ro tiềm tàng của dịch vụ. 1.3.2 Nguyên nhân do hạ tầng cung cấp dịch vụ web - Tính bí mật, những rủi ro sau là hiện hữu: thu lén trên đường truyền liên lạc, nhà cung cấp tiếp cận những dữ liệu nhạy cảm, lộ lọt dữ liệu do nhà cung cấp dịch vụ; lộ lọt dữ liệu phía nội bộ. - Tính toàn vẹn, những rủi ro có thể là: thao tác dữ liệu đang truyền đưa, thao tác dữ liệu tại phía nhà cung cấp dịch vụ, sửa đổi dữ liệu ngẫu nhiên khi đang truyền đưa, sửa đổi dữ liệu ngẫu nhiên tại phía nhà cung cấp dịch vụ, sửa đổi dữ liệu tại hệ thống nội bộ. - Tính khả dụng (sẵn sàng) thì những rủi ro sau đáng quan tâm: dịch vụ bị gián đoạn, thời gian ngừng trệ không chủ ý, tấn công tính sẵn sàng, mất truy cập dữ liệu, mất dữ liệu ở phía nhà cung cấp dịch vụ, thiếu tính khả dụng trong hệ thống nội bộ. 8 1.3.3 Nguyên nhân do người vận hành và sử dụng dịch vụ web Đây là một nguyên nhân có thể dẫn đến những lỗ hổng bảo mật Website làm tiền đề cho những hình thức tấn công nguy hiểm nhất và có thể dẫn tới những tổn thất hết sức khó lường. Kẻ tấn công có thể liên lạc với người quản trị hệ thống thay đổi một số thông tin nhằm tạo điều kiện cho các phương thức tấn công khác. 1.3.4 Nhận xét và đánh giá Có thể rất nhiều nguyên nhân khác nhau dẫn đến rủi ro về lỗ hổng bảo mật web. Các nguyên nhân chủ yếu là: những nguyên nhân về xây dựng nền tảng website bởi sự thay đổi về công nghệ luôn được cập nhật; nguyên nhân về sự cung cấp hạ tầng dịch vụ website và nguyên nhân do con người vận hành và sử dụng các dịch vụ website. 1.4. Kết luận chương 1 Trong chương 1, luận văn đã khảo sát tổng quan về công nghệ web như công nghệ web 2.0 và công nghệ web 3.0. Từ đó, luận văn đã tiến hành phân tích các phương thức tấn công lỗ hổng bảo mật website thường gặp hiện nay cũng như một số nguyên nhân gây ra lỗ hổng bảo mật website. Các kết quả nghiên cứu cho thấy rất nhiều tiềm tàng về rủi ro cho hệ thống dịch vụ web trong hệ thống mạng internet toàn cầu hiện nay. Vì vây, vấn đề phát hiện sớm các lỗ hổng bảo mật Website để có các biện pháp phòng ngừa hữu hiệu đóng một vai trò hết sức quan trọng. Chương tiếp theo, luận văn sẽ nghiên cứu các giải pháp phát hiện lỗ hổng bảo mật Website. 9 Chương 2: NGHIÊN CỨU GIẢI PHÁP PHÁT HIỆN LỖ HỔNG BẢO MẬT WEBSITE Trong chương 2 luận văn sẽ nghiên cứu một số giải pháp phát hiện lỗ hổng bảo mật website bao gồm: giải pháp sử dụng công cụ phần mềm, giải pháp sử dụng hệ thống IDS và giải pháp sử dụng các kỹ thuật học máy. 2.1. Tổng quan về phát hiện lỗ hổng bảo mật Website 2.1.1 Giới thiệu chung Hệ thống Website có thể hoạt động và cung cấp dịch vụ cho người dùng thường trải qua các giai đoạn sau đây: (1) Giai đoạn thiết kế hệ thống Website; (2) Giai đoạn cài đặt hệ thống Website; (3) Giai đoạn triển khai và vận hành khai thác hệ thống Website. Trong cả ba giai đoạn trên đều có thể phát sinh các lỗ hổng bảo mật và cần phải có các giải pháp phát hiện lỗ hổng bảo mật cho hệ thống Website. 2.1.2 Mô hình phát hiện lỗ hổng bảo mật Website Hình 2.1. Mô hình tổng quát phát hiện lỗ hổng bảo mật Website 10 Theo hình 2.1, quá trình phát hiện lỗ hổng bảo mật Website được xây dựng bằng cách thực hiện kiểm tra thụ động và kiểm tra thăm dò tích cực (active probe) các lỗ hổng. Trong quá trình rà quét (scan), các phương tiện phân tích lỗ hổng bảo mật Website sẽ gửi yêu cầu đến địa chỉ của Website (lên cổng máy chủ), phân tích các gói dữ liệu nhận được, sau đó đưa ra các kết luận tương ứng về các lỗ hổng có thể tồn tại. 2.2. Giải pháp sử dụng công cụ phần mềm dò quét 2.2.1 Giới thiệu giải pháp Một số tiêu chuẩn kiểm thử lỗ hổng bảo mật website điển hình: – OWASP (Open Web Application Security Project). – OSSTMM (Open Source Security Testing Methodology Manual) – Kiểm thử theo phương thức mã nguồn mở. – PTF (Penetration Testing Framework) – Dò quét lỗ hổng bảo mật hệ thống. – ISSAF (Information Systems Security Assessment Framework) – Đánh giá bảo mật Hệ thống thông tin. 2.2.2 Một số phần mềm phát hiện lỗ hổng bảo mật Website Hiện nay có khá nhiều phần mềm miễn phí cũng như trả phí được phát hành. Một số ứng dụng phát hiện lỗ hổng bảo mật Website khá phổ biến được liệt kê dưới đây. - Google Safe Browsing Diagnostic: sẽ cho biết về tên miền và các đường dẫn liên quan đến địa chỉ web muốn kiểm tra. - URL Void: có chức năng quét địa chỉ web bằng hơn 30 công cụ khác nhau. - UnMask Parasites: quét web cho biết nó chứa các mối nguy hiểm nào ví dụ đường link, dòng lệnh đáng ngờ. - PhishTank: cung cấp danh sách địa chỉ Web có nguy cơ phishing. - UnShorten.it: đảm bảo an toàn cho người dùng khi truy cập vào các địa chỉ web rút gọn. - Phần mềm Havij: phát hiện lỗ hổng cơ sở dữ liệu SQL với ngôn ngữ lập trình web là PHP. - Phần mềm Rapid 7: có tính năng dò quét lỗ hổng toàn diện chuyên sâu trên cả phần cứng và phần mềm. 11 - Phần mềm Acunetix: là chương trình tự động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,… 2.2.3 Nhận xét Giải pháp sử dụng các công cụ phần mềm rà quét phát hiện lỗ hổng bảo mật Website khá đơn giản và có thể tiến hành ngay từ giai đoạn thiết kế và cài đặt hệ thống website. Giải pháp này có thể hỗ trợ cho cả các nhà phát triển, cung cấp dịch vụ Web lẫn các tổ chức, cá nhân sử dụng hệ thống Website. Tuy nhiên, lỗ hổng bảo mật Website ngày càng khó phát hiện, trong khi đó thủ đọan của tin tặc ngày càng tinh vi và nguy hiểm. Do đó, việc sử dụng các phần mềm dò quét thông thường có thể không mang lại hiệu quả như mong muốn, đặc biệt đối với các website lớn, phức tạp. Vì vậy, cần phải có thêm các giải pháp hỗ trợ khác. 2.3 Giải pháp sử dụng hệ thống phát hiện xâm nhập 2.3.1 Giới thiệu hệ thống phát hiện xâm nhập Hệ thống phát hiện xâm nhập (Intrusion Detection System – IDS) là một hệ thống phần cứng hoặc ứng dụng phần mềm theo dõi, giám sát và thu thập thông tin từ các hoạt động ra vào của mạng. Sau đó hệ thống sẽ phân tích để tìm dấu hiệu của sự xâm nhập hoặc tấn công hệ thống trái phép và cảnh báo đến người quản trị hệ thống. Nói cách khác, IDS là hệ thống phát hiện các dấu hiệu có nguy cơ làm tổn hại đến tính đúng đắn, tính toàn vẹn, tính bảo mật của một hệ thống mạng hoặc máy tính, làm cơ sở để đảm bảo cho an ninh hệ thống. Chúng có thể xác định những hoạt động xâm nhập bằng việc kiểm tra sự đi lại của mạng, những host log, system call, và những khu vực khác khi phát hiện ra những dấu hiệu xâm nhập. Do đó, IDS có khả năng ứng dụng phát hiện lỗ hổng bảo mật Website. 2.3.2 Ứng dụng hệ thống IDS phát hiện lỗ hổng bảo mật Website Hệ thống phát hiện xâm nhập IDS có khả năng ứng dụng phát hiện lỗ hổng bảo mật Website dựa trên các dữ liệu thu thập được kết hợp với các kỹ thuật phát hiện tấn công. 12 1) Phát hiện tấn công dựa trên dấu hiệu (2) Phát hiện tấn công dựa trên bất thường (3) Phát hiện tấn công dựa trên phân tích trạng thái giao thức 2.3.3 Nhận xét Giải pháp sử dụng hệ thống IDS phát hiện lỗ hổng bảo mật Website dựa trên các cảnh báo có sự xâm nhập trái phép. Đây là giải pháp khá hữu hiệu nhằm phát hiện các lỗ hổng bảo mật cho hệ thống Website đang hoạt động. Tuy nhiên, việc phân loại cụ thể các lỗ hổng bảo mật cho hệ thống Website. Vì vậy, trong phần tiếp theo, luận văn sẽ nghiên cứu giải pháp ứng dụng các kỹ thuật học máy để khắc phục nhược điểm này. 2.4 Giải pháp sử dụng các kỹ thuật học máy 2.4.1 Giới thiệu về học máy Học máy là một trong các lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Theo nghĩa rộng: “học máy là một cụm từ dùng để chỉ khả năng một chương trình máy tính để tăng tính thực thi dựa trên những kinh nghiêm đã trải qua” hoặc “học máy là để chỉ khả năng một chương trình có thể phát sinh ra một cấu trúc dữ liệu mới khác với các cấu trúc dữ liệu cũ”. Lợi điểm của các phương pháp học máy là nó phát sinh ra các luật tường minh, có thể được sửa đổi, hoặc được huấn luyện trong một giới hạn nhất định. Các phương pháp học máy hoạt động trên các dữ liệu có đặc tả thông tin. Một tiến trình học máy gồm 2 giai đoạn [6]: Giai đoạn học: hệ thống phân tích dữ liệu và nhận ra sự mối quan hệ (có thể là phi tuyến hoặc tuyến tính) giữa các đối tượng dữ liệu. Kết quả của việc học có thể là: nhóm các đối tượng vào trong các lớp, tạo ra các luật, tiên đoán lớp cho các đối tượng mới. Giai đoạn thử nghiệm (testing): Mối quan hệ (các luật, lớp...) được tạo ra phải được kiểm nghiệm lại bằng một số hàm tính toán thực thi trên một phần của tập dữ liệu huấn luyện hoặc trên một tập dữ liệu lớn. Các kỹ thuật học máy được chia làm 3 loại: học có giám sát, học không giám sát và học bán giám sát. 13 Học có giám sát Học không giám sát Học bán giám sát 2.4.2 Ứng dụng các kỹ thuật học máy phát hiện lỗ hổng bảo mật Website Trong thực tế, các kỹ thuật học máy thường được sử dung để phát hiện và phân loại các lỗ hổng bảo mật Website. Đối với các loại lỗ hổng đã biết, các kỹ thuật học máy có giám sát thường được lựa chọn để ứng dụng. Để phát hiện các loại lỗ hổng chưa biết, các kỹ thuật học máy không giám sát thường được lựa chọn để ứng dụng. Trong trường hợp tổng quát, các kỹ thuật học máy bán giám sát thường được lựa chọn để ứng dụng. 2.4.3 Nhận xét Giải pháp sử dụng học máy phát hiện lỗ hổng bảo mật Website thường cho kết quả phân loại các lỗ hổng bảo mật. Do đó sẽ hỗ trợ khả năng khắc phục, hạn chế nguy cơ của lỗ hổng bảo mât. Tuy nhiên, giải pháp xây dựng các mô hình phân loại cụ thể các lỗ hổng bảo mật cho hệ thống Website dựa trên các kỹ thuật học máy đòi hỏi phải xây dựng các hệ thống phức tạp. Cùng với sự phát triển của công nghệ, giải pháp này có nhiều triển vọng triển khai trong thực tế. 2.4. Kết luận chương 2. Trong chương 2 luận văn đã khảo sát tổng quan về phát hiện lỗ hổng bảo mật website. Luận văn đã đề xuất mô hình tổng quát phát hiện lỗ hổng bảo mật website. Từ đó, Luận văn đã nghiên cứu ba giải pháp phát hiện lỗ hổng bảo mật website bao gồm: giải pháp sử dụng công cụ phần mềm, giải pháp sử dụng hệ thống IDS và giải pháp sử dụng các kỹ thuật học máy. Trên cơ sở các kết quả đã đạt được của chương 2, trong chương tiếp theo luận văn sẽ tiến hành thử nghiệm một số phương pháp phát hiện lỗ hổng bảo mật website. 14 Chương 3: THỬ NGHIỆM Trong chương 3 luận văn tiến hành thử nghiệm một số kịch bản phát hiện lỗ hổng bảo mật website dựa trên các kết quả đã khảo sát trong các chương trước. 3.1. Yêu cầu thử nghiệm 3.1.1. Đặt bài toán Trong các chương trước, luận văn đã khảo sát các giải pháp phát hiện lỗ hổng bảo mật website. Để thực hiện kiểm nghiệm cho các giải pháp phát hiện các lỗ hổng bảo mật website đã nghiên cứu, trong phần này luận văn sẽ tiến hành xây dựng và thử nghiệm một số kịch bản phát hiện lỗ hổng bảo mật website. Do thời gian hạn chế, trong khuôn khổ luận văn sẽ tiến hành các kịch bản thử nghiệm sau đây: (1) Thử nghiệm dò quét các cổng website đang mở. (2) Thử nghiệm tấn công website bằng phương thức DDoS. (3) Thử nghiệm phát hiện lỗ hổng bảo mật SQL Injection. (4) Thử nghiệm kiểm tra lỗi trang website bằng phương pháp Google Hacking. (5) Thử nghiệm đề xuất hệ thống IDS sử dụng Snort. Các thử nghiệm từ (1) đến (4) được xây dựng kịch bản và cài đặt dựa trên mã nguồn mở Python. Thử nghiệm (5) được cài đặt dựa theo tài liệu hướng dẫn bộ công cụ Pfsense [15]. Yêu cầu chung cho cài đặt thử nghiệm: - Phần cứng: Bộ xử lý 32 bit (x86) hoặc 64 bit (x64) có tốc độ 1 gigahertz (GHz) hoặc nhanh hơn; RAM 2GB trở lên; Đĩa cứng có dung lượng trống 10 GB (64 bit). - Phần mềm: Cài đặt trên hệ thống window 7, 8, 10; Công cụ lập trình: Phần mềm Python 2.7 trở lên hoặc phần mềm Pycham Community Edition 2017.2, trình duyệt web firefox hoặc chrome - Dữ liệu giả định, tác giả tập trung khai thác trang web có tên miền là http://www.hunre.edu.vn và trang web www.nhuaphucthinh.com.vn để làm minh chứng. 15 3.1.2. Giới thiệu chung về Python Python là ngôn ngữ kịch bản hướng đối tượng (object-oriented scripting language). Không chỉ vậy, nó còn là một ngôn ngữ cấp cao có khả năng thông dịch (interpreted language) và có tính tương tác (interactive language) cao. Nhờ chức năng thông dịch mà trình thông dịch (Interpreter) của Python có thể xử lý lệnh tại thời điểm chạy chương trình (runtime). Nhờ đó mà ta không cần biên dịch chương trình trước khi thực hiện nó (tương tự như Perl và PHP). Từ những khảo sát trên, luận văn đã lựa chọn Python làm ngôn ngữ để tiến hành cài đặt các thử nghiệm. 3.2. Kịch bản thử nghiệm 1: Thử nghiệm dò quét các cổng website đang mở 3.2.1. Bài toán thử nghiệm 1 Mục tiêu của bài toán thử nghiệm về quét các cổng webiste đang mở, thì trước khi tiến hành khai thác hoặc tấn công vào một địa chỉ website nào đó, ta có thể biết website đó đang mở đến những cổng kết nối nào. Do đó, đầu vào là trang website cần thực hiện quét cổng và đầu ra cho biết được website đó có bao nhiêu cổng đang được mở. Kịch bản với mục tiêu cho biết website đang mở hoặc kết nối đến cổng nào trên bảng đã cho trên. Xây dựng các bước để thử nghiệm là: Bước 1: Xây dựng chương trình thực hiện quét các cổng bằng ngôn ngữ Python Bước 2: Thử nghiệm trên một tên miền hoặc địa chỉ IP của website, cụ thể lấy tên miền http://www.hunre.edu.vn và thực hiện kiểm tra, thấy địa chỉ host đang hoạt động bình thường với địa chỉ IP: 125.235.8.201. Bước 3: Tiến hành thực hiện chạy chương trình Python đã xây dựng và nhập địa chỉ tên miền hoặc địa chỉ IP cần quét các cổng theo yêu cầu. 3.2.2. Kết quả thử nghiệm 1 Bước 1: Xây dựng chương trình thực hiện quét các cổng bằng ngôn ngữ Python sau: Bước 2: Thực hiện kiểm tra địa chỉ Host cần quét còn hoạt động hay không, bằng cách nhập địa chỉ tên miền trên cmd của windows. Hình dưới sau, tác giả lấy một tên miền bất kỳ, chẳng hạn như: http://www.hunre.edu.vn và thực hiện kiểm tra, thấy địa chỉ host đang hoạt động bình thường với địa chỉ IP: 125.235.8.201 16 Bước 3: Tiến hành thực hiện chạy chương trình Python đã xây dựng và nhập địa chỉ tên miền hoặc địa chỉ IP cần quét các cổng theo yêu cầu. Hình 3.2 dưới cho ra kết quả thực hiện các cổng đang mở kết nối tới địa chỉ đã nhập Hình 3.3: Kết quả thực hiện quét các cổng của địa chỉ đã cho 3.2.3. Đánh giá kết quả thử nghiệm 1 Với đoạn code chương trình đã xây dựng trên, khi thực hiện chương trình có thể kiểm tra được bất kỳ địa chỉ host nào đang kết nối tới cổng nào khi tham gia mạng máy tính, qua đó cũng là tiền đề để Hacker có thể biết và khai thác các dịch vụ của host khi tham gia mạng. Kết quả của ví dụ trên cho thấy địa chỉ host IP (125.235.8.201) sau thời gian 22 phút 29 giây đã thực hiện quét được các cổng có thể là tổng cộng 13 port đang mở. 3.3. Kịch bản thử nghiệm 2: Thử nghiệm tấn công website bằng phương thức DoS 3.3.1. Bài toán thử nghiệm 2 Mục tiêu của bài toán là dùng chương trình thực hiện mã nguồn mở Python để thực hiện tấn công vào một trang website bất kỳ và kết quả là làm cho website đó bị tê liệt hoặc không thể truy cập được. Cụ thể trong trường hợp này thì đầu vào là một website có địa chỉ: www.hunre.edu.vn hoặc có địa chỉ 125.235.8.201 và kết quả đầu ra là trang website bị lỗi. Như vậy, tấn công từ chối dịch vụ phân tán DoS (Denial of Service) là kiểu tấn công làm cho hệ thống máy tính hay hệ thống mạng quá tải, không thể cung cấp dịch vụ hoặc phải dừng hoạt động. Xây dựng các bước để thử nghiệm là: Bước 1: Xây dựng chương trình thực hiện tấn công DoS bằng ngôn ngữ Python và thực hiện thử nghiệm tấn công vào địa chỉ trang website bất kỳ. Bước 2: Chạy chương trình thực hiện tấn công DoS bằng ngôn ngữ Python đã được viết và thực hiện các yêu cầu cần nhập vào các thông số như cổng tấn công, số lần thực hiện,.. Bước 3: Kiểm nghiệm lại kết quả bằng cách truy cập trình duyệt để kiểm tra trạng thái của trang web bị tấn công DoS 17 3.3.2. Kết quả thử nghiệm 2 Bước 1: Xây dựng chương trình thực hiện tấn công DoS bằng ngôn ngữ Python và thực hiện tấn công vào địa chỉ trang website: hunre.edu.vn Bước 2: Chạy chương trình viết trên, kết quả xuất hiện các yêu cầu cần nhập vào như: Bảng 3.2: Bảng dữ liệu đầu vào thực hiện tấn công DoS Nội dung yêu cầu + Nhập website cần tấn công DoS: + Cổng (port) muốn thực hiện tấn công DoS: + Nội dung muốn gửi thông báo: + Cho phép số lần tấn công: Dữ liệu giả định http://hunre.edu.vn 80 Xin thu mot lan cho biet…. 100000000 Sau khi nhập đủ các thông tin theo yêu cầu, chương trình sẽ tự động thực hiện tấn công đến đối tượng đã chỉ định. Kết quả sau một thời gian trang web đã bị tê liệt hoặc làm gián đoạn không hoạt động, kết quả thấy trang web có địa chỉ https://www.hunre.edu.vn đã bị từ chối truy cập: Bước 3: Truy cập trình duyệt để kiểm tra trạng thái của trang web bị tấn công DoS: 3.3.3. Đánh giá kết quả thử nghiệm 2 Với chương trình trên được viết cho mục đích tấn công từ chối dịch vụ DoS có thể thấy rằng bất kỳ địa chỉ host nào muốn thực hiện tấn công, chúng ta chỉ cần nhập tên miền hoặc địa chỉ IP của trang web đó và thực hiện tấn công ở cổng 80 với nội dung được gửi đến và số lần liên tiếp thực hiện tấn công trong một khoảng thời gian nhất định, điều đó sẽ làm cho trang web không thể truy cập được hoặc làm gián đoạn sự truy cập, cụ thể trang web trên đã báo lỗi khi truy cập. 3.4. Kịch bản thử nghiệm 3: Thử nghiệm phát hiện lỗ hổng bảo mật SQL Injection 3.4.1. Bài toán thử nghiệm 3 Mục tiêu của bài toán này là dùng các kỹ thuật kiểm tra bất kỳ một trang website nào có kết nối đến cơ sở dữ liệu SQL bằng các kỹ thuật như là vượt kiểm tra lúc đăng nhập vào website, tấn công webiste bằng cách các câu lệnh sử dụng lệnh truy vấn SQL, sử dụng các store procedures của SQL server hoặc các câu lệnh chèn SQL,.. và kết quả đạt được có thể lấy được thông tin bảo mật của hệ thống như tên đăng nhập và mật khẩu truy cập. Như vậy, SQL Injection là một trong những kiểu hack web bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution (thực thi từ xa), dump data và 18 lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Firefox, Netscape, Lynx, ...Xây dựng các bước để thử nghiệm: Bước 1: Xây dựng chương trình thực hiện kiểm tra lỗi trang web bằng ngôn ngữ Python. Bước 2: Thực hiện chạy chương trình được viết bằng ngôn ngữ Python trong bước 1 để kiểm tra kết quả các lỗ hổng website có dính lỗi SQL. Bước 3: Thực hiện dùng các câu lệnh truy vấn SQL để thực hiện tấn công trang website trên địa chỉ của trình duyệt web bất kỳ, trong đó sử dụng các câu lệnh Select truy vấn. 3.4.2. Kết quả thử nghiệm 3 Bước 1: Xây dựng chương trình thực hiện kiểm tra lỗi trang web bằng ngôn ngữ Python Bước 2: Thực hiện chạy chương trình để kiểm tra kết quả, trong kết quả này tác giả lấy trang website có tên miền là http://www.nhuaphucthinh.com.vn để làm minh chứng. Kết quả chương trình phát hiện website trên có lỗ hổng về cơ sở dữ liệu phần xử lý admin theo kết quả sau: Hình 3.7: Kết quả phát hiện lỗi trang web có tổn thương SQL Injection Bước 3: Thực hiện dùng các câu lệnh truy vấn SQL để thực hiện tấn công trang website này trên địa chỉ của trình duyệt web bất kỳ: (1). Thực hiện thêm order by đằng sau đuôi trang website để kiểm tra xem web có bao nhiêu bảng kết nối cơ sở dữ liệu SQL: http://www.nhuaphucthinh.com.vn/product.php?id=20 order by 11-- (2). Sau khi biết dò chính xác số bảng trong cơ sở dữ liệu SQL ta có thể truy cập vào để biết được những bảng nào bị lỗi, từ đó thực hiện tấn công vào bảng bị lỗi:
- Xem thêm -

Tài liệu liên quan