[CCT(Cyber Crime Tracker) ②] 사이버 범죄를 추적하는 눈: 단계별 데이터 수집과 분석 파이프라인

1탄에서는 불법 도박사이트를 포함한 유해사이트들이 단독으로 존재하는 것이 아니라, 서로 유기적으로 연결된 ‘사이버범죄 생태계’를 이루고 있음을 살펴보았습니다.(1탄 링크) 그리고 이 생태계를 체계적으로 추적하기 위한 CCT(Cyber Crime Tracker) 프레임워크의 필요성을 소개했습니다. 이번 2탄에서는 CCT 프레임워크의 첫 단추이자 ‘추적하는 눈’이라 할 수 있는 데이터 수집부터 최종 분석에 이르기까지, 그 단계별 과정을 구체적으로 살펴봅니다.

사이버 범죄 : 불법도박, 성인, 불법 웹툰 등 다양한 불법·유해사이트 내 모든 위법 행위

한 발 더 들어가기: 데이터가 없으면 분석도 없다.

사이버 범죄 생태계를 분석하려면, 먼저 분석할 대상 데이터를 확보해야 합니다. 그런데 유해사이트 데이터 수집은 일반적인 웹 크롤링과는 차원이 다릅니다. 불법 도박사이트들은 수시로 URL을 바꾸고, 회원가입 버튼 등 핵심 정보를 자바스크립트로 동적으로 렌더링하며, 차단을 피하기 위해 해외 서버와 클라우드를 적극적으로 활용합니다. 즉, 탐지를 피하기 위해 끊임없이 변화하는 대상을 추적해야 한다는 점에서 기술적 도전이 큽니다.

CCT 프레임워크는 이 문제를 해결하기 위해 크게 세 가지 모듈로 구성된 파이프라인을 구축했습니다.

  • URL&콘텐츠수집부: 정적/동적 웹크롤러 기반 도박사이트 관련 URL 및 콘텐츠 수집
  • AI기반 웹 분석부: AI/XAI 기반 웹사이트 분류 및 데이터 분석, 키워드 트렌드 변화 탐지
  • 심층 인텔리전스 확장부: 다양한 분석 도구를 활용한 인텔리전스 구축

이번 글에서는 앞의 세 모듈, 즉 수집과 분석의 과정에 집중해서 살펴보겠습니다.

그림 1 CCT의 사이버 범죄 사이트 수집 및 분류 개념도

1단계: URL&콘텐츠수집부 — 변화하는 사이트를 놓치지 않는 크롤링

정적 크롤러: 이미 알려진 유해사이트에서 새로운 단서를 찾다

앞선 포스팅에서 정적 크롤링과 동적 크롤링의 기본적인 개념과 차이점에 대해 소개해 드린 바 있는데요. 이번 단계에서는 이 두 가지 크롤러가 실제 유해사이트 수집 과정에서 어떻게 활약하는지 구체적으로 살펴보겠습니다.

첫 번째 수집 방식은 정적 크롤링입니다. 이 과정은 우리가 이미 확보해 둔 유해사이트 데이터베이스를 출발점으로 삼아 시작됩니다. 시스템은 기존 DB에서 탐색할 대상 URL을 먼저 선정한 뒤, 해당 사이트들에 접속해 HTML 웹 페이지 원본을 그대로 수집합니다. 그런 다음 수집된 데이터 속에서 다른 페이지로 연결되는 <a> 태그를 집중적으로 분석하고 TLD(최상위 도메인)를 추출해 냅니다. 이렇게 찾아낸 새로운 주소들이 기존 DB에 이미 존재하는지 중복 검사를 거치게 되면, 결과적으로 아직 발견되지 않았거나 최근 주소를 바꾼 새로운 도박사이트 URL들을 효과적으로 솎아낼 수 있습니다.

동적 크롤러: 자바스크립트까지 실행해 핵심 콘텐츠를 잡아내다

최근 불법 도박사이트들은 보안 솔루션의 탐지를 피하기 위해 회원가입 버튼이나 입금 안내와 같은 핵심적인 정보들을 자바스크립트로 렌더링해 숨겨두는 경우가 많습니다. CCT는 이러한 정보들을 놓치지 않기 위해 실제 웹 브라우저 환경을 그대로 구동하는 동적 크롤러도 병렬적으로 활용합니다.

동적 크롤러는 가상의 환경에서 웹 브라우저를 직접 실행하여 대상 URL에 접속하며, 접속 후에는 사이트 내의 자바스크립트를 끝까지 실행시켜 최종적으로 렌더링 된 HTML 요소들과 PNG 이미지 등 모든 시각적 콘텐츠를 모두 완벽히 수집합니다. 단순히 화면만 캡처하는 것이 아니라, 태그(Tag) 속성 정보를 바탕으로 설정된 자체 규칙(Rule)을 활용해 회원가입 버튼 등을 스스로 탐색하고 다음 페이지로 직접 접근하여 해당 페이지의 콘텐츠까지 모두 저장합니다.

