봇 완화에 있어서 TLS 지문의 실제적 적용

마지막 업데이트 날짜 2024년 9월 12일
TLS-Fingerprinting-in-Bot-Mitigation

오늘날의 디지털 세계에서 사이버 보안은 개인, 조직, 심지어 국가에 중대한 문제가 되었습니다. 다양한 위협 중에서 “봇 트래픽” 또는 봇 네트워크 트래픽이 심각한 우려로 떠올랐습니다.

봇 트래픽, 주로 자동화된 스크립트나 프로그램에서 생성되며, 디도스 공격, 스팸 이메일 발송, 피싱 및 사기성 광고 클릭과 같은 다양한 악성 활동에 널리 사용됩니다. 이러한 악의적인 행동은 개별 사용자의 프라이버시와 재정적 보안을 위협할 뿐만 아니라 기업, 조직 및 국가 네트워크 인프라의 사이버 보안에 상당한 위험을 초래합니다. 따라서 봇 트래픽에 대한 연구 및 방어는 사이버 보안 분야에서 중요한 주제가 되었습니다. 이 가이드는 TLS 지문 기술을 사용하여 봇 트래픽을 탐지하고 식별하여 사이버 보안에 대한 보다 효과적인 보호를 제공하는 방법을 설명하는 것을 목표로 합니다.

TLS 지문 소개

TLS는 Transport Layer Security의 약자로, 네트워크 통신에서 일반적으로 사용되는 프로토콜로 데이터의 안전한 전송을 보장합니다. TLS는 데이터 송수신 과정에서 암호화 기술을 사용하여 데이터가 가로채거나 변조되는 것을 방지하여 정보의 무결성과 기밀성을 보호합니다.

TLS는 웹 브라우징, 등록 및 로그인, 결제 거래, 스트리밍 미디어부터 점점 더 인기를 얻고 있는 사물 인터넷(IoT)에 이르기까지 인터넷의 대부분 트래픽을 암호화하는 데 사용됩니다. TLS의 보안은 악성 소프트웨어의 통신 트래픽을 숨기기 위해 TLS를 사용하는 악의적인 공격자에게도 선호됩니다.

TLS 연결이 시작될 때 클라이언트는 TLS 클라이언트 Hello 패킷을 보냅니다. 클라이언트 애플리케이션에서 생성된 이 패킷은 서버에 지원되는 암호와 선호하는 통신 방법을 알리고 일반 텍스트로 전송됩니다. TLS 클라이언트 Hello 패킷은 각 애플리케이션 또는 기본 TLS 라이브러리에 대해 고유하며 이 패킷에서 계산된 해시 값을 TLS 지문이라고 합니다.

TLS-Handshake-Process

그림 1: TLS 핸드셰이크 프로세스

오늘날 TLS 지문의 주요 응용 분야는 Salesforce의 오픈 소스 JA3 및 JA4이며, JA4는 더 많은 탐지 차원과 시나리오를 포함하는 JA3의 업그레이드 버전입니다. 따라서 이 문서는 주로 봇 완화에서 JA4 기반 TLS 지문의 응용 및 실행에 초점을 맞춥니다.

1. JA3 & JA3S

JA3 방법은 클라이언트의 클라이언트 Hello 패킷에서 다음 필드의 바이트의 10진수 값을 수집합니다. TLS 버전, 암호 모음, 확장 목록, 타원 곡선 및 타원 곡선 형식. 그런 다음 이러한 값을 나타나는 순서대로 연결하고 각 필드를 쉼표로 구분하고 필드 내의 각 값을 하이픈으로 구분합니다.

예:

771,4865-4866-4867-49195-49196-52393-49199-49200-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-51-45-43-21,29-23-24,0

JA3 지문은 연결된 문자열에 32비트 MD5 해시를 적용하여 얻습니다.

JA3: f79b6bad2ad0641e1921aef10262856b

