+8

TLS Fingerprint và vấn đề TLS Fingerprint của Website với Burp Suite

Vấn đề

Với cài đặt mặc định của BurpSuite, khi proxy traffic và truy cập vào https://search.censys.io sẽ bị chặn lại bởi code 403 này trong khi đó truy cập bình thường (không thông qua Burp) thì không sao

image.png

Vậy nguyên nhân ở đây là gì, chúng ta cùng nhau tìm hiểu nhé

Xác Định và Mô Phỏng TLS Fingerprint của Website với Burp Suite

Trong lĩnh vực an ninh mạng hiện đại, việc hiểu rõ và có khả năng tương tác với các giao thức bảo mật như TLS (Transport Layer Security) là vô cùng quan trọng. Khi một trang web sử dụng TLS fingerprinting để bảo vệ mình, việc cấu hình Burp Suite để bắt chước đúng fingerprint của một client hợp lệ là cần thiết để có thể proxy traffic và phân tích một cách hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu cách xác định các thông số TLS mà trang web sử dụng và cách cấu hình Burp Suite để bắt chước fingerprint đó, cụ thể là với trang https://search.censys.io/.

TLS Fingerprinting

TLS Fingerprinting là quá trình nhận diện các đặc điểm cụ thể của quá trình bắt tay (handshake) TLS giữa client và server để tạo ra một "dấu vân tay" duy nhất. Những đặc điểm này bao gồm phiên bản TLS, bộ mã hóa (cipher suites), các extension được sử dụng, và các tham số khác trong quá trình bắt tay.

Việc này giúp server xác định xem yêu cầu đến có xuất phát từ một client hợp lệ (như trình duyệt phổ biến) hay từ một công cụ tự chế tạo, từ đó áp dụng các biện pháp bảo vệ như chặn hoặc hạn chế truy cập.

Xác Định Các Thông Số TLS của Website

Để bắt chước được fingerprint hợp lệ, bạn cần xác định các thông số TLS mà trang web mục tiêu sử dụng. Dưới đây là các bước bạn có thể thực hiện:

Sử Dụng SSL Labs

SSL Labs là một công cụ trực tuyến mạnh mẽ giúp bạn kiểm tra cấu hình SSL/TLS của bất kỳ trang web nào.

  1. Truy cập vào SSL Labs SSL Test.
  2. Nhập https://search.censys.io/ vào hộp tìm kiếm và bắt đầu kiểm tra.
  3. Sau khi kiểm tra hoàn tất, bạn sẽ nhận được báo cáo chi tiết về:
    • Phiên bản TLS hỗ trợ (ví dụ: TLS 1.2, TLS 1.3).
    • Bộ mã hóa (cipher suites) mà server chấp nhận.
    • Các extension được sử dụng trong quá trình bắt tay.
    • Thông tin về chứng chỉ SSL.

Sử Dụng Nmap với Script ssl-enum-ciphers

Nếu bạn có quyền truy cập vào máy chủ CLI (Command Line Interface), bạn có thể sử dụng Nmap kết hợp với script ssl-enum-ciphers để liệt kê các cipher suites.

nmap --script ssl-enum-ciphers -p 443 search.censys.io

Kết quả sẽ hiển thị các phiên bản TLS được hỗ trợ và các cipher suites tương ứng.

Ví dụ kết quả tại thời điểm viết bài

➜ nmap --script ssl-enum-ciphers -p 443 search.censys.io
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-31 08:09 +07
Nmap scan report for search.censys.io (104.18.10.85)
Host is up (0.026s latency).
Other addresses for search.censys.io (not scanned): 104.18.11.85 2606:4700::6812:a55 2606:4700::6812:b55

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (ecdh_x25519) - A
|       TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
|       TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
|       TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
|     compressors:
|       NULL
|     cipher preference: client
|   TLSv1.3:
|     ciphers:
|       TLS_AKE_WITH_AES_128_GCM_SHA256 (ecdh_x25519) - A
|       TLS_AKE_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A
|       TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A
|     cipher preference: client
|_  least strength: A

Nmap done: 1 IP address (1 host up) scanned in 2.09 seconds

Phân Tích Bằng Wireshark

