본문 바로가기
← 메인으로
🔑
제로트러스트 실습 · 단일 비밀번호가 남긴 크리덴셜 스터핑
Target:
임직원 포털 로그인
성숙도:
기존 → 향상
식별자·신원 / 인증 — 다중인증(MFA)
💡 쉽게 말하면
🔓 공격 시뮬레이션 (Red Team)
🛡️ 대응 방안 (Blue Team)
유출 계정 목록 대입
🔒 Secured Channel
비밀번호는 이미 유출된 자격 증명으로 간주해야 합니다.
다중인증이 없으면
외부에서 떠도는 아이디·비밀번호 목록을 그대로 대입하는 것만으로 정상 로그인과 구분되지 않는 접속이 만들어집니다. "내부망이니까 괜찮다"는 가정은 이 지점에서 가장 먼저 무너집니다.
⚡ 크리덴셜 스터핑
타 서비스 유출 목록 1,200건 자동 대입
OFF
📡 거래/인증 요청 (가로채어 변조 가능)
POST /login { "id": "park.dev", "pw": "********" } → 200 OK (세션 발급)
요청 전송
🖥️ 금융 시스템 처리 로그
[SYSTEM]
Core Banking Channel ready.
[INFO]
거래 요청 대기 중...
⚖️ 컴플라이언스 위반 분석
공격 실행 후 분석 결과가 표시됩니다.
[심각] 암묵적 신뢰가 악용되었습니다
식별자·신원 / 인증 — 다중인증이 일부 시스템에만 적용되거나 우회 가능
비정상 인증 시도(대량·연속 실패)에 대한 자동 대응 부재
성숙도 1단계(기존): 비밀번호 단일 요소 인증에 의존
🛡️ 대응 코드/설정 실습
모든 접근을
인증된 신원 + 추가 요소
로 검증하고, 요청의 맥락(새 단말·새 위치·연속 실패)을 함께 보고 단계를 올려야 합니다. 피싱에 견디는 방식(FIDO2 등)을 우선하세요.
// [취약] 비밀번호만 맞으면 세션을 준다 public Session login(Cred c) { if (!password.verify(c.id(), c.pw())) throw new AuthException("인증 실패"); return Session.create(c.id()); }
코드 검증
힌트(정답) 보기
📚 제로트러스트 성숙도 해설 / 적용 가이드
1. 무엇을 보는 항목인가
다중인증이
어디까지, 어떤 방식으로
적용돼 있는지를 본다. 일부 시스템만 적용되거나 SMS 하나로 끝난다면 공격자는 적용되지 않은 쪽을 고른다.
2. 성숙도 단계별 모습
기존
— 비밀번호 단일 요소, 일부 시스템만 선택적 2차 인증
초기
— 외부 접속 경로에 2차 인증 적용, 방식은 혼재
향상
— 내부 포함 전 경로 적용, 위험 신호에 따라 단계 상승
최적화
— 피싱 저항 방식이 기본, 인증 결과가 실시간 정책 판단에 사용
3. 무엇을 증적으로 남길 수 있나
시스템별 MFA 적용 현황과 예외 목록·사유·만료일
단계 상승이 발동한 사례와 그 판단 근거
인증 실패·차단 통계의 추이