Chương 1. Tổng quan về phát hiện tấn công web giới thiệu khái quát về web và dịch vụ web, các lỗ hổng bảo mật web theo OWASP, các dạng tấn công web thường gặp, một số giải pháp và công cụ phát hiện tấn công web. Tiếp theo, chương này giới thiệu khái quát về học máy, học sâu và mô tả một số giải thuật học máy có giám sát và học sâu sử dụng trong các mô hình phát hiện tấn công web được đề xuất trong chương 2 và chương 3. Phần cuối của chương chỉ ra hai vấn đề sẽ được giải quyết trong luận án.
Phát hiện tấn công web dựa trên học máy sử dụng web log giới thiệu khái quát về web log, một số đề xuất phát hiện tấn công web sử dụng học máy, đánh giá ưu nhược điểm của các đề xuất. Phần cuối của chương này thực hiện việc xây dựng, cài đặt, thử nghiệm và đánh giá mô hình phát hiện tấn công web thường gặp dựa trên học máy sử dụng web log. Phát hiện tấn công thay đổi giao diện trang web giới thiệu khái quát về tấn công thay đổi giao diện, các phương pháp phát hiện tấn công thay đổi giao diện, so sánh các phương pháp phát hiện thay đổi giao diện sử dụng đặc trưng ảnh chụp màn hình trang web. Phần cuối của chương thực hiện việc xây dựng, cài đặt, thử nghiệm và đánh giá mô hình phát hiện tấn công thay đổi giao diện trang web dựa trên học sâu sử dụng kết hợp đặc trưng ảnh chụp màn hình và đặc trưng nội dung văn bản của trang web.
Cuối cùng là phần Kết luận của luận án. TỔNG QUAN VỀ PHÁT HIỆN TẤN CÔNG WEB Chương này trình bày khái quát về web và dịch vụ web, các dạng tấn công web thường gặp, một số giải pháp và kỹ thuật phát hiện và tổng quan về một số giải thuật học máy và học sâu cùng các độ đo sử dụng cho các đề xuất trong chương 2 và chương 3 của luận án. Phần tiếp theo trong chương này là trình bày các hướng nghiên cứu, ưu và nhược điểm từ đó đưu ra các vấn đề cần giải quyết trong luận án. Khái quát về web và dịch vụ web 1.
Các định nghĩa Dịch vụ web (Web service): Tổ chức World Wide Web Consortium (W3C) định nghĩa Dịch vụ web là hệ thống phần mềm cho phép các máy khác nhau tương tác với nhau thông qua mạng. Các dịch vụ web đạt được nhiệm vụ này với sự trợ giúp của các tiêu chuẩn mở, bao gồm XML, SOAP, WSDL và UDDI [29]. Tuy nhiên, theo một nghĩa rộng hơn Dịch vụ web là hệ thống dịch vụ mạng dựa trên giao thức HTTP, cung cấp nội dung trên nền web. Ứng dụng web (Web application) là một phần mềm ứng dụng chạy trên nền web [30].
Ứng dụng web cũng được vận hành dựa trên giao thức HTTP theo mô hình khách chủ (Client/Sever). Một ứng dụng web có thể gồm các thành phần: Máy khách web/trình duyệt web (Web client/web browser), Máy chủ web (HTTP/web server), URL/URI (Uniform Resource Identifier), Web session và cookie, Bộ diễn dịch và thực hiện các server script, Các server script (CGI – Common Gateway Interface), Máy chủ cơ sở dữ liệu và Hạ tầng mạng TCP/IP kết nối giữa máy khách và máy chủ web [31]. Website là tập hợp của các trang web được cài đặt và chạy (host) trên máy chủ web. Như vậy, website là một phần của ứng dụng web.
Trang web (Web page) là một phần của một website cung cấp một đầu mục nội dung hay một tính năng cụ thể của website. Ngôn ngữ thường dùng để tạo các trang web là HTML. Trong nội dung luận án này, nghiên cứu sinh tập trung nghiên cứu các dạng tấn công cơ bản lên các ứng dụng web và các website. Giao thức HTTP Giao thức truyền siêu văn bản (HTTP – Hyper-Text Transfer Protocol) là giao thức thuộc tầng ứng dụng thuộc bộ giao thức TCP/IP được sử dụng cho truyền siêu văn bản (Hyper-Text).
HTTP là giao thức nền tảng trong vận hành dịch vụ web và các ứng dụng web. Ngoài HTTP, HTTPS (Secure HTTP) còn được sử dụng cho các 8 ứng dụng web có yêu cầu đảm bảo an toàn thông tin truyền giữa máy khách (Client) và máy chủ (Server). Cổng dịch vụ chuẩn của HTTP và HTTPS tương ứng là 80 và 443. Giao thức HTTP có 3 đặc điểm cơ bản, bao gồm không hướng kết nối, độc lập với thông tin truyền và không trạng thái.
Giao thức HTTP hỗ trợ một số phương thức (method) để máy khách có thể gửi yêu cầu lên máy chủ. Các phương thức bao gồm: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS và TRACE. Phương thức GET được sử dụng để truy vấn thông tin từ máy chủ sử dụng một địa chỉ web. Các yêu cầu sử dụng phương thức GET chỉ nên truy vấn dữ liệu và không nên có ảnh hưởng (thay đổi) đến dữ liệu.
Phương thức HEAD tương tự như phương thức GET, nhưng chỉ có dòng trạng thái và phần tiêu đề được chuyển từ máy chủ đến máy khách. Phương thức POST được sử dụng để gửi dữ liệu đến máy chủ, chẳng hạn thông tin khách hàng, file tải lên,… được gửi lên máy chủ sử dụng HTML form. Phương thức PUT được sử dụng để thay thế tất cả các biểu diễn hiện tại của tài nguyên đích bằng nội dung tải lên. Phương thức DELETE được sử dụng để xóa tất cả các biểu diễn hiện tại của tài nguyên đích cho bởi một địa chỉ web.
Phương thức CONNECT được sử dụng để thiết lập đường hầm tới máy chủ được xác định bởi một địa chỉ web nhất định. Phương thức OPTIONS được sử dụng để mô tả các tùy chọn truyền thông cho tài nguyên đích. Phương thức TRACE được sử dụng để thực hiện một phép kiểm tra vòng lặp lại (loop-back) theo đường dẫn đến tài nguyên đích. Kiến trúc ứng dụng web và các thành phần Hình 1.
1 biểu diễn kiến trúc chuẩn của hệ thống ứng dụng web (hay ngắn gọn là ứng dụng web), trong đó mô tả các thành phần của một ứng dụng web và giao tiếp giữa chúng. Theo đó, các thành phần của một ứng dụng web gồm Web Browser (Trình duyệt web), Web Server (Máy chủ web), Application Server (Máy chủ ứng dụng), Data (Kho chứa dữ liệu – thường là cơ sở dữ liệu), File System (Hệ thống file trên máy chủ) và External System (Các hệ thống bên ngoài). Web Browser tạo và gửi yêu cầu về trang web (Page Request) đến Web Server. Nếu đó là yêu cầu trang web tĩnh, Web Server sẽ đọc nội dung trang từ File System và gửi trang web cho Web Browser.
Nếu đó là yêu cầu trang web động, Web Server sẽ chuyển yêu cầu cho Application 9 Server xử lý. Application Server sẽ dịch và thực hiện mã script trong trang web để tạo kết quả. Application Server có thể cần truy nhập Data, File System, hoặc External System để xử lý yêu cầu. Kết quả xử lý yêu cầu được chuyển lại cho Web Server để tạo trang web và gửi cho Web Browser.
Kiến trúc chuẩn của ứng dụng web [31] Một ứng dụng web có thể gồm các thành phần: Máy khách web/trình duyệt web (Web client/web browser), Máy chủ web (HTTP/web server), URL/URI, Web session và cookie, Bộ diễn dịch và thực hiện các server script, Các server script (CGI – Common Gateway Interface) và Máy chủ cơ sở dữ liệu [31]. - Trình duyệt web: Trình duyệt web là bộ phần mềm chạy trên máy khách có chức năng tạo yêu cầu, gửi yêu cầu và hiển thị phản hồi/kết quả trả về từ máy chủ web. Trình duyệt web có khả năng hiển thị nhiều loại dữ liệu của trang web: văn bản, hình ảnh, âm thanh, video,. Trình duyệt cũng hỗ trợ khả năng lập trình bằng các ngôn ngữ script (như Javascript), xử lý các ngôn ngữ HTML, XML, CSS,.
Một số trình duyệt thông dụng bao gồm: Microsoft Internet Explorer, Google Chrome, Mozilla Firefox, Opera, Apple Safari,. [31] - Máy chủ web: Máy chủ web tiếp nhận yêu cầu từ trình duyệt web, xử lý yêu cầu và trả về đáp ứng. Các đáp ứng thường là các trang web. Nếu là yêu cầu truy nhập các file tĩnh, máy chủ web truy nhập hệ thống file cục bộ, đọc nội dung file và gửi kết quả cho trình duyệt.
Nếu là yêu cầu truy nhập các file script, máy chủ web chuyển các script cho bộ xử lý script. Script có thể bao gồm các lệnh truy nhập cơ sở dữ liệu để xử lý dữ liệu. Kết quả thực hiện script được chuyển lại cho máy chủ web để tạo thành đáp ứng và gửi cho trình duyệt [31]. Có nhiều loại máy chủ web được triển khai sử dụng trên thực tế, trong đó các máy chủ web thông dụng nhất bao gồm: Mozilla Apache web server, Microsoft 10 Internet Information Services (IIS), nginx (NGINX, Inc), Google web services, IBM Websphere và Oracle web services.
- URL và URI: URL (Uniform Resource Locator) còn gọi là địa chỉ web, là một chuỗi ký tự cho phép tham chiếu đến một tài nguyên. Dạng thông dụng của URL: scheme://domain:port/path?query_string#fragment_id, trong đó: + scheme: chỉ giao thức truy nhập (http, https, ftp,.) + domain: tên miền, ví dụ www.com + port: số hiệu cổng dịch vụ; với cổng chuẩn (http 80 hoặc https 443) thì không cần chỉ ra số hiệu cổng + path: đường dẫn đến tên file/trang + ?query_string: chuỗi truy vấn, gồm một hoặc một số cặp tên biến=giá trị. Ký tự và (&) được dùng để ngăn cách các cặp + fragment_id: một tên liên kết định vị đoạn trong trang. URI (Uniform Resource Identifier) là một chuỗi ký tự dùng để nhận dạng một địa chỉ web hoặc một tên.
URI có thể là URL hoặc URN (Uniform Resource Name), trong đó URN được dùng để nhận dạng tên của tài nguyên, còn URL được dùng để tìm địa chỉ, hoặc vị trí của tài nguyên [31]. Các thành phần của URI - Web session và cookie: Web session (phiên làm việc web) là một kỹ thuật cho phép tạo ra ứng dụng web có trạng thái (stateful) vận hành trên giao thức HTTP không trạng thái (stateless). Máy chủ web tạo ra và lưu một chuỗi định danh (ID) cho mỗi phiên (Session) theo yêu cầu của máy khách. Phiên cho phép máy chủ web nhận dạng người dùng và xâu chuỗi các yêu cầu HTTP của mỗi người dùng.
Thời gian hoạt động của mỗi phiên tùy thuộc vào cấu hình máy chủ web. Ví dụ, sau đăng nhập thành công, máy chủ web tạo một phiên làm việc cho người dùng và không yêu cầu thông tin đăng nhập với các yêu cầu truy nhập tiếp theo cho đến khi kết thúc phiên làm việc. 11 Cookie còn gọi là HTTP cookie, hay Browser cookie là một mẩu thông tin do website gửi xuống và được lưu trên trình duyệt khi người dùng thăm website. Khi người dùng thăm website trong tương lai, website có thể đọc lại thông tin trong cookie để biết các hoạt động trước đó của người dùng.