CHƢƠNG 2 : TỔNG QUAN VỀ METASPLOIT
3.4. Thiết kế công cụ tạo báo cáo
3.4.3. Thiết kế Logic
Các chức năng cần có khi thiết kế Logic
Kiểm tra kết nối Database
o Đọc kết nối Database.
o Cập nhật tình trạng Database.
Kiểm tra công cụ chạy đúng
o Chuẩn bị File mẫu.
o Xuất thử File.
o Đọc tình trạng File xuất ra.
Lấy gói dữ liệu
o Chuẩn bị chuỗi lệnh xuất Database.
o Gọi MSF xuất Database ra thƣ mục Workspace.
Tạo báo cáo
o Chuyển đổi các cấu hình đƣợc đƣa vào thành các biến, chuẩn bị các trƣờng cấu hình mặc định.
o Chuyển danh sách tên gói dữ liệu thành danh sách đƣờng dẫn tới gói dữ liệu.
o Đọc gói dữ liệu từ XML thành Hash - cấu trúc dữ liệu từ điển.
o Xuất báo cáo tuỳ theo định dạng đƣợc chọn.
_ Dựng file HTML theo loại báo cáo. _ Dọc file HTML và in ra file PDF.
Html
_ Dựng file HTML theo loại báo cáo.
Dùng gói dữ liệu
o Kiểm tra sự tồn tại của gói dữ liệu.
Bỏ gói dữ liệu
o Bỏ gói dữ liệu khỏi danh sách sử dụng.
o Lƣu trạng thái các gói dữ liệu đang đƣợc sử dụng ta File.
Kiểm tra tình trạng gói
o Lƣu trạng thái các gói dữ liệu đang đƣợc sử dụng ta File.
o Đọc ngày giờ chỉnh sửa cuối cùng của tất cả các gói dữ liệu trong Data Workspace.
o Kiểm tra tình trạng sử dụng gói và in ra.
Xoá gói dữ liệu
o Xoá gói trong Workspace.
Nhập gói dữ liệu
3.4.3.1. Mô tả dữ liệu
Sơ đồ chi tiết luồng dữ liệu của công cụ tạo báo cáo (xem Hình 3.11).
3.4.3.2. Mô tả cấu trúc thƣ mục
Do đƣợc viết dƣới thể thức Plugin, công cụ sẽ đƣợc đặt trong thƣ mục Plugin của Framework. Công cụ gồm 2 thành phần chính:
File Ruby report.rb chứa các định nghĩa Plugin và định nghĩa câu lệnh để gắn vào giao diện Framework (Hình 3.12).
Hình 3. 12 File ruby report.rb
Tiếp đến là thƣ mục Report_engine chứa toàn bộ các hàm thực hiện chức năng trong Framework (Hình 3.13).
Hình 3. 13 Thƣ mục Report_engine
Trong thƣ mục này chứa File điều khiển trung tâm để kết nối File Plugin report.rb
với các Module chức năng cụ thể trong các thƣ mục chuyên biệt Generator, Utils và Wrapper.
3.4.3.3. Mô tả cấu trúc module
Về mặt cấu trúc module, công cụ đƣợc thiết kế nhƣ sau (Hình 3.14).
Hình 3. 14 Cấu trúc module công cụ
Lớp cha Plugin: Report thừa kế từ Module Plugin, thực hiện nhiệm vụ kết nối với Framework và khởi động Plugin. Thông qua Plugin, cho phép công cụ thực hiện các lời gọi hàm trong Framework. Ngoài ra lớp Report còn định nghĩa các thông tin liên quan đến công cụ và hoạt động gỡ công cụ khi không dùng đến nữa.
o Lớp con Plugin::Report::ReportCommandDispatcher có nhiệm vụ định nghĩa các lệnh sẽ đƣợc thực thi trong giao diện Msfconsole. Các
lệnh này sau đó đƣợc gắn vào Console::CommandDispatcher nếu quá trình khởi động của Plugin thành công.
Module ReportEngine là giao diện chứa toàn bộ Module chức năng và điều phối các công việc của các Module độc lập tƣơng tác khác.
o Module con ReportEngine::Wrapper có nhiệm vụ gói dữ liệu.
Lớp ReportEngine::Wrapper::DBexport phụ trách chức năng trộn câu lệnh xuất Database của Msfconsole rồi gọi Msfconsole để xuất Workspace đƣợc yêu cầu trở thành một gói dữ liệu XML.
Lớp ReportEngine::Wrapper::Mapper thực hiện trộn các gói dữ liệu XML với nhau và gắn vào trong cấu trúc Hash để Module ReportEngine::Generator sử dụng tạo nội dung báo cáo.
Lớp ReportEngine::Wrapper::Validate thực hiện kiểm tra gói dữ liệu có tồn tại và đọc thông số ngày giờ cập nhật cuối cùng của gói dữ liệu.
o Module con ReportEngine::Utils chứa các chức năng mở rộng phục vụ cho hoạt động tạo báo cáo <hiện chƣa dùng>.
o Module con ReportEngine::Generator có nhiệm vụ gọi các Module báo cáo xuất ra các File với định đạng đƣợc ngƣời dùng cấu hình với nội dung đƣợc đƣa vào từ ReportEngine:Wrapper::Mapper. Các hành động bao gồm điều phối xuất PDF/HTML, in PDF và chạy kiểm tra công cụ xuất File.
Module PDFexport gọi sử dụng Gem ngoài Pdfkit, nhận lệnh điều phối quá trình in file PDF.
o Lớp con PDFexport::PDFexporter thực hiện cấu hình công cụ in PDF là Wkhtmltopdf, định nghĩa File kiểm tra mẫu để kiểm tra hệ thống xuất File và hai phƣơng thức xuất File báo cáo hoặc xuất File kiểm tra.
Module Cook giao diện trung tâm của các Module đọc thông tin gói dữ liệu theo dạng mẫu hàm.
o Module con Cook::Host chứa các lệnh phân rã mảng máy chủ để gọi các hàm đọc dữ liệu sâu hơn và các hàm đọc thông tin của máy chủ đó.
o Module con Cook::Service chứa các mẫu hàm đọc dịch vụ trong một máy chủ đƣợc truyền vào và trộn vào mẫu HTML thống kê dịch vụ trong bảng dịch vụ để hiển thị trên báo cáo. Thực hiện tính toán kiểm định các tiêu chuẩn cho báo cáo tuân thủ PCI.
o Module con Cook::Vuln chứa các mẫu hàm đọc danh sách lỗ hổng trong một máy chủ đƣợc truyền vào và trộn vào mẫu HTML thống kê lỗ hổng trong bảng tấn công để hiển thị trên báo cáo.
o Module con Cook::Exploit chứa hàm đếm danh sách Exploit để phục vụ cho việc thống kê lỗ hổng.
3.4.4. Thiết kế vật lý
Về thiết kế vật lý, do công cụ đƣợc gắn vào Framework thông qua giao diện Plugin (xem Hình 3.15) nên các thành phần vật lý của công cụ hoàn toàn phụ thuộc vào các thành phần vật lý của Framework. Công cụ chỉ trao đổi thông tin với các gói dữ liệu là các File XML từ bên ngoài thay vì đọc trực tiếp từ Database hay lƣu dữ liệu vào một Database riêng. Làm nhƣ vậy để công cụ tạo báo cáo có khả năng hoạt động linh hoạt và kết nối vào cấu trúc dữ liệu Hash dễ dàng cho việc truy xuất thông tin và tính toán.
Hình 3. 15 Thiết kế vật lý
Qua hai quá trình thiết kế Logic và vật lý cho công cụ tạo báo cáo, bƣớc tiếp theo sẽ là viết chƣơng trình và tiến hành chạy thử nghiệm công cụ.