TÓM TẮT Trong thời đại công nghệ thông tin phát triển như hiện nay thì vấn đề về đảm bảo an toàn, an ninh thông tin luôn được đặt lên hàng đầu, trong đó phương pháp kiểm thử an ninh luôn
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KIỀU PHI HÙNG
XÂY DỰNG THỬ NGHIỆM CÔNG CỤ PHÁT HIỆN
VÀ KHAI THÁC CÁC LỖ HỔNG AN NINH
Ngành: Công nghệ Thông tin
Chuyên ngành: An toàn Thông tin
Mã số: 8480202.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: GS.TS NGUYỄN THANH THỦY
Hà Nội - 2019
Trang 2LỜI CẢM ƠN
Đầu tiên tôi xin bày tỏ lòng cảm ơn chân thành và sâu sắc nhất đến GS.TS Nguyễn Thanh Thủy vì sự hướng dẫn và chỉ bảo tận tình cùng với những định hướng, những lời khuyên, những kiến thức vô cùng quý giá của Thầy trong quá trình em theo học cũng như làm luận văn tốt nghiệp
Tôi xin được gửi lời cảm ơn tới các Thầy Cô trong khoa Công nghệ thông tin – trường Đại học Công Nghệ - Đại học Quốc gia Hà Nội nói chung cũng như các thầy cô trong bộ môn An toàn thông tin nói riêng đã tận tình giảng dạy, trang bị cho tôi những kiến thức quý báu trong quá trình tôi theo học tại khoa Đây cũng chính là tiền đề để tôi có được những kiến thức cần thiết để hoàn thành luận văn này
Cuối cùng, tôi cũng xin được gửi lời cảm ơn tới các Thầy Cô giáo cùng các anh chị em bạn bè đang theo học tại bộ môn An toàn thông tin đã rất tận tình chỉ bảo và tạo điều kiện tốt nhất để tôi được làm việc trên bộ môn với đầy đủ trang thiết bị cần thiết để tôi có thể hoàn thành tốt nhất luận văn này
Mặc dù đã rất cố gắng nhưng luận văn chắc chắn không tránh khỏi những thiếu sót, tôi rất mong nhận được những ý kiến đánh giá và phê bình từ phía các Thầy Cô để luận văn được hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Hà nội, tháng 05 năm 2019 Học viên
Kiều Phi Hùng
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan luận văn tốt nghiệp với đề tài “Xây dựng thử nghiệm công cụ phát hiện
và khai thác các lỗ hổng an ninh” đây là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn của GS.TS Nguyễn Thanh Thủy Các kết quả tôi trình bày trong luận văn là hoàn toàn trung thực và chưa từng được nộp như một khóa luận, luận văn hay luận án tại trường Đại học Công Nghệ - Đại học Quốc gia Hà Nội hoặc bất kỳ trường đại học nào khác
Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, các công trình nghiên cứu liên quan trong nước và quốc tế trong phần tài liệu tham khảo Ngoại trừ các tài liệu tham khảo này, luận văn này hoàn toàn là công việc của riêng tôi
Nếu có bất cứ phát hiện nào về sự gian lận sao chép tài liệu, công trình nghiên cứu của tác giả khác mà không ghi rõ trong phần tài liệu tham khảo, tôi xin chịu hoàn toàn trách nhiệm về kết quả luận văn của mình
Hà Nội, tháng 05 năm 2019 Học viên
Kiều Phi Hùng
Trang 4MỤC LỤC
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT 6
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 7
TÓM TẮT 9
GIỚI THIỆU 10
CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ AN NINH 11
1.1 Khái niệm cơ bản 11
1.2 Phân loại kiểm thử an ninh 11
1.2.1 Kiểm thử hộp trắng 11
1.2.2 Kiểm thử hộp đen 11
1.2.3 Kiểm thử hộp xám 11
1.3 Quy trình kiểm thử an ninh 12
1.3.1 Giai đoạn khởi tạo 13
1.3.2 Đặt phạm vi 13
1.3.3 Thu thập thông tin trước khi kiểm thử 14
1.3.4 Tuyên bố công việc 15
1.3.5 Quyền kiểm thử chuyên sâu 15
1.3.6 Thực thi kiểm thử 15
1.3.7 Báo cáo kiểm thử an ninh 15
CHƯƠNG 2: TỔNG QUAN VỀ METASPLOIT 17
2.1 Khái niệm cơ bản 17
2.2 Lịch sử Metasploit 17
2.3 Các phiên bản của Metasploit 18
2.4 Metasploit Framework 20
2.4.1 Tổng quan về Metasploit Framework 20
2.4.2 Cấu trúc của Metasploit Framework 23
2.4.3 Quy trình kiểm thử trên Metasploit Framework 24
CHƯƠNG 3: MỞ RỘNG TÍNH NĂNG TẠO BÁO CÁO CHO METASPLOIT FRAMEWORK 25
Trang 53.1 Xác định chuẩn báo cáo trong Metasploit Pro 26
3.1.1 Chuẩn PCI 27
3.1.2 Chuẩn FISMA 27
3.2 Xác định các loại báo trên Metasploit Pro 28
3.3 Chuẩn bị dữ liệu để kết xuất 29
3.3.1 Chuẩn bị dữ liệu tấn công kiểm thử 29
3.3.2 Tấn công kiểm thử 29
3.4 Thiết kế công cụ tạo báo cáo 35
3.4.1 Phân tích 35
3.4.2 Đưa ra giải pháp 38
3.4.3 Thiết kế Logic 39
3.5 Viết chương trình và chạy thử nghiệm công cụ 45
3.5.1 Viết chương trình 45
3.5.2 Chạy thử nghiệm công cụ 49
3.5.3 Kết quả đạt được 54
CHƯƠNG 4: KÊT LUẬN 60
TÀI LIỆU THAM KHẢO 61
Trang 6DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiệu Thuật ngữ Ý nghĩa
Exploit Mã tìm kiếm lỗ hổng, các điểm
yếu, back door
Gem Gói thƣ viện sẵn có trên trang
Rubygem
HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu văn bản IDS Intrusion Detection System Hệ thống phát hiện xâm nhập Meterpreter Mã khai thác khi xâm nhập thành
công
PDF Portable Document Format Định dạng tài liệu di động
PostgreSQL Hệ quản trị cơ sở dữ liệu quan hệ
và đối tƣợng XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng
Trang 7
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1 1 Quy trình kiểm thử an ninh 12
Hình 2 1 Metasploit Community Edition 18
Hình 2 2 Metasploit Pro 19
Hình 2 3 Metasploit Framework 20
Hình 2 4 Tính năng tích hợp hỗ trợ giao tiếp với bên ngoài 21
Hình 2 5 Tính năng tự động 21
Hình 2 6 Tính năng xâm nhập 22
Hình 2 7 Cấu trúc của Metasploit Framework 23
Hình 3 1: Đề xuất báo cáo trên Metasploit Pro 25
Hình 3 2: Chuẩn báo cáo trong Metasploit Pro 26
Hình 3 3: Các loại báo trên Metasploit Pro 28
Hình 3 4 Quét mục tiêu trên Armitage 30
Hình 3 5 Tấn công bằng chế độ Hail Mary 31
Hình 3 6 Tấn công bằng các Exploit tìm được 32
Hình 3 7 Tạo kết quả tấn công dưới định dạng XML 33
Hình 3 8 Báo cáo chuẩn PCI DSS trên Metasploit Pro 34
Hình 3 9 Sơ đồ ngữ cảnh sử dụng 35
Hình 3 10 Các chức năng chính của công cụ 36
Hình 3 11 Sơ đồ luồng dữ liệu 41
Hình 3 12 File ruby report.rb 42
Hình 3 13 Thư mục Report_engine 42
Hình 3 14 Cấu trúc module công cụ 43
Hình 3 15 Thiết kế vật lý 45
Hình 3 16 Đọc thông tin Host 46
Hình 3 17 Đọc thông tin dịch vụ, lỗ hổng 47
Hình 3 18 Danh sách lệnh 48
Hình 3 19 Khởi động Plugin 49
Hình 3 20 Lệnh Report_banner 50
Hình 3 21 Lệnh Check_db 50
Hình 3 22 Lệnh Check_report 50
Hình 3 23 Lệnh Check_status 51
Hình 3 24 Lệnh Use_datapack 51
Trang 8Hình 3 25 Lệnh Unuse_datapack 52
Hình 3 26 Lệnh Remove_datapack 52
Hình 3 27 Lệnh Collect_info 53
Hình 3 28 Lệnh Gen_report 53
Hình 3 29 File báo cáo 54
Hình 3 30 Báo cáo kiểm định thu đƣợc 55
Hình 3 31 Báo cáo dịch vụ thu đƣợc 56
Hình 3 32 Báo cáo tuân thủ chuẩn PCI thu đƣợc 57
Trang 9TÓM TẮT
Trong thời đại công nghệ thông tin phát triển như hiện nay thì vấn đề về đảm bảo
an toàn, an ninh thông tin luôn được đặt lên hàng đầu, trong đó phương pháp kiểm thử an ninh luôn được sử dụng phổ biến nhất nhằm xác định các mối đe dọa trong hệ thống và các lỗ hổng tiềm tàng của nó Việc này vừa giúp hệ thống khỏi các nguy cơ liên quan đến bảo mật, vừa giúp các nhà phát triển khắc phuc những vấn đề còn tồn đọng trong thiết kế
Hiện nay rất nhiều các công cụ phần mềm được ra đời nhằm thực hiện và hỗ trợ việc kiểm thử an ninh này, tuy nhiên nổi bật nhất phổ biến nhất được hầu hết các chuyên gia bảo mật đánh giá cao và sử dụng chính là Metasploit hay còn có thể gọi là Metasploit Project Đây là một dự án liên quan đến bảo mật máy tính, cung cấp những thông tin về các lỗ hổng bảo mật Đối tượng nhắm đến của Metasploit chính là những quá trình tấn công xâm nhập kiểm thử (Penetration Testing) và phát triển các hệ thống phát hiện xâm nhập (Intrusion Detection System – IDS)
Metasploit hiện nay đã phát triển ra nhiều phiên bản khác nhau, nếu muốn sử dụng phiên bản tốt nhất với tất cả các tính năng ưu việt nhất thì bạn phải trả chi phí sử dụng hàng năm rất lớn (khoảng 7000$-8000$/ năm) còn nếu không đủ khả năng chi trả thì chỉ
có thể sử dụng phiên bản miễn phí với giao diện dòng lệnh, thiếu đi rất nhiều các tính năng hữu ích và quan trọng Do đó mục đích của chúng tôi là phát triển mở rộng thêm tính năng tạo báo cáo về kết quả của các phiên kiểm thử an ninh theo định dạng PDF và HTML cho phiên bản mã nguồn mở miễn phí của Metasploit , vốn là một tính năng chỉ có trong phiên bản thương mại đắt tiền nhất của Metasploit Pro
Trang 10GIỚI THIỆU
Hiện nay vấn đề về mất an toàn thông tin trên các hệ thống thông tin, hệ thống mạng và không gian mạng được quan tâm rất lớn trên toàn thế giới Trong những năm gần đây chúng ta đã chứng kiến những cuộc tấn công mạng, sự cố mạng quy mô cực kì lớn, các tin tặc đã lợi dụng các lỗ hổng trong hệ thống để đánh cắp dữ liệu mật hay trực tiếp tống tiền trên quy mô toàn cầu Do đó để giúp hệ thống tránh khỏi các nguy cơ liên quan đến bảo mật, đồng thời giúp các nhà phát triển khắc phục những vấn đề còn tồn đọng trong thiết kế thì phương pháp kiểm thử an ninh được áp dụng và sử dụng phổ biến nhất
Để thực hiện kiểm thử một cách tốt nhất đem lại kết quả cao nhất thì rất nhiều bộ công cụ hay phần mềm hỗ trợ và thực thi kiểm thử được ra đời Hiện nay nổi bật nhất phổ biến nhất được hầu hết các chuyên gia bảo mật đánh giá cao và sử dụng chính là Metasploit Công cụ này cung cấp cho ta các chức năng để do thám kiểm tra và tấn công các lỗ hổng của hệ thống máy tính hoặc xâm nhập vào các hệ thống từ xa
Metasploit hiện nay đã phát triển ra nhiều phiên bản khác nhau, với phiên bản cao cấp nhất là Metasploit Pro đem lại cho người dùng tất cả các tính năng tốt nhất như tính
tự động, giao diện thân thiện, tạo báo cáo vv phục vụ cho việc kiểm thử an ninh Tuy nhiên để sử dụng phiên bản này thì bạn phải trả chi phí hàng năm rất lớn (khoảng 7000$-8000$/ năm) Ngoài ra còn có phiên bản Metasploit Framework, đây là phiên bản miễn phí mã nguồn mở với các chức năng chính tập trung vào các Module tấn công, giao diện dòng lệnh kém thân thiện với người dùng, không có tính năng tự động, các bước làm đều phải làm thủ công vv Chính vì vậy tôi sẽ phát triển mở rộng thêm tính năng tạo báo cáo
về kết quả của các phiên kiểm thử an ninh theo định dạng PDF và HTML cho phiên bản miễn phí này, vốn là một tính năng chỉ có trong phiên bản thương mại đắt tiền nhất của Metasploit Pro.Với tính năng tạo báo cáo được thêm vào sẽ giúp ta có thể so sánh phân tích đánh giá về các lỗ hổng hay khám phá ra những mối đe dọa tiềm ẩn khác để đưa ra một sản phẩm bảo mật an ninh tích hợp hơn mạnh mẽ hơn
Trong luận văn này tôi tập trung trình bày những khái niệm tổng quan về kiểm thử
an ninh, khái niệm về Metasploit và các phiên bản đã có Trình bày về Metasploit Framework và cách mở rộng tính năng tạo báo cáo cùng với các kết quả đã đạt được Luận văn được trình bày trong 4 chương:
Chương 1: Tổng quan về kiểm thử an ninh
Chương 2: Tổng quan về Metasploit và Metasploit Framework
Chương 3: Mở rộng chức năng tạo báo cáo cho Metasploit Framework
Chương 4: Kết luận
Trang 11CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ AN NINH
1.1 Khái niệm cơ bản
Kiểm thử an ninh là một phương pháp dùng để đánh giá các lỗ hổng Người kiểm thử an ninh đảm nhận vai trò của một Hacker và cố gắng hết sức để đột nhập vào tổ chức
có môi trường công nghệ thông tin Mục đích của một bài kiểm tra như vậy là để tìm ra bất kỳ lỗ hổng trong một tổ chức có môi trường công nghệ thông tin và cách các tin tặc khai thác các lỗ hổng này trong thế giới thực Một bài kiểm tra kiểm thử tốt sẽ tiết lộ cách
kẻ tấn công có thể sử dụng lên các hệ thống trước khi nó thực sự xảy ra, chỉ ra các hệ thống có thể bị xâm phạm như thế nào,cách giải quyết các vấn đề được tìm thấy, giúp quản lý chi phí hiệu quả hơn là chỉ chờ tai nạn xảy ra
1.2 Phân loại kiểm thử an ninh
Có ba loại kiểm thử an ninh: kiểm thử hộp trắng, hộp xám và hộp đen Mỗi loại sẽ tương ứng với việc người kiểm thử biết nhiều hay ít về bí mật bên trong của hệ thống cần kiểm tra Mỗi loại đều có ưu nhược điểm tương ứng như sau:
1.2.1 Kiểm thử hộp trắng
Là khi người kiểm thử đã được cấp quyền truy cập đầy đủ vào các bản vẽ mạng, biểu đồ luồng dữ liệu, thuật toán băm mật khẩu và tất cả những thứ khác cho phép hệ thống hoạt động thì loại kiểm thử này là kiểm thử hộp trắng
Ưu điểm: Rất hiệu quả về thời gian cho người thử nghiệm
Nhược điểm: Thường không phải là mô phỏng thực tế về một cuộc tấn công của Hacker
vì người kiểm tra đã biết về toàn bộ hệ thống
Trang 12Ưu điểm: Vừa mô tả được một cuộc tấn công thực tế của Hacker và vừa tiết kiệm thời gian bằng cách cung cấp cho người kiểm thử một số thông tin về cách hệ thống đang hoạt động
Nhược điểm: Người kiểm thử có thể không có quyền truy cập vào mã nguồn của ứng dụng đích hoặc các thông tin quan trọng khác
Hầu hết các bài kiểm thử an ninh đều rơi vào loại kiểm thử hộp xám Điều này thường là do kiểm thử hộp đen quá tốn thời gian và quá tốn kém đối với hầu hết các tổ chức Chỉ cần cung cấp cho người kiểm thử an ninh một số thông tin về hệ thống đích sẽ tránh được tình huống báo cáo cuối cùng của người kiểm tra chứa thông tin mà chủ sở hữu hệ thống đã biết
1.3 Quy trình kiểm thử an ninh
Một bài kiểm thử an ninh phải tuân theo một quy trình được xác định trước Quá trình này có thể được cố định hoặc thay đổi giúp người kiểm thử an ninh hoàn thành đúng hạn và rất có thể sẽ làm tăng tính hữu dụng của toàn bộ kết quả Một quy trình kiểm thử
có cấu trúc cũng sẽ giúp cho người mới tham gia dễ hiểu hơn về mục đích và tiến trình của dự án Một lợi ích khác của việc duy trì quy trình kiểm thử có cấu trúc là nó giảm thiểu rủi ro của việc dành quá nhiều thời gian cho một trong các bước trong khi bỏ qua một bước khác Dưới đây sẽ là quy trình kiểm thử an ninh tổng quát nhất (xem Hình 1.1)
Hình 1 1 Quy trình kiểm thử an ninh
Trang 13Trong phần này luận văn sẽ trình bày chi tiết hơn về các bước trong quy trình kiểm thử an ninh
1.3.1 Giai đoạn khởi tạo
Giai đoạn khởi tạo (The Initialization Phase) diễn ra khi một tổ chức quyết định, hoặc ít nhất là xem xét, dành thời gian, tiền bạc và năng lượng cho một bài kiểm thử Giai đoạn này sẽ trả lời cho các câu hỏi như: Chúng ta an toàn như thế nào trước tin tặc? Và làm thế nào chúng ta có thể trở nên an toàn hơn? Chúng ta có thể làm gì để tuân thủ tiêu chuẩn bảo mật X? Các hệ thống muốn đáp ứng được các tiêu chuẩn bảo mật cần được kiểm tra thường xuyên, ít nhất là hàng năm
1.3.2 Đặt phạm vi
Người kiểm thử an ninh cần xác định rõ phạm vi ranh giới (Setting The Scope) của bài kiểm thử, những gì cần được kiểm tra và những gì nên bỏ đi? Việc này cần được sắp xếp trước khi bắt đầu một bài kiểm thử nhằm tránh gặp các rắc rối về pháp lý không cần thiết
Ngoài ra cần đặt phạm vi cố định trước khi kiểm thử bắt đầu là để giảm thiểu rủi ro của cái được gọi là phạm vi ngoài ý muốn (Creep Scope) Việc này xảy ra khi xuất hiện các yếu tố làm thay đổi phạm vi trong quá trình kiểm thử an ninh Ví dụ: Người kiểm thử
an ninh được thuê để kiểm tra tính an toàn của bốn máy chủ chứa cơ sở dữ liệu về một bộ phận kế toán Trong quá trình kiểm tra, thực tế là có nhiều máy chủ chứa cơ sở dữ liệu không an toàn, thuộc về các bộ phận khác, nhưng người kiểm thử không biết và vẫn thực hiện kiểm thử trên các máy thuộc bộ phận khác đó Kết quả của báo cáo cuối cùng lại chứa nhiều máy chủ hơn nhiều so với yêu cầu ban đầu Một tình huống như vậy có thể dẫn đến một kiểm thử an ninh chất lượng thấp trong thời gian dài
Để xác định được phạm vi một cách tốt hơn chính xác hơn thì tổ chức hay công ty có thể
sử dụng hai cách sau:
Cách 1: Đặt phạm vi dựa trên các báo cáo cũ
Việc sử dụng các báo cáo từ các phiên kiểm thử an ninh trước đó sẽ giúp cho tất cả mọi người tham gia dự án biết về cách kiểm thử có thể được thực hiện và cả cách các tổ chức khác đã suy luận khi thiết lập phạm vi kiểm thử
Tuy nhiên cần phải kiểm duyệt các báo cáo này trước khi sử dụng nhằm tránh các trường hợp xấu có thể xảy ra như vô tình làm lộ thông tin bí mật về một bên khác hay gặp rắc rối với luật pháp khi sử dụng làm phạm vi mẫu khi không được sự cho phép của công
ty hoặc tổ chức sở hữu báo cáo đó
Cách 2: Lấy ý kiến từ các chuyên gia hàng đầu
Trang 14Việc yêu cầu giúp đỡ từ các chuyên gia kiểm thử hàng đầu dày dặn kinh nghiệm hơn sẽ giúp xác định phạm vi một cách dễ dàng hơn và tránh được các rủi ro không đáng
có Tùy thuộc vào môi trường công nghệ thông tin của khách hàng và ngân sách của họ
mà các chuyên gia kiểm thử có thể đề xuất những gì nên được đưa vào kiểm thử và nên áp dụng phương pháp kiểm thử nào
1.3.3 Thu thập thông tin trước khi kiểm thử
Thông thường kiểm thử hộp trắng và xám yêu cầu người kiểm thử có được cái nhìn khái quát về bên trong của hệ thống trước khi thực hiện giai đoạn kiểm tra kỹ thuật Không phải tất cả các hệ thống đều được tạo ra như nhau, do đó kết quả kiểm thử sẽ phụ thuộc vào các chi tiết và tính chính xác của thông tin được cung cấp cho người kiểm thử trước đó (cùng với phạm vi kiểm thử) Những thông tin cần thiết có thể lấy từ quản lý, quản trị viên hệ thống và mạng, quản lý cung cấp dịch vụ và nhà phát triển
Mười ba câu hỏi sau đây có thể giúp chúng ta lấy được những thông tin cần thiết nhất trước khi bắt đầu kiểm thử:
Mục đích của hệ thống là gì?
Hệ thống cung cấp dịch vụ và giao diện nào?
Dữ liệu dự định đi vào và ra khỏi hệ thống như thế nào?
Hệ thống có chứa dữ liệu sản xuất không?
Có bất kỳ tài liệu có sẵn nào không?
Người kiểm thử sẽ truy cập hệ thống như thế nào?
Có mã nguồn nào không?
Có bất kỳ phần cứng hoặc phần mềm nào có thể can thiệp vào hoạt động kiểm thử
an ninh và nếu có thì có thể tạm thời tắt trong quá trình kiểm thử? (như tường lửa hoặc hệ thống phát hiện và ngăn chặn xâm nhập)
Hệ điều hành nào đang được sử dụng?
Có quy trình khắc phục lỗi tại chỗ không (trong trường hợp kiểm thử gặp sai lầm nghiêm trọng)?
Có sao lưu công việc không?
Có báo cáo cũ về những lần kiểm thử trước đó không?
Tài sản nào liên quan đến hệ thống là quan trọng nhất đối với bạn?
Trang 151.3.4 Tuyên bố công việc
Bản tuyên bố công việc (Statement Of Work) là một tài liệu phác thảo phạm vi của kiểm thử và loại kiểm thử nào sẽ được thực hiện trong phạm vi đó Tài liệu cần chỉ ra rằng người kiểm thử đã hiểu những gì về phạm vi kiểm thử, loại kiểm thử, thời hạn kiểm thử, v.v Chi tiết hơn có thể đưa ra cả thông tin về nơi các bài kiểm tra sẽ được thực hiện
và trong thời gian nào trong ngày
Ngoài ra bản tuyên bố cũng chỉ ra rõ người kiểm thử an ninh nên liên hệ với ai trong trường hợp có sự kiện bất ngờ xảy ra
1.3.5 Quyền kiểm thử chuyên sâu
Đây là một thuật ngữ dùng để chỉ một đặc quyền được cấp riêng cho người kiểm thử an ninh nhằm phân biệt với các Hacker mang ý đồ xấu Trong quá trình kiểm thử các công cụ và phương pháp được sử dụng bởi người kiểm tra bảo mật trong hầu hết các trường hợp sẽ bắt chước chính xác, hoặc gần giống với cách mà một Hacker thực hiện khi tấn công vào hệ thống Do đó người kiểm thử phải đảm bảo rằng có tất cả các quyền cần thiết để thực hiện kiểm tra chuyên sâu một cách thuận lợi nhất mà không gặp trở ngại từ các ứng dụng bảo vệ hệ thống (như phần mềm Ani-Virus) Quyền này phải được ký, bởi một người có thẩm quyền thích hợp và cần hoàn thành trước khi chuyển sang bước tiếp theo của bài kiểm thử an ninh
1.3.6 Thực thi kiểm thử
Đây là giai đoạn người kiểm thử bắt đầu đột nhập vào các hệ thống nằm trong phạm vi đã định sẵn từ trước Người thực hiện bước này của quy trình kiểm thử an ninh phải hiểu rất rõ các kỹ thuật Hack khác nhau và cách tư duy của các tin tặc, hoặc tội phạm máy tính Mặc dù các bước khác trong quy trình kiểm thử có thể được lên kế hoạch
và thực hiện bởi một người không am hiểu về kỹ thuật bảo mật nhưng bước này phải được thực hiện bởi người có kiến thức kỹ thuật sâu về các công cụ và kỹ thuật của Hacker
1.3.7 Báo cáo kiểm thử an ninh
Bản báo cáo cuối cùng luôn luôn là khía cạnh quan trọng nhất của bất kì bài kiểm thử an ninh nào Báo cáo là văn bản tổng hợp liệt kê đưa ra các thông tin như các loại lỗ hổng bảo mật nào được phát hiện, cách chúng được phát hiện và cách để có thể sửa chúng Một bài báo cáo được viết tốt, được tất cả mọi người hiểu, là mục tiêu cuối cùng của một bài kiểm thử an ninh Bởi vì nếu báo cáo không được làm cẩn thận hay thậm chí không có báo cáo thì chủ sở hữu hệ thống và các bên liên quan khác sẽ không có cách nào để biết liệu hệ thống của họ có an toàn hay không Bên cạnh thách thức về kỹ thuật xâm nhập vào
hệ thống máy tính, viết một bài báo cáo tốt là công việc khó khăn đối với ngay cả chuyên gia bảo mật dày dạn kinh nghiệm nhất
Trang 16Kiểm thử an ninh sẽ đem lại kết quả tốt nhất nếu người kiểm thử tuân theo quy trình đã được thiết lập Có một thói quen được thiết lập sẽ không chỉ tạo ra một bài kiểm tra bảo mật chất lượng cao hơn, mà còn giúp việc hoàn thành dự án đúng hạn dễ dàng hơn
Mỗi bước của quy trình (xem Hình 1.1), nên được ký tắt trước khi dự án chuyển sang bước tiếp theo Mặc dù bản thân người kiểm thử có thể nhảy thẳng đến bước thực thi kiểm thử (nơi diễn ra vụ hack thực tế), nhưng điều quan trọng cần nhớ là mọi bước của quy trình đều quan trọng như nhau
Thực hiện từng bước theo quy trình sẽ đảm bảo rằng tất cả mọi người tham gia vào
dự án đều biết những gì đang diễn ra và nhận được kết quả mong đợi từ phần quan trọng nhất đối với mỗi bài kiểm thử chính là bản báo cáo cuối cùng
Thông qua chương này của luận văn chúng ta có thể hiểu khái quát về kiểm thử an ninh cũng như phần quan trọng nhất trong mỗi bài kiểm thử chính là báo cáo (Report) Chương sau sẽ trình bày tổng quan về Metasploit, Metasploit Framework, cấu trúc và các tính năng của chúng
Trang 17CHƯƠNG 2: TỔNG QUAN VỀ METASPLOIT 2.1 Khái niệm cơ bản
Metasploit hay còn có thể gọi là Metasploit Project là một dự án liên quan đến bảo mật máy tính, cung cấp những thông tin về các lỗ hổng bảo mật Đối tượng nhắm đến của Metasploit chính là những quá trình tấn công xâm nhập kiểm thử (Penetration Testing) và phát triển các hệ thống phát hiện xâm nhập (Intrusion Detection System – IDS)
Metasploit được tích hợp sẵn trong hệ điều hành Kali Linux Nó cũng có thể được tải xuống từ địa chỉ web của nhà phát triển: https://www.rapid7.com/products/metasploit/
2.2 Lịch sử Metasploit
Metasploit ra đời vào năm 2003 bởi tác giả H D Moore được viết trên nền tảng ngôn ngữ Perl sau này là Ruby, ban đầu nó được xem như là các công cụ dạng Portable dành cho mạng máy tính Mãi cho đến ngày 21 tháng 09 năm 2009, Metasploit đã được mua lại bởi Rapid7, một công ty bảo mật chuyên cung cấp những giải pháp về quản lý lỗ hổng Cũng giống như những sản phẩm thương mại “Canvas” của Immunity, “Core Impact” của Core Security Technologies Metsploit cũng được sử dụng để kiểm tra lỗ hổng bảo mật của những hệ thống máy tính hoặc xâm nhập vào những hệ thống từ xa
Metasploit có thể được dùng vào các hoạt động hợp pháp hoặc không hợp pháp, nó dần trở nên nổi tiếng và được biết đến như là một Framework cho việc phát triển những module khai thác, tấn công lỗ hổng bảo mật Mỗi một Module được phát triển từ bên thứ
ba (Third-Party) đều được đi kèm với những khuyến cáo để nhằm nêu bật được khả năng khai thác, mức độ rủi ro và cách khắc phục lỗ hổng chứ không chỉ tập trung vào khai thác
lỗ hổng Từ phiên bản Metasploit 3.0 được tích hợp thêm những công cụ giúp phát hiện các lỗi bảo mật trong phần mềm Vào tháng 8 năm 2011 thì phiên bản Metasploit 4.0 được phát hành và được sử dụng cho đến nay, đặc biệt là có hỗ trợ trên rất nhiều các nền tảng khác nhau như : Linux, Windows, Unix…vv
Trang 182.3 Các phiên bản của Metasploit
Hiện nay trải qua một thời gian dài sừa đổi và phát triển thì Metasploit có những phiên bản sau:
Metasploit Community Edition
Vào tháng 10 năm 2011 thì Rapid7 phát hành Metasploit Community Edition, một phiên bản miễn phí, có giao diện web cho người dùng Phiên bản này được phát triển dựa vào những tính năng của phiên bản có trả phí, chỉ có điều phiên bản này đã bị bỏ đi một
số tính năng “network discovery/ module browsing/manual exploitation” Phiên bản này phù hợp với các công ty nhỏ và sinh viên
Hình 2 1 Metasploit Community Edition
Trang 19Metasploit Pro
Tháng 10 năm 2010, Rapid7 đã phát hành Metasploit Pro, một phiên bản thương mại Có thể nói đây là một phiên bản mạnh mẽ nhất của Metasploit, nó bao gồm tất cả các tính năng của Metasploit Express và phát triển thêm các tính năng ưu việt khác như
“Quick Start Wizards/MetaModules” , xây dựng và quản lý những hoạt động tấn công sử dụng kỹ nghệ xã hội (Social Engineering), kiểm thử ứng dụng Web, tạo các Payload một cách tự động để tránh sự phát hiện của các phần mềm Anti-Virus, tích hợp
cả công cụ mạnh mẽ Nexpose cho việc quét lỗ hổng trên mạng, sử dụng kỹ thuật
“VPN pivoting” Và có một điểm khác biệt nữa là phiên bản Pro hỗ trợ cả chế độ dòng lệnh và giao diện người dùng Phiên bản này hiện tại thì có giá cao nhất so với các phiên bản khác, phù hợp cho những người thực hiện kiểm thử xâm nhập, những nhóm bảo mật
Hình 2 2 Metasploit Pro
Và cuối cùng là phiên bản Metsploit Framework Vì đây là phiên bản sẽ được sử
dụng chính ở luận văn này nên sẽ được trình bày chi tiết ở mục tiếp theo
Trang 202.4 Metasploit Framework
Hình 2 3 Metasploit Framework
2.4.1 Tổng quan về Metasploit Framework
Trái ngược hoàn toàn với các phiên bản khác của Metasploit thì Metasploit Framework chỉ có duy nhất một chế độ giao diện dòng lệnh, mọi thao tác đều thông qua dòng lệnh Có một điều đặc biệt thì đây là phiên bản mã nguồn mở và hoàn toàn miễn phí, rất phù hợp cho việc phát triển và nghiên cứu Nhược điểm của phiên bản này là hầu như chỉ có một số tính năng cơ bản, không được cập nhật như những phiên bản khác Chính vì vậy việc phát triển, tích hợp các tính năng mới vào Metasploit Framework là rất cần thiết, phù hợp với những nhu cầu, nhiệm vụ khi mà có giới hạn về mặt chi phí Tuy có nhiều hạn chế về những tính năng ưu việt thì phiên bản này có thể coi là công cụ không thể thiếu của những nhà nghiên cứu bảo mật chuyên nghiệp, những người kiểm thử xâm nhập
và được giới Hacker rất ưa chuộng
Nhà phát triển Rapid7 đã thống kê các tính năng được tích hợp sẵn trong phiên bản miễn phí Metasploit Framework, đồng thời so sánh với các tính năng có trong phiên bản cao cấp nhất Metasploit Pro (xem Hình 2.4-2.5-2.6)
Trang 21Tính năng tích hợp hỗ trợ giao tiếp với bên ngoài
Hình 2 4 Tính năng tích hợp hỗ trợ giao tiếp với bên ngoài
Tính năng tự động
Hình 2 5 Tính năng tự động
Trang 22Tính năng xâm nhập
Hình 2 6 Tính năng xâm nhập Qua bảng so sánh trên có thể thấy rằng các tính năng của Metasploit Framework hạn chế hơn rất nhiều so với các phiên bản khác nhƣ giao diện kém thân thiện, không có tính năng tự động mọi thứ đều thao tác thủ công, thậm chí còn thiếu đi tính năng tạo báo cáo sau mỗi lần kiểm thử
Trang 232.4.2 Cấu trúc của Metasploit Framework
Luận văn này sẽ sử dụng phiên bản Metasploit Framewok nên kể từ mục này trở đi Metasploit Framework sẽ đƣợc viết tắt là MSF
Hình 2 7 Cấu trúc của Metasploit Framework
Trang 24MSF có thể chia thành hai thành phần chính
MSF Filesystem
o Data: chứa các File có thể chỉnh sửa được
o Lib: chứa các thư viện cơ sở
o Modules: nơi chứa các Module thực sự của MSF
o Scripts: chứa Meterpreter và các Script khác
o Plugins: gồm các Plugin có thể tải vào trong quá trình chạy
o Tools: chứa một vài tiện ích dòng lệnh hữu dụng
MSF Libraries
o Rex : chứa các thư viện cơ bản cho mọi tác vụ của MSF
o Msf:Core: cung cấp một API cho việc phát triển mã khai thác
o Msf:Base: cung cấp một API thân thiện cho việc phát triển giao diện
2.4.3 Quy trình kiểm thử trên Metasploit Framework
Như chúng ta đã biết thì MSF được dùng cho việc nghiên cứu bảo mật, tấn công xâm nhập, đánh giá bảo mật MSF sử dụng hệ quản trị cở sở dữ liệu PostgreSQL để lưu trữ một số cấu hình, Payload phục vụ cho những nhiệm vụ khác nhau Quá trình kiểm thử trên MSF sẽ gồm các bước sau:
Bước 1: Phát hiện mục tiêu và thu thập thông tin (chủ yếu sử dụng Module Auxiliary/Scanner và các công cụ dò quét khác như Nmap được tích hợp)
Bước 2: Lựa chọn mục tiêu để tấn công
Bước 3: Tìm kiếm những lỗ hổng và mã khai thác liên quan đến mục tiêu (chủ yếu sử dụng các Module Auxiliary phù hợp với dịch vụ đã phát hiện ra)
Bước 4: Thực hiên tấn công xâm nhập thông qua các lỗ hổng đã được xác thực tồn tại Bước 5: Tiến hành triển khai các mã độc và duy trì kết nối sau khi xâm nhập thành công Bước 6: Dọn dẹp các chứng cứ
Tùy thuộc vào đặc thù của mỗi phiên kiểm thử mà quy trình thực hiện có thể được thay đổi Tuy nhiên trong quy trình kiểm thử tối thiểu cần phải có thêm bước tạo báo cáo, đây là bước có ý nghĩa rất lớn trong quản trị an toàn thông tin và cũng là tính năng chúng tôi muốn mở rộng thêm cho MSF
Chương sau của luận văn sẽ trình bày chi tiết về các bước cũng như cách để mở rộng thêm tính năng tạo báo cáo trên MSF
Trang 25CHƯƠNG 3: MỞ RỘNG TÍNH NĂNG TẠO BÁO CÁO CHO METASPLOIT
FRAMEWORK
Để tạo ra được một bản báo cáo đầy đủ và đáp ứng được các yêu cầu chuẩn mực quốc tế, chúng tôi sẽ tham khảo định dạng và phương pháp tạo báo cáo được đề xuất của nhà phát triển Rapid7 trên phiên bản cao cấp nhất được toàn thế giới công nhận là Metasploit Pro
https://metasploit.help.rapid7.com/docs/about-reports
Hình 3 1: Đề xuất báo cáo trên Metasploit Pro Dựa vào cấu trúc của MSF (Hình 2.7) và đề xuất của nhà phát triển Metasploit là Rapid7 (xem Hình 3.1) về việc mở rộng thêm tính năng cho công cụ này, tôi sẽ tạo một công cụ xuất báo cáo theo dạng Plugin mở rộng, sử dụng ngôn ngữ Ruby và tương tác thông qua giao diện CLI
Ngôn ngữ được sử dụng ở đây là Ruby 2.5.0 giống như phiên bản đang được sử dụng trên MSF phiên bản 5 Để phù hợp với hoạt động của Framework, công cụ báo cáo được xây dựng để tích hợp vào trong Framework thay vì phát triển một ứng dụng độc lập
Trang 26Công cụ sẽ được móc vào Framework và được sử dụng như một hệ thống rời, vừa có thể thực hiện được lời gọi các hàm từ Framework vừa có thể chạy độc lập các hàm mở rộng
Vì sử dụng trong Framework nên giao diện được sử dụng là giao diện dòng lệnh, giống cách mà các kiểm thử viên sử dụng Framework Điểm đặc biệt là có thể sử dụng để tạo báo cáo ngay trên các phiên bản Linux chỉ sử dụng giao diện dòng lệnh thay vì cần thực hiện thông qua một Web Server ở một máy chủ khác Công cụ tương tác với Framework thông qua giao diện Plugin thuộc lớp giao diện được dựng sẵn của Framework dành cho các công cụ tích hợp bên ngoài mà không thuộc phân loại công cụ tấn công như Auxiliary, Payload, Encoder hay Exploit, v.v
Tiếp theo sẽ là các bước chi tiết của quá trình phát triển và mở rộng tính năng cho MSF
3.1 Xác định chuẩn báo cáo trong Metasploit Pro
Để đảm bảo tính đầy đủ và hoàn thiện nhất tôi sẽ tạo báo cáo cho MSF theo tiêu chuẩn được mô tả trên Metasploit Pro, bao gồm hai chuẩn là chuẩn PCI và FISMA (xem Hình 3.2)
Hình 3 2: Chuẩn báo cáo trong Metasploit Pro
Trang 273.1.1 Chuẩn PCI
Chuẩn này được đưa ra bởi Hội đồng Tiêu chuẩn Bảo mật PCI (bao gồm các thành viên là các tổ chức thẻ quốc tế: Visa, MasterCard, American Express, Discover Financial Services, JCB International Mục đích của PCI DSS là bảo đảm an toàn cho dữ liệu thẻ khi được xử lý và lưu trữ tại các ngân hàng hoặc doanh nghiệp thanh toán điện tử Theo
đó, tất cả mọi tổ chức có liên quan đến việc truyền tải, xử lý và lưu trữ dữ liệu thẻ thanh toán (được gọi là “Cardholder Data”) đều phải tuân thủ theo tiêu chuẩn PCI DSS PCI DSS yêu cầu hệ thống các yêu cầu để đáp ứng các chuẩn mực về an ninh, chính sách, quy trình, cấu trúc mạng, hệ thống phần mềm và một số yếu tố khác Tập hợp các chuẩn mực này định hướng cho các ngân hàng hoặc doanh nghiệp về thanh toán đảm bảo an ninh cho
dữ liệu của thẻ thanh toán
Báo cáo dựa theo chuẩn này sẽ cho ta biết các nội dung thu thập được theo yêu cầu của chuẩn bảo mật dữ liệu công nghiệp cho thẻ thanh toán PCI-DSS 2.0, PCI bao gồm 12 yêu cầu cụ thể chia thành 6 nhóm chính:
Xây dựng và duy trì một mạng lưới an toàn
Bảo vệ dữ liệu chủ thẻ
Duy trì chương trình quản lý lỗ hổng
Thực hiện các biện pháp kiểm soát truy cập
Giám sát và kiểm tra mạng thường xuyên
Bảo trì chính sách an ninh thông tin
3.1.2 Chuẩn FISMA
Là một đạo luật về an ninh mạng được cơ quan liên bang Mỹ đề xuất nhằm thực hiện các quy trình và kiểm soát hệ thống, bảo vệ tính bảo mật của dữ liệu và hệ thống thông tin Luật này bảo vệ mạng lưới hạ tầng quốc gia, và kêu gọi tăng cường nỗ lực bảo
vệ an ninh thông tin cho tất cả các công dân, các cơ quan an ninh quốc gia và cơ quan thực thi pháp luật
FISMA dựa trên một bộ tiêu chuẩn và khuyến nghị từ Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ (NIST) NIST xây dựng các tiêu chuẩn và hướng dẫn trong văn bản SP800-53rev4, mà các cơ quan có thể sử dụng để xây dựng các chương trình tuân thủ theo luật FISMA Các hướng dẫn được phát triển bởi NIST xác định các yêu cầu tối thiểu
để quản lý, vận hành, kiểm soát hệ thống thông tin
Báo cáo loại này bao gồm các mục:
AC7- Kiểm soát truy cập
AT-2- Đào tạo nâng cao nhận thức
CM-7- Quản lý cài đặt
IA-2,IA-5,IA-7- Định danh và xác thực
Trang 28 RA-5- Xác định rủi ro
SI-2,SI-10- Đúng đắn của hệ thống và thông tin
3.2 Xác định các loại báo trên Metasploit Pro
Ngoài hai chuẩn chính trên tôi tiến hành tham khảo thêm các dạng báo cáo đƣợc tích hợp trong phiên bản Pro (xem Hình 3.3), đồng thời sàng lọc để lựa chọn các dạng báo cáo phù hợp với các thông tin có thể thu thập đƣợc trong phiên bản Framework
Hình 3 3: Các loại báo trên Metasploit Pro
Báo cáo kiểm định
Bao gồm các thông tin về :
o Phát hiện chính: Phần này trình bày các thông tin về máy chủ, thống kê hệ điều hành số lỗ hổng đã phát hiện và dữ liệu thông tin có thể bị tấn công thu thập thông qua các bảng và biểu đồ
o Phát hiện chi tiết: Phần này liệt kê chi tiết các thông tin của từng máy, các thông tin tài khoản, các dịch vụ và các lỗ hổng, các mã khai thác có thể dùng để xâm nhập thiết bị
Báo cáo chứng chỉ đăng nhập
Bao gồm các thông tin về các tài khoản thu thập đƣợc, có thể ở dạng văn bản rõ, bản mật khẩu băm, khoá xác thực SSH Báo cáo này bao gồm thông tin về:
o Các chứng chỉ
o Các tài khoản đăng nhập
o Thông tin về máy chủ
o Dịch vụ
Các báo cáo khác
o Báo cáo thu thập chứng cứ
o Báo cáo hoạt động
o Báo cáo thiết bị chứa lỗ hổng
o Báo cáo về dịch vụ
Trang 29Các báo cáo này đƣợc gộp chung lại vì có các điểm chung là sử dụng các nhóm thông tin giống nhau nhƣ các mã đã sử dụng, các máy chủ, các chứng chỉ, các dịch vụ và kết nối thu thập đƣợc
Sau khi xác định đƣợc các chuẩn cùng dạng báo cáo tôi tiếp tục thiết kế công cụ để đáp ứng đƣợc các chuẩn báo cáo trên
3.3 Chuẩn bị dữ liệu để kết xuất
Để thực hiện việc xây dựng một bản báo cáo có độ chi tiết tốt, chúng tôi cần có một bộ dữ liệu mẫu sử dụng cho báo cáo, phục vụ mục đích kiểm thử và đánh giá mức độ hoàn thiện của báo cáo xây dựng đƣợc Phần chuẩn bị dữ liệu này bao gồm hai phần, chuẩn bị dữ liệu tấn công kiểm thử làm nội dung cho báo cáo và chuẩn bị các bản báo cáo mẫu từ phiên bản Pro dựa trên dữ liệu tấn công kiểm thử đó để đối sánh mức độ hoàn thiện của báo cáo đƣợc tạo ra
3.3.1 Chuẩn bị dữ liệu tấn công kiểm thử
Để có bộ dữ liệu tấn công kiểm thử một cách hợp pháp, tôi sử dụng máy ảo Metasploitable 2 , là phiên bản máy ảo đƣợc cài sẵn các dịch vụ chứa nhiều lỗ hổng bảo mật, chuyên dụng cho việc tấn công kiểm thử bằng công cụ MSF
Về Metasploitable, phiên bản 2, là một sản phẩm khác đƣợc phát triển bởi Rapid7, phiên bản mới nhất là Metasploitable 3 nhƣng chƣa ổn định và đang trong giai đoạn phát triển, nên chúng tôi sử dụng bản Metasploitable 2 để có thể dễ dàng đạt đƣợc các kết quả tấn công nhiều nhất có thể Phiên bản có thể đƣợc tải về thông qua địa chỉ Web : https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
Sản phẩm chạy đƣợc trên các phần mềm ảo hoá phổ biến nhƣ Oracle Virtualbox, VMWare Player/Workstation, v.v
3.3.2 Tấn công kiểm thử
Để tấn công các lỗ hổng có trên Metasploitable 2, chúng tôi sử dụng công cụ Armitage, là một phiên bản của MSF đƣợc thiết kế với giao diện dễ sử dụng, tích hợp nhiều tính năng đƣợc lập trình sẵn giúp rút ngắn thời gian tấn công Armigate có sẵn trong bản phân phối Kali Linux
Trang 30Thực hiện quét phát hiện mục tiêu (xem Hình 3.4)
Hình 3 4 Quét mục tiêu trên Armitage
Trang 31Thực hiện tấn công bằng chế độ Hail Mary, tự động dò quét và tấn công tất cả các lỗ hổng
có thể (xem Hình 3.5)
Hình 3 5 Tấn công bằng chế độ Hail Mary