John the Ripper 출력 및 상태 이해하기

Kali LinuxBeginner
지금 연습하기

소개

John the Ripper 는 인기 있는 오픈 소스 비밀번호 크래킹 도구입니다. 비밀번호 감사 또는 크래킹 시도를 수행할 때, 진행 상황을 모니터링하고, 크래킹된 비밀번호를 식별하며, 문제를 해결하기 위해 출력 및 상태를 이해하는 것이 중요합니다. 이 실습에서는 John the Ripper 의 다양한 출력 메시지를 해석하고, 실시간 크래킹 상태를 확인하며, 크래킹 세션의 결과를 보고, 성능 통계를 이해하고, 나중에 분석할 수 있도록 출력을 로깅하는 방법을 안내합니다.

John the Ripper 출력 메시지 해석

이 단계에서는 크래킹 세션 중에 John the Ripper 가 표시하는 다양한 메시지를 이해하는 방법을 배웁니다. 이러한 메시지는 진행 상황, 크래킹 모드 및 발생한 문제에 대한 통찰력을 제공합니다.

먼저, 단어 목록 (wordlist) 을 사용하여 간단한 크래킹 세션을 시작해 보겠습니다. 설정에서 생성한 passwords.txt 파일과 작은 wordlist.txt 파일을 사용합니다.

터미널에서 다음 명령을 실행합니다.

john --wordlist=wordlist.txt passwords.txt

다음과 유사한 출력이 표시됩니다.

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to the same type of crypt (sha512crypt, crypt(3) $6$)
Remaining 3 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
user1 (user1)
user2 (user2)
user3 (user3)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

이 출력의 주요 부분을 살펴보겠습니다.

  • Using default input encoding: UTF-8: John 이 사용 중인 문자 인코딩을 나타냅니다.
  • Loaded 3 password hashes...: 입력 파일에서 로드된 해시 수를 보여줍니다.
  • Press 'q' or Ctrl-C to abort, almost any other key for status: 이것은 중요한 프롬프트입니다. 세션 중에 John 과 상호 작용하는 방법을 알려줍니다.
  • user1 (user1): 이것은 크래킹된 비밀번호입니다. user1은 사용자 이름 (또는 해시 식별자) 이고, (user1)은 크래킹된 비밀번호입니다. John 은 발견하는 즉시 각 크래킹된 비밀번호를 표시합니다.
  • 3g 0:00:00:00 DONE ...: 이것은 요약 줄입니다.
    • 3g: 크래킹된 해시 수 (3 번의 추측).
    • 0:00:00:00 DONE: 경과 시간 및 세션이 완료되었음을 나타냅니다.
    • 100.0%: 크래킹 프로세스의 완료율.
    • 3.000g/s: 초당 추측 횟수.
    • 18.00p/s: 초당 비밀번호 수 (테스트된 후보 비밀번호 수).
    • 18.00c/s: 초당 암호화 횟수 (해시 계산 수).
    • 18.00C/s: 초당 후보 수 (생성된 고유 후보 비밀번호 수).
    • user1 user2 user3: 마지막으로 크래킹된 몇 개의 비밀번호.
  • Session completed: 크래킹 세션이 완료되었음을 확인합니다.

이러한 메시지를 이해하면 John the Ripper 작업의 진행 상황과 결과를 모니터링하는 데 도움이 됩니다.

세션 중 크래킹 상태 확인

이 단계에서는 John the Ripper 크래킹 세션의 실시간 상태를 확인하는 방법을 배웁니다. 이는 프로세스를 중단하지 않고 진행 상황을 모니터링해야 하는 장기 실행 세션에 특히 유용합니다.

먼저, 이전 세션의 상태를 정리하여 John 이 새로 시작하도록 합니다.

john --session=test_session --restore=NONE --wordlist=wordlist.txt passwords.txt --force-load-hashes

이제 새 크래킹 세션을 시작합니다. 이번에는 상태를 확인할 수 있을 만큼 세션이 충분히 오래 실행되도록 약간 더 큰 단어 목록을 사용하겠습니다. passwords.txt 파일과 wordlist.txt 파일을 사용합니다.