Wireshark là một công cụ phân tích giao thức mạng giúp bạn xem chi tiết quá trình bắt tay TLS.

  1. Cài đặt và mở Wireshark.
  2. Bắt đầu ghi lại lưu lượng mạng khi bạn truy cập https://search.censys.io/.
  3. Lọc các gói tin TLS bằng cách sử dụng bộ lọc tls.handshake.
  4. Phân tích các thông số trong các gói tin bắt tay như phiên bản TLS và cipher suites.

Cấu Hình Burp Suite Để Bắt Chước TLS Fingerprint

Sau khi đã xác định được các thông số TLS của trang web mục tiêu, bạn có thể cấu hình Burp Suite để bắt chước chúng.

Cấu Hình Các Thông Số TLS trong Burp Suite

Burp Suite cho phép bạn tùy chỉnh một số thông số TLS, nhưng để bắt chước hoàn toàn fingerprint của một trình duyệt hợp lệ, bạn có thể cần sử dụng các plugin hoặc extension bổ sung.

  1. Mở Burp và chuyển đến tab Project Options > TLS.
  2. Chọn Profile TLS phù hợp:
    • Nếu bạn muốn bắt chước một trình duyệt cụ thể (ví dụ: Chrome), bạn có thể chọn profile tương ứng nếu có sẵn.
  3. Tùy chỉnh Cipher Suites:
    • Dựa trên thông tin thu thập được từ bước 2, hãy chọn các cipher suites tương thích và ưu tiên chúng theo thứ tự mà trình duyệt hợp lệ sử dụng.
  4. Chọn Phiên Bản TLS:
    • Chọn phiên bản TLS phù hợp (ví dụ: TLS 1.2 hoặc TLS 1.3) mà server mục tiêu hỗ trợ.

Sử Dụng Extension để Tùy Chỉnh TLS Fingerprint

Để tăng cường khả năng tùy chỉnh, bạn có thể sử dụng các extension của Burp Suite. Tôi đã tìm hiểu và phát hiện một số extension mã nguồn mở trên GitHub dành cho Burp, như:

Tuy nhiên, tôi chưa rõ cách sử dụng chúng. Nếu bạn có kinh nghiệm về vấn đề này, xin hãy chia sẻ ở phần bình luận bên dưới.

Tùy Chỉnh Header HTTP

Ngoài các thông số TLS, server còn có thể dựa trên các header HTTP để xác định tính hợp lệ của client.

  1. Chuyển đến tab Proxy > Intercept.
  2. Khi một yêu cầu được chặn, chỉnh sửa các header như User-Agent để bắt chước trình duyệt phổ biến (ví dụ: Chrome, Firefox).

Kiểm Tra và Điều Chỉnh

Sau khi cấu hình xong, bạn cần kiểm tra xem Burp Suite có thể giao tiếp thành công với server mục tiêu hay không.

  1. Mở trình duyệt đã cấu hình proxy và truy cập https://search.censys.io/.
  2. Quan sát trong Burp Suite tab Proxy > HTTP history để xem các yêu cầu và phản hồi.
  3. Nếu gặp lỗi hoặc bị chặn, hãy:
    • Kiểm tra lại các thông số TLS và đảm bảo chúng khớp với thông tin đã xác định.
    • Điều chỉnh thêm các thông số khác như các extension TLS hoặc các header HTTP.

Ví dụ:

image.png

Và hoàn toàn có thể chặn bắt được request tới search.censys.io

image.png

Kết Luận

TLS fingerprinting là một phương pháp mạnh mẽ để bảo vệ các trang web khỏi các cuộc tấn công tự động và các công cụ không mong muốn. Tuy nhiên, với việc hiểu rõ cách thức hoạt động của TLS và cách cấu hình các công cụ như Burp Suite một cách chính xác, bạn có thể vượt qua những hạn chế này để thực hiện các nhiệm vụ kiểm thử bảo mật một cách hiệu quả.

Bằng cách xác định chính xác các thông số TLS mà trang web sử dụng và cấu hình Burp Suite để bắt chước chúng, bạn có thể tiếp cận và phân tích lưu lượng một cách an toàn và chính xác hơn. Luôn nhớ tuân thủ các nguyên tắc pháp luật và đạo đức khi thực hiện các hoạt động kiểm thử bảo mật để đảm bảo an toàn và tôn trọng quyền riêng tư của tất cả các bên liên quan.

Bài viết có sự hỗ trợ bởi ChatGPT


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.