John the Ripper Single Crack Mode -> word Mangling

agnusdei·2025년 9월 7일

CTF

목록 보기
92/185

📌 싱글 크랙 모드 (Single Crack Mode)란?

  • John의 기본 공격 모드 중 하나.
  • 이름은 “싱글” 이지만, 단순히 한 번만 시도한다는 뜻이 아니고,
    한 사용자(user) 계정의 정보(로그인 ID, GECOS 필드, 홈 디렉토리 등)를 기반으로 그 계정에 특화된 여러 후보 비밀번호를 생성해서 시도한다는 의미예요.

📌 어떻게 동작하나?

  1. 입력 데이터 분석

    • /etc/passwdunshadow 결과 파일에서 가져온 username, UID/GID, 사용자 설명(GECOS), 홈 디렉토리 이름 같은 정보를 추출.

    • 예:

      root:$6$2nwjN454g.dv4HN/...:/root:/bin/bash
      alice:$6$xyz...:/home/alice:/bin/bash
  2. 후보 비밀번호 생성 규칙 적용

    • 계정명 그대로 시도: root, alice
    • 대소문자 변형: Root, ALICE
    • 숫자/특수문자 붙이기: alice1, root123, alice!
    • 홈 디렉토리 이름, GECOS 필드 정보 기반 변형
    • 짧은 일반 단어 조합 등
  3. 즉각적인 크랙 시도

    • 이렇게 만들어진 후보들을 곧바로 해당 사용자 해시와 비교해 크랙을 시도.

📌 왜 “싱글”인가?

  • “여러 워드리스트 전체를 사용하는 게 아니라, 각 사용자별로 단일(unique) 규칙 집합을 적용한다”는 의미.
  • 즉, 개인화된(특화된) 단일 크랙 세션이라는 뜻.

📌 실행 예시

john --single unshadowed.txt
  • unshadowed.txt에서 각 사용자별로 자동으로 후보 비밀번호를 만들어서 테스트합니다.
  • 별도의 워드리스트 지정이 필요 없음.

✅ 정리:
싱글 크랙 모드 = “사용자 계정 정보를 기반으로 자동으로 후보 비밀번호를 만들어 빠르게 크랙해 보는 모드”
→ 이름은 “Single”이지만, 실제론 각 사용자별 맞춤형 후보를 여러 개 시도합니다.


John the Ripper Single Crack Mode -> word Mangling

개요

싱글 크랙 모드는 사용자명을 기반으로 패스워드를 추측하는 모드입니다. 맹글링 룰을 사용해 사용자명을 변형하여 일반적인 패스워드 패턴을 생성합니다.

기본 사용법

1. 기본 싱글 크랙 모드 실행

john --single hashfile

2. 특정 해시 타입 지정

john --single --format=NT hashfile
john --single --format=md5crypt hashfile
john --single --format=sha512crypt hashfile

3. 맹글링 룰 적용

# 기본 맹글링 룰 사용
john --single --rules hashfile

# 특정 룰셋 지정
john --single --rules=Single hashfile
john --single --rules=Wordlist hashfile

맹글링 패턴 예시

사용자명이 "admin"인 경우 생성되는 패스워드:

  • admin
  • admin123
  • admin2023
  • admin!
  • Admin
  • ADMIN
  • nimda (역순)
  • 4dm1n (leet speak)
  • admin01
  • admin2024

실제 사용 시나리오

1. Linux 패스워드 크랙

# /etc/passwd와 /etc/shadow 결합
unshadow /etc/passwd /etc/shadow > mypasswd

# 싱글 모드로 크랙
john --single mypasswd

2. Windows 해시 크랙

# SAM 덤프에서 추출한 NTLM 해시
john --single --format=NT ntlm_hashes.txt

3. 웹 애플리케이션 해시

# MD5 해시 크랙
john --single --format=raw-md5 md5_hashes.txt

# bcrypt 해시 크랙
john --single --format=bcrypt bcrypt_hashes.txt

맹글링 룰 커스터마이징

john.conf 파일에서 Single 룰 수정

# 설정 파일 위치 확인
john --list=conf

# 커스텀 룰 예시 (john.conf에 추가)
[List.Rules:CustomSingle]
# 숫자 추가
$[0-9]$[0-9]
# 특수문자 추가
$!
$@
$#
# 대소문자 변경
c
u
l

커스텀 룰 사용

john --single --rules=CustomSingle hashfile

효율적인 크랙 전략

1. 단계별 접근

# 1단계: 맹글링 없이 기본 실행
john --single hashfile

# 2단계: 기본 맹글링 룰 적용
john --single --rules hashfile

# 3단계: 더 복잡한 룰 적용
john --single --rules=Jumbo hashfile

2. 시간 제한 설정

# 10분 동안만 실행
timeout 600 john --single --rules hashfile

3. 결과 확인

# 크랙된 패스워드 확인
john --show hashfile

# 현재 상태 확인
john --status

  • 사용자명 정보가 정확해야 효과적
  • GECOS 필드 정보 활용 시 더 효과적
  • 짧은 패스워드에 특히 효과적
  • 다른 모드(wordlist, incremental)와 조합하여 사용

제한사항

  • 사용자명과 관련 없는 패스워드는 찾지 못함
  • 복잡한 패스워드에는 효과 제한적
  • 사용자명 정보가 부족하면 비효율적
profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글