본문 바로가기
Reviews

John the Ripper 완전 정복

by 나무수피아는 지식의 가지를 뻗어가는 공간입니다. 2026. 2. 20.
반응형

🔐 John the Ripper 완전 정복 — 설치·실습·공격(이론)·방어 가이드 (교육용)

짧은 요약🧭 John the Ripper(이하 John)은 비밀번호 해시의 강도를 평가하고 학습/테스트용으로 널리 쓰이는 오픈소스 도구입니다. 이 글은 설치 예제, 안전한 실습 환경 구성, 각 공격 모드의 작동 원리(이론 수준), 방어/정책 개선 팁까지 포함한 교육용 가이드입니다. 허가된 환경에서만 사용하세요. 
중요 경고 — 이 글의 목적은 교육·방어입니다. 타인의 계정/시스템을 허가 없이 공격하는 것은 불법입니다. 실습은 반드시 본인이 소유하거나 명시적 허가가 있는 시스템에서만 진행하세요.

목차

  1. John the Ripper란? (핵심 개념)
  2. 설치 예제 (Ubuntu/Kali/소스 컴파일/WSL) — 안전한 설치 방법
  3. 실습 환경 구성 가이드 (권장 랩 구성)
  4. 공격 모드(작동 원리) — 개념 설명(비실무적/비행동적)
  5. 실습 시나리오(허가된 환경에서만): 샌드박스 실습 예시(샘플 데이터로)
  6. 방어 가이드: 조직·운영 측면에서의 권장 정책
  7. 자주 묻는 질문(FAQ)
  8. 참고 자료

1. John the Ripper란? (핵심 개념)

🧩 John은 여러 해시 형식(Unix crypt, MD5, bcrypt, NTLM 등)을 대상으로 오프라인으로 해시 값을 테스트하여 약한 비밀번호를 찾아내는 도구입니다. 방어 관점에서는 사용자 패스워드 정책의 약점(짧은 길이, 사전 단어, 반복 패턴 등)을 사전에 발견하고 수정하는 데 유용합니다. 

2. 설치 예제 (안전하게 설치하기)

설치 전 유의: 소스에서 컴파일한 버전(일명 "jumbo")은 추가 포맷과 유틸리티를 포함합니다. 배포판 패키지(apt/snap)는 간편하지만 버전이 낮을 수 있습니다.

2.1 Ubuntu / Debian 계열 (간단 설치)

간단하게 패키지 매니저를 사용하는 방법(교육용 — 로컬/랩 환경에서만):

sudo apt update
sudo apt install john john-data -y

이 방법은 빠르지만, 일부 해시 포맷이나 유틸(예: zip2john 같은 전처리 툴)은 포함되지 않을 수 있습니다. 

2.2 Snap으로 설치 (대체 방법)

sudo snap install john-the-ripper

snap 패키지는 편리하지만 환경에 따라 권한/경로 차이가 있으니 문서 확인 권장. 

2.3 소스에서 빌드 (Jumbo 버전 — 더 많은 포맷 지원)

Jumbo 빌드는 더 많은 해시 포맷과 도구를 포함합니다. 소스 빌드는 종종 보안 연구자나 고급 사용자가 선호합니다. 아래는 개념적 예시이며, 빌드 과정은 시스템 의존성이 있으니 공식 문서 참조 권장:

git clone https://github.com/openwall/john.git
cd john/src
./configure && make -s clean && make -sj$(nproc)

빌드 관련 상세 가이드는 공식 리포지터리와 INSTALL 문서를 확인하세요. 

2.4 Windows / WSL 사용

Windows에서 직접 사용할 경우 WSL(Windows Subsystem for Linux)을 쓰면 Linux 환경과 동일하게 동작시킬 수 있습니다. WSL에서 Ubuntu를 설치한 뒤 위의 설치 방법을 따르세요. 티스토리 예시 블로거들이 WSL 설치·사용기를 공유하고 있으니 참고하면 도움이 됩니다. 

3. 실습 환경 구성 가이드 (권장 랩 구성)

🧪

안전한 실습을 위해 반드시 다음을 준수하세요:

  • 격리된 네트워크: 실습용 VM(또는 물리 머신)을 내부 전용(외부 접속 차단) 네트워크에 두세요.
  • 샌드박스 VM: VirtualBox / VMware / QEMU 같은 하이퍼바이저에 테스트 전용 VM을 생성하세요.
  • 테스트 계정·데이터만 사용: 공개 데이터나 자가 생성 해시, 테스트 계정으로만 실습하세요.
  • 스냅샷 사용: 실습 전에 VM 스냅샷을 찍어 손상 시 빠르게 복구하세요.
  • 로그 기록: 어떤 작업을 했는지 메모하고 결과를 기록해 학습 목적에 활용하세요.

3.1 권장 랩 토폴로지 (간단)

랩 예시:
  1. 호스트 (개발자 노트북)
  2. VM A — 공격자 역할(John 설치)
  3. VM B — 방어자/타깃(테스트 계정만 존재)
  4. 격리 스위치(인터넷 차단, 내부 네트워크만 허용)

3.2 테스트용 해시 생성(안전한 방법)

