Các tuỳ chọn TCP và IP

  •  
  • 495

Trở lại các vấn đề cơ bản luôn là ý kiến hay. Một trong những phần cơ sở nhất của kiến thức truyền thông máy tính là bốn giao thức cơ bản: IP, TCP, UDP và ICMP. Nội dung của bài này sẽ chuyển đến các bạn một số tuỳ chọn có trong cả TCP và IP, đồng thời thông qua đó chúng ta sẽ biết được khả năng thực thi bảo mật của chúng đến đâu.

Các tuỳ chọn TCP và IP

Nói tới bộ giao thức TCP/IP tức là nói tới tất cả các tầng của mô hình tham chiếu OSI. Chúng ta sẽ phải quan tâm tới rất nhiều giao thức khác nhau. Một số lượng rất lớn các giao thức này nằm trên tầng ứng dụng. Và nhiều giao thức tầng ứng dụng có một số lỗ hổng đi liền với chúng.

Thế còn "bốn giao thức cốt lõi"? Chúng là gì, chúng làm gì và vì sao chúng lại được gọi là các giao thức "cốt lõi"? Thực tế, IP dùng để định tuyến, TCP và UDP dùng trong truyền vận và cuối cùng, ICMP dùng để điều khiển thông báo lỗi. Và chúng được gọi là "cốt lõi" vì mọi hệ điều hành đều cần phải có chúng mới có thể "nói chuyện" được với các máy khác. Như muốn gửi các gói tin, đầu tiên chúng phải thông qua bốn giao thức cơ sở này. Thế nhưng, liệu nói Mac, BSD hay một kiểu hệ điều hành nào đó khác luôn luôn phải có tất cả các giao thức đó có hoàn toàn chính xác? Đôi khi các hệ điều hành này có thể sử dụng kiểu stack (ngăn xếp) khác để thực thi hoạt động của mình. Novell là một ví dụ.

Có phải là điều tệ nhất cho một giao thức cốt lõi?

Chúng ta biết rằng hệ điều hành nào cũng cần phải có các giao thức này để liên lạc trong môi trường mạng. Khi xem xét đến vấn đề bảo mật cho website, chắc chắn bạn sẽ phải nghiên cứu kỹ lưỡng liệu có lỗ hổng nào đi kèm các giao thức cơ sở hay không, hay có tuỳ chọn nào đặc biệt hơn không. Nếu chưa có một cuốn cẩm nang tâm đắc về TCP/IP, bạn nên download phần hướng dẫn TCP/IP and tcpdump. Bạn sẽ thấy nội dung cần tìm ở cuối trang, còn các tuỳ chọn của từng giao thức nằm ở phần dưới mỗi giao thức.

Ngày nay, các giao thức mạng nền tảng này có mặt khắp nơi trong mọi hoạt động truyền thông máy tính. Điều đó tạo cho chúng ta cảm giác thích thú với cả các khía cạnh vốn ít được biết đến hơn của chúng, các thành phần tuỳ chọn (option). Với IP và TCP chúng ta có sáu tuỳ chọn khác nhau. Xem xét chức năng của từng tuỳ chọn và đánh giá chúng trong vấn đề bảo mật là nhiệm vụ tiếp theo của chúng ta.

IP và các tuỳ chọn

End of Options list

Tuỳ chọn IP này có giá trị "kiểu" là 0 và kích thước 1 byte. Không có vấn đề về bảo mật gì liên quan đến nó và tuỳ chọn này chỉ được dùng ở phần cuối trong danh sách các tuỳ chọn IP dùng cho tiêu đề (header).

No operation

Tuỳ chọn IP này có giá trị "kiểu" là 1. Nó không hay bị nhầm với lệnh NOP của ngôn ngữ Assembler. Bởi vì các nhà phát triển khai thác tìm kiếm lỗ hổng thường sử dụng lệnh này để tự cho phép mình sử dụng một lượng lớn cửa sổ trên stack (ngăn xếp) mà sẽ trả ra các mã độc hại. Lệnh NOP trong header IP được dùng để làm căng tuỳ chọn khác và làm đầy đường biên 32 bit.

Record Route

