Chào mừng các bạn tiếp tục với Series Giải phẫu Mạng & Packet Analysis! Sau khi đã thiết lập xong “đường ống” vật lý vững chắc bằng giao thức TCP ở Tầng 4, hệ thống phải đối mặt với một bài toán mới: Làm sao để “nhớ mặt” người dùng mà không bắt họ phải đăng nhập lại sau mỗi cú click chuột? Đó chính là nhiệm vụ của Tầng 5 (Session Layer) — nơi ranh giới của các phiên làm việc được thiết lập và cũng là nơi hacker tung ra những đòn cướp quyền vô cùng hiểm độc.
1. Tầng 5 (Session) và Sự cần thiết của Phiên làm việc
Khi bạn mở trình duyệt web và thực hiện nhiều yêu cầu cùng lúc (như mở nhiều tab, tải nhiều ảnh), dữ liệu có nguy cơ bị lẫn lộn vào nhau. Tầng 5 (Lớp Phiên) sinh ra để giải quyết vấn đề này bằng cách thiết lập, quản lý và kết thúc các phiên kết nối. Nó đóng vai trò tạo ra một ranh giới độc nhất cho từng cuộc liên lạc.
Ở mức độ truyền tải, Tầng 5 quản lý “luồng” nói chuyện thông qua 3 chế độ:
- Đơn công (Simplex): Dữ liệu chỉ đi một chiều (như bạn nghe radio).
- Bán song công (Half-duplex): Hai bên nói chuyện luân phiên (như bộ đàm — người này nói xong người kia mới được nói).
- Song công toàn phần (Full-duplex): Cả hai cùng nói và nghe cùng lúc (như gọi điện thoại di động).
Tuy nhiên, bài toán lớn nhất ở đây là hiệu năng. Việc bắt tay (Handshake) ở Tầng 4 (TCP) và Tầng 6 (TLS) cực kỳ tốn thời gian và làm “mệt” CPU của máy chủ. Để tối ưu hóa, Tầng 5 không bắt hai thiết bị phải chào hỏi lại từ đầu cho mỗi gói tin, mà sử dụng các cơ chế định danh đặc biệt.
2. Giải phẫu Session ID và Session Ticket trên Wireshark
Để duy trì trạng thái kết nối, Tầng 5 sử dụng hai công cụ chính là Session ID và Session Ticket. Bằng cách dùng Wireshark, chúng ta có thể dễ dàng bắt được những “tấm vé” này bay trên không gian mạng.
2.1 Định danh cuộc trò chuyện bằng Session ID
Sau lần bắt tay đầu tiên thành công, máy chủ sẽ cấp cho bạn một “mã số định danh” gọi là Session ID. Khi máy bạn gửi hàng nghìn khung dữ liệu tiếp theo, nó chỉ cần đính kèm ID này. Server nhìn vào ID sẽ biết ngay: “Đây là khách quen, đã kiểm tra an ninh xong rồi, cho dữ liệu đi thẳng lên Tầng 6 để xử lý!”.
# Lọc gói tin Server Hello để tìm Session ID do máy chủ cấp phát
# Cú pháp bộ lọc trên Wireshark: tls.handshake.type == 2
Handshake Protocol: Server Hello
Handshake Type: Server Hello (2)
Length: 118
Version: TLS 1.2 (0x0303)
Random: dc3aa089a0c8825e54cc0106c17a0cb90305776b2d49f405fe30dc0f2bfad484
Session ID Length: 32
Session ID: d451a3116057f79488abdba0e27371ef79b25a156fcd8afaf011b9aa5bdb900b
Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)

Cái dãy số Hex dài đó (d451a311…) dùng để: Định danh cuộc trò chuyện: Khi máy Lenovo của bạn gửi hàng nghìn Frame dữ liệu tiếp theo (như các gói DATA của HTTP/2), nó không cần phải gửi lại toàn bộ thông tin chào hỏi. Nó chỉ cần gắn cái ID này vào (hoặc dùng trạng thái đã thiết lập từ ID này). Nhận diện người quen: Server nhìn vào ID này sẽ biết: “À, đây là gói tin tiếp theo của ông bạn ở IP 192.168.1.156, đã kiểm tra xong xuôi rồi, cho dữ liệu đi thẳng lên Tầng 6 để dịch luôn!”.
2.2 Vé phục hồi nhanh (Session Ticket)
Để đẩy nhanh tốc độ kết nối lại (0-RTT), máy chủ cung cấp một Session Ticket. Đây thực chất là một cái “vé” lưu trữ trạng thái bảo mật của phiên trước đó. Thay vì phải tính toán lại các thuật toán mã hóa nặng nề, máy khách chỉ cần trình chiếc vé này ra để nối lại phiên làm việc ngay lập tức.
# Lọc gói tin New Session Ticket để xem vé bảo mật được mã hóa
# Cú pháp bộ lọc trên Wireshark: tls.handshake.type == 4
TLSv1.3 Record Layer: Handshake Protocol: New Session Ticket
Content Type: Application Data (23)
Version: TLS 1.2 (0x0303)
Handshake Protocol: New Session Ticket
Handshake Type: New Session Ticket (4)
Length: 53
TLS Session Ticket
Session Ticket Lifetime Hint: 600 seconds (10 minutes)
Session Ticket Age Add: 3185912667
Session Ticket Nonce Length: 8
Session Ticket: af23cc7378d7440f6a6447726da2062b7d2198d9b8c7aaad6a71213fba0cbb97

