Article

크리덴셜 스터핑(Credential Stuffing): 무차별 대입 공격의 진화

크리덴셜 스터핑의 기본 개념

크리덴셜 스터핑은 해킹 기법 중 하나로, 이미 유출된 사용자 아이디와 비밀번호 조합을 다른 다양한 웹사이트나 서비스에 무차별적으로 입력해 보는 공격 방식을 의미합니다. 이 공격은 새로운 비밀번호를 추측하거나 브루트 포스 방식으로 무작위 대입하는 전통적인 방법과는 차원이 다릅니다. 공격자는 다크웹 등에서 유통되는 거대한 규모의 유출된 계정 정보 목록을 확보한 후, 자동화된 도구를 이용해 수천, 수만 개의 사이트에 동일한 자격 증명을 시도합니다. 사용자가 여러 곳에서 동일한 아이디와 비밀번호를 재사용하는 습관을 악용하는 것이 이 공격의 핵심 메커니즘입니다.

이 기법이 효과를 발휘하는 이유는 매우 명확하다. 한 곳에서 데이터 유출 사고가 발생하면, 해당 사건으로 노출된 자격 증명이 다른 전혀 무관한 서비스에서도 그대로 재사용될 가능성이 높기 때문이다. 실제 관련 정보 이동 과정에서 확인할 수 있듯이, 공격자 입장에서는 새로운 암호를 해킹할 필요 없이 이미 확보된 정보라는 ‘열쇠’를 이용해 여러 서비스에 대한 로그인을 시도하는 것이 훨씬 효율적이다. 이러한 구조로 인해 단 한 번의 대규모 유출 사고가 수많은 플랫폼에서 연쇄적인 계정 탈취로 확산될 수 있으며, 이는 전체 디지털 서비스 생태계의 신뢰성을 심각하게 위협하는 요인으로 작용한다.

크리덴셜 스터핑은 단순한 기술적 취약점 공격이 아니라, 인간의 행동 패턴에 기반한 사회공학적 요소가 강한 공격으로 평가받습니다. 따라서 이에 대한 대응은 단순한 기술적 차원을 넘어서 사용자 습관 개선과 지속적인 모니터링이 함께 수반되어야 합니다. 이 공격으로 인해 개인은 금융 정보 유출부터 SNS 계정 장악까지 다양한 2차 피해를 입을 수 있으며, 서비스 제공자 역시 신뢰도 하락과 법적 책임이라는 무거운 부담을 지게 됩니다.

전통적인 무차별 대입 공격과의 차이점

전통적인 브루트 포스 공격은 특정 대상 계정에 대해 가능한 모든 비밀번호 조합을 순차적으로 시도하는 방식을 말합니다. 이는 시간이 매우 오래 걸리고, 현대적인 로그인 시도 제한이나 복잡한 암호 정책 앞에서는 효율이 극히 낮습니다. 반면, 크리덴셜 스터핑은 특정 계정을 노리는 것이 아니라, 이미 유효성이 검증된 자격 증명 목록을 가지고 넓은 범위의 표적을 공격합니다. 공격의 출발점이 ‘유출된 실제 데이터’라는 점에서 훨씬 더 정확하고 성공 확률이 높습니다.

공격의 규모와 속도에서도 현격한 차이를 보입니다. 무차별 대입은 한 계정당 초당 수천 번의 시도를 필요로 할 수 있지만, 크리덴셜 스터핑은 초당 수백 개의 서로 다른 사이트에 대해 각각 한두 번의 시도만 하면 됩니다. 이는 일반적인 로그인 실패 감지 시스템을 우회하기에 더 용이합니다. 왜냐하면 특정 사이트에서 볼 때, 동일한 아이디로 수만 번 시도하는 것이 아니라, 다양한 아이디로 각각 소수만 시도하는 패턴이기 때문입니다.

따라서 방어 측면에서도 접근법이 달라져야 합니다. 브루트 포스 공격은 로그인 시도 횟수 제한이나 CAPTCHA 도입으로 상당 부분 막을 수 있지만, 크리덴셜 스터핑에 대해서는 이러한 방법만으로는 불충분합니다. 공격이 분산되고 지능화되었기 때문에, 유출된 자격 증명 데이터베이스를 사전에 확인하거나 비정상적인 로그인 위치를 탐지하는 등 더 정교한 보안 계층이 필요해졌습니다.

