Dictionary Attack이 노리는 패스워드 습관과 방어 설계
Dictionary Attack의 작동 방식과 유형, 레인보우 테이블 위험, 패스워드 정책·MFA·솔팅 기반의 방어 전략을 정리한다.
2026-08-15 · 최초 발행 2025-05-27
패스워드 후보를 좁혀 인증을 시도하는 공격
Dictionary Attack은 사전에 수집한 단어와 문구로 대상 시스템의 패스워드를 추측하는 공격 기법이다. 사람이 기억하기 쉬운 일반 단어, 구문, 숫자 조합을 패스워드에 쓰는 경향을 공격의 출발점으로 삼는다.
무차별 대입 공격(Brute Force Attack)에 속하지만, 가능한 모든 조합을 생성하지는 않는다. 대신 실제 패스워드일 가능성이 높은 단어 목록부터 입력하므로 시도 범위를 줄일 수 있다. 이 특성 때문에 현대 보안 환경에서도 널리 활용된다.
사전 목록이 인증 시도로 이어지는 흐름
공격자는 자주 쓰이는 단어, 구문, 일반적인 패스워드 패턴을 모아 사전을 준비한다. 자동화 도구가 목록의 항목을 대상 시스템에 순서대로 제출하고, 실제 패스워드와 일치하는 항목이 나오면 인증에 성공한다.
공격이 실행되는 위치에 따라 인증 시도의 양상과 방어 지점이 달라진다. 오프라인 사전 공격은 해시된 패스워드 데이터베이스를 확보한 뒤 사전 단어의 해시값을 계산해 탈취한 해시와 비교한다. 로그인 시스템을 직접 거치지 않으므로 시스템의 접근 제한이나 계정 잠금 정책은 영향을 주지 않으며, 해킹된 시스템에서 추출한 /etc/shadow 파일이 대상이 될 수 있다.
온라인 사전 공격은 웹 로그인 페이지나 SSH 서비스처럼 실제 인증 인터페이스에 직접 요청을 보낸다. 각 로그인 시도의 응답을 확인하며 진행되므로 로그인 횟수 제한, IP 기반 접근 제한, CAPTCHA, 실패 횟수에 따른 지연 시간이 방어 수단으로 작동할 수 있다.
단어 자체부터 해시 테이블까지
순수 사전 공격
사전에 들어 있는 단어를 변형 없이 그대로 시도하는 방식이다. 가장 기본적인 형태이며, "password", "admin", "123456" 같은 일반적인 패스워드를 순차적으로 입력한다.
규칙을 적용한 사전 공격
규칙 기반 사전 공격은 사전 단어에 변형 규칙을 더한다. 예를 들어 'a'를 '4'로, 'e'를 '3'으로 바꾸거나 특수문자를 덧붙인다. "password"는 "p4ssw0rd", "Password1!", "password123"처럼 변형될 수 있다. o를 0으로, a를 @로 치환하는 방식도 여기에 해당한다.
사전과 무차별 대입을 섞는 방식
하이브리드 사전 공격은 사전 공격과 무차별 대입 공격을 결합한다. 사전 단어를 기반으로 일부 문자만 무차별 대입 방식으로 바꾸거나 숫자와 특수문자를 붙여 "passw0rd", "pa$$word", "password123", "P@ssw0rd" 같은 후보를 생성한다. 기본 단어에 간단한 변형을 더하는 사용자 패턴을 이용한다.
레인보우 테이블을 이용한 역추적
레인보우 테이블 활용 공격은 해시된 패스워드를 역산하기 위해 미리 계산된 해시값 테이블을 사용한다. 일반 텍스트 패스워드와 해시값의 매핑을 통해 원본 패스워드를 빠르게 추적하며, 계산 시간을 저장 공간으로 바꾸는 시간-공간 트레이드오프 방식이다.
공격 도구와 단어 목록
John the Ripper는 다양한 플랫폼에서 작동하고 여러 해시 유형을 지원하는 패스워드 크래킹 도구다. 사용자 정의 규칙을 적용한 고급 사전 공격에도 사용할 수 있다.
Hashcat은 GPU 가속을 지원하며, 여러 해시 알고리즘과 공격 모드를 제공한다. 규칙 기반 공격에 특히 효과적이다.
Hydra는 원격 인증 서비스를 겨냥하는 네트워크 로그인 크래커다. SSH, HTTP, FTP, SMTP 등 다양한 프로토콜을 지원하고 병렬 처리와 프록시 체인을 활용한다.
Medusa는 모듈식 구조와 병렬 처리 기능으로 다양한 온라인 인증 서비스를 다룰 수 있다.
Aircrack-ng는 무선 네트워크 보안 평가 도구 모음으로, WEP 및 WPA/WPA2-PSK 키 크래킹과 내장 사전 공격 기능에 사용된다.
대표적인 단어 목록으로는 약 1,400만 개의 실제 유출 비밀번호를 담은 RockYou.txt, 침투 테스트 목적의 다양한 단어를 모은 SecLists, 대규모 해시 크래킹용 CrackStation이 있다.
유출 사고와 원격 접근 환경에서 드러난 위험
2012년 LinkedIn 데이터 유출에서는 650만 개 이상의 해시된 패스워드가 유출됐다. 솔팅(salting) 없이 SHA-1 해시 알고리즘만 사용했고, 공격자들은 사전 공격과 레인보우 테이블을 활용해 단 며칠 만에 상당수의 패스워드를 복구했다. 같은 데이터 유출은 약 1억 6,500만 사용자의 해시된 비밀번호가 노출된 사건으로도 다뤄지며, 사전 공격으로 수백만 계정의 비밀번호가 복구됐다.
2016년 야후 데이터 유출에서는 10억 개 이상의 계정 정보가 유출됐다. 약한 해싱 알고리즘은 사전 공격에 취약했고, 유출된 계정 정보는 다크웹에서 거래되며 2차 피해로 이어졌다. Yahoo의 2013-2014년 데이터 유출은 약 30억 계정 정보가 노출된 사건으로도 언급되며, 해시된 비밀번호가 사전 공격에 노출됐고 약한 해싱 알고리즘 사용이 피해를 키웠다.
2020년 코로나19로 원격 근무가 늘면서 VPN 사용도 급증했다. 많은 기업이 VPN 솔루션을 서둘러 도입하는 과정에서 보안 설정이 미흡했고, 공격자들은 사전 공격으로 VPN 계정을 탈취한 뒤 기업 네트워크에 침투했다. COVID-19 팬데믹 이후 원격 근무가 확대되면서 약한 비밀번호 계정은 내부 네트워크로 들어가는 경로로 활용될 수 있다.
인증 계층에서 막는 방법
패스워드 정책은 최소 길이 요구사항을 두고, 12자 이상을 권장하는 방식으로 설계할 수 있다. 대소문자·숫자·특수문자의 혼합을 요구하고, 일반 사전에 있는 단어 사용을 금지하며, 정기적인 패스워드 변경 정책을 시행한다. 패스워드 강도 측정 도구도 정책 적용에 활용된다.
MFA는 패스워드 외의 인증 요소를 추가한다. SMS, 이메일, 인증 앱을 통한 2차 인증 코드와 지문·안면 인식 등의 생체 인증을 활용할 수 있다. 지식(패스워드), 소유(기기), 생체 인증을 조합하고, FIDO2·WebAuthn 기반 솔루션과 하드웨어 보안 키를 활용할 수 있다.
계정 잠금 정책도 인증 시도 자체를 제한하는 수단이다. 일정 횟수 이상의 로그인 실패 뒤 계정을 일시 잠그고, 잠금 시간을 점진적으로 늘리는 지수 백오프(exponential backoff)를 적용한다. 의심스러운 로그인 시도를 감지하고 알리는 체계도 함께 필요하다. 로그인 시도 패턴과 지리적 위치, 시간대 기반 이상 징후를 분석하는 실시간 알림, 정기 보안 감사와 취약점 점검, 모의 침투 테스트는 이미 약해진 인증 경로와 방어 체계의 상태를 확인하는 수단이다.
저장된 패스워드는 각 값에 고유한 솔트(salt)를 추가해 해시해야 한다. 이는 레인보우 테이블 공격을 막는 데 도움이 된다. bcrypt, Argon2, PBKDF2처럼 느린 해시 알고리즘을 사용하고 작업 요소(work factor)를 높이면 무차별 대입 공격의 효율을 낮출 수 있다. 키 스트레칭과 해시 반복 횟수 조정은 공격자가 후보 해시를 계산하는 연산 부담을 높인다.
사용자 측에서는 패스워드 관리 도구가 각 서비스마다 고유하고 복잡한 패스워드를 생성·저장하도록 돕는다. 사용자는 마스터 패스워드만 기억하는 방식으로 관리 부담을 줄일 수 있다.
컴퓨팅 환경과 인증 방식의 변화
머신러닝과 AI를 활용한 정교한 사전 공격이 등장했고, 데이터 유출 사고에서 수집된 실제 패스워드는 고도화된 사전을 만드는 데 활용된다. 기계학습은 비밀번호 패턴 학습, 사용자별 맞춤형 사전 생성, 소셜 미디어 데이터 분석 기반 타겟팅, 딥러닝 모델을 이용한 비밀번호 예측에 쓰일 수 있다.
클라우드 컴퓨팅은 대규모 자원과 분산 처리로 크래킹 환경을 구성하게 하며, 비용 효율적인 고성능 공격 환경과 크래킹-as-a-Service의 등장 가능성을 만든다. 양자 컴퓨팅은 기존 해시 알고리즘의 취약성을 키우고 더 빠른 해시 역산 가능성을 제기한다. 이에 따라 새로운 비밀번호 저장 방식과 포스트 양자 암호화 연구의 필요성이 커지고 있다.
한편 Passwordless Authentication도 발전하고 있다. FIDO2와 WebAuthn 표준이 등장했고, 생체인증과 하드웨어 토큰 기반 인증이 확산되고 있다. 제로 트러스트(Zero Trust) 보안 모델은 단일 인증 성공만으로 전체 시스템에 접근할 수 없도록 환경을 구성하는 방향과 맞닿아 있다.
Dictionary Attack은 인간의 패스워드 생성 습관을 겨냥하는 단순한 공격이지만 여전히 성공률이 높다. 강력한 패스워드 정책, 다중 인증, 적절한 해싱 기법, 보안 인식 교육을 함께 적용하고, 장기적으로는 패스워드 의존성을 줄이는 인증 방식으로 전환할 필요가 있다.