보안

[보안점검도구] John the Ripper(존 더 리퍼)

타우루스 2026. 2. 22. 20:14

John the Ripper(존 더 리퍼)는 시스템 보안 점검 및 모의 해킹에서 널리 사용되는 오픈소스 기반의 패스워드 크래킹(Password Cracking) 도구입니다.

 

초기에는 Unix 계열 운영체제의 취약한 패스워드를 탐지하기 위해 개발되었으나, 현재는 Windows(LM/NTLM 해시), macOS, 데이터베이스, 웹 애플리케이션 등 수백 가지의 다양한 암호 해시 형식을 지원하는 다목적 보안 감사 도구로 발전했습니다.


동작 원리 (해시 검증)

시스템은 일반적으로 사용자의 비밀번호를 평문(Plaintext)으로 저장하지 않고, 단방향 함수를 이용해 해시(Hash) 형태로 변환하여 저장합니다(예: Linux의 /etc/shadow 파일).

John the Ripper는 이 해시를 '역산(복호화)'하는 것이 아니라, '추측한 평문 패스워드를 동일한 해시 알고리즘으로 암호화한 뒤 시스템에 저장된 해시값과 비교(Matching)'하여 일치하는 경우 해당 평문이 비밀번호임을 알아내는 방식으로 동작합니다.


주요 크래킹 모드 (공격 기법)

John the Ripper는 패스워드를 추측하기 위해 다음과 같은 여러 가지 모드를 제공하며, 상황에 맞게 자동으로 전환하거나 수동으로 지정할 수 있습니다.

크래킹 모드 설명 원리 및 특징
Single Crack Mode 사용자 정보를 기반으로 한 유추 사용자의 계정명(ID), 전체 이름(Full Name), 홈 디렉터리 이름 등 시스템에서 수집할 수 있는 개인 정보를 변형(대소문자 변경, 숫자 추가 등)하여 대입합니다. 속도가 가장 빠릅니다.
Wordlist Mode
(사전 대입 공격)
준비된 단어장(Dictionary) 활용 사람들이 자주 사용하는 비밀번호 목록(사전 파일)을 순차적으로 대입합니다. '규칙(Rules)'을 적용하여 사전의 단어에 숫자나 특수문자를 자동으로 덧붙여 공격 효율을 높일 수 있습니다.
Incremental Mode
(무작위 대입 공격)
모든 가능한 조합(Brute-force) 시도 지정된 문자셋(알파벳, 숫자, 특수문자)을 바탕으로 가능한 모든 조합을 생성하여 대입합니다. 가장 확실하지만, 패스워드 길이가 길수록 시간이 기하급수적으로 증가합니다.
External Mode 사용자 정의 규칙 적용 사용자가 C 언어와 유사한 문법으로 직접 작성한 외부 스크립트나 규칙을 기반으로 패스워드 후보를 생성하여 검증합니다.

구체적인 실행 과정 예시 (Linux 시스템 점검 기준)

Linux 시스템의 취약한 패스워드를 식별하는 과정은 일반적으로 다음 3단계로 진행됩니다.

  • Step 1: 패스워드 파일 병합 (unshadow)
    unshadow /etc/passwd /etc/shadow > mypasswd.txt
    
  • Linux는 사용자 정보가 담긴 /etc/passwd와 실제 패스워드 해시가 담긴 /etc/shadow를 분리하여 관리합니다. JtR이 이 두 파일을 분석할 수 있도록 하나의 텍스트 파일로 병합합니다.

 

  • Step 2: 크래킹 실행 (john)
    # 사전(Wordlist) 파일을 지정하여 공격하는 예시
    john --wordlist=password_list.txt mypasswd.txt
    
  • 병합된 파일을 대상으로 John the Ripper를 실행합니다. 옵션을 주지 않으면 Single -> Wordlist -> Incremental 순으로 기본 설정된 자동 크래킹을 수행합니다.

 

  • Step 3: 결과 확인 (--show)
    john --show mypasswd.txt
  • 크래킹이 완료되거나 중단된 후, 성공적으로 알아낸 계정과 평문 패스워드 목록을 출력합니다.