공격이 실행되는 구체적인 과정

크리덴셜 스터핑 공격의 첫 단계는 대량의 자격 증명 데이터를 확보하는 것입니다. 공격자는 주로 과거에 발생한 다양한 데이터 유출 사건에서 쏟아져 나온 아이디와 비밀번호 목록을 확보합니다. 이러한 목록은 종종 ‘컴보 목록’이라고 불리며, 수억 개에 달하는 기록을 포함하기도 합니다. 이 데이터는 암호화되지 않은 평문 형태일 수도 있고, 해시된 형태일 수도 있으나, 공격자는 이를 복호화하거나 크래킹하는 도구를 함께 활용합니다.

다음 단계는 자동화 도구를 이용한 실제 공격입니다, 공격자는 프록시 서버나 봇넷을 이용해 자신의 실제 ip 주소를 숨기고, 전 세계에 분산된 ip에서 로그인 시도를 합니다. 특수 제작된 스크립트나 상용화된 공격 도구는 수백 개의 웹사이트 로그인 페이지에 이 유출된 자격 증명을 순차적으로 입력합니다. 성공적으로 로그인된 계정은 별도의 목록으로 분류되고, 공격자는 즉시 해당 계정에 접근할 수 있게 됩니다.

최종 단계에서는 탈취한 계정을 악용합니다. 목적은 계정의 가치에 따라 다릅니다. 금융 계정에서는 직접적인 자금 탈취가 이루어지고, SNS나 이메일 계정에서는 스팸 발송이나 추가적인 피싱 공격의 발판으로 사용됩니다. 게임 계정이라면 아이템을 훔쳐 판매하기도 합니다. 때로는 접근 권한 자체를 판매하거나, 기업 내부 계정을 통해 더 깊은 네트워크로 침투하는 발판으로 삼기도 합니다.

푸른색 디지털 자물쇠에 도둑이 훔친 신분증과 비밀번호 종이를 우겨 넣는 모습이다.

크리덴셜 스터핑 공격의 심각한 위험성

이 공격 방식의 가장 큰 위험성은 그 파급력에 있습니다. 사용자 한 명이 한 사이트에서의 유출 사고만 주의한다고 해서 피해를 막을 수 없습니다. 수년 전 가입했던 이미 잊혀진 커뮤니티 사이트의 데이터가 유출되었더라도, 그때 사용한 아이디와 비밀번호가 현재의 주요 금융 계정이나 업무 포털과 동일하다면 치명적인 결과를 초래할 수 있습니다. 이는 피해자가 직접적인 통제권을 행사하기 어려운 ‘과거의 행동’이 현재의 보안을 좌우하는 역설적인 상황을 만듭니다.

기업이나 서비스 제공자에게도 막대한 위험입니다. 자사의 시스템에 직접적인 취약점이 없더라도, 타사에서 유출된 데이터로 인해 자신들의 사용자 계정이 대규모로 털리는 상황이 발생할 수 있습니다. 이는 서비스에 대한 신뢰를 뿌리째 흔들며, 명백한 보안 사고로 이어져 고객 이탈과 막대한 복구 비용, 그리고 법적 소송을 불러올 수 있습니다. 따라서 현대의 온라인 서비스는 자체 인프라 보안 뿐만 아니라, 외부에서 발생한 유출 데이터가 자신들의 플랫폼을 위협할 수 있다는 사실을 인지하고 대비해야 합니다.

또한, 이 공격은 탐지가 상대적으로 어렵습니다. 공격 트래픽이 수많은 정상적인 사용자 로그인 요청 사이에 섞여 들어오기 때문입니다. 각각의 시도는 로그인 실패로 기록될 수 있지만, 그 수가 특정 임계값을 넘지 않으면 이상 징후로 판단되지 않을 수 있습니다. 공격자는 의도적으로 시도 빈도와 출처를 분산시켜 보안 시스템의 눈을 속이려 합니다. 이에 따라 공격이 발견될 때쯤이면 이미 수많은 계정이 손상된 이후인 경우가 빈번합니다.

개인 사용자가 입는 실제 피해 사례

