Raw Socket – mức hệ điều hành:

Một phần của tài liệu Nghiên cứu giải pháp dùng firewall bảo vệ máy chủ trước các tấn công DOS và SQL injection luận văn thạc sĩ (Trang 42 - 44)

Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình yêu cầu dịch vụ ( client) và một chương trình cung cấp dịch vụ (server) trên mạng LAN, WAN hay Internet và đôi lúc là giữa những quá trình ngay bên trong máy tính. Mỗi socket có thể được xem như một điểm cuối trong một kết nối. Một socket trên máy yêu cầu dịch vụ có địa chỉ mạng được cấp sẵn để “gọi” một socket trên máy cung cấp dịch vụ. Một khi socket đã được thiết lập phù hợp, hai máy tính có thể trao đổi dịch vụ và dữ liệu.

Các đặc tính của Socket bao gồm:

 Giao thức (TDP, UDP hay raw IP).  Số hiệu cổng.

Phân loại: Có vài loại Socket thông dụng như:

 Datagram Socket hay còn gọi là connectionless socket sử dụng UDP.  Stream Socket hay còn gọi là connection – oriented socket sử dụng TCP.  Raw Socket (hay là Raw IP Socket). Với socket dạng này tầng giao vận được bỏ qua và ứng dụng có thể truy nhập trực tiếp vào dữ liệu của gói tin IP. Tóm lại, sử dụng Socket ta có thể chặn bắt và truy nhập các thông tin từ tầng giao vận trở lên (TCP và UDP) và có thể truy nhập tới tầng Internet ( IP) nếu sử dụng raw socket. Tuy nhiên hiện nay trên hệ điều hành window chỉ có thư viện winsock dành cho Visual C++ và Socket trong .Net hỗ trợ raw socket. Thư viện lập trình mạng của Java không cho phép người phát triển được sử dụng tới raw socket.

Raw socket là một socket cho phép truy nhập trực tiếp tới header của một packet.

Nói một cách khác, raw socket là một cách bỏ qua toàn bộ network stack và đưa packet tới thẳng tầng ứng dụng. Raw socket có thể thực hiện một trong hai tác vụ:

Packet Sniffing: nhận các packet từ raw socket. Packet Injection: gửi các packet tới raw socket.

Raw socket không nằm ở tầng ngôn ngữ lập trình mà là một phần networking API của hệ điều hành. Sử dụng raw socket chúng ta có thể lấy về header của packet khác với socket thông thường chỉ lấy về payload của packet. Raw socket được sử dụng trong transport layer và network layer.

Khi Window XP được phát hành năm 2001, raw socket được cài đặt trong thư viện Winsock, tuy nhiên Microsoft tuyên bố raw socket chỉ được hacket dùng trong việc thực hiện TCP reset attacks. Do vậy sau 3 năm sau trong bản hotfix, Mircrosoft đã hạn chế hỗ trợ raw socket trong winsock cũng như không hỗ trợ cho ứng dụng nào sử dụng chúng nữa.

Có 2 phương thức làm việc với Raw socket: Winsock và .Net socket

3.2.1 Winsock:

Sử dụng Winsock để xây dựng chương trình sniffer nghĩa là chặn bắt ở mức hệ điều hành với Raw Socket. Do đề tài thực hiện trong phạm vi hệ điều hành Windows nên chúng ta chỉ xét tới Winsock (ngoài ra còn có thể có .NET Socket)..

3.2.1.1 Khái niệm:

Là viết tắt của từ Window Socket. Là một thư viện socket, nó được dùng như là giao diện giữa TCP/IP và Windows. Winsock là một thư viện liên kết động .DLL chạy trên nên hệ điều hành Windows. WINSOCK.DLL liên hệ với TCP từ đó giao tiếp ra ngoài mạng Internet. Hình dưới thể hiện cách làm việc của Winsock:

Hình 3.1. Sơ đồ giao tiếp thông qua winsock

Winsock thực sự như một tầng giữa các ứng dụng winsock và ngăn xếp TCP/IP. Các ứng dụng yêu cầu Winsock.dll cần làm những gì, nó biên dịch các câu lệnh dịch chuyển tới bộ giao thức TCP/IP và bộ giao thức TCP/IP chuyển chúng lên mạng. Yêu cầu là Winsock.dll đang dùng phải có phiên bản đúng với phiên bản của TCP/IP đang chạy.

Một phần của tài liệu Nghiên cứu giải pháp dùng firewall bảo vệ máy chủ trước các tấn công DOS và SQL injection luận văn thạc sĩ (Trang 42 - 44)