* 출처는 안랩입니다.
최근 유출된 비밀번호를 활용한 크리덴셜 스터핑(Credential Stuffing) 공격이 급격히 증가하며 기업과개인 모두에게 심각한 위협으로 떠오르고 있다. 단순히 유출된 계정 정보를 무차별적으로 입력하는 방식에서 출발한 이 공격은, 자동화 도구의 발전과 계정 재사용이라는 취약점이 더해지며 대규모 계정 탈취와 금전적 피해로 이어지고 있다. 또한, 웹 프록시 활용, 사용자 에이전트 위조, 분산된 로그인 요청 등으로 정상 사용자 트래픽을 모방해 탐지를 우회하는 등 수법도 점점 고도화되고 있다. 이에 따라 기존의 방화벽이나 단순한 인증 실패 횟수 기반 탐지 방식만으로는 대응에 한계가 있다. 이번 글에서는 실제 사례를 통해 크리덴셜 스터핑 공격의 개념과 특징을 짚어보고, 효과적인 탐지 방안을 소개한다.
[그림 1] IBM에서 제공한 연도별 데이터 유출 사고 비용 (2019~2024)
먼저, 크리덴셜 스터핑이란 이미 유출된 사용자의 계정 정보를 활용해 여러 웹 사이트나 서비스에 자동화된 방식으로 무단 접근을 시도하는 사이버 공격 기법이다. 이 공격은 대부분의 사용자가 여러 사이트에서 동일한 로그인 정보를 재사용한다는 점을 악용한다.
크리덴셜 스터핑은 단순한 무차별 대입 공격(Brute Force)과는 다르다. 무차별 대입 공격이 가능한 비밀번호 조합을 시도하는 반면, 크리덴셜 스터핑은 이미 확보된 실제 사용자 인증 정보를 사용한다. 이런 특성 때문에 성공 확률이 더 높으며, 한 서비스에서 데이터 유출이 발생하면 동일한 인증 정보를 사용하는 다른 서비스도 위험에 노출될 수 있다.
1. 크리덴셜 스터핑 공격 기법
크리덴셜 스터핑은 자동화 도구의 발전과 함께 점점 더 정교하고 탐지하기 어려운 방식으로 진화하고 있다. 초기에는 curl이나 Python requests와 같은 단순 HTTP 클라이언트를 통해 계정 정보를 무작위로 입력하는 방식이 사용됐다. 이 방식은 비정상적인 트래픽 패턴으로 인해 비교적 쉽게 탐지되는 한계가 있다.
1) 헤드리스 브라우저 사용
최근에는 헤드리스 브라우저(Headless Browser)가 주요 공격 수단으로 사용된다. 헤드리스 브라우저란, 사용자 인터페이스(GUI) 없이 동작하는 웹 브라우저로, 화면에는 아무것도 보이지 않지만 실제 브라우저처럼 웹사이트를 렌더링하고 자바스크립트를 실행할 수 있다. 이를 통해 공격자는 로그인 페이지에 접속해 ID/PW를 입력하고 버튼을 클릭하며, 자바스크립트를 실행하거나 쿠키를 설정하는 등 정상 사용자와 유사한 트래픽을 생성한다. 대표적으로 공격에 악용되는 브라우저는 Puppeteer, Playwright가 있다.
2) CAPTCHA 우회
공격자들은 CAPTCHA와 같은 자동화 방지 장치를 우회하기 위해 다양한 전략을 활용한다. 텍스트 기반 CAPTCHA는 OCR 엔진으로, 이미지 선택형은 CNN 기반 분류 모델을 활용해 자동화한다. 이 외에도 CAPTCHA 솔빙 서비스를 활용한다. 예를 들어 2Captcha나 Anti-Captcha와 같은 플랫폼은 실제 사람이 CAPTCHA 문제를 실시간으로 풀고, 그 결과를 API로 공격자에게 전송해주는 방식이다. 이렇게 하면 봇이 직접 이미지를 인식하지 않아도 CAPTCHA를 통과할 수 있다.
2. 크리덴셜 스터핑 피해 사례
크리덴셜 스터핑은 로그인 시도를 넘어, 실제로 다양한 기업과 서비스에서 개인정보 유출로 이어진 사례가 다수 보고되고 있다.
2023년, 크리덴셜 스터핑 공격으로 인해 유전자 검사 서비스 제공업체인 23andme의 약 690만 명의 고객 정보가 탈취당하는 사건이 발생했다. 23andme는 미국의 생명 공학 및 유전체학 기업으로, 고객이 침샘 샘플을 회사 실험실로 보내면 조상 및 유전자와 관련된 검사 등을 서비스해주며 연결된 가족 정보까지 확인이 가능하다. 이 사건은 고객들이 다른 플랫폼에서 사용했던 계정 정보를 재사용한 것이 주요 원인으로 지목됐다.
공격자는 유출된 이메일과 비밀번호 조합을 이용해 자동화 도구로 테스트했으며, 탈취한 데이터를 다크웹 포럼에 게시했다. 23andme 사건은 다음 2가지 문제점으로 인해 발생한 것으로 보고 있다.
(1) DNA Relatives 기능 구조 취약성으로, 하나의 계정이 침해되면 연결된 수백~수천 명의 사용자 데이터가 노출되는 구조임
(2) 계정에 다중인증 기능이 활성화되지 않음
2024년 6월에는 클라우드 업체인 스노우플레이크의 고객사들이 크리덴셜 스터핑 공격으로 인해 수억 건의 데이터가 탈취되는 사건이 발생했다. 이 사건은 스노우플레이크 서비스를 이용하는 고객사 담당자들의 노트북에 인포스틸러가 설치돼 계정 정보가 유출된 것으로 확인됐다. 공격자들은 탈취한 계정 정보로 스노우플레이크에 접속해 데이터를 빼냈으며, 특히 다중인증 기능(2FA)이 설정돼 있지 않아 계정에 쉽게 접근할 수 있었다.
공격에 사용된 계정 중 약 79.7%는 이전에 이미 자격 증명이 노출된 적이 있는 것으로 확인됐으며, 인포스틸러 감염 날짜는 데이터 탈취 시점보다 약 4년 전인 것으로 밝혀졌다. 이 사례는 다음과 같은 보안 취약점으로 인해 발생한 것으로 분석되고 있다.
(1) 계정에 다중인증 기능이 활성화되지 않았음
(2) 계정 비밀번호가 수년 동안 변경 없이 사용됨
(3) 계정 로그인 시 네트워크 허용 목록이 설정되지 않았음
크리덴셜 스터핑 공격을 탐지하기 위해서는 다양한 방식의 탐지 기법이 활용된다. 이번 글에서는 룰 기반 탐지와 자동화된 이상행위 기반 탐지를 중점적으로 소개한다.
1) 시그니처 기반 탐지
크리덴셜 스터핑 공격은 주로 다양한 계정에 반복적으로 로그인 시도를 수행하는 방식으로 이루어진다. 따라서 탐지 시에는 로그 기반의 규칙(Rule) 설정을 통해 비정상적인 인증 시도를 식별할 수 있다.
대표적인 탐지 방법으로는 동일한 IP 주소나 동일한 User-Agent에서 다수의 계정에 대해 반복적인 로그인 시도가 발생하는 경우를 탐지할 수 있다. 또는 특정 계정이나 IP의 로그인 실패율이 비정상적으로 높을 경우 이를 이상 징후로 판단할 수 있다. 또한 정상 사용자들의 로그인 성공률, 접속 시간대, 지역 등의 패턴과 비교해 비정상 행위를 식별하는 방식도 사용된다.
이러한 탐지는 주로 SIEM이나 WAF, 인증 서버의 로그 분석 시스템을 활용하여 이루어지며, 예를 들어 “5분 이내 로그인 실패 10회 이상 발생” 또는 “동일 IP에서 20개 이상의 계정에 로그인 시도 발생” 등의 룰을 설정해 이상 행위를 실시간으로 탐지할 수 있다.
정상 사용자들의 평균적인 접속 패턴을 기준 삼아 예외 상황을 선별하고, 실시간 탐지를 통해 보안 경고를 발생시킬 수 있다.+
* 전체내용은 아래에서 확인하세요.