자동화된 계정 탈취 공격을 막는 자격증 채우기 보호
핵심 요점
- 자격증 채우기 데이터 침해로 유출된 사용자명과 비밀번호를 수집해 자동화된 로그인을 시도하는 공격 방식입니다. 공격자들이 접근 가능한 탈취된 자격증명만 240억 개를 넘습니다.
- 단 0.1~2% 정도의 성공률이라도 시간당 수백만 개의 자격증명을 테스트할 때 수천 개의 계정이 손상됩니다.
- MFA가 최우선 방어수단입니다 비밀번호가 정확하게 일치해도 자격증명 기반 공격의 99.9%를 차단합니다.
- 탐지 기법은 다양한 방식을 결합합니다 요청 속도 제한, IP 평판, 기기 지문 인식, 행동 패턴 분석 자동화된 로그인 시도를 식별하기 위함입니다.
- 자격증명 기반 공격은 사업 전체에 위협이 됩니다 계정 탈취, 정보 유출, 금융 사기, 규제 책임으로 이어집니다.
목차
대규모 데이터 침해 사건이 일어날 때마다 자격증명 채우기 공격의 도구가 쌓인다. LinkedIn 1억 6400만 건, Yahoo 30억 계정, Collection #1의 773만 개 이메일과 비밀번호 조합. 노출된 이 모든 암호는 사라지지 않는다. 자동화된 계정 탈취 공격의 무기가 되어 돈다.
자격증명 채우기는 지금 로그인 엔드포인트를 겨냥한 가장 흔한 공격이다. 비용이 낮고, 효과는 크며, 규모 확장도 쉽다. 사용자 계정이 있는 애플리케이션이라면 공격 대상이 될 수 있다.
자격증명 채우기란 무엇인가
자격증명 채우기는 데이터 침해에서 탈취한 사용자명과 비밀번호 조합 목록을 이용해 표적 웹사이트에 일괄 로그인을 시도하는 자동화 공격이다. 한 가지 인간의 행동 패턴을 노린다. 비밀번호 재사용.
인증 정보 기반 공격이 작동하는 방식
- 인증 정보 목록 확보: 다크웹 마켓에서 구매하거나(수백만 건의 인증 정보당 5~50달러), 공개된 유출 데이터베이스에서 수집
- 자동화 도구 설정: 커스텀 스크립트, OpenBullet, SentryMBA 또는 특화된 봇 프레임워크
- 프록시 네트워크 분산: 주거용 프록시 네트워크를 통해 로그인 시도를 라우팅하여 IP 기반 차단 회피
- 대규모 실행: 시간당 수천 개에서 수백만 개의 인증 정보 조합을 대상 로그인 엔드포인트에 대해 검증
- 유효한 로그인 수집: 인증 정보가 작동한 계정을 모으고, 이를 악용하여 데이터 도용, 금융 사기, 재판매 등을 감행
인증 정보 공격과 무작위 대입 공격의 차이
| 항목 | 인증 정보 기반 공격 | 무차별 대입 공격 |
|---|---|---|
| 입력값 | 실제 도용된 자격증명 | 무작위/순차 비밀번호 |
| 대상 | 동시에 여러 계정 | 단일 계정 |
| 성공률 | 0.1~2% (규모 확대 시 매우 효과적) | 강력한 비밀번호의 경우 거의 0% |
| 속도 | 시간당 수백만 회 시도 | 시간당 수천 회 시도 |
| 탐지 | 더 어려움 (분산형, 실제 자격증명 사용) | 더 쉬운 공격 (하나의 계정에서 여러 번 시도) |
| 출처 데이터 | 데이터 유출 | 비밀번호 사전/생성 도구 |
문제의 규모
- 24억 개 이상 공격자에게 노출된 탈취된 계정 정보
- 500억 달러 이상 계정 탈취 사기로 인한 연간 예상 손실액
- 1,930억 건 2024년 Akamai가 적발한 자격증명 스터핑 시도
- 금융 서비스 가장 많은 공격 대상 (전체의 34%), 그 다음 소매업 (17%), 숙박업 (10%)
탐지 방법
요청 빈도 기반 탐지
IP, 사용자, 기기 지문별로 로그인 시도 빈도를 모니터링합니다. 정상 사용자가 여러 계정으로 분당 50회 로그인을 시도하는 일은 없습니다.
IP 신뢰도 분석
데이터센터 IP, 알려진 프록시/VPN 서비스, Tor 출구 노드, 평판 점수가 낮은 IP에서의 로그인 시도를 차단합니다. 고도화된 공격은 주거용 프록시를 활용해 이를 우회합니다.
기기 지문 인식
JavaScript 및 TLS 지문 분석 로그인 시도 뒤의 실제 클라이언트를 파악합니다. 봇 프레임워크는 일반 브라우저와 다른 특징적인 지문을 남깁니다.
행동 패턴 분석
정상 사용자는 로그인 페이지로 이동해 인간의 속도로 자격증명을 입력하고 페이지 요소와 상호작용합니다. 봇은 페이지 조작 없이 자격증명을 프로그래밍 방식으로 제출합니다.
자격증명 시도 속도 감시
단일 출처에서 시도되는 서로 다른 사용자명/비밀번호 조합의 개수를 추적합니다. 정상 사용자가 한 세션에서 1,000개 이상의 계정 로그인을 시도하지 않습니다.
계정 탈취로부터 사용자를 보호하세요
Unled Network는 봇 탐지, 자격증명 스터핑 방어, 보안 인프라를 제공해 사용자의 계정과 플랫폼 전체를 안전하게 지킵니다.
지금 보호받기 →방어 전략
1. 요청 속도 제한 설정
로그인 엔드포인트에 엄격한 속도 제한을 적용하세요. IP당 분당 5~10회의 로그인 시도로 제한하고 실패 후에는 대기 시간을 점진적으로 늘립니다. 단계적 검증을 도입해서 3회 실패 후 CAPTCHA를 표시하고, 10회 실패 후에는 일시적으로 접근을 차단합니다.
2. 봇 관리 솔루션 배포
활용하세요 Cloudflare Bot Management 또는 유사한 도구를 통해 자동화된 로그인 시도를 애플리케이션에 도달하기 전에 탐지하고 차단합니다.
3. 의심스러운 요청에 검증 요구
낮은 봇 점수, 이상한 지역에서의 접속, 미등록 기기에서의 로그인 시도에 대해 Cloudflare Turnstile이나 hCaptcha 같은 관리형 검증을 제시합니다.
4. 강력한 비밀번호 강제
알려진 유출 데이터베이스에 포함되지 않은 비밀번호를 요구하세요. HaveIBeenPwned의 API 같은 서비스를 이용하면 사용자 비밀번호를 수십억 개의 유출된 자격증명과 실시간으로 비교할 수 있습니다.
5. 계정 잠금 구현 (신중하게)
여러 번 실패한 로그인 시도 후 계정을 잠금으로 설정할 수 있지만 주의가 필요합니다. 공격자가 잠금 정책을 악용해서 정상 사용자에게 서비스 거부 공격을 할 수 있습니다. 영구 잠금 대신 15~30분의 일시적 잠금을 사용하고 CAPTCHA와 함께 적용하세요.
MFA: 최강의 방어 수단
보안 강도별 MFA 옵션 순위:
- 물리 보안키 (YubiKey, Titan): 가장 강력하며 피싱 공격으로부터 안전
- 인증 앱 (Google Authenticator, Authy): 높은 보안 수준, 광범위한 호환성
- 푸시 알림 (Duo, Microsoft Authenticator): 사용하기 편하나 보안 수준은 중간 정도
- SMS/이메일 코드: MFA 중 가장 낮은 수준이지만 MFA를 전혀 사용하지 않는 것보다는 훨씬 낫습니다. SIM 스왑 공격에 취약합니다.
자격증명 채우기 공격 대응 WAF 규칙
다음과 같이 WAF 를 설정하세요:
- /login, /signin, /auth 엔드포인트 요청 속도 제한: IP당 분 1분에 5~10개 요청
- 낮은 봇 점수의 로그인 시도에 보안 검증 적용: 봇 스코어 30 미만일 때 인증 확인 절차 표시
- 알려진 악성 사용자 에이전트 차단: Python-requests, Go-http, curl을 로그인 엔드포인트에서 차단
- 지역 기반 제한: 사용자 기반과 맞지 않는 국가에서의 로그인 시도에 인증 요구
- 헤더 분석: 표준 브라우저 헤더(Accept-Language 등)가 없는 요청 차단
유출된 인증정보 모니터링
- HaveIBeenPwned: 사용자 인증정보가 알려진 유출 사건에 포함되어 있는지 확인
- Google Password Checkup: 저장된 비밀번호가 유출된 경우 사용자에게 알림 제공
- Enzoic / SpyCloud: 실시간 알림을 제공하는 엔터프라이즈급 인증정보 모니터링 서비스
- 사전 초기화: 새로운 보안 침해 데이터에 포함된 자격증명을 가진 사용자들의 비밀번호 변경 강제 시행
사건 대응
- 탐지: 비정상적인 로그인 패턴 모니터링, 실패한 로그인 급증, 새로운 위치에서의 성공적인 로그인 감시
- 격리: 속도 제한 활성화, 로그인 시 CAPTCHA 실행, 공격자 IP 차단
- 조사: 손상된 계정 파악, 접근된 데이터 범위 확인
- 복구: 손상된 계정의 비밀번호 초기화 강제, 활성 세션 취소, 영향받은 사용자 통지
- 예방: MFA 도입, 봇 관리 배포, 자격증명 침해 모니터링 추가
자동화된 공격으로부터 플랫폼을 지켜내세요
크리덴셜 스터핑부터 DDoS까지, 저희 팀은 다층 보안을 구축하여 사용자와 비즈니스를 보호합니다. 24시간 모니터링과 사고 대응을 제공합니다.
Telegram: @unlednetwork → WhatsApp 문의 →
댓글
질문이나 경험이 있으신가요? 대화에 참여해 주세요. 이메일은 공개되지 않습니다.
Exactly what we needed. Our team was debating the best strategy.
Great question! This is something we see frequently with our clients. The key is consistency rather than a one-time fix.