JA3 지문을 계산하는 동안 TLS 확장에 포함된 GREASE 필드의 값을 무시해야 합니다. Google에서 사용하는 이 메커니즘은 TLS 생태계에서 확장성 실패를 방지합니다.

Client-Hello-Message

그림 2: 클라이언트 Hello 메시지

JA3 지문을 생성한 후, 우리는 유사한 방법을 사용하여 서버 측에서 지문을 식별합니다(즉, TLS Server Hello 메시지). JA3S 방법은 Server Hello 패킷의 다음 필드에서 바이트의 10진수 값을 수집합니다: TLS 버전, 암호화 제품군 및 확장 목록. 그런 다음 이러한 값은 나타나는 순서대로 연결되며, 각 필드는 쉼표로 구분되고 필드 내의 각 값은 하이픈으로 구분됩니다.

예:

771,49200,65281-0-11-35-16-23

JA3S 지문은 연결된 문자열에 32비트 MD5 해시를 적용하여 얻습니다.

JA3S: d154fcfa5bb4f0748e1dd1992c681104
Server-Hello-Message

그림 3: 서버 Hello 메시지

2. JA4+

JA4+는 2017년에 도입된 JA3 TLS 지문 표준을 대체하는 사용하기 쉽고 공유 가능한 모듈식 네트워크 지문 시스템을 제공합니다. JA4 탐지 방법은 가독성을 향상시켜 보다 효과적인 위협 사냥 및 분석을 돕습니다. 모든 JA4+ 지문은 지문의 다른 부분이 분리된 a_b_c로 포맷됩니다. 이를 통해 ab, ac 또는 c만 사용하여 검색 및 탐지가 가능합니다. 예를 들어, 들어오는 애플리케이션의 쿠키만 분석하려는 경우 JA4H_c를 살펴보면 됩니다. 이 새로운 지역성 보존 형식은 간단하고 사용하기 쉬우며 확장 가능한 상태를 유지하면서도 더 깊고 풍부한 분석을 용이하게 합니다.

JA4+ 지문에는 다음과 같은 치수가 포함됩니다.

  1. JA4 — TLS 클라이언트
  2. JA4S — TLS 서버 응답
  3. JA4H — HTTP 클라이언트
  4. JA4L — 빛의 거리/위치
  5. JA4X — X509 TLS 인증서
  6. JA4SSH — SSH 트래픽

이 문서에서는 주로 JA4의 적용을 소개합니다. 다른 차원에 대한 자세한 정보는 JA4 오픈소스 저장소를 참조하세요. https://github.com/FoxIO-LLC/ja4.

JA4-Schematic-Diagram

그림 4: JA4 회로도

JA4는 JA4_a, JA4_b, JA4_c로 구성됩니다.

JA4_r = JA4_a(t13d1516h2)_JA4_b(정렬된 암호 그룹)_JA4_c(정렬된 확장자_원래 암호화 알고리즘)

JA4_a: t13d1516h2에는 클라이언트의 TLS 버전, SNI, 암호화 제품군 수, 확장 수 및 ALPN이 포함됩니다. ALPN은 TLS 협상이 완료된 후 애플리케이션이 통신하려는 프로토콜을 나타냅니다. "00"은 ALPN이 없음을 나타냅니다. ALPN "h2"가 있다고 해서 반드시 브라우저를 나타내는 것은 아닙니다. 많은 IoT 기기가 HTTP/2를 통해 통신하기 때문입니다. 그러나 ALPN이 없으면 클라이언트가 웹 브라우저가 아님을 나타낼 수 있습니다. JA4는 트래픽이 TCP를 통하든 을 통하든 관계없이 클라이언트를 지문화합니다.

JA4_b: 정렬된 암호 제품군에 SHA256을 수행하고 처음 12자를 가져옵니다. 예를 들어:

002f, 0035, 009c, 009d, 1301, 1302, 1303, c013, c014, c02b, c02c, c02f, c030, cca8, cca9 = 8daaf6152771