가장 흔한 피해 사례는 온라인 쇼핑몰이나 포인트 몰의 계정 탈취입니다. 공격자는 로그인에 성공하면 저장된 결제 정보를 이용해 대리 결제를 하거나, 적립된 포인트를 탈취합니다. 사용자는 자신도 모르는 사이에 거액의 결제 내역이 발생하거나, 오랜 시간 모은 포인트가 사라진 것을 나중에야 발견하게 됩니다. 이때 피해 금액이 작은 경우에는 사용자나 사업자가 신고를 소홀히 하여 공격자가 지속적으로 소액을 취합하는 방식으로 악용하기도 합니다.

이메일이나 SNS 계정이 털리면 더 큰 2차 피해가 발생합니다. 공격자는 탈취한 이메일 계정을 통해 연락처에 있는 지인들에게 피싱 메일이나 악성 링크를 발송할 수 있습니다. 신뢰할 수 있는 발신자로부터 온 메일이기 때문에 피해 확산 가능성이 높아집니다. 또한, 해당 이메일로 가입된 모든 다른 서비스의 ‘비밀번호 찾기’ 기능을 악용해 연쇄적으로 계정을 장악할 수 있는 발판을 얻게 됩니다.

금융 계정 직접 접근보다는, 금융사 웹사이트의 ‘마이페이지’에 로그인해 개인 신상정보를 완전히 훔치는 경우도 있습니다. 이 정보는 신원 도용이나 대출 사기 등 더 중범한 범죄에 사용될 수 있습니다. 게임 계정의 경우, 수년간 투자한 시간과 금액으로 얻은 희귀 아이템이 일순간에 사라지며 정신적, 물질적 피해를 동시에 입힙니다.

기업 및 서비스 제공자에게 미치는 영향

기업은 직접적인 금전적 손실 외에도 평판 손상을 입게 됩니다. 사용자들은 자신의 개인적인 습관 탓이라기보다는 해당 서비스의 보안이 허술하다고 생각할 가능성이 높습니다. 뉴스에 ‘XX사 계정 털렸다’는 식으로 보도되는 순간 브랜드 이미지는 크게 훼손되며, 신규 가입자 유입이 줄고 기존 고객의 이탈로 이어질 수 있습니다. 가령 금융, 헬스케어 등 민감한 정보를 다루는 산업에서는 그 피해가 더욱 클 수밖에 없습니다.

운영 부담도 급격히 증가합니다, 대량의 계정 복구 요청을 처리해야 하며, 사고 조사와 고객 공지, 관련 기관 신고 등 복잡한 절차를 수행해야 합니다. 보안 강화를 위해 다단계 인증과 같은 새로운 시스템을 긴급 도입하거나, 모든 사용자에게 비밀번호 변경을 강제하는 작업은 상당한 비용과 불편함을 동반합니다. 소송과 규제 기관의 제재, 벌금 또한 감당해야 할 큰 위험 요소입니다.

내부 시스템으로의 침투 발판이 될 수 있다는 점도 심각한 위협입니다. 만약 직원이 회사 이메일 주소와 동일한 비밀번호를 개인 서비스에 사용했고, 그 개인 서비스에서 데이터가 유출되었다면, 공격자는 그 자격 증명으로 기업의 포털이나 원격 접속 시스템에 로그인을 시도할 수 있습니다. 이는 외부에서 시작된 공격이 내부 핵심 자산으로 이어지는 위험한 경로를 만들어냅니다.

크리덴셜 스터핑으로부터 자신을 보호하는 방법

가장 효과적이고 기본적인 보호 방법은 모든 중요한 계정마다 서로 다른 강력한 비밀번호를 사용하는 것입니다. ‘중요한 계정’에는 이메일, 온라인 뱅킹, 주요 SNS, 그리고 본인 확인 수단으로 사용되는 모든 서비스가 포함됩니다. 비밀번호 관리 애플리케이션을 사용하면 복잡하고 고유한 비밀번호를 생성하고 안전하게 저장하는 과정이 훨씬 수월해집니다. 이러한 도구는 마스터 패스워드 하나만 기억하면 나머지 모든 계정 정보를 관리할 수 있게 해줍니다.

가능한 경우 언제나 2단계 인증을 활성화해야 합니다. 이는 비밀번호 외에 휴대폰으로 전송된 일회용 코드나 인증 앱, 생체 정보 등 추가적인 요소를 요구하는 보안층입니다. 크리덴셜 스터핑으로 비밀번호가 유출되더라도, 두 번째 인증 단계를 통과하지 못하면 공격자는 계정에 접근할 수 없습니다. 특히 이메일과 금융 계정의 2단계 인증 설정은 반드시 필수적으로 여겨져야 합니다.

