Ứng dụng sẽ tự động định dạng kết quả trả về từ phần mềm quét cho các trường hợp cùng một lỗ hổng nhưng được phát hiện bởi nhiều phần mềm quét khác nhau hoặc cùng một lỗ hổng nhưng lại hiển thị bằng nhiều tên gọi khác nhau theo quy tắc của từng phần mềm quét. Khi đó, chúng sẽ được phân loại, gom nhóm và tích hợp về một quy chuẩn chung nhằm tăng tính chính xác khi thực hiện các lệnh yêu cầu từ phía người dùng.
4.4.4 Chức năng mơ tả lỗ hổng và đưa ra lời khun
Ngồi việc tìm kiếm các lỗ hổng website dựa vào thơng tin yêu cầu từ phía người dùng và kết quả trả về từ các phần mềm quét, ứng dụng cịn trả về các thơng tin liên quan đến các mô tả và đưa ra lời khuyên, hướng giải quyết để khắc phục theo từng loại lỗ hổng đã tìm được.
4.4.5 Phương pháp
Dựa vào các phần mềm chuyên quét lỗ hổng bảo mật website, công cụ này tập hợp tất cả những khả năng, ưu điểm của các phần mềm đó lại để tạo thành một cơng cụ mới, tổng hợp từ các ứng dụng trên.
Về bản chất, công cụ này là một nơi để các ứng dụng đó tích hợp vào, lúc này chúng đóng vai trị là các plugin. Từ đó người dùng có thể sử dụng được nhiều ứng dụng mà chỉ cần thao tác trên một ứng dụng nền và giao diện công cụ duy nhất. Điều này là rất cần thiết, bởi vì mỗi ứng dụng chỉ dựa vào một số tiêu chí nào đó để qt các lỗ hổng, khi chúng ta dùng nhiều ứng dụng cùng lúc sẽ có cái nhìn tồn diện hơn về các loại lỗ hổng bảo mật, làm cho kết quả quét chính xác và đầy đủ hơn, bổ trợ các nhược điểm của nhau giữa các plugin.
Hình 4.6 Mơ hình và phương pháp hoạt động của cơng cụ.
Cơng cụ có hai khối chức năng chính là trình quản lý các ứng dụng qt lỗ hổng bảo mật (PLUGINS) và khối thứ hai là trình quản lý các file chứa dữ liệu về các loại lỗ hổng và các kết quả sau khi quét (XML FILES MANAGER).
Trình quản lý các plugin là nơi lưu trữ tồn bộ các thơng tin về plugin, nếu muốn tích hợp thêm một ứng dụng vào hệ thống ta chỉ đơn gian khai báo các thuộc tính của nó tại khối PLUGINS này.
Khối quản lý các file dưới định dạng XML (định dạng theo các thẻ) được chia ra hai phần là các file chứa thông tin về lỗ hổng (khối VULNERABILITIES
MANAGER) và các file kết quả sau khi quét (khối RESULT).
Sau khi mỗi plugin quét sẽ tạo ra một file kết quả theo định dạng của riêng nó. Vì vậy, cần phải có một cách để trích xuất kết quả này ra thành một định dạng chung dành cho toàn bộ hệ thống (khối CONVERT RESULT). Tuy nhiên, nhiều khả năng hai plugin có thể thơng báo cùng một lỗ hổng bảo mật, cho nên kết quả sau khi trích xuất sẽ được tổng hợp lại sao cho mỗi lỗ hổng chỉ được thông báo một lần (khối MERGE).
CHƯƠNG 5 HIỆN THỰC
5.1 Nền tảng và giao diện hệ thống5.1.1 Nền tảng 5.1.1 Nền tảng
Từ những kiến thức đã học và từ kết quả nghiên cứu lý thuyết, tác giả đã lựa chọn xây dựng cơng cụ dựa trên ngơn ngữ lập trình C sharp (C#) để làm cơ sở dị tìm và đánh giá an tồn website. Ngơn ngữ này được sử dụng trên mơi trường mã nguồn đóng, đảm bảo tính bảo mật và an tồn dữ liệu, phù hợp cho việc dị qt và tìm kiếm lỗ hổng giữa các nền tảng và câu lệnh khác nhau giữa các plugin.
C# là một ngơn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000, trong đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth. Đồng thời, nó cũng là ngơn ngữ lập trình hiện đại, hướng đối tượng và được xây dựng trên nền tảng của hai ngôn ngữ là C++ và Java. Cho phép chúng ta sử dụng các ngôn ngữ high-level đa dạng trên các nền tảng và cấu trúc máy tính khác nhau. Với sự hỗ trợ mạnh mẽ của .NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF (Windows Presentation Foundation),… trở nên rất dễ dàng.
Tận dụng các dữ liệu, thông tin và phương pháp thực hiện có sẵn trên các phần mềm quét, một trong số các nhiệm vụ của cơng cụ là tích hợp và kế thừa các vấn đề này để sử dụng và thu về kết quả. Với phương pháp này, cơng cụ sẽ khơng bao giờ lỗi thời vì có sự cập nhật về tính năng và hiệu suất một cách thường xuyên và liên tục. Nếu phần mềm quét nào đó trong danh sách các plugin có vấn đề nguy hại hoặc đã ngưng hoạt động, ngưng phát triển,… thì người quản trị hồn tồn có thể thay thế bất kỳ các phần mềm nào nếu muốn.
Các lỗ hổng bảo mật này thường xuyên được tham chiếu, quy chuẩn dựa trên bộ tiêu chí đánh giá theo chuẩn OWASP.
5.1.2 Giao diện
Giao diện sử dụng dành cho người dùng được thiết kế tối giản, đầy đủ chức năng hoạt động, dễ hình dung chức năng và thân thiện với người dùng, giao diện màn hình chính như hình dưới.
Giao diện thể hiện các thơng tin đầu vào và kết quả hiển thị đầu ra cần thiết. Bố cục và thông tin thể hiện một cách rõ ràng, dễ hiểu.
Hình 5.1 Giao diện màn hình chính .
Chú thích
- URL cho phép người dùng nhập vào giá trị là đường dẫn URL cần quét. - ZAP, GoLismero, Arachni, Wapiti, SQLmap, Tất cả cho phép người dùng lựa chọn một hoặc nhiều phần mềm sẽ thực hiện chạy quét, chọn vào tên những phần mềm nào thì phần mềm đó sẽ thực thi.
- Thư mục nhấn vào để xem thư mục chứa các file dữ liệu đầu ra sau khi các phần mềm thực hiện chạy quét (Hình 5.2).
- Quét nhấn vào để công cụ bắt đầu nhận yêu cầu quét lỗ hổng bảo mật của URL và tên phần mềm quét dựa vào thông tin mà người dùng vừa cung cấp.
- Xem kết quả nhấn vào để tải kết quả báo cáo cuối cùng ra giao diện, mặc định sẽ là vơ hiệu hóa, nút chỉ sử dụng được sau khi các phần mềm chạy quét xong.
- Kết quả nơi hiển thị kết quả cuối cùng, kết quả sẽ hiển được hiển thị sau khi nhấn nút “Xem kết quả” (Hình 5.3).
Hình 5.3 Hiển thị kết quả cuối cùng sau khi nhấn nút “Xem kết quả” .
Sau khi đã hiển thị kết quả cuối cùng trên giao diện, người dùng có nhu cầu cần xem đầy đủ thơng tin chi tiết thì có thể nhấn vào bất kỳ thơng tin nào trên bảng kết quả (Hình 5.4).
Hình 5.4 Hiển thị đầy đủ thông tin chi tiết sau khi nhấn vào bảng kết quả .
5.2 Chức năng
5.2.1 Chức năng truyền tham số và quét lỗ hổng
Đây là chức năng chính của hệ thống, người dùng có thể sử dụng hệ thống để quét lỗi mật tồn tại trong một URL bất kỳ dựa vào các dịng lệnh đã được lập trình trên cơng cụ.
Các lệnh cơ bản để gọi hàm yêu cầu cho từng phần mềm quét sau được lồng vào nút lệnh “Quét” trên giao diện.
Hàm GetWapiti có vai trị truyền tham số và gọi phần mềm Wapiti hoạt động theo quy định riêng của phần mềm, mỗi phần mềm quét sẽ nhận các tham số đầu vào và quy chuẩn đầu ra khác nhau. Trong các hàm này, công cụ cũng đã thiết lập định dạng đầu ra để chứa các dữ liệu của kết quả.
Tùy vào mức độ phức tạp của bản thân URL và những plugin được chọn mà thời gian quét nhanh hay chậm cũng sẽ khác nhau.
Tương tự với hàm GetGoLismero, công cụ sẽ truyền tham số và gọi phần mềm GoLismero thực hiện theo yêu cầu và cho ra kết quả theo định dạng chung.
Trong các hàm này, đã bao gồm các chức năng có liên quan khác như không cho hiển thị cửa sổ phần mềm khi đang chạy quét, hiển thị biểu tượng chờ,…
5.2.2 Tổng hợp kết quả quét từ các phần mềm
Mỗi phần mềm quét sẽ cho ra 01 tập tin kết quả tương ứng, các hàm ở trên đã làm những công việc như đồng bộ tên, đồng bộ định dạng, đồng bộ nơi xuất kết quả. Nhưng chỉ dừng lại ở bước mỗi tập tin là kết quả của 01 phần mềm riêng biệt.
Để có được kết quả cuối cùng hiển thị trên giao diện cho người dùng, thì cơng cụ cần phải có chức năng tổng hợp thành 01 tập tin kết quả chung từ các tập tin kết quả riêng lẻ của các phần mềm.
Hàm tổng hợp kết quả được hình thành dựa theo cấu trúc bảng và được xây dựng tại mã nguồn (không cần dùng đến hệ cơ sở dữ liệu).
Hàm tạo bảng dữ liệu dùng để chuẩn bị chứa các dữ liệu từ file kết quả quét từ các phần mềm riêng lẻ. Trong bảng bao gồm các cột Tên lỗ hổng, Mô tả, Hướng giải quyết, Phần mềm quét, Địa chỉ quét và Ngày quét.
Tiếp đến là hàm tự động thêm dữ liệu vào bảng (chuyển các thông tin liên quan, sắp xếp mỗi lỗ hổng là 01 dòng, thêm thơng tin dịng này vào các cột vừa tạo).
5.2.3 Hiển thị, thông báo kết quả kiểm tra
Sau khi đã thực hiện các vấn đề trên và tổng hợp về được thành file tổng hợp chung với tất cả các dữ liệu kết quả từ các phần mềm quét khác nhau. Việc cần làm còn lại là hiển thị các dữ liệu, thông số từ file tổng hợp chung này ra giao diện kết quả cho người dùng.
Các dòng lệnh gọi các hàm khác có liên quan để có thể hoạt động theo đúng chức năng và chức năng mở tập tin chứa các file kết quả.
Mỗi dịng là thơng tin chi tiết theo tên của 01 lỗ hổng, khi nhấp vào từng dịng thì thơng tin chi tiết về lỗ hổng đó sẽ được hiển thị đầy đủ vào một giao diện mới.
Các thông tin kết quả cuối cùng bao gồm thêm những thông tin phụ kèm theo như mô tả chi tiết về lỗ hổng, hướng giải quyết và cách khác phục các lỗ hổng đó.
Mỗi lỗ hổng sẽ được trình bày chi tiết về tên gọi, mức độ nguy hại, môi trường tồn tại lỗ hổng, cũng như các ví dụ về lỗ hổng mà hệ thống thu thập được, cung cấp cho người dùng một cái nhìn đầy đủ và tổng quát về các lỗ hổng bảo mật.
5.2.4 Quản lý plugin
Để chống lại những mối nguy hại xuất hiện từng ngày, việc cập nhật các lỗ hổng bảo mật là việc làm hết sức cần thiết. Chức năng này cho phép người quản trị hoặc các nhà phát triển, thừa kế cơng cụ có thể dễ dàng thêm, xóa, chỉnh sửa một lỗ hổng/trình qt nào đó để đảm bảo hệ thống luôn được cập nhật các phiên bản mới nhất.
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Đánh giá, kết luận
Công việc đã làm
- Tìm hiểu được OWASP và các kiểu tấn công vào ứng dụng web. OWASP là một chuẩn đánh giá chất lượng mang tính tồn cầu và được cộng đồng cùng tham gia phát triển. Khi mà các mối nguy hại trên môi trường web ngày càng phát triển với tốc độ chóng mặt thì những cơ sở lý thuyết vững chắc như OWASP là một tiền đề thiết yếu và tối quan trọng. Từ đó, các cơng cụ cũng dễ dàng được phát triển và kiểm tra hơn.
- Xây dựng được một cơng cụ tích hợp các phần mềm qt lỗ hổng website. Khả năng tích hợp cao là một lợi thế, hệ thống không phụ thuộc vào lõi bên trong, cách thức sử dụng từ phía người dùng được triển khai khá thân thiện và không cần quan tâm đến phần mềm quét được chạy trên trên nền tảng nào, việc mở rộng tính năng và nâng cấp sẽ vơ cùng dễ dàng, đồng thời chi phí nâng cấp và sửa chữa cũng sẽ bỏ ra ít hơn. Hơn nữa, một khi mơi trường ảo hóa có hỗ trợ, thì vấn đề hệ điều hành sẽ khơng cịn quan trọng nữa, và khả năng triển khai hệ thống chạy đa nền tảng là hồn tồn có thể.
- Tìm hiểu được những cơng cụ và tích hợp thêm công cụ vào hệ thống. Bởi vấn đề về nền tảng và việc tích hợp các cơng cụ khác nhau vào một khối duy nhất không phải là một công việc dễ dàng, hơn nữa còn tùy thuộc vào nhiều yếu tố khác như giao diện dòng lệnh hay giao diện người dùng, những yêu cầu về môi trường để chạy được ứng dụng, định dạng kết quả và hệ thống cơ sở dữ liệu của các công cụ cũng khơng hồn tồn giống nhau. Đề tài đã tích hợp thành cơng ứng dụng phát hiện lỗ hổng website vào thành một plugin của hệ thống lõi, giúp hệ thống phát hiện được nhiều mối nguy hại hơn.
Hạn chế
- Một vài plugin chưa có chức năng hỗ trợ gọi từ dịng lệnh thì cơng cụ chưa thể tích hợp vào được, bởi lẽ có rất nhiều plugin được viết hoàn toàn với giao diện
người dùng, việc chuyển đổi lại giúp hỗ trợ gọi từ giao diện dòng lệnh sẽ mất nhiều thời gian và chi phí khơng đáng có.
- Cơng cụ chưa được đưa lên hệ thống web, vẫn còn phải tốn một chút thời gian để thực hiện cài đặt trên thiết bị của người dùng.
6.2 Hướng phát triển
- Nâng cấp, tích hợp hệ thống trên nền tảng website, mở rộng mơ hình sử dụng và đưa vào sử dụng thực tế. Tăng tính tiện ích cho người dùng, giảm tải thời gian cài đặt, dễ dàng sử dụng ở bất kỳ đâu.
- Cải thiện giao diện, thân thiện hơn với người dùng
- Tìm hiểu, nghiên cứu thêm các plugin mới, phù hợp và tăng tính hiệu quả hơn. Đây sẽ là một quá trình địi hỏi nhiều thời gian và cơng sức.
- Phân loại mức độ nguy hiểm của từng loại lỗ hổng sau khi quét dựa trên bộ tiêu chí đánh giá cơ sở của OWASP, điều này sẽ giúp ích cho việc báo cáo chi tiết một cách rõ ràng và trực quan hơn.
[2] SQLmap, http //sqlmap.org/, 2018.
[3] Arachni, web application security scanner framework,
https //www.arachni-scanner.com/ , 2018.
[4] Tìm hiểu Web Application,
http //itsecuritykma.blogspot.com/2014/01/tim-hieu-web-application-1.html , 2018.
[5] OWASP, “The Ten Most Critical Web Application Security Risks”, OWASP Top 10, 2019.
[6] Shyam Oza, SQL Injection Attacks (SQLi) – Web-based Application Security, Cloud and Data Security, https //spanning.com/blog/sql-injection-attacks-
web-based-application-security , 2019.
[7] Nikiforakis, Nick, et al SessionShield Lightweight protection against session hijacking. Engineering Secure Software and Systems. Springer Berlin Heidelberg (2017).
[8] Chandan Kumar, How to Implement Security HTTP Headers to Prevent Vulnerabilities, https //geekflare.com/http-header-implementation/, 2019.