다음 명령을 실행합니다. 나중에 상태를 복원하거나 확인하는 데 유용한 --session=test_session을 사용하여 이 세션에 이름을 지정하고 있음을 유의하십시오.

john --session=test_session --wordlist=wordlist.txt passwords.txt

John 이 실행되는 동안 (작은 단어 목록으로는 빠르게 완료될 수 있지만, 큰 목록이라고 가정해 보겠습니다), 새 터미널 탭(또는 LabEx 환경이 아닌 경우 새 터미널 창) 을 엽니다. 새 터미널에서 실행 중인 세션의 상태를 확인할 수 있습니다.

상태를 확인하려면 세션 이름과 함께 --status 옵션을 사용합니다.

john --session=test_session --status

다음과 유사한 출력이 표시됩니다 (정확한 숫자는 진행 상황에 따라 달라집니다).

Session test_session (john)
Progress: 3/3 (100%)
Speed: 3.000g/s (words), 18.00p/s (passwords), 18.00c/s (crypts), 18.00C/s (candidates)
Remaining: 0:00:00:00
Cracked: 3

이 출력은 크래킹된 해시 수, 크래킹 속도 및 예상 남은 시간을 포함하여 세션 진행 상황의 스냅샷을 제공합니다.

상태를 확인한 후 새 터미널 탭을 닫을 수 있습니다. 원래 John the Ripper 세션은 완료될 때까지 계속 실행됩니다.

세션이 이미 완료된 경우 --status 명령은 세션이 완료되었음을 나타냅니다.

Session test_session (john)
Session completed

이 기능은 장기 실행 크래킹 작업을 관리하는 데 매우 유용합니다.

세션에서 크래킹된 비밀번호 보기

John the Ripper 세션이 완료된 후, 크래킹된 비밀번호는 john.pot라는 파일에 저장됩니다 (종종 ~/.john/john.pot에 위치합니다). 이 단계에서는 이러한 크래킹된 비밀번호를 보는 방법을 배웁니다.

먼저, 크래킹된 비밀번호가 포함된 john.pot 파일이 있는지 확인합니다. 이전 단계를 따랐다면 이미 존재해야 합니다. 그렇지 않다면 크래킹 명령을 다시 실행합니다.

john --wordlist=wordlist.txt passwords.txt

세션이 완료되면 --show 옵션을 사용하여 크래킹된 비밀번호를 볼 수 있습니다. 이 옵션은 John 에게 주어진 해시 파일에 대해 저장된 모든 크래킹된 비밀번호를 표시하도록 지시합니다.

다음 명령을 실행합니다.

john --show passwords.txt

다음과 유사한 출력이 표시됩니다.

user1:user1

user2:user2

user3:user3

3 password hashes cracked, 0 left

출력은 각 크래킹된 해시를 username:password 형식으로 나열합니다. 3 password hashes cracked, 0 left 줄은 결과를 요약합니다.

john.pot 파일은 John the Ripper 의 중요한 구성 요소로, 성공적으로 크래킹된 모든 비밀번호를 저장합니다. John 은 해시를 크래킹하려고 시도하기 전에 자동으로 이 파일을 확인하여 중복 작업을 방지합니다. cat을 사용하여 john.pot 파일을 직접 검사할 수도 있습니다.

cat ~/.john/john.pot

내용은 다음과 유사하게 보입니다.

user1:user1
user2:user2
user3:user3

이 단계는 크래킹 노력의 귀중한 결과를 검색하고 검토하는 방법을 보여줍니다.

John the Ripper 통계 이해하기

John the Ripper 는 크래킹 성능에 대한 상세한 통계를 제공합니다. 이러한 통계를 이해하면 크래킹 시도의 효율성을 평가하고 다양한 크래킹 전략을 비교하는 데 도움이 됩니다.

통계를 생성하기 위해 크래킹 세션을 다시 실행해 보겠습니다. 이전과 동일한 명령을 사용합니다.

john --wordlist=wordlist.txt passwords.txt

세션이 완료된 후 나타나는 최종 요약 줄을 관찰합니다.

3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

