사전 공격(Dictionary Attack)이란?
사전 공격은 사전에 수록된 단어들을 비밀번호 후보로 하나씩 대입해 보면서, 비밀번호로 보호된 컴퓨터 시스템·네트워크 등 IT 자원에 무단으로 침입하려는 공격 기법입니다. 이 공격은 암호화된 데이터를 복호화하기 위해 필요한 키를 찾아내는 데에도 활용될 수 있습니다.
사전 공격의 목적
암호 분석(Cryptanalysis) 분야에서처럼 사전 공격은 무차별 대입(Brute Force) 공격의 한 형태입니다. 공격자는 사전 속 단어나 과거에 사용된 비밀번호처럼 가능성 높은 수천~수백만 가지 조합을 반복적으로 시도하며, 암호 해독 키 또는 인증 메커니즘의 비밀번호를 알아내는 것을 목표로 합니다.
SQL 사전 공격이란?
SQL 사전 공격은 공격자가 사전의 모든 단어를 비밀번호로 대입해 비밀번호로 보호된 시스템에 침입하려는 공격 방식을 말합니다. 이 경우 무차별 대입(Brute Force) 공격 벡터에 해당합니다.
사전 공격의 주요 특징
사전 공격은 사람들이 자주 쓰는 단어와 그 변형들을 대량으로 시도하여 비밀번호를 추측하고, 보호된 정보에 접근하려 합니다. 여기에는 다음과 같은 목록을 대조하는 '사전 매칭(Dictionary Matching)' 기법이 사용됩니다.
- 흔히 사용되는 비밀번호 목록
- 인기 있는 반려동물 이름
- 소설·영화 속 캐릭터 이름
- 실제 사전에 수록된 모든 단어
공격 이름 자체가 이 '사전'에서 유래한 것입니다.
비밀번호 보안에서 사전 공격을 막는 방법
사전 공격을 효과적으로 방어하기 위해서는 다음과 같은 조치를 함께 적용하는 것이 좋습니다.
- 속도 제한(Rate Limiting) 적용: 비밀번호 입력 시도 횟수를 제한해 추측에 더 많은 시간과 자원이 들도록 만듭니다.
- CAPTCHA 도입: 자동화된 로그인 시도를 차단합니다.
- 비밀번호 암호화: 비밀번호를 안전하게 암호화해 저장하면 유출되더라도 피해를 줄일 수 있습니다.
- 취약한 비밀번호 제한: 흔한 단어나 유추하기 쉬운 비밀번호의 사용을 금지합니다.
사전 공격의 작동 원리와 예시
사전 공격의 원리는 단순합니다. 사용자들은 길고 무작위적인 문자열을 외우기 어렵거나 번거로워서, 인터넷에서 쉽게 접할 수 있는 기존 단어를 비밀번호로 선택하는 경향이 있습니다. 공격자는 이를 역이용해 사전이나 단어 목록을 해시(Hash) 처리한 뒤, 실제 저장된 해시값과 대조합니다.
예를 들어, Bob이 자신의 하드 드라이브를 "hunter2"라는 비밀번호로 암호화했다고 가정해 봅시다. 공격자는 사람들이 실제로 사용할 만한 다양한 비밀번호 조합을 순차적으로 시도하며 암호문의 키를 추측하게 되며, 이런 식의 단어 기반 비밀번호는 결국 노출될 위험이 큽니다.
공격자 입장에서의 장점
사전 공격은 자동화된 방식으로 사전의 모든 단어를 비밀번호로 입력해 서버의 보안을 뚫을 수 있는 간단한 기법입니다. 무작위 조합을 전부 시도하는 방식보다 빠르고 시간을 절약할 수 있으며, 구현 난이도도 낮다는 것이 특징입니다.
SQL 무차별 대입 공격의 실태
Guardicore Labs의 최신 연구에 따르면, 해커들은 취약한 Microsoft SQL(MSSQL) 서버를 대상으로 매일 무차별 대입 공격을 시도하고 있으며, 성공 시 백도어를 설치해 암호화폐 채굴 프로그램과 원격 접속 트로이목마(RAT)를 배포하고 있습니다. 미국 의료 부문의 서버들도 공격 대상에 포함되어 있어 각별한 주의가 필요합니다.
사전 공격이 항상 무차별 대입보다 빠를까?
반드시 그렇지는 않습니다. 비밀번호 검증 속도가 매우 빠른 해시 포맷의 경우, 사전 파일에서 비밀번호를 읽고 기록하는 데 드는 시간이 검증 시간보다 상대적으로 커질 수 있습니다. 즉, 대상 환경에 따라 사전 공격이 무차별 대입 공격보다 오히려 더 많은 비용이 들 수도 있습니다.
마무리
사전 공격은 단순하지만 여전히 널리 사용되는 위협입니다. 길고 복잡한 비밀번호 사용, 다중 인증(MFA) 적용, 속도 제한과 CAPTCHA 도입 등 기본적인 방어 수칙만 지켜도 공격 성공 확률을 크게 낮출 수 있습니다.