3. Các đòn tấn công tử huyệt nhắm vào Phiên làm việc
Hacker hiểu rất rõ giá trị của những mã Session ID này. Vì Server hoàn toàn tin tưởng vào cái vé, nên kẻ nào cầm vé, kẻ đó có quyền. Dưới đây là 3 đòn tấn công kinh điển ở Tầng 5.
3.1 Cướp Phiên (Session Hijacking)
Đây là đòn đánh trực diện nhất. Kẻ địch hoàn toàn không cần biết mật khẩu của bạn.
Chúng chỉ cần “đánh cắp” được Session ID đang nằm trong Cookie hoặc bộ nhớ đệm trình duyệt thông qua các kỹ thuật như Sniffing (nghe lén mạng Wi-Fi không an toàn) hoặc tấn công Cross-Site Scripting (XSS). Khi có được ID này, chúng dùng nó để gửi gói tin lên Server. Server sẽ lầm tưởng hacker chính là bạn và cho phép truy cập thẳng vào tài khoản.
Cảnh báo SOC: Để chống lại Session Hijacking, hệ thống mạng bắt buộc phải mã hóa toàn bộ dữ liệu truyền tải bằng HTTPS/TLS và các Cookie phải được gắn cờ
SecurecùngHttpOnlyđể ngăn mã độc JavaScript trích xuất Session ID.
3.2 Tấn công Phản hồi (Replay Attack)
Lỗ hổng này đánh thẳng vào cơ chế “vé phục hồi nhanh” (New Session Ticket / 0-RTT) mà chúng ta vừa soi trên Wireshark.
Vì cái vé này được thiết kế để kết nối nhanh mà không cần bắt tay lại, hacker có thể can thiệp ở giữa mạng (MitM), bắt lấy bản sao gói tin chứa Ticket của bạn và gửi lại cho Server nhiều lần. Nếu hệ thống ứng dụng không có cơ chế chống trùng lặp (ví dụ: dùng timestamp hoặc nonce), hacker có thể ép Server thực hiện lại một giao dịch nhạy cảm (như chuyển tiền) nhiều lần chỉ bằng cách “phát lại” cái vé cũ đó.
3.3 Cố định Phiên (Session Fixation)
Ngược lại với việc đi ăn cắp, trong kỹ thuật này hacker lại chủ động “tặng” cho bạn một cái ID.
Kẻ tấn công sẽ tạo ra một Session ID hợp lệ từ trước, sau đó lừa bạn click vào một đường link chứa sẵn ID đó để đăng nhập. Sau khi bạn đăng nhập thành công, hệ thống vô tình “đóng dấu xác thực” cho cái ID do hacker cung cấp. Lúc này, hacker chỉ cần ung dung nhập cái ID mà chúng đã biết trước đó vào trình duyệt — phiên làm việc lúc này trở thành “dùng chung” giữa bạn và hacker.
Việc thấu hiểu Tầng 5 giúp SOC Analyst nhận ra rằng: Không phải cứ đăng nhập xong là an toàn tuyệt đối, bởi nếu kẻ gian cướp được “tấm vé” Session, chúng nghiễm nhiên trở thành người chủ hợp pháp. Tuy nhiên, cái vé đó và toàn bộ dữ liệu ứng dụng thực chất được xáo trộn như thế nào để không ai đọc lén được trên mạng? Trong Bài 6 tiếp theo, chúng ta sẽ bước lên Tầng 6 (Presentation) để bóc tách lớp vỏ mã hóa SSL/TLS, giải phẫu thuật toán CHACHA20 và tìm hiểu lỗ hổng POODLE khét tiếng. Hãy cùng chờ đón nhé!