특히 이 수집 과정의 가장 큰 특징이자 중요 기술적 강점은 기본적인 HTML 텍스트나 메타 정보를 넘어서, 이미지 파일 속에 교묘하게 숨겨진 글자들까지 광학 문자 인식(OCR) 기술을 통해 텍스트로 추출한다는 점입니다. 이렇게 키워드 소스를 다각화함으로써, 단순한 텍스트 분석만으로는 절대 잡아낼 수 없을 뿐만 아니라 소위 말해 휴먼 식별 정보들까지 성공적으로 확보할 수 있습니다.

그림 2 정적/동적 크롤링 기반 데이터 수집 기술

2단계: AI기반 웹 분석부 — 수집된 데이터를 지능적으로 분류하다

URL과 웹 콘텐츠가 성공적으로 수집되었다면, 이제 이 데이터가 실제로 어떤 종류의 사이트인지 자동으로 판별하는 단계가 필요합니다. CCT는 AI와 XAI기반의 고도화된 분류 시스템을 통해 이 작업을 수행합니다.

딥러닝 기반 유해사이트 분류 모델

수집된 사이트들을 단순히 ‘유해한가, 정상인가’로만 이분화하여 분류하는 것만으로는 사이버 범죄에 대한 깊이 있는 분석이 어렵습니다. 따라서 CCT는 분석 대상을 정확하게 선정하기 위해 대규모 언어 모델(LLM)인 BERT(Bidirectional Encoder Representations from Transformers)를 활용하여 세밀한 분류 체계를 거칩니다. 분석 모델은 수집된 사이트들을 일상적인 정상 사이트부터 시작해, 카지노나 스포츠 토토를 포함하는 도박 사이트, 웹툰 불법 공유 사이트, TV 및 영상 불법 스트리밍 사이트, 성인 사이트 등으로 상세히 구분합니다. 이에 더해 다른 불법 사이트로 접속하게 만드는 관문 역할을 하는 주소모음 사이트나 약물 관련 불법 사이트까지 정확히 판별해 냅니다. 이러한 정밀한 분류가 가능한 이유는 BERT가 단순히 사이트 텍스트 내에 특정 단어가 몇 번 등장했는지 그 횟수만 세는 것이 아니라, 단어들 사이의 문맥과 연관성을 깊이 있게 학습하기 때문입니다. 이렇게 훈련된 모델은 주어진 사이트가 각 카테고리(도박, 웹툰 등)에 속할 확률을 계산하여 가장 점수가 높은 곳으로 명확히 분류해 냅니다. 이처럼 사이트의 성격을 다양한 카테고리로 입체적으로 분류함으로써, 우리는 단순히 개별 불법 도박사이트 하나를 찾는 것을 넘어 그들과 긴밀하게 연결된 주변 유해사이트 생태계 전체의 구조를 명확하게 파악할 수 있습니다.

XAI로 분류 결과의 근거를 설명하다

딥러닝 모델이 내놓는 분류 결과는 강력하고 정확하지만, 치명적인 단점이 하나 있습니다. 바로 ‘왜 이 사이트를 도박 사이트라고 판단했는가?’에 대한 논리적인 이유를 설명하지 못한다는 점입니다. CCT는 이른바 AI의 ‘블랙박스’로 불리는 이 문제를 SHAP(SHapley Additive exPlanations) 알고리즘을 적용하여 속 시원하게 해결했습니다.

SHAP 알고리즘을 시스템에 적용하게 되면, AI가 최종 분류 결과를 도출하는 과정에서 가장 큰 영향을 미친 특정 키워드나 특징들의 기여도를 명확한 수치로 산출해 낼 수 있습니다. 이 과정을 통해 ‘카지노’, ‘룰렛’, ‘미니게임’, ‘슬롯’ 등 도박과 직결되는 핵심 키워드들이 실제 분류 과정에 얼마만큼의 영향을 미쳤는지 사용자가 한눈에 알아볼 수 있도록 시각화해 줍니다. 나아가 이러한 분류 모델 분석 과정을 통해 유의미한 주요 키워드들을 지속적으로 축적하고, 범죄자들이 사용하는 은어나 키워드의 트렌드 변화까지 민첩하게 탐지해 낼 수 있습니다.

결과적으로 특정 사이트가 도박 사이트로 분류되었을 때, 시스템은 단순히 결과만 던져주는 것이 아니라 “이 사이트를 도박으로 분류하는 데에는 ‘카지노’, ‘스포츠 베팅’, ‘미니게임’이라는 키워드가 결정적으로 작용했다”는 명확한 해석을 자동으로 제공합니다.

그림 3 AI 모델과 XAI 모델을 통한 유해사이트 분류 및 결과 근거 설명

3단계: 심층 인텔리전스 확장부 — 사이트 너머 운영 조직의 실체를 파고들다

앞선 단계의 AI 분류 모델을 통해 사이트의 성격을 정확히 파악했다 하더라도, 그것만으로는 도대체 ‘누가’ 이 불법 사이트들을 운영하고 있는지 알아낼 수 없습니다. 이 한계를 극복하기 위해 CCT의 ‘심층 인텔리전스 확장부’는 사이트 내·외부의 정보들을 샅샅이 뒤져 베일에 싸인 운영 조직의 단서를 집요하게 추적합니다.

