[웹 해킹] Brute Force
(브루트포스 공격, 무차별 대입 공격, 무작위 대입 공격)
1. 개요
인증 시스템을 뚫기 위해서 가능한 모든 조합의 비밀번호 또는 키를 시도하는 공격 기법. 이 공격은 시스템의 취약점을 찾기 위한 가장 기본적인 방법 중에 하나로 단순하지만 성공 가능성이 있음.
대부분의 암호화 방식은 이론적으로 무차별 대입 공격에 대해서 안전하지 못하며, 충분한 시간이 존재하면 암호화된 정보를 해독이 가능함. 하지만, 대부분의 경우 비용이나 시간의 제약 때문에 공격을 방지함.
✔ [참고]
AES 암호 (현재 가장 강력하고 널리 사용되는 암호)가 안전한 이유
AES-128: 키 길이 128비트 → 2^128 가지 키 조합.
AES-192: 키 길이 192비트 → 2^192 가지 키 조합.
AES-256: 키 길이 256비트 → 2^256 가지 키 조합.
무차별 대입공격으로 암호를 푸는데 필요한 시간을 계산하면
AES-128: 2^128 ≈ 3.4×10^38
현재 슈퍼컴퓨터로 초당 10^18번의 키를 검사한다고 가정 시, 평균적으로 1.08 x 10^19년이 걸림. 이는 우주의 나이(약 137억 년)를 훨씬 초과
2021 OWASP TOP 10 중에서는 `Identification and Authentication Failures` 항목에 해당된다.
OWASP 07. Identification and Authentication Failures
사용자의 신원 확인, 인증 및 세션 관리가 인증 관련 공격으로부터 보호하는 데 중요합니다. 애플리케이션에 다음과 같은 경우 인증 취약점이 있을 수 있습니다.
- 공격자가 유효한 사용자 이름과 비밀번호 목록을 가지고 있는 자격 증명 스터핑과 같은 자동화된 공격을 허용합니다.
- 무차별 대입 공격 또는 기타 자동화된 공격을 허용합니다.
- "Password1" 또는 "admin/admin"과 같은 기본, 약하거나 잘 알려진 비밀번호를 허용합니다.
- 안전할 수 없는 "지식 기반 답변"과 같은 약하거나 비효율적인 자격 증명 복구 및 비밀번호 분실 프로세스를 사용합니다.
- 일반 텍스트, 암호화 또는 약하게 해시된 비밀번호 데이터 저장소를 사용합니다(A02:2021-암호화 실패 참조).
- 누락되거나 비효율적인 다중 요소 인증이 있습니다.
- URL에 세션 식별자를 노출합니다.
- 로그인에 성공한 후 세션 식별자를 재사용합니다.
- 세션 ID를 올바르게 무효화하지 않습니다. 사용자 세션 또는 인증 토큰(주로 SSO(Single Sign-On) 토큰)은 로그아웃 또는 비활성 기간 동안 적절하게 무효화되지 않습니다.
공격 사례
2. 자동화 도구
- Hydra: 네트워크 서비스 및 웹 로그인 크래킹에 사용
- John the Ripper: 암호 해시 크래킹에 특화된 도구
- Medusa: 병렬로 빠르게 로그인 공격을 실행할 수 있는 도구
- Burp Suite: 웹 애플리케이션 보안 테스트 도구로, 무차별 대입 공격을 구성 가능
3. 공격 유형
- 단순 무차별 대입 공격 : 가능한 모든 조합을 순차적으로 시도. 보안 설정이 약하거나 짧고 간단한 비밀번호를 사용하는 시스템에 효과적
- 사전 공격(Dictionary Attack) : 사전에 준비된 일반적인 비밀번호 목록을 이용. (대부분의 사람들은 완전히 무작위적인 비밀번호를 사용하지 않기 때문)
- 하이브리드 공격 : 사전 공격과 단순 무차별 대입 공격을 결합한 형태. 사전에 저장된 단어에 숫자나 특수문자를 추가하여 조합을 시도
4. 방어 방법
- 강력한 비밀번호 정책 : 비밀 번호를 길고 복잡하게 설정
- 로그인 시도 제한 : 일정 횟수 이상 비밀번호를 틀리면 계정 잠금
- 캡차(CAPTCHA) 도입 : 로그인 과정에서 캡차를 추가하여 자동화된 공격 방지
- 이중인증(2FA) : 비밀번호 이외에 추가 인증 단계를 요구.
https://owasp.org/www-community/controls/Blocking_Brute_Force_Attacks
https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/