스킬캠퍼스
12강 · 비밀번호 크래킹
강의

오늘 끝나면

비밀번호 크래킹

  • 비밀번호 크래킹의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 비밀번호이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

해시·무차별 대입, 그리고 방어선 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

화이트해킹 · 12

비밀번호
크래킹

서버가 털려도 새는 건 비번이 아니라 해시임.
공격자는 그 해시를 자기 PC로 가져가 조용히 맞춰봄.
느린 해시와 솔트가 이 작업을 끝없이 늘리는 방어임.

P.01화이트해킹 · 12

유출되는 건 비번이 아니라 해시

제대로 만든 서버는 비번을 그대로 안 적음. 해시로 바꿔 저장함.

해시는 한 방향임 / 비번을 넣으면 고정 길이 문자열이 나오지만 거꾸로는 못 풂.
로그인 때마다 입력값을 다시 해시해서 저장된 값과 같은지만 비교함.

그래서 DB가 통째로 새도 비번 원문은 안 보임 / 보이는 건 해시 목록임.
여기서 공격이 시작됨 — 해시를 자기 컴퓨터로 가져가 비번을 거꾸로 알아내는 것.
서버를 더 안 건드려도 됨 / 이게 오프라인 크래킹임.

저장 → 유출 → 오프라인 크래킹
해시는 어떻게 크래킹까지 가나
저장비번 아닌 해시로 저장

alice → $2b$…wF3

유출해시 목록이 공격자 손에

DB 통째로 샘

오프라인서버 더 안 건드림

자기 PC에서 맞춰봄

서버 한 번 털리면 나머지는 공격자 컴퓨터에서 진행됨

P.02화이트해킹 · 12

오프라인 = 시도 횟수 제한이 없음

왜 오프라인이 무서운가? 서버가 안 보고 있어서 제한이 다 사라짐.

온라인으로 로그인 창에 막 찔러보면 서버가 막음 / 5번 틀리면 잠그고 · 속도를 늦추고 · 로그를 남김.
그래서 온라인 추측은 느리고 금방 들킴.

근데 해시를 손에 쥐면 서버가 필요 없음.
후보 비번을 자기 GPU로 해시해서 유출된 값과 맞춰보면 됨 / 초당 수억 번도 됨.
잠금도 · 로그도 · 알림도 없음 / 공격자가 시간만 들이면 됨 — 그래서 방어는 그 시간을 키우는 일임.

온라인 로그인 vs 오프라인 크래킹
온라인 추측 vs 오프라인 크래킹
온라인 (로그인창)
  • ·5번 틀리면 잠금
  • ·속도 제한 걸림
  • ·로그·알림 남음
초당 ~수 회
오프라인 (해시 손에)
  • ·잠금 없음
  • ·제한 없음
  • ·아무도 못 봄
초당 수억 회
서버가 안 보고 있으면 모든 제한이 사라짐
P.03화이트해킹 · 12

사전 · 무차별 · 레인보우 테이블

후보 비번을 만드는 방법은 크게 셋임. 보통 싼 것부터 차례로 씀.

사전 공격 / 흔한 비번 목록(password · 123456 · 회사명2024)을 먼저 다 던짐.
사람들이 쓰는 비번은 뻔해서 약한 비번은 여기서 거의 다 깨짐.

무차별 대입 / 모든 조합을 a, b, … aa, ab 순으로 전부 만듦 / 답은 반드시 있지만 길수록 폭발적으로 느려짐.
레인보우 테이블 / 해시→비번 짝을 미리 계산해 둔 거대한 표 / 한 번 만들면 다음부턴 조회만 / 솔트가 있으면 통째로 무력화됨.

후보를 만드는 세 가지 방식
후보를 만드는 세 방식
1사전 공격

흔한 비번 목록부터

password · 123456 · qwerty

2무차별 대입

모든 조합 전부

a · b · … · aa · ab · …

3레인보우 테이블

해시→비번 미리 계산

솔트 있으면 무력화

약한 비번은 사전에서 · 짧은 비번은 무차별에서 깨짐
P.04화이트해킹 · 12

크래킹 시간 계산기 — 직접 해봄