소스코드·이미지·키워드를 활용한 유해사이트 인텔리전스

단순한 네트워크 정보 수집을 넘어, CCT는 사이트를 구성하는 콘텐츠 그 자체를 샅샅이 분석하여 운영 조직의 숨겨진 꼬리를 찾아냅니다. 웹 페이지를 구성하는 HTML 태그와 자바스크립트 코드를 수집한 뒤, 이를 바탕으로 사이트 간의 유사도를 계산하고 구조를 군집화하는 작업을 거칩니다. 이 과정에서 단순히 화면에 표시되는 콘텐츠만 수집하는 것이 아니라, HTML 태그와 스크립트 내부에 포함된 다양한 운영 정보를 함께 분석합니다. 예를 들어 회원가입 링크나 광고 배너에 포함된 가입 코드, 추천인 코드, 제휴 식별자 등을 추출하여 운영 조직 간의 연관성을 분석합니다. 또한 HTML 및 JavaScript 주석(Comment)에 포함된 개발자 메모, 템플릿 정보, 버전 정보 등을 수집하여 사이트 제작 환경이나 CMS(Content Management System) 정보를 추론합니다. 일부 사이트의 경우 동일한 CMS 템플릿이나 스크립트 구조가 반복적으로 발견되며, 이는 서로 다른 도메인 간의 기술적 연관성을 식별하는 중요한 단서로 활용됩니다.

이렇게 확보된 수많은 단서들은 운영자(Operator), CMS, 각 콘텐츠(HTML, 스크립트, 이미지), 파비콘 등의 세부 데이터베이스로 나뉘어 견고하게 저장됩니다. 이 데이터가 빛을 발하는 순간이 있습니다. 예를 들어, 디자인이나 이름이 완전히 달라서 겉보기에는 무관해 보이는 두 도박 사이트가 내부적으로 동일한 소스코드 주석, 텔레그램 채널과 가입 코드를 공유하고 있다는 사실이 이 분석을 통해 드러난다면, 이는 두 사이트가 같은 조직에 의해 운영되고 있다는 매우 강력한 교차 증거가 됩니다.

그림 4 다양한 콘텐츠 분석을 통한 유해사이트 운영조직 인텔리전스 구축 절차

마치며

이번 글에서는 CCT 프레임워크가 불법 유해사이트 데이터를 어떻게 효과적으로 수집하고, AI를 활용해 그 성격을 정확히 분류하는지, 그리고 확보된 콘텐츠에서 운영 조직과 운영 클러스터의 단초가 될 만한 정보를 어떻게 찾아내는지 살펴보았습니다. CCT 프레임워크의 궁극적인 핵심 목표는 단순한 URL 수집을 넘어 사이트 내부 깊숙한 곳에서 조직의 흔적을 발굴하는 데 있습니다.

이어지는 다음 3탄에서는 이번 글에서 다루지 않은 ‘OSINT 도구를 활용한 네트워크 인텔리전스 구축’과 ‘OWASP를 활용한 보안 취약점 탐색 및 정보 수집’ 기법을 통해 어떻게 더 입체적으로 범죄 조직을 추적하는지 상세히 알아볼 예정입니다. 아울러 이렇게 치밀하게 쌓인 데이터들을 바탕으로 어떻게 운영조직을 식별하는 인텔리전스로 활용하는지 소개하겠습니다. 많은 기대 부탁드립니다.

참고문헌

[1] 이경석, “디지털 질병! 불법 도박사이트의 특징을 파헤치다.”, CSRC Weblog, 2022.
[2] 임규민, 이경석, “온라인 불법 도박 사이트!! 어떻게 효과적으로 탐색하고 분류할 수 있을까?”, CSRC Weblog, 2022.
[3] 이경석, “도박사이트 파헤치기 1부 (네트워크형 사이버 불법/유해 사이트 특징)”, CSRC Weblog, 2023.
[4] 이경석, “도박사이트 파헤치기 2부 (불법 도박사이트의 기술적 진화)”, CSRC Weblog, 2023.
[5] 최규현, “대규모 언어 모델을 이용한 유해사이트 분류하기 1부”, CSRC Weblog, 2023.
[6] 최규현, “대규모 언어 모델을 이용한 유해사이트 분류하기 2부”, CSRC Weblog, 2024.
[7] 박상류, “유해사이트 군집화를 통한 유해사이트 조직적 운영 특징 분석”, CSRC Weblog, 2023.
[8] Choi Gyu-hyeon, ” [Cyber Crime Tracker (CCT) ①] Rethinking Harmful Websites: The Cybercrime Ecosystem Perspective and the Need for the CCT Framework,” CSRC Weblog, 2026.
[9] G.H Choi et al., “Detecting and Classifying Harmful Websites with Specific Korean Keywords Using a Large Language Model”, 2024 IEEE International Conference on Big Data and Smart Computing, 2024.

1 명이 이 글에 공감합니다.