# Online vs. Offline Password Attacks: A Field Guide
개요
온라인 및 오프라인 패스워드 공격은 공격하려는 대상과 사용하는 도구, 속도, 그리고 탐지 가능성에 결정적인 차이를 만드는 두 가지 주요 접근 방식입니다.
주요 내용
* 온라인 공격 (Online Attacks):
* 실행 중인 서비스(SSH, RDP, 웹 로그인, 데이터베이스 등)에 직접 크리덴셜을 대입하여 유효한 자격 증명을 찾는 방식입니다.
* Hydra, Ncrack, Medusa와 같은 도구가 사용됩니다.
* 각 시도는 네트워크 왕복 시간으로 인해 느리며, 인증 로그를 생성하여 탐지될 가능성이 높습니다.
* 계정 잠금 정책, 속도 제한(rate limiting), fail2ban과 같은 도구에 취약하여 공격이 중단되거나 계정이 잠길 수 있습니다.
* 실제 환경에서는 짧고 확률 높은 단어 목록을 사용하여 중요한 서비스에 신중하게 적용하는 것이 효과적입니다.
* 오프라인 공격 (Offline Attacks):
* 이미 획득한 패스워드 해시(데이터베이스 덤프, /etc/shadow 파일, 네트워크 캡처, 메모리 덤프 등)를 대상으로 수행됩니다.
* John the Ripper, Hashcat과 같은 도구가 사용됩니다.
* 서비스에 직접 연결되지 않으므로 하드웨어 성능(GPU 등)에 의해서만 속도가 제한되며, 초당 수십억 개의 후보를 시도할 수 있습니다.
* 공격 시도가 서비스에 기록되지 않아 탐지가 어렵습니다.
* 계정 잠금과 같은 제약이 없으므로 무제한으로 시도할 수 있습니다.
* 성공의 핵심은 유효한 해시를 먼저 획득하는 것이며, 해싱 알고리즘의 복잡성에 따라 난이도가 크게 달라집니다. 최신 느린 알고리즘은 무차별 대입 공격에 저항적입니다.
* 일반적인 실수 및 상황별 대처:
* 온라인 공격이 필요한 상황에 오프라인 공격 도구를 사용하거나 그 반대의 경우입니다.
* 크리덴셜이 없고 실시간 서비스가 노출된 경우: 온라인 공격(Hydra, Ncrack, Medusa)을 신중하게 사용합니다.
* 패스워드 해시를 발견한 경우: 즉시 오프라인 공격(John the Ripper, Hashcat)을 수행합니다. 온라인 도구를 사용해서는 안 됩니다.
* 평문(plaintext) 크리덴셜을 발견한 경우: 무차별 대입 공격 대신 다른 시스템에 재사용(Credential Stuffing, Password Spraying)합니다.
* 방어적 관점:
* 온라인 공격 방어: 속도 제한, 합리적인 계정 잠금 임계값 설정, 인증 로그 모니터링, 비밀번호 대신 키 기반 인증 선호, 다단계 인증(MFA) 적용 등이 있습니다.
* 오프라인 공격 방어: 해시 저장소 노출 가능성을 염두에 두고 설계하며, 최신이며 느리고 솔트(salted)가 적용된 해싱 알고리즘을 사용합니다. 솔트는 사전 계산 테이블을 무효화하고, 느린 알고리즘은 무차별 대입 공격을 어렵게 합니다. 패스워드 길이 또한 공격 비용을 증가시키는 중요한 요소입니다.
시사점
패스워드 공격과 방어는 동일한 메커니즘에 대한 상반된 관점이며, 상황에 맞는 공격 방식을 이해하는 것은 테스터의 올바른 도구 선택뿐만 아니라 방어자의 예산 집행 우선순위를 결정하는 데 중요한 지침을 제공합니다.
댓글
GitHub Discussions