테스트용으로 로컬에서 openssl 같은 도구로 해시를 만들고, 그것을 대상으로 실습하면 안전합니다. 예를 들어 로컬에서 패스워드 해시를 생성해 연구·학습 목적으로만 사용하세요.

4. 공격 모드 — 작동 원리 (이론적 설명)

⚙️

John이 제공하는 주요 모드는 이해하면 방어 설계에 도움이 됩니다. 다음은 개념적 설명입니다 (실행 절차·대상 침해 방법 제공 금지).

4.1 사전 공격(Dictionary attack)

단어 목록(워드리스트)을 이용해 해시와 일치하는 단어를 찾습니다. 사람들은 사전 단어/관용구/유행어를 비밀번호로 많이 쓰므로 빠르게 취약점을 찾는 데 유리합니다. 워드리스트는 공개된 컬렉션이나 자체 생성한 리스트를 쓸 수 있습니다. 

4.2 브루트포스(Incremental) 공격 — 개념

가능한 모든 문자 조합을 순차적으로 생성해 해시와 비교합니다. 무작위 조합을 모두 시도하므로 시간이 많이 들지만, 짧고 복잡하지 않은 비밀번호에는 효과적입니다. John은 문자빈도·우선순위 테이블을 사용해 “가능성 높은 조합”을 먼저 시도하도록 최적화합니다. 

4.3 마스크(Mask) / 규칙(Rules) 기반 접근

사용자 행동 패턴(예: 이름 + 연도, 특수문자 추가)을 규칙으로 정의해 시도 범위를 좁힙니다. 이 방식은 브루트포스보다 훨씬 효율적입니다. 또한 Markov/통계 기반 후보 생성도 사용됩니다. 

4.4 기타(마크오프, 싱글 모드 등)

John은 사용자 메타(로그인명·홈디렉토리명 등)로부터 후보를 생성하는 싱글 크랙(single crack) 모드, 마크오프/정규식 기반 모드 등 다양한 전략을 제공합니다. 이런 다양한 모드는 방어자가 어떤 유형의 비밀번호가 쉽게 깨지는지 이해하는 데 도움을 줍니다. 

5. 실습 시나리오(허가된 환경에서만) — 샘플 워크플로우(개념)

🧭

아래는 교육용 샘플 워크플로우(개념적)로, 실습에 사용할 수 있는 안전한 데이터·절차만을 설명합니다. 타깃 시스템을 침해하는 실무 명령은 제공하지 않습니다.

  1. 환경 준비 — VM을 준비하고 John을 설치합니다(위 설치 예제 참고).
  2. 샘플 해시 생성 — 테스트 계정 1~3개를 만들고, 로컬에서 해시 파일(예: passwd 형식의 텍스트)을 준비합니다. (자기 소유 환경에서만)
  3. 워드리스트 준비 — 공개 워드리스트(예: rockyou) 또는 자신만의 리스트를 준비해 비교 실험을 합니다.
  4. 다양한 모드 비교 — 사전공격 vs 규칙 적용 vs 마스크 기반 후보 생성의 결과·속도를 비교해 봅니다.
  5. 결과 분석 — 어떤 유형의 비밀번호가 빨리 깨졌는지 기록하고, 방어 정책(최소 길이, 특수문자 요구, 임의 토큰, MFA 권장)을 설계합니다.

참고: 워크플로우의 목적은 '무엇이 왜 약한가'를 이해하고 방어 대책을 세우는 것입니다. 실무에서 오프라인 해시 시험은 항상 서면 허가 및 범위 정의가 필요합니다. 

6. 방어 가이드: 조직·운영 측면에서의 권장 정책

🛡️

John의 존재를 고려하면 다음과 같은 방어·관리 정책을 권장합니다:

  • 긴 비밀번호(최소 12자 이상) + 패스프레이즈 권장
  • 비밀번호 재사용 금지 + 주기적 변경(정책은 위험 기반으로 결정)
  • 최소 복잡성 (대/소문자·숫자·특수문자 조합), 하지만 복잡성만으로는 한계가 있음
  • 워드리스트/사전 단어 사용 차단 (조직 내부 금지 목록 적용 가능)
  • 단방향 해시 + 적절한 솔트 사용(예: bcrypt/scrypt/Argon2 권장) — 오래된 crypt/MD5는 교체 필요
  • 멀티팩터 인증(MFA) 적용으로 비밀번호 노출 시 리스크 완화
  • 로그/탐지 정책 — 비정상적 로그인/인증 시도 탐지

7. FAQ(자주 묻는 질문)

Q. John을 배우면 해커가 되나요?

A. 도구 자체는 중립적입니다. 목적과 윤리가 중요합니다. 방어·연구 목적으로 학습하면 보안 역량이 향상됩니다.

Q. 어떤 해시 알고리즘을 써야 안전한가요?

A. Argon2, bcrypt, scrypt 같은 메모리/시간 비용이 높은 해시 알고리즘을 사용하세요. 단순 MD5/LM/NTLM/crypt는 더 이상 안전하지 않습니다. 

Q. 실전에서 John이 쓰이나요?

A. 윤리적 펜테스트·보안 팀은 종종 오프라인 해시 테스트에 John을 사용합니다. 공격자가 사용할 수도 있으므로 방어체계를 강화해야 합니다. 

반응형