주요 통계 지표를 다시 살펴보겠습니다.

  • 3g: 이는 "추측" 횟수를 나타내며, 이 맥락에서는 성공적으로 크래킹된 해시 수를 나타냅니다.
  • 0:00:00:00 DONE: 세션에 소요된 총 시간입니다. 짧은 세션의 경우 0 으로 표시될 수 있습니다.
  • 100.0%: 크래킹 프로세스의 완료율입니다.
  • 3.000g/s (guesses/s): John 이 초당 추측하는 속도입니다. 이는 종종 크래킹 속도를 가장 직접적으로 측정하는 지표입니다.
  • 18.00p/s (passwords/s): 초당 테스트되는 후보 비밀번호 수입니다. 동일한 후보 비밀번호에 대해 여러 해시가 테스트되는 경우 g/s보다 높을 수 있습니다.
  • 18.00c/s (crypts/s): 초당 수행되는 해시 계산 (암호화 작업) 수입니다. 이는 사용되는 원시 계산 능력을 측정하는 것입니다.
  • 18.00C/s (candidates/s): 초당 생성되는 고유한 후보 비밀번호 수입니다. 동일한 후보가 여러 해시에 대해 테스트되는 경우 p/s와 다를 수 있습니다.

이러한 통계는 다음을 위해 중요합니다.

  • 성능 평가: John 이 얼마나 빠르게 비밀번호를 크래킹하는지 이해합니다.
  • 리소스 활용: 해시 계산에 사용되는 CPU 전력량을 측정합니다.
  • 전략 비교: 다양한 단어 목록 또는 크래킹 모드의 효과를 비교합니다.

이러한 숫자에 주의를 기울이면 비밀번호 감사 노력에 대한 귀중한 통찰력을 얻을 수 있습니다.

John the Ripper 출력 파일로 기록하기

장시간 실행되는 세션이나 감사 목적을 위해 John the Ripper 의 출력을 파일로 기록하는 것이 유익한 경우가 많습니다. 이렇게 하면 터미널을 계속 열어두지 않고도 진행 상황과 결과를 나중에 검토할 수 있습니다.

표준 셸 리디렉션 (>) 을 사용하여 John 의 표준 출력을 파일로 리디렉션할 수 있습니다.

먼저, 새로운 시작을 보장하기 위해 이전 세션 파일을 정리해 보겠습니다.

john --session=log_session --restore=NONE --wordlist=wordlist.txt passwords.txt --force-load-hashes

이제 John the Ripper 를 실행하고 출력을 ~/project 디렉터리에 있는 john_output.log라는 파일로 리디렉션합니다.

john --session=log_session --wordlist=wordlist.txt passwords.txt > john_output.log

이 명령을 실행한 후 터미널이 아무것도 하지 않는 것처럼 보일 것입니다. 이는 화면에 정상적으로 표시될 모든 출력이 이제 john_output.log에 기록되기 때문입니다.

명령이 완료되면 (작은 단어 목록으로는 거의 즉시 완료될 것입니다), cat을 사용하여 로그 파일의 내용을 볼 수 있습니다.

cat john_output.log

화면에서 보았을 내용과 동일한 John the Ripper 세션의 전체 출력이 파일에 저장된 것을 볼 수 있습니다.

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to the same type of crypt (sha512crypt, crypt(3) $6$)
Remaining 3 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
user1 (user1)
user2 (user2)
user3 (user3)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

출력 기록은 장시간 실행되거나 중요한 명령줄 작업에 대한 모범 사례이며, 이벤트 및 결과에 대한 영구적인 기록을 제공합니다.

요약

이 실습에서는 John the Ripper 의 출력을 해석하고 세션을 관리하는 방법에 대한 포괄적인 이해를 얻었습니다. 크래킹 세션 중에 표시되는 다양한 메시지를 해독하고, 실행 중인 세션의 실시간 상태를 확인하고, john.pot 파일에서 크래킹된 비밀번호를 검색하는 방법을 배웠습니다. 또한 John 의 성능 통계를 이해하는 방법과 지속적인 기록 보관을 위해 출력을 파일로 기록하는 방법을 살펴보았습니다. 이러한 기술은 비밀번호 감사 및 보안 테스트에 John the Ripper 를 효과적으로 사용하는 데 필수적입니다.