Có giá trị kiểu là 7 và độ dài tuỳ biến, tuỳ chọn record route này được dùng kết hợp với hai tuỳ chọn IP khác: "Loose Source route" (định tuyến nguồn thất lạc) và “Strict source route” (định tuyến nguồn chính xác). Các giá trị kiểu của chúng lần lượt là 131 và 137. Các gói Record route, hay đặc biệt hơn Loose Source Record Route trở thành mối quan tâm của bảo mật máy tính từ rất lâu. Trở lại năm 2002, chúng ta có thể thấy W2K và XP vẫn đảo ngược lại hop (bước nhảy) đầu tiên của gói LSRR. Điều này được cho phép mặc định trên các stack (ngăn xếp) TCP/IP.

Đây không phải là lựa chọn tốt vì cả hai đều hữu ích cho các cuộc tấn công. Các cuộc nghiên cứu tương tự vào thời gian đó cũng chỉ ra rằng hầu hết các hãng tạo tường lửa như Norton Firewall của Symantec đều cho phép sử dụng lại các gói LSRR. Nhưng trong mạng bây giờ thì thực sự không có lý do gì để tiếp tục sử dụng các gói này. Bởi vì không ai muốn phải mô tả hàng loạt bước nhảy (hop) trong đường dẫn gói dữ liệu.

Timestamp

Tuỳ chọn này có giá trị kiểu là 68 và thường được dùng cho các router. Các router sẽ chèn timestamp vào gói tin. Mỗi tuỳ chọn IP có một giá trị cụ thể nhỏ và đóng vai trò quan trọng trong các vấn đề về bảo mật máy tính.

TCP và các tuỳ chọn

End of options list

Tuỳ chọn này cũng giống hệt như trên IP với cùng giá trị kiểu và cách dùng.

No operation

Có giá trị kiểu là 1 và cũng có độ dài một byte, tuỳ chọn này rất giống NOP của các header IP. Chúng cũng được dùng để đệm thêm tuỳ chọn khác vào, mục đích là đảm bảo được nội dung tiêu đề nằm trong từ 32 bit. Có một số tuỳ chọn của TCP không hoàn toàn nằm trong từ 32 bit, chẳng hạn không phải tất cả chúng đều dùng bốn byte.

Windown Scale

Tuỳ chọn này có giá trị kiểu là 3 và kích thước byte cũng là 3. Nó được dùng để tăng kích thước cửa sổ từ 16 bit sang 32 bit. Thông thường tuỳ chọn này không liên quan đến vấn đề bảo mật. Nó là một tuỳ chọn rất rõ ràng và còn được biết đến với chức năng "cửa sổ trình chiếu". Có thể bạn sẽ nhìn thấy tuỳ chọn này trong ba bước của quá trình "bắt tay" (handshake) của TCP/IP.

Selective ACK ok

Giá trị kiểu cho nó là 4 và độ dài là 2 byte. Không có giá trị bảo mật trong tuỳ chọn này và bạn có thể thấy nó trong ba bước của quá trình "bắt tay" của TCP/IP.

Timestamp

Tuỳ chọn TCP này có giá trị kiểu là 8 và độ dài tuỳ biến. Có hay cách dùng tuỳ chọn này trong TCP. Một là để tính toán RTT hoặc trả ra thời gian ngắt và hai là dùng để ngăn aka PAWS bảo vệ trước các cuộc tấn công và trình tự gói. Bạn có thể thấy tuỳ chọn này trong một gói dữ liệu.

Tóm lại

Chúng tôi đã chuyển tới các bạn tất cả tuỳ chọn hiện đang được dùng trong cả TCP và IP. Có thể bạn sẽ tự hỏi rằng vậy còn UDP và ICMP thì sao? Câu trả lời là hiện tại không có tuỳ chọn nào được xây dựng cho cả UDP và ICMP. Nếu bạn muốn thử nghiệm một số điều thú vị đã nói ở trên với các tuỳ chọn TCP, IP, bạn nên download một chương trình chặn gói dữ liệu nào đó và thực hành trên chúng. Một chương trình chặn dữ liệu tốt cho phép bạn thao tác được hầu hết mọi trường tìm thấy trong cả TCP và IP.

T.Thu (Theo Networking)
  • 495