TLS 핸드쉐이크로 구분하는 웹 악성봇 탐지

TLS 핸드쉐이크로 구분하는 웹 악성봇 탐지
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 TLS 클라이언트 핸드쉐이크 정보를 압축한 JA4 지문을 이용해 인간 사용자와 악성 웹 봇을 구분한다. JA4DB 데이터셋을 기반으로 특징을 추출하고, XGBoost와 CatBoost 두 개의 그래디언트 부스팅 모델을 학습시켰다. CatBoost 모델이 AUC 0.998, F1 0.9734, 정확도 98.63%를 기록하며 가장 우수한 성능을 보였다. 주요 특징으로는 ja4_b, cipher_count, ext_count가 모델 예측에 큰 영향을 미쳤으며, 전체 시스템은 TLS 레이어에서의 변조가 어려운 점을 활용해 프라이버시를 유지하면서 효과적인 봇 탐지를 가능하게 한다. 향후 HTTP/3 등 새로운 프로토콜과 추가 디바이스 지문을 결합해 고도화된 회피 기법에 대응하고자 한다.

상세 분석

이 연구는 웹 트래픽에서 인간과 악성 봇을 구분하기 위해 TLS 핸드쉐이크 단계의 메타데이터를 활용한다는 점에서 기존의 쿠키 스푸핑, User‑Agent 변조, 마우스·키보드 동작 분석 등 상위 레이어 기반 방법과 차별화된다. JA4는 ClientHello의 버전, 암호 스위트 리스트, 확장 필드, ALPN 순서 등을 문자열로 압축해 고유 지문을 만든다. 논문은 JA4DB라는 공개 데이터베이스에서 227,404개의 레코드를 수집했으며, 여기에는 정상 사용자, 알려진 크롤러, 악성 봇 트래픽이 포함된다. 라벨링은 User‑Agent 문자열에 “bot”이 포함된 경우를 악성 봇(‘bad bot’)으로, “Googlebot”, “Bingbot” 등은 ‘good bot’으로 분류하고 학습에서 제외하였다. 최종 학습 데이터는 악성 봇 50,212건(22.08%)과 정상 사용자 148,610건(65.35%)으로 구성되었다.

특징 추출 단계에서는 JA4 문자열을 파싱해 ja4_b(버전·TLS 1.2·1.3 구분), cipher_count(암호 스위트 개수), ext_count(확장 필드 개수), ja4_s, ja4_h 등 15여 개의 수치형·범주형 변수로 변환하였다. 이후 결측값 처리와 원-핫 인코딩을 수행하고, 클래스 불균형을 고려해 가중치를 부여하였다.

모델링에는 XGBoost와 CatBoost 두 가지 그래디언트 부스팅 알고리즘을 적용했으며, 하이퍼파라미터는 교차 검증을 통해 최적화하였다. 평가 지표는 AUC, F1, 정확도, 정밀도·재현율이며, CatBoost가 AUC 0.998, F1 0.9734, 정확도 0.9863으로 가장 우수했다. XGBoost도 AUC 0.996 수준으로 근접한 성능을 보였다. 특징 중요도 분석에서는 SHAP 값을 이용해 ja4_b, cipher_count, ext_count가 모델 결정에 가장 큰 기여를 함을 확인했다. 이는 악성 봇이 사용하는 TLS 라이브러리가 최신 브라우저와 다른 암호·확장 구성을 갖는 경향이 있음을 시사한다.

한계점으로는 실제 브라우저 엔진을 구동하는 자동화 도구(Puppeteer, Playwright 등)는 정상 브라우저와 동일한 JA4 지문을 생성하므로 탐지가 어려우며, 고도화된 TLS 스푸핑 툴이 브라우저와 동일한 ClientHello를 재현할 경우에도 방어가 무력화된다. 따라서 JA4만으로는 완전한 인증이 불가능하고, 로그 분석, 행동 기반 탐지 등 다른 레이어와 결합해야 한다.

향후 연구에서는 HTTP/3의 QUIC 핸드쉐이크에 적용 가능한 JA4‑Q 지문을 설계하고, 디바이스‑레벨 지문(예: OS, 하드웨어 특성)과 결합해 다중 모달 탐지 프레임워크를 구축할 계획이다. 또한, 적대적 학습을 통해 TLS 스푸핑 공격에 대한 내성을 검증하고, 실시간 스트리밍 환경에서의 배포 효율성을 평가할 예정이다.


댓글 및 학술 토론

Loading comments...

의견 남기기