무차별 대입이 얼마나 걸리는지는 두 가지로 정해짐 / 길이와 문자종류임.

오른쪽에서 직접 해봄.
비번을 적으면 거기 쓰인 문자종류(소문자·대문자·숫자·기호)를 세서 조합 수를 구하고, 길이만큼 늘어남.
공격자의 추측 속도를 슬라이더로 바꿔 가며 예상 시간을 봄.

한 글자만 늘려도 시간이 수십 배로 뜀 / 종류를 섞으면 또 뜀.
이건 실제 공격이 아니라 안전한 추정임 / 해시를 만들지도 · 서버를 건드리지도 않음.
핵심은 하나 — 짧고 단순한 비번은 순식간에 깨짐.

길이·문자종류로 무차별 시간 추정
무차별 대입 시간 계산기 · 안전한 추정
입력 — 비번을 적어 보셈
쓰인 문자종류 — 알파벳 크기 36
소문자
+26
대문자
숫자
+10
기호

길이 7 · 조합 수 = 36^7 7.8×10^10

공격자 추측 속도 — 바꿔 보셈

GPU 한 대 · 10억/초

출력 — 평균 크래킹 시간 (절반 가정)
39초거의 즉시 깨짐 — 매우 약함

길이를 한 글자 늘리면 시간이 약 36배로 뜀 / 문자종류를 섞으면 또 뜀. 방어는 이 시간을 끝없이 키우는 일 — 긴 비번 + 느린 해시(bcrypt) + 솔트.

P.05화이트해킹 · 12

방어 — 느린 해시 + 솔트

크래킹을 못 막진 못함. 대신 끔찍하게 느리고 비싸게 만들 수 있음.

빠른 해시(MD5 · SHA-1)는 검증용이라 한 번 계산이 너무 빨라 크래킹에도 유리함.
비번엔 일부러 느린 해시(bcrypt · argon2)를 씀 / 한 번 계산을 수만 배 느리게 만들어 초당 시도를 확 줄임.

솔트는 사용자마다 다른 무작위 값을 비번에 붙여 해시함.
그러면 같은 비번도 사람마다 해시가 달라져 레인보우 테이블이 무력화됨 / 한 명씩 따로 깨야 함.
정리 — 긴 비번 · 느린 해시 · 사용자별 솔트. 셋이 합쳐져 크래킹을 사실상 포기하게 만듦.

Q. 유출된 해시의 크래킹을 느리게 만들려면? (빠른 MD5로 저장 · 느린 해시 bcrypt + 사용자별 솔트 + 긴 비번 · 평문 저장 · 솔트 없는 SHA-1)정답은 느린 해시(bcrypt) + 사용자별 솔트 + 긴 비번임.
느린 해시는 초당 시도 수를 확 줄이고 · 솔트는 레인보우 테이블과 일괄 크래킹을 막고 · 긴 비번은 조합 수를 폭발시킴.
MD5 · SHA-1은 너무 빨라 오히려 공격자에게 유리하고 · 평문 저장은 유출 즉시 끝임.
세 방어가 합쳐져야 크래킹이 사실상 불가능에 가까워짐.
빠른 해시 vs bcrypt · 솔트
빠른 해시 vs 느린 해시 + 솔트
MD5 · SHA-1
한 번 계산 = 찰나

검증엔 빠르지만 크래킹에도 빠름 / 솔트 없으면 레인보우 테이블에 그대로 뚫림

bcrypt · argon2
한 번 계산 = 수만 배 느림

사용자별 솔트로 같은 비번도 해시가 다 다름 / 한 명씩 따로 깨야 함

긴 비번 + 느린 해시 + 솔트 = 사실상 포기

3줄 요약

  1. 1해시·무차별 대입, 그리고 방어선
  2. 2비밀번호 크래킹은 기초·정찰 → 웹 취약점 → 시스템 침투 → 네트워크·IoT → 레드팀·AI 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

비밀번호

해시·무차별 대입, 그리고 방어선

취약점

공격에 악용될 수 있는 시스템의 약점

익스플로잇

취약점을 실제로 이용하는 코드나 기법