정기적으로 자신의 이메일 주소나 아이디가 데이터 유출 사건에 연루되었는지 확인하는 습관도 중요합니다. ‘Have I Been Pwned’와 같은 공개 서비스를 이용하면, 입력한 이메일 주소가 알려진 유출 데이터베이스에 포함되어 있는지 검색해 볼 수 있습니다. 만약 자신의 정보가 유출된 목록에 있다면, 해당 아이디를 사용하는 모든 사이트의 비밀번호를 즉시 변경하는 것이 현명한 조치입니다. 또한, 중요하지 않은 오래된 계정들은 사용을 중단하고 가능하면 삭제하는 것이 장기적으로 위험을 줄이는 방법입니다.

비밀번호 관리의 핵심 원칙

비밀번호를 만들 때는 길이와 복잡성 모두를 고려해야 합니다. 최소 12자 이상을 목표로 하며, 대소문자, 숫자, 특수문자를 무작위로 조합하는 것이 좋습니다. 하지만 완전한 무작위 조합은 기억하기 어려우므로, ‘문장의 첫 글자 조합’ 방식도 실용적인 대안이 될 수 있습니다. 가령, ‘나는 매일 아침 8시에 커피를 마신다!’라는 문장을 ‘나는매일아침8시에커피를마신다!’로 사용하면 길고 기억하기 쉬우면서도 상대적으로 강력한 비밀번호가 만들어집니다.

비밀번호 재사용은 절대적인 금기 사항입니다. 한 곳에서의 정보 유출이 연쇄적으로 모든 계정으로 확산되는 것을 막는 가장 확실한 방법이기 때문입니다. 처음에는 번거롭게 느껴질 수 있지만, 비밀번호 관리자를 도입하면 이 문제를 근본적으로 해결할 수 있습니다. 또한 비밀번호를 타인과 공유하거나 메모장, 이메일 등에 평문으로 저장하는 행위는 반드시 피해야 합니다. 웹사이트나 애플리케이션에서 ‘비밀번호 저장’ 기능을 사용할 경우에도, 신뢰할 수 있는 공식 비밀번호 관리자나 브라우저 내장 관리자를 활용하는 것이 비교적 안전합니다. 이러한 기본적인 보안 수칙을 지키는 것은 서버 사이드 요청 위조(SSRF) 취약점의 이해 에서 강조되듯이, 사용자가 보이지 않는 위험을 간과하거나 시스템을 과신하는 상황을 줄이는 데에도 도움이 됩니다.

정기적인 비밀번호 변경에 대해서는 논란이 있지만, 중요한 계정에 대해서는 6개월에서 1년 주기로 변경하는 것을 고려해 볼 수 있습니다. 특히 자신의 정보가 유출되었다는 알림을 받았거나, 특정 서비스로부터 데이터 유출 통보를 받은 경우에는 즉시 변경해야 합니다. 변경 시에는 이전에 사용했던 비밀번호나 그 변형을 다시 사용하지 않도록 주의해야 합니다.

2단계 인증의 올바른 활용법

2단계 인증을 설정할 때는 SMS 문자 메시지보다는 인증 애플리케이션을 사용하는 것이 일반적으로 더 안전합니다. SMS는 심플한 메시징 프로토콜의 취약점을 이용한 ‘심 하이재킹’ 공격에 노출될 가능성이 있기 때문입니다. 구글 OTP, 마이크로소프트 오센티케이터, 오쓰와 같은 전용 인증 앱은 기기와 직접 연동되어 시간 기반 일회용 비밀번호를 생성하므로 보안 수준이 더 높습니다.

백업 코드는 반드시 안전한 곳에 보관해야 합니다. 2단계 인증을 설정하면 대부분의 서비스가 일회용 백업 코드를 제공하는데, 이 코드는 인증 앱에 접근할 수 없을 때 계정을 복구할 수 있는 유일한 수단이 되기도 합니다. 따라서 화면 캡처나 이메일 보관처럼 노출 위험이 있는 방식은 피하고, 오프라인 메모나 암호화된 저장소에 따로 보관하는 것이 바람직하며, 사용 여부를 주기적으로 점검해 실제로 작동하는지도 확인해 두는 것이 계정 보안을 유지하는 데 큰 도움이 됩니다.