JA3 Fingerprint là gì?
Scrapeless Agent Browser cung cấp các phiên trình duyệt đám mây được quản lý để thực thi và kiểm tra các quy trình web động.
JA3 Fingerprint thể hiện điều gì?
Một JA3 fingerprint là một định danh cô đọng được dẫn xuất từ các trường đã chọn trong thông điệp ClientHello của một TLS client. Nó mô tả các khía cạnh về cách một client bắt đầu một kết nối TLS. Các nhóm an ninh có thể dùng nó để gom nhóm các kết nối chia sẻ cùng mẫu bắt tay và điều tra những nhóm đó cùng với các bằng chứng khác.
JA3 không đọc DOM của trang, đầu ra đồ họa, cookie hay danh tính tài khoản. Điểm quan sát của nó là bắt tay kết nối. Cùng một triển khai client có thể chạy trên nhiều thiết bị, nên một giá trị JA3 chung không chứng minh rằng các kết nối đến từ cùng một người hay cùng một máy.
Thuật toán JA3 gốc định nghĩa các trường được chọn và cách tuần tự hóa chúng. Kho lưu trữ gốc đã được lưu trữ và hướng người đọc tới các công trình mới hơn. Hạ tầng hiện có vẫn có thể tạo ra các giá trị JA3, nhưng nhà phân tích nên phân biệt giữa thuật toán đã được ghi chép và những giả định về việc bảo trì dự án đang diễn ra.
Tóm tắt
- JA3 tóm tắt các trường ClientHello đã chọn. Đây là một quan sát ở tầng mạng chứ không phải phép đo trình duyệt ở cấp độ trang.
- JA3 giữ nguyên thứ tự trong các danh sách đã tuần tự hóa. Thay đổi thứ tự danh sách có thể làm thay đổi fingerprint thu được.
- Một JA3 trùng khớp là bằng chứng hỗ trợ. Nó không xác thực thiết bị hay xác lập mục đích.
- Thu thập đáng tin cậy cần đúng điểm quan sát. Chỉ JavaScript ở phía ứng dụng thì không thể dựng lại bắt tay mà máy chủ từ xa đã quan sát.
Giá trị JA3 được xây dựng như thế nào?
JA3 tuần tự hóa các trường ClientHello đã chọn thành một chuỗi có phân tách và băm chuỗi đó bằng MD5. Các nhóm được chọn gồm trường version, cipher suites, extensions, supported groups và elliptic-curve point formats. Mô tả ban đầu dùng thuật ngữ “elliptic curves” cũ cho supported groups.
Trong một nhóm, các giá trị số được phân tách bằng dấu gạch ngang; các nhóm được phân tách bằng dấu phẩy. Thứ tự là quan trọng. Hai lần bắt tay với cùng tập extension nhưng khác thứ tự có thể tạo ra các đầu vào JA3 khác nhau. Giá trị băm giúp đầu vào dễ lưu trữ và so sánh hơn, nhưng không giữ lại lời giải thích có thể đọc được của các trường.
JA3 loại trừ các giá trị GREASE khỏi các danh sách liên quan. GREASE trong khả năng mở rộng TLS dùng các giá trị được dành riêng để kiểm tra khả năng của các triển khai trong việc chấp nhận các giá trị lạ. Xem các giá trị thay đổi đó như đặc tính ổn định của client sẽ làm fingerprint nhiễu thêm.
Trường version cần được diễn giải cẩn thận. TLS hiện đại không thể hiện mọi chi tiết phiên bản trong một trường cũ duy nhất. Định nghĩa giao thức TLS giải thích cấu trúc bắt tay và thương lượng phiên bản được hỗ trợ. Một thành phần version trong JA3 không nên được đọc như một tuyên bố đầy đủ về giao thức cuối cùng đã được thương lượng.
Giữ lại đầu vào thô đã được chuẩn hóa khi mục đích chẩn đoán và chính sách dữ liệu của bạn cho phép. Chỉ dùng giá trị băm thì tiện để gom nhóm, nhưng các nhóm trường thô giúp giải thích được vì sao một bản cập nhật lại làm thay đổi kết quả. Mã băm là khóa so sánh, không phải là phân tích ý nghĩa của bắt tay.
JA3 phải được đo ở đâu?
JA3 phải được đo tại nơi có thể quan sát được ClientHello liên quan. Một điểm kết thúc TLS ở rìa, một cảm biến mạng phù hợp hoặc một máy chủ chẩn đoán có thể cung cấp quan sát đó. Một ứng dụng nằm sau một bộ kết thúc TLS riêng có thể không nhận được bắt tay gốc.
Vẽ đường đi của kết nối trước khi diễn giải một giá trị. Một trình duyệt có thể kết nối qua một đường hầm chuyển tiếp bắt tay của nó. Một cổng kết thúc TLS và mở một kết nối khác sẽ tạo một bắt tay khác cho chặng tiếp theo. Địa chỉ định tuyến lưu lượng và phần mềm tạo ra thông điệp TLS được quan sát không nhất thiết là cùng một thành phần.
Một ứng dụng có thể nhận fingerprint từ hạ tầng đáng tin cậy trong một trường metadata, nhưng ranh giới tin cậy là quan trọng. Một header HTTP do người dùng cung cấp được đặt tên theo một fingerprint không phải là bằng chứng về những gì rìa mạng đã quan sát. Rìa mạng nên kiểm soát metadata đó và ngăn người gọi thay thế bằng giá trị tự họ khẳng định.
JavaScript trên trang không thể khôi phục đầy đủ ClientHello gốc thông qua một API trình duyệt tiêu chuẩn. Một trang web có thể hiển thị kết quả JA3 bằng cách lấy nó từ một bộ quan sát backend. Một công cụ chẩn đoán chỉ chạy trong trình duyệt mà không có backend như vậy nên báo cáo giá trị là không có sẵn.
JA3 có thể cho nhà phân tích bảo mật biết điều gì?
JA3 có thể giúp nhà phân tích tìm các kết nối có chung mẫu TLS-client và so sánh mẫu đó với các bằng chứng sự cố khác. Nó hữu ích cho việc gom nhóm, hình thành giả thuyết và phát hiện thay đổi trong một môi trường đã biết.
Giả sử một dịch vụ nội bộ bắt đầu tạo ra một JA3 mới sau khi cập nhật dependency. Quan sát đó có thể hướng sự chú ý đến ngăn xếp mạng. Nó không chứng minh rằng client mới là độc hại. Hãy xác nhận bản cập nhật và so sánh các trường bắt tay thô trước khi phân loại thay đổi này là một sự cố.
Chiều ngược lại cũng quan trọng. Một client không mong muốn có thể chia sẻ một giá trị JA3 với phần mềm thông thường. Khớp với một fingerprint được dùng rộng rãi không nên dẫn tới chặn hoàn toàn mà không cân nhắc hành động cần bảo vệ và các quan sát khác. Các thư viện client phổ biến tự nhiên tạo ra những nhóm lớn các kết nối tương tự nhau.
| Quan sát | Diễn giải hợp lý | Kết luận không được hỗ trợ |
|---|---|---|
| Cùng giá trị JA3 | Các trường bắt tay đã chuẩn hóa được chọn sinh ra cùng một giá trị băm | Cả hai kết nối thuộc về cùng một người |
| JA3 thay đổi sau một bản cập nhật | Mẫu bắt tay được quan sát có thể đã thay đổi | Bản cập nhật nhất thiết đã đưa vào hành vi lạm dụng |
| JA3 gắn với một sự cố | Mẫu này là một đầu mối điều tra hữu ích | Mỗi kết nối trùng khớp đều là độc hại |
| Không có giá trị JA3 nào được ghi nhận | Quan sát hoặc bộ sưu tập có thể không khả dụng | Client không có đặc điểm TLS |
JA3, JA3S, JA4 và dấu vân tay trình duyệt
JA3 mô tả một mẫu TLS client, trong khi JA3S mô tả các đặc điểm bắt tay phía server đã được chọn. Ngữ cảnh kết hợp của chúng có thể giúp phân biệt các tương tác, nhưng cả hai đều không phải là thông tin định danh. Phản hồi của server cũng phụ thuộc vào những gì client đã đề nghị.
JA4 là một phương pháp lấy dấu riêng biệt với cách chuẩn hóa khác và dạng biểu diễn có cấu trúc. Bạn không thể đổi tên một bản băm JA3 thành JA4 hoặc suy ra trực tiếp cái này từ cái kia. Nếu một nền tảng xử lý sự cố hỗ trợ cả hai, hãy lưu cả tên thuật toán và phiên bản bộ sưu tập cùng với giá trị.
Một dấu vân tay trình duyệt thu thập các đặc điểm như ngôn ngữ, thông tin màn hình và hành vi dựng hình. Những thuộc tính đó tồn tại ở một lớp khác. Việc thay đổi chuỗi User-Agent không chỉ thị cho thư viện TLS tạo ra một ClientHello cụ thể, và một dấu vân tay TLS trùng khớp không thiết lập rằng các script trên trang nhìn thấy một môi trường trình duyệt nhất quán.
MD5 được dùng trong JA3 như một dạng biểu diễn gọn nhẹ. Nó không nên được coi là một bảo đảm định danh mật mã. Các đầu vào khác nhau có thể va chạm, và nhiều client có thể cố ý hoặc tự nhiên chia sẻ cùng một đầu vào đã chuẩn hóa. Phân tích vận hành nên tôn trọng những giới hạn đó.
Bạn Nên Chẩn Đoán Một Nghi Ngờ Lệch TLS Như Thế Nào?
Chẩn đoán một nghi ngờ lệch TLS bằng cách so sánh các lần bắt tay đo được từ một môi trường được kiểm soát, sau đó kiểm tra xem kết quả truy cập có thực sự tương quan với sự khác biệt đó hay không. Một yêu cầu bị từ chối đơn lẻ là không đủ để xác định TLS là nguyên nhân.
- Lập sơ đồ đường đi. Xác định tiến trình client, hành vi proxy, bộ kết thúc TLS và backend. Nêu rõ kết nối nào mà phép đo mô tả.
- Ghi lại môi trường. Giữ lại phiên bản client và thư viện mạng cùng với quan sát. Tránh gán một giá trị cho một ngôn ngữ nói chung khi nó đến từ một bản dựng cụ thể.
- Kiểm tra sự khác biệt trường thô. Xác định xem sự khác biệt liên quan đến thứ tự, khả năng được cung cấp, hay hành vi thu thập.
- So sánh kết quả ứng dụng. Kiểm tra phản hồi cuối cùng và các trường mong đợi. Một lần bắt tay thành công vẫn có thể dẫn tới một trang bị từ chối hoặc không liên quan.
- Giữ kết luận ở phạm vi hẹp. Nêu rõ những gì đã thay đổi và những gì vẫn chưa chắc chắn. Tìm kiếm telemetry từ chủ sở hữu trang trước khi khẳng định một hệ thống bảo mật bên thứ ba đã dùng một quy tắc cụ thể.
Chạy các bước kiểm tra này trên một endpoint mà bạn kiểm soát hoặc có quyền kiểm tra. Một dịch vụ chẩn đoán chỉ báo cáo những gì nó quan sát được trên kết nối của chính nó; điều đó không nhất thiết tái tạo lại đường đi tới một website khác.
Khi Nào Một Trình Duyệt Được Quản Lý Hữu Ích
Một trình duyệt được quản lý hữu ích khi ứng dụng cần môi trường runtime của trình duyệt, kết xuất động và một phiên có thể điều khiển, thay vì chỉ một phản hồi HTTP. Phần Giới thiệu Scrapeless Agent Browser mô tả phạm vi này, và phần Tổng quan sản phẩm Agent Browser giải thích giao diện tự động hóa trình duyệt của nó.
Việc dùng một trình duyệt không chứng minh rằng mọi chính sách truy cập đều chấp nhận. Hãy xác minh đích đến, kiểm tra nội dung và kiểm tra đầu ra của tác vụ được cho phép của bạn. Đừng hứa rằng một dịch vụ có thể gán một bản băm JA3 tùy ý trừ khi đúng khả năng đó đã được ghi tài liệu và kiểm thử.
Bài viết liên quan Quy trình dấu vân tay trình duyệt Python bàn về ngữ cảnh thu thập dựa trên trình duyệt. Mức Giá Scrapeless hiện tại nên được đánh giá so với runtime và kết quả sử dụng được mà khối lượng công việc của bạn yêu cầu, thay vì thay thế việc xác thực nội dung bằng một bắt tay trùng khớp.
Kết luận
JA3 nén các đặc điểm được chọn của bắt tay TLS thành một giá trị thuận tiện cho việc gom nhóm lưu lượng. Tính hữu ích của nó phụ thuộc vào việc thu thập đúng, gán rõ ràng cho một kết nối và diễn giải thận trọng. Hãy giữ ngữ cảnh thuật toán và kiểm tra kết quả ứng dụng trước khi gắn một dấu vân tay với một quyết định truy cập.
Xây Dựng Một Quy Trình Làm Việc Bạn Có Thể Xác Thực
Chọn dịch vụ Scrapeless phù hợp với nguồn dữ liệu được phép của bạn, sau đó kiểm tra nội dung trả về so với các trường mà ứng dụng của bạn cần.
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.
Nhận $5 Tín Dụng Của Bạn →FAQ
Hỏi: Dấu vân tay JA3 có phải là một định danh trình duyệt duy nhất không?
Dấu vân tay JA3 không phải là một định danh trình duyệt duy nhất. Nhiều client có thể chia sẻ cùng các trường bắt tay đã chọn và do đó cùng bản băm.
Hỏi: Thay đổi User-Agent có làm thay đổi JA3 không?
Chỉ thay đổi User-Agent không làm thay đổi TLS ClientHello. Header HTTP và việc tạo bắt tay TLS thuộc về các tầng khác nhau.
Hỏi: JavaScript trên trình duyệt có thể tính toán JA3 mà máy chủ nhìn thấy không?
JavaScript trên trình duyệt không thể tự mình dựng lại đầy đủ quá trình bắt tay mà máy chủ quan sát được. Một backend hoặc phép đo ở mức mạng phải cung cấp quan sát đó.
Hỏi: Proxy có luôn luôn làm thay đổi JA3 không?
Proxy không phải lúc nào cũng làm thay đổi JA3. Kết quả phụ thuộc vào việc nó truyền nguyên vẹn bắt tay của client hay chấm dứt TLS và tạo một kết nối mới.