브루트포스 공격 - 리터레처
브루트포스 공격이란?
브루트포스(Brute Force) 공격은 가능한 모든 조합을 체계적으로 시도하여 비밀번호나 암호키를 찾아내는 무차별 대입 공격이다.
작동 방식
1단계: 짧은 조합부터 시도
"a", "b", "c", ... "z"
"aa", "ab", "ac", ... "zz"
2단계: 길이 증가
"aaa", "aab", ...
3단계: 문자 종류 확장
소문자 → 대문자 추가 → 숫자 추가 → 특수문자 추가
반복: 올바른 조합을 찾을 때까지
공격 종류
1. 순수 브루트포스
- 모든 가능한 조합을 순차적으로 시도
- 가장 느리지만 이론적으로 100% 성공
2. 사전 공격 (Dictionary Attack)
- 흔한 비밀번호 목록 사용
- "password", "123456", "admin" 등
- 훨씬 빠르지만 복잡한 비밀번호는 실패
3. 하이브리드 공격
- 사전 단어 + 숫자/특수문자 조합
- "password123", "admin!@#" 등
4. 크리덴셜 스터핑 (Credential Stuffing)
- 유출된 ID/PW 조합 재사용
- 다른 서비스에서 같은 비밀번호 사용하는 습관 악용
공격 대상과 동기
왜 관리자 계정이 주요 타겟인가?
공격자의 ROI (투자 대비 수익):
일반 계정 탈취:
- 얻는 것: 제한된 파일 접근, 개인 정보
- 가치: 낮음
관리자 계정 탈취:
- 얻는 것: 시스템 전체 제어, 모든 데이터, 백도어 설치
- 가치: 매우 높음
공격 우선순위:
- root / Administrator (최고 권한)
- 데이터베이스 관리자
- 시스템 관리자
- 일반 사용자
실제 통계
- SSH 브루트포스 시도: 하루 수천~수만 건 (공개 서버 기준)
- 가장 많이 시도되는 계정명: root, admin, administrator
- 가장 많이 시도되는 비밀번호: 123456, password, admin
비밀번호 vs 키 기반 인증의 강도 차이
비밀번호의 취약성
엔트로피 계산:
8자리 비밀번호 (소문자만):
26^8 = 약 208억 조합
현대 GPU: 초당 수십억 시도 가능
→ 수 시간 내 해독 가능
12자리 복잡한 비밀번호 (소문자+대문자+숫자+특수문자):
95^12 = 약 5.4 × 10^23 조합
→ 수천 년 소요
하지만 사람들은 복잡한 비밀번호 안 씀
실제 사용자 행태:
- 짧은 비밀번호 선호 (8자 이하)
- 사전 단어 사용 ("password123")
- 패턴 사용 ("qwerty", "123456")
- 여러 서비스에서 재사용
SSH 키의 강도
RSA-2048 키:
가능한 조합: 2^2048 = 약 10^617
우주의 원자 개수: 약 10^80
현대 슈퍼컴퓨터 전체:
→ 우주 나이보다 훨씬 긴 시간 필요
→ 사실상 브루트포스 불가능
ED25519 (256비트):
가능한 조합: 2^256
여전히 브루트포스 불가능한 수준
핵심 차이:
- 비밀번호: 인간이 기억 가능한 범위 = 엔트로피 제한
- SSH 키: 컴퓨터가 생성 = 최대 엔트로피
Windows의 방어 전략
정책: 관리자 계정에 키 인증 강제
sshd_config 구현:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys효과:
-
비밀번호 브루트포스 원천 차단
- 비밀번호 인증 자체를 비활성화
- 키만 유효한 인증 수단
-
공격 표면 축소
- 관리자 계정 = 가장 가치 높은 타겟
- 가장 강력한 인증 방식 강제
-
자동화된 공격 무력화
- 대부분의 브루트포스 봇은 비밀번호 시도
- 키 기반 공격 도구는 드물고 복잡함
Linux와의 차이
Linux/Unix:
# /etc/ssh/sshd_config
PermitRootLogin without-password # root만 제한- 사용자 선택에 맡김
- root 계정에만 주로 적용
- 다른 관리자는 비밀번호 허용 가능
Windows:
Match Group administrators # 모든 관리자- 기본값으로 강제
- Administrators 그룹 전체 적용
- "안전한 기본값" 철학
브루트포스 방어 계층
1차 방어: 인증 강화
강력한 인증 메커니즘:
- 키 기반 인증 (SSH)
- 다중 인증 (MFA)
- 인증서 기반 인증
- 생체 인증
효과: 브루트포스 자체를 불가능하게
2차 방어: 제한 및 차단
Rate Limiting:
# fail2ban 설정 예시
maxretry = 3 # 3회 실패 시
bantime = 3600 # 1시간 차단
findtime = 600 # 10분 내 실패 횟수 기준Account Lockout:
- N회 실패 시 계정 잠금
- 관리자 개입으로만 해제
IP 차단:
- 의심스러운 IP 자동 차단
- Geo-blocking (특정 국가 차단)
효과: 공격 속도 제한, 공격 비용 증가
3차 방어: 모니터링 및 탐지
로그 분석:
# 실패한 로그인 시도 패턴
2025-10-10 01:23:45 Failed password for admin from 192.168.1.100
2025-10-10 01:23:46 Failed password for admin from 192.168.1.100
2025-10-10 01:23:47 Failed password for admin from 192.168.1.100이상 탐지:
- 비정상적인 로그인 시도 횟수
- 비정상적인 시간대
- 비정상적인 위치
알림 시스템:
- 관리자에게 실시간 알림
- SIEM 통합
- 자동 대응 트리거
실제 시나리오
시나리오 1: 비밀번호 기반 SSH
공격자: 공개 IP의 SSH 포트 스캔
↓
발견: 22번 포트 열림
↓
시도: root / admin / administrator 계정
↓
브루트포스: 일반적인 비밀번호 목록 시도
↓
성공 가능성: 약한 비밀번호 사용 시 높음
시나리오 2: 키 기반 SSH (Windows 관리자)
공격자: 공개 IP의 SSH 포트 스캔
↓
발견: 22번 포트 열림
↓
시도: Administrator 계정으로 비밀번호 시도
↓
결과: 즉시 거부 (키만 허용)
↓
공격자 선택:
A) 다른 타겟 찾기
B) 키 파일 훔치기 시도 (훨씬 어려움)
다른 공격 벡터
브루트포스가 막히면 공격자는:
1. 취약점 공격
- 소프트웨어 버그 악용
- 제로데이 취약점
2. 사회공학
- 피싱으로 키 파일 훔치기
- 내부자 매수
3. 중간자 공격 (MITM)
- 네트워크 레벨에서 가로채기
- 하지만 SSH는 암호화되어 있어 어려움
4. 물리적 접근
- 서버실 침입
- 키 파일 직접 접근
→ 브루트포스 방어는 전체 보안의 일부일 뿐
핵심 교훈
-
공격 가치와 방어 강도는 비례해야 한다
- 관리자 계정 = 높은 가치 = 강력한 인증
-
인증 메커니즘의 선택이 중요하다
- 비밀번호: 인간의 한계에 묶임
- 키: 수학적 한계까지 활용
-
기본값이 보안을 결정한다
- Windows의 강제 정책 = 대부분 사용자 보호
- 사용자 선택에 맡기면 약한 보안 선택 가능
-
다층 방어가 필수다
- 강력한 인증 + Rate limiting + 모니터링
- 한 층이 뚫려도 다른 층이 방어
-
공격자는 가장 쉬운 경로를 선택한다
- 브루트포스 막으면 다른 방법 시도
- 하지만 진입 장벽이 높아짐
더 탐구할 주제
- 브루트포스 vs 다른 공격 방법의 효율성 비교
- 양자 컴퓨터 시대의 브루트포스 가능성
- API, 웹 로그인 등 다른 맥락의 브루트포스 방어
- 비밀번호 없는 인증 (Passwordless) 트렌드
- 제로 트러스트 아키텍처와의 관계
다음 단계: 이 내용을 바탕으로 Permanent Notes 작성
- "공격 가치와 방어 강도의 비례 관계"
- "인증 메커니즘 선택의 보안 영향"
- "기본값으로 보안 강제하기"
댓글
첫 번째 댓글을 남겨보세요.