JA4_c: 정렬된 확장자와 원래 암호화 알고리즘에 SHA256을 수행하고 처음 12자를 가져옵니다.

0005,000a,000b,000d,0012,0015,0017,001b,0023,002b,002d,0033,4469,ff01_0403,0804,0401,0503,0805,0501,0806,0601 = e5627efa2ab1

봇 완화에 JA4 지문 적용

탐지 원리

다양한 클라이언트(브라우저, 컴퓨터 소프트웨어, 프로그램)는 다양한 프로토콜 버전, 암호 제품군, 확장 및 암호화 알고리즘을 지원합니다. TLS 핸드셰이크 동안 클라이언트 Hello는 일반 텍스트로 전송되므로 JA4 지문을 계산하여 클라이언트의 실제 속성을 식별할 수 있습니다.

  • Firefox(JA4 클라이언트 Hello) ≠ Chrome(JA4 클라이언트 Hello)
  • Chrome 120(JA4 클라이언트 Hello) ≠ Chrome 80(JA4 클라이언트 Hello)
  • Chrome iOS(JA4 클라이언트 Hello) ≠ Chrome Android(JA4 클라이언트 Hello)
  • Heritrix(JA4 클라이언트 Hello) ≠ Chrome(JA4 클라이언트 Hello)

클라이언트가 악의적으로 변조되지 않은 경우 JA4 지문은 안정적으로 유지됩니다.

신청방법

~ 안에 봇 완화 시나리오에서 클라이언트 식별을 위해 JA4 지문을 적용하려면 클라이언트 IP 정보, 클라이언트 운영 체제 정보, 클라이언트 장치 이름, 버전 번호 등의 다른 정보와 결합해야 합니다. 이러한 시나리오에서 JA4 지문은 지문 고유성 감지와 지문 일관성 감지라는 두 가지 주요 적용 방법을 갖습니다.

  1. 고유성 감지: 일부 클라이언트 프로그램은 고유한 JA4 지문을 갖도록 설계되었으며 이러한 클라이언트의 지문은 드물게 변경됩니다. 고유성 감지를 통해 이러한 비정상 클라이언트를 효과적으로 식별할 수 있습니다.
애플리케이션 JA4+ 지문
크롬 JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (초기)
JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (다시 연결)
파이어폭스 JA4=t13d1715h2_5b57614c22b0_7121afd63204(초기)
JA4=t13d1715h2_5b57614c22b0_7121afd63204 (다시 연결)
원정 여행 JA4=t13d2014h2_a09f3c656075_14788d8d241b
헤리트릭스 JA4=t13d491100_bd868743f55c_fa269c3d986d
감지되지 않은 크롬 드라이버 JA4=t13d1516h2_8daaf6152771_02713d6af862
IcedID 맬웨어 JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8
sql맵 JA4=t13i311000_e8f1e7e78f70_d41ae481755e
앱스캔 JA4=t12i3006h2_a0f71150605f_1da50ec048a3

표 1: 일반 클라이언트 JA4 지문

  1. 일관성 감지: 지문 일관성 감지의 원리는 클라이언트가 선언한 장치 정보(운영 체제, 브라우저 유형, 버전 번호)를 JA4 지문과 비교하여 지문에 해당하는 실제 장치 정보와 일치하는지 확인하는 것입니다.
