본문 바로가기
infra/aws

[CloudFront] JA3 TLS Client Fingerprint

by moonsiri 2023. 4. 19.
728x90
반응형

Amazon CloudFront에서 CloudFront-Viewer-JA3-Fingerprint 헤더를 지원하고 있습니다.

 

https://aws.amazon.com/ko/about-aws/whats-new/2022/11/amazon-cloudfront-supports-ja3-fingerprint-headers/

 

 

 

JA3 fingerprint는 request가 알려진 클라이언트로부터 온 것인지, malware나 악성 봇인지, 예상되는(허용 목록에 있는) 애플리케이션인지 판단하는 데 도움이 될 수 있습니다. 이 헤더는 뷰어의 SSL/TLS Client Hello 패킷에 의존하며 HTTPS 요청에만 존재합니다.

 

 

JA3 메서드는 Client Hello 패킷의 TLSVersion, Ciphers, Extensions, EllipticCurves, EllipticCurvePointFormats 필드에 대한 바이트의 10진수 값을 수집하는 데 사용됩니다. 각 필드를 ,(comma)로 구분하고 -(Hyphen)을 사용하여 각 필드의 각 값을 구분하여 해당 값을 순서대로 연결합니다.

769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0

 

만약 Client Hello에 SSL 확장이 없으면 필드가 비어 있습니다.

769,4-5-10-9-100-98-3-6-19-18-99,,,

 

그런 다음 이 문자열은 MD5 해시되어 32자 fingerprint를 생성합니다. 이것이 JA3 TLS Client Fingerprint입니다.

769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0 --> ada70206e40642a3e4461f35503241d5
769,4-5-10-9-100-98-3-6-19-18-99,,, --> de350869b8c85de67a350c8d186f11e6

 

 

JA3는 IP 또는 도메인 기반 IOC보다 SSL을 통한 악성 활동을 탐지하는 훨씬 더 효과적인 방법입니다. JA3는 클라이언트 애플리케이션을 탐지하기 때문에 악성코드가 DGA(Domain Generation Algorithms)를 사용하든, 각 C2 호스트마다 다른 IP를 사용하든, 악성코드가 C2용 트위터를 사용하든 상관없이 악성코드가 무엇을 통신하는지가 아니라 어떻게 통신하는지에 따라 악성 코드 자체를 탐지할 수 있습니다.

JA3는 소수의 특정 어플리케이션만 설치가 허용되는 폐쇄된 환경에서도 탁월한 탐지 메커니즘입니다. 이러한 유형의 환경에서는 예상되는 애플리케이션의 whitelist를 구축한 다음 다른 JA3 hits에 대해 경고할 수 있습니다.

 

 

참고로 CF에서 JA3 헤더 값을 받아오려면 CF 정책 생성 시 헤더 키를 추가해야합니다.

 

[Reference]

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-cloudfront-headers.html

https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/

https://github.com/salesforce/ja3

728x90
반응형

댓글