4.3.1 Kiến trúc
Kiến trúc tổng quan của công cụ được chia làm hai tầng chính - Tầng giao diện, có nhiệm vụ
+ Nhận thông tin URL cần quét Có chức năng ghi nhận giá trị đầu vào là địa chỉ URL của website mà người dùng nhập vào, nhằm mục đích quét tất cả các page của website đó.
+ Nhận thông tin về phần mềm Có chức năng ghi nhận giá trị là danh sách những phần mềm sẽ thực hiện quét địa chỉ URL đã nhận ở trên, người dùng sẽ có quyền chọn vào bất kỳ phần mềm nào có trong danh sách.
+ Nút thực thi Có nhiệm vụ thực hiện các lệnh, bao gồm quét lỗ hổng, xem kết quả và hiển thị kết quả trong thư mục gốc.
+ Hiển thị kết quả kiểm tra Sau khi các phần mềm đã thực hiện lệnh quét URL dựa theo giá trị đầu vào đã nhập phía trên, công cụ sẽ cho ra kết quả xử lý cuối cùng đã được tổng hợp từ các kết quả riêng lẻ của từng phần mềm quét và hiển thị theo dạng danh sách ra màn hình.
+ Gọi các phần mềm quét theo danh sách chọn của người dùng từ giao diện. + Truyền lệnh quét kèm theo các yêu cầu và tham số dữ liệu đầu vào vào các phần mềm quét.
+ Ẩn các giao diện, cửa sổ phát sinh của các phần mềm đang thực thi (gọi phần mềm chạy nhưng không cho các phần mềm hiển thị).
+ Nhận về các kết quả quét với các tên, định dạng và thư mục chứa khác nhau tùy vào phần mềm quét. Tổng hợp và hiệu chỉnh chúng về cùng một định dạng, thư mục và quy tắc chung.
+ Phân loại các lỗ hổng đã tìm được, tổng hợp và điều chỉnh chúng theo bộ tiêu chí đánh giá an toàn website OWASP.
+ Các thông báo hiển thị, cảnh báo cho người dùng khi cần thiết, ví dụ như các trường hợp chưa nhập địa chỉ URL cần quét, chưa chọn phần mềm quét, thể hiện dấu hiệu phần mềm đang chạy ngầm, hiển thị đầy đủ thông tin chi tiết của lỗ hổng khi người dùng nhấp vào bảng kết quả.
4.3.2 Mô hình chức năng
Công cụ đóng vai trò trung gian giúp tiếp nhận, xử lý và trả về kết quả từ phần mềm quét một cách đồng bộ.
Mỗi một phần mềm quét được chạy với môi trường, ngôn ngữ và dữ liệu, định dạng đầu vào/ra khác nhau. Vì thế, cần phải có một công cụ trung gian để có thể xử lý các vấn đề kỹ thuật bên trong với các thuật ngữ và yêu cầu phức tạp theo từng phần mềm quét, đồng thời có thể dễ dàng tiếp nhận và hiển thị thông tin ra bên ngoài với giao diện thân thiện với người dùng.
Hình 4.1 Kiến trúc phân tầng và mô hình chức năng hoạt động.
Dựa vào các ưu điểm của từng phần mềm quét, khi tập hợp chúng lại sẽ cho ra kết quả cuối cùng một cách toàn diện nhất. Nói theo một cách khác, ưu điểm của phần mềm này có thể sẽ là nhược điểm của phần mềm khác, sẽ trả về những cảnh báo mà khi chúng ta thực hiện quét thông thường sẽ chỉ cho ra một vài kết quả đơn thuần và có thể bị thiếu sót mà phần mềm quét đó không phát hiện ra được. Kết quả cuối cùng sẽ được tổng hợp từ danh sách các phần mềm quét và phân nhóm theo các loại lỗ hổng, hợp nhất chúng lại khi phát hiện ra kết quả trả về trùng nhau.
Khi thực hiện quét lỗ hổng website và trả về kết quả, công cụ hoạt động theo dạng gọi câu lệnh thực thi đến các phần mềm quét và trả về kết quả nhận được sau khi đã phân tích, tổng hợp. Vì vậy, cơ sở dữ liệu cũng như các phương thức thực hiện đều hoạt động dựa trên nền tảng của phần mềm quét bên thứ ba nên việc cập nhật các phiên bản có thể phát hiện các các lỗ hổng thường xuyên được cập nhật, mã nguồn và chức năng của phần mềm quét cũng được các nhà phát triển hoặc cộng đồng xây dựng hoàn thiện và cập nhật theo thời gian thực.
4.4 Thiết kế chức năng
4.4.1 Chức năng quản lý plugin
Admin có quyền quản lý các plugin có trong hệ thống bằng việc thay đổi chế độ quét mặc định hoặc điều chỉnh trong chương trình liên quan đến plugin đó, đồng thời có quyền hoạt động hoặc vô hiệu hóa plugin.
4.4.2 Chức năng đánh giá website
Hình 4.3 Mô tả chức năng đánh giá an toàn website.
Để thực hiện quét một đối tượng nào đó, người dùng cần phải thực hiện cung cấp các thông tin yêu cầu trên giao diện, bao gồm nhập đối tượng URL cần quét, chọn các plugin muốn dùng để thực hiện quét và yêu cầu thực thi bằng các nút lệnh.
Sau khi người dùng đã cung cấp các thông tin và thực hiện yêu cầu bằng nút lệnh trên giao diện, đầu tiên ứng dụng sẽ thực hiện kiểm tra các thông tin này.
Nếu thông tin không hợp lệ, ứng dụng sẽ hiển thị thông báo cho người dùng nhận biết để thực hiện điều chỉnh (ví dụ nhập URL sai định dạng hoặc chưa chọn plugin) và sẽ không tiếp tục thực hiện yêu cầu cho các phần mềm quét.
Trường hợp thông tin mà người dùng nhập vào là hợp lệ thì ứng dụng sẽ bắt đầu gửi những thông tin này đến các phần mềm quét để thực hiện xử lý các bước tiếp theo và trả về kết quả cuối cùng trở về giao diện cho người dùng.
4.4.3 Chức năng định dạng kết quả
Hình 4.4 Mô tả chức năng định dạng kết quả.
Ứ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 khuyên
Ngoà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 đó để quét 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 toà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 quét 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ữ toà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 toà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 toàn dữ liệu, phù hợp cho việc dò quét 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ị hoàn toà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.