클라이언트가 선언한 장치 정보 클라이언트 JA4 지문 일관성
“브라우저”: “크롬”, “브라우저 버전”: “89.8.7866”, “os”: “Windows”, “os_version”: “7” t12d290400_11b08e233c4b_017f05e53f6d 이상
“브라우저”: “크롬”, “브라우저 버전”: “93.0.4622”, “os”: “Windows”, “os_version”: “10” t13d431000_c7886603b240_5ac7197df9d2 이상
“브라우저”: “파이썬 요청”, “브라우저 버전”: “2.31” t13d1516h2_8daaf6152771_02713d6af862 이상
“브라우저”: “크롬”, “브라우저 버전”: “93.0.4577”, “os”: “Windows”, “os_version”: “10” t13d1516h2_8daaf6152771_e5627efa2ab1 정상
“브라우저”: “파이어폭스”, “브라우저 버전”: “116.0”, “os”: “우분투” t13d321200_1b30506679d3_58ed7828516f 이상
“브라우저”: “에지”, “브라우저 버전”: “14.14393”, “os”: “Windows”, “os_version”: “10” t12d040400_a6a9ac001284_255c81f47ac1 이상
“브라우저”: “사파리”, “브라우저 버전”: “15.6”, “os”: “Mac OS X”, “os_version”: “10.15.7” t13d2014h2_a09f3c656075_f62623592221 정상

표 2: JA4 일관성 감지

  1. JA4 지문 데이터베이스: 봇 완화 시나리오에서 JA4 고유성 또는 일관성 특성을 통해 기본 논리는 JA3 지문과 유사하게 데이터 지원을 위해 방대한 JA4 지문 데이터베이스에 의존합니다. 따라서 포괄적인 지문 데이터베이스를 구축하는 것은 JA4가 봇 트래픽을 식별하는 데 성공하는지 여부를 결정하는 핵심 요소 중 하나입니다.

공식 JA4+ 지문 데이터베이스, 관련 애플리케이션 및 권장 탐지 로직이 아직 구축 중이므로 현재 사용 가능한 지문 데이터베이스가 없습니다. 따라서 / Security Lab은 특정 봇 완화 시나리오에 대한 일반적인 클라이언트 지문을 수집하고 해당 탐지 알고리즘을 구현했습니다.

결론

이 분석은 TLS 지문이 매우 효과적인 도구임을 보여줍니다. TLS 클라이언트의 클라이언트 Hello 패킷에서 다양한 필드를 심층 분석하여 고유한 JA4 지문을 생성하고 이러한 지문을 사용하여 특정 악성 봇 트래픽을 식별할 수 있습니다.

TLS 지문은 봇 트래픽을 효과적으로 감지할 수 있지만, 특정 한계도 있습니다. 공격자가 지속적으로 전략을 업그레이드하고 변경함에 따라 TLS 지문은 계속해서 변조되거나 위조될 것입니다. 따라서 공격과 방어 간의 지속적인 전투에서 우위를 유지하기 위해 감지 메커니즘을 지속적으로 업데이트하고 개선해야 합니다.

봇 완화 시나리오에서 TLS 지문은 강력한 식별 메커니즘을 제공하지만 다른 보안 조치를 대체할 수는 없습니다. 위협 인텔리전스, 브라우저 지문 및 기타 조치와 함께 사용하여 철저한 보호를 제공하는 포괄적인 봇 보안 전략의 일부로 간주해야 합니다.

CDNetworks를 무료로 체험하세요

대부분의 제품에는 14일간의 무료 체험이 제공됩니다. 신용카드가 필요하지 않습니다.

더 많은 탐색

기타

CDNetworks Edge 애플리케이션을 통해 서버리스 컴퓨팅의 잠재력을 최대한 활용하세요

CDNetworks의 서버리스 엣지 컴퓨팅 솔루션인 엣지 애플리케이션을 소개합니다. 작동 방식, 주요 이점, 그리고 실제 사용 사례를 알아보세요.

더 읽기 »
클라우드 보안

CDNetworks, 1.24Tbps의 대규모 DDoS 공격으로부터 브라우저 게임 플랫폼을 방어

2024년 10월 24일, CDNetworks는 동남아시아에 대규모 사용자 기반을 둔 브라우저 게임 플랫폼을 타겟으로 한 대규모 DDoS 공격을 성공적으로 완화했습니다. 이 공격은 네트워크 계층에서 1.24Tbps에 도달했고 애플리케이션 계층에서 수백만 QPS를 넘어섰습니다.

더 읽기 »