Chào mừng các bạn tiếp tục với Series Giải phẫu Mạng & Packet Analysis! Ở bài trước, chúng ta đã hiểu được tầm quan trọng của Tầng 6 (Presentation) và sự sụp đổ của SSL 3.0. Hôm nay, chúng ta sẽ đặt giao thức TLS lên “bàn mổ” Wireshark để soi kỹ từng bước trong quá trình đàm phán bảo mật. Hãy cùng giải phẫu các gói tin Client Hello, Server Hello và bóc tách ý nghĩa của bộ công cụ mật mã hiện đại như ECDHE hay CHACHA20_POLY1305.
1. Bức tranh toàn cảnh TLS Handshake
Trước khi mã hóa bất kỳ dữ liệu thực tế nào (Application Data), máy khách và máy chủ phải thiết lập các quy tắc chung thông qua quá trình bắt tay TLS (TLS Handshake). Quá trình này chỉ được bắt đầu sau khi hai thiết bị đã thiết lập xong kết nối vật lý qua TCP 3-Way Handshake ở Tầng 4.
Các bước cơ bản của quy trình diễn ra như sau:
- Client Hello: Máy khách (như trình duyệt của bạn) gửi lời chào, kèm theo danh sách các bộ công cụ mật mã (Cipher Suites) mà máy của bạn có thể hỗ trợ.
- Server Hello: Máy chủ nhận lời chào, so sánh và chọn ra một bộ công cụ duy nhất tốt nhất để hai bên cùng sử dụng.
- Certificate & Key Exchange: Máy chủ gửi chứng chỉ (Certificate) để chứng minh danh tính, sau đó hai bên tiến hành trao đổi Khóa phiên (Session Key).
- Finished: “Đường hầm” mã hóa chính thức hoàn tất. Từ thời điểm này, mọi dữ liệu HTTP mới bắt đầu được truyền đi dưới dạng ẩn danh (Encrypted Application Data).

2. Đọc hiểu Client Hello trên Wireshark
Chúng ta sẽ sử dụng bộ lọc tls.handshake.type == 1 trên Wireshark để xem máy khách mang những gì đến “buổi đàm phán” ban đầu.
# Bộ lọc Wireshark để tìm gói tin Client Hello
# IP máy khách: 192.168.1.14 | IP máy chủ đích: 72.34.249.208
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 1910
Version: TLS 1.2 (0x0303)
Random: a0c794e5688f06092ca15a0a7c7452952d79b8af66b763645a55c5d0689b60dd
Session ID Length: 32
Session ID: 5f9fe71acbee191437c11861cf72ad48870cb6bb38d3fd5e0bbe731b6e52a7c7
Cipher Suites Length: 32
Cipher Suites (16 suites)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)
[...]
Trong gói tin này, trường thông tin mang tính sống còn nhất là Cipher Suites (16 suites). Trình duyệt của bạn đang gửi một danh sách gồm 16 thuật toán mật mã khác nhau và truyền đạt thông điệp: “Đây là tất cả những vũ khí bảo mật mà tôi có, Server hãy chọn ra một cái nhé!”.
3. Giải phẫu Cipher Suite (Thuật toán CHACHA20_POLY1305)
Ngay sau Client Hello, Server sẽ đáp lại bằng gói Server Hello (bộ lọc tls.handshake.type == 2) và chốt lại một “bộ công cụ mật mã” duy nhất. Giả sử Server đã chọn TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256.
Dưới góc độ một SOC Analyst, bạn bắt buộc phải biết cách “dịch” chuỗi mã này từ trái sang phải:
TLS: Tên giao thức nền tảng đang sử dụng.ECDHE(Elliptic Curve Diffie-Hellman Ephemeral): Thuật toán dùng để trao đổi khóa. Chữ “E” (Ephemeral) đảm bảo tính Perfect Forward Secrecy — mỗi phiên làm việc có một khóa riêng. Ngay cả khi hacker đánh cắp được Khóa bí mật tĩnh của máy chủ vào ngày mai, chúng cũng không thể dùng nó để giải mã các gói tin Wireshark bắt được từ hôm nay.RSA: Thuật toán xác thực danh tính. Dùng để chứng minh với máy khách rằng Server thực sự là đúng địa chỉ (thông qua Certificate).CHACHA20_POLY1305: Thuật toán mã hóa đối xứng — phần lõi dùng để xáo trộn dữ liệu. Cực kỳ hiện đại, chạy mượt mà và tiết kiệm pin trên thiết bị di động so với thuật toán AES cũ.SHA256: Thuật toán băm dùng cho HMAC, đảm bảo không một ai có thể thay đổi dù chỉ 1 bit dữ liệu trên đường truyền mà không bị phát hiện.
4. Giải mã dữ liệu TLS trong thực chiến (Decryption)
Bình thường, khi bạn soi các gói tin sau quá trình Handshake, bạn sẽ chỉ thấy một vùng xám xịt mang tên Encrypted Application Data chứa toàn ký tự rác. Để phục vụ công tác điều tra phân tích mạng (Network Forensics), chúng ta có thể ép trình duyệt nhả “Khóa phiên” (Session Key) ra một file log, sau đó nạp file này vào Wireshark để giải mã toàn bộ luồng dữ liệu.
Cảnh báo bảo mật: Cú pháp dưới đây thiết lập biến môi trường để trích xuất khóa mã hóa riêng tư. Chỉ được phép thực hiện trên môi trường Lab hoặc máy phân tích cách ly. Tuyệt đối không chạy lệnh này trên máy tính của người dùng thực tế vì nó sẽ làm lộ toàn bộ dữ liệu duyệt web (tài khoản, mật khẩu) của họ!
# Chỉ định đường dẫn file log để lưu Session Key của trình duyệt
export SSLKEYLOGFILE=~/tls_keys.log
# Mở trình duyệt Firefox từ terminal hiện tại để bắt đầu ghi nhận khóa
firefox &
Sau khi cấu hình Wireshark trỏ đến file tls_keys.log này (trong mục Preferences > Protocols > TLS), phép màu sẽ xảy ra. Các gói tin vốn bị mã hóa đen đặc giờ đây sẽ hiển thị thêm một tab Decrypted TLS. Bạn sẽ thấy rõ nguyên hình dữ liệu HTTP/2 trần trụi, bao gồm các phương thức GET/POST hay các chuỗi Header rõ ràng.
Việc đọc hiểu tường tận các bộ Cipher Suites và quy trình TLS Handshake giúp Blue Team đánh giá chính xác chất lượng bảo mật của các kết nối đang diễn ra trên hệ thống. Dù Tầng 6 đã tạo ra một đường hầm mã hóa kiên cố, nhưng chính những ứng dụng ở Tầng trên cùng mới là mục tiêu bị tin tặc khai thác nhiềutích “góc khuất ngây thơ” của hệ thống phân giải tên miền (DNS) và quá trình xin cấp phát IP của DHCP. Các bạn đừ nhất. Trong Bài 8 tiếp theo, chúng ta sẽ chính thức bước vào Lớp Ứng dụng (Application Layer - OSI 7) để phân ng bỏ lỡ nhé!