John the Ripper 세션 및 재개 관리

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 비밀번호 크래킹 세션을 관리하기 위한 John the Ripper (JtR) 의 필수 기능들을 탐색합니다. 효과적인 세션 관리는 장시간 실행되는 크래킹 작업에 매우 중요하며, 작업을 일시 중지하고 재개하며, 예기치 않은 중단으로부터 복구하고, 진행 상황을 추적할 수 있게 해줍니다. 이 실습에서는 크래킹 세션을 시작하는 방법, 세션을 정상적으로 일시 중지하고 재개하는 방법, 세션 파일의 역할을 이해하고, 시뮬레이션된 충돌 후 세션을 복구하는 방법까지 배우게 됩니다. 마지막으로, 깔끔한 작업 환경을 유지하기 위해 오래된 세션 파일을 정리하는 방법을 배우게 됩니다.

John the Ripper 크래킹 세션 시작하기

이 단계에서는 기본적인 John the Ripper 크래킹 세션을 시작합니다. 프로세스를 시연하기 위해 간단한 MD5 해시와 작은 단어 목록을 사용합니다. John the Ripper 는 크래킹 프로세스를 시작할 때 자동으로 세션 파일을 생성하며, 이는 세션 관리에 필수적입니다.

먼저, ~/project 디렉토리에 wordlist.txt라는 간단한 단어 목록 파일을 생성합니다.

echo -e "test\npassword\n123456\nadmin" > ~/project/wordlist.txt

이제 wordlist.txt를 사용하여 passwords.txt 파일을 크래킹하기 위해 John the Ripper 를 시작합니다. 세션 관리를 용이하게 하기 위해 --session 옵션을 사용하여 세션에 특정 이름을 지정합니다.

john --format=raw-md5 --wordlist=~/project/wordlist.txt --session=my_first_session ~/project/passwords.txt

John the Ripper 가 크래킹 프로세스를 시작하는 것을 볼 수 있습니다. 단어 목록이 작고 올바른 비밀번호를 포함하고 있기 때문에 비밀번호를 빠르게 찾을 가능성이 높습니다.

예시 출력:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

세션이 완료된 후에는 --show 옵션을 사용하여 크래킹된 비밀번호를 볼 수 있습니다.

john --show ~/project/passwords.txt

예시 출력:

user1:password

1 password hash cracked, 0 left

크래킹 세션 일시 중지 및 재개

이 단계에서는 진행 중인 John the Ripper 세션을 일시 중지했다가 다시 시작하는 방법을 배웁니다. 이는 나중에 중단하고 계속해야 할 수 있는 장시간 크래킹 작업에 특히 유용합니다.

먼저, 크래킹 프로세스에 시간이 좀 걸리도록 하여 일시 중지할 수 있도록 더 큰 더미 단어 목록을 생성합니다.

seq 1000000 | sed "s/$/password/" > ~/project/large_wordlist.txt

이제 이 큰 단어 목록을 사용하여 새 John the Ripper 세션을 시작합니다. 이 세션의 이름을 long_session으로 지정합니다.

john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=long_session ~/project/passwords.txt

크래킹이 시작되면 즉시 Ctrl+C를 눌러 세션을 일시 중지합니다. John the Ripper 는 현재 상태를 세션 파일에 저장합니다.

Ctrl+C를 누른 후 예시 출력:

...
Press 'q' or Ctrl-C to abort, almost any other key for status
^C
Session aborted.

세션을 재개하려면 세션 이름과 함께 --restore 옵션을 사용합니다.

john --restore=long_session

John the Ripper 는 중단했던 지점에서 정확히 다시 시작합니다. 비밀번호를 찾을 때까지 실행되도록 두거나, 다시 Ctrl+C를 눌러 일시 중지할 수 있습니다.

재개 후 예시 출력:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

세션 파일 이해하기

이 단계에서는 John the Ripper 가 생성한 세션 파일을 살펴봅니다. 이 파일들은 크래킹 세션의 상태를 저장하여 일시 중지, 재개 및 복구를 가능하게 합니다.

John the Ripper 는 일반적으로 세션 파일을 ~/.john 디렉토리에 저장합니다. 이 디렉토리의 내용을 나열하여 생성한 세션 파일을 확인해 보겠습니다.

ls -l ~/.john/

my_first_session.reclong_session.rec와 같은 파일을 볼 수 있습니다. .rec 확장자는 복구 파일을 나타냅니다.

예시 출력:

total 16
-rw------- 1 labex labex 8192 Oct 27 08:30 my_first_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec

세션 파일의 내용을 볼 수도 있지만, 대부분은 이진 데이터입니다. 그러나 strings 명령어를 사용하여 읽을 수 있는 문자열을 추출할 수 있으며, 이를 통해 일부 세션 정보를 확인할 수 있습니다.

strings ~/.john/long_session.rec | head -n 10

예시 출력 (다를 수 있음):

JtR session file
long_session
raw-md5
/home/labex/project/passwords.txt
/home/labex/project/large_wordlist.txt

이러한 세션 파일은 John the Ripper 가 크래킹 프로세스를 관리하고 복구하는 능력에 매우 중요합니다.

충돌된 세션에서 복구하기

이 단계에서는 예기치 않게 충돌했을 수 있는 John the Ripper 세션을 복구하는 방법을 배웁니다. 이는 일시 중지된 세션을 재개하는 것과 유사하며, John the Ripper 는 주기적으로 상태를 자동으로 저장합니다.

먼저 충돌을 시뮬레이션해 보겠습니다. 새 세션을 시작하지만, 이번에는 정상적으로 일시 중지하는 대신 프로세스를 갑자기 종료합니다.

john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=crash_test ~/project/passwords.txt &

명령 끝에 있는 &는 명령을 백그라운드에서 실행합니다. 이를 통해 프로세스를 종료할 수 있습니다.
이제 john 프로세스의 프로세스 ID(PID) 를 찾습니다.

pgrep john

예시 출력 (PID 는 달라질 수 있음):

12345

이제 PID 를 사용하여 john 프로세스를 종료합니다. YOUR_PID를 찾은 실제 PID 로 바꾸십시오.

kill YOUR_PID

Terminated 또는 Killed와 같은 메시지가 표시될 수 있습니다. 이는 예기치 않은 충돌을 시뮬레이션합니다.

이제 crash_test 세션을 복구해 보겠습니다. John the Ripper 는 갑작스러운 종료 후에도 중단했던 지점에서 다시 시작할 수 있어야 합니다.

john --restore=crash_test

예시 출력:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

이는 John the Ripper 의 강력한 복구 기능을 보여주며, 장시간 크래킹 작업에 필수적입니다.

오래된 세션 파일 정리하기

이 단계에서는 오래된 John the Ripper 세션 파일을 정리하는 방법을 배웁니다. 이 파일들은 복구에 유용하지만, 특히 많은 세션을 실행하는 경우 시간이 지남에 따라 축적될 수 있습니다.

특정 세션 파일을 제거하려면 세션 이름과 함께 --remove 옵션을 사용할 수 있습니다. my_first_session 파일을 제거해 보겠습니다.

john --remove=my_first_session

제거를 확인하라는 메시지가 표시됩니다. y를 입력하고 Enter 키를 누릅니다.

예시 출력:

Remove session file ~/.john/my_first_session.rec? y

이제 ~/.john 디렉토리의 내용을 다시 나열하여 파일이 제거되었는지 확인합니다.

ls -l ~/.john/

my_first_session.rec는 더 이상 보이지 않아야 합니다.

예시 출력:

total 16
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:40 crash_test.rec

원하는 경우 .rec 파일을 수동으로 삭제할 수도 있지만, --remove를 사용하는 것이 적절한 정리를 보장하므로 권장되는 방법입니다.

rm ~/.john/long_session.rec
rm ~/.john/crash_test.rec

마지막으로 모든 세션 파일이 제거되었는지 확인합니다.

ls -l ~/.john/

예시 출력:

total 0

세션 파일을 정리하여 관리하면 크래킹 작업을 효율적으로 관리하는 데 도움이 됩니다.

요약

이 실습에서는 John the Ripper 크래킹 세션을 관리하는 실질적인 경험을 쌓았습니다. 세션을 시작하는 방법, 효과적으로 일시 중지 및 재개하는 방법, 그리고 크래킹 진행 상황을 유지하는 데 있어 세션 파일의 중요한 역할을 이해하는 방법을 배웠습니다. 또한 예기치 않은 충돌로부터 세션을 복구하는 방법을 탐색하여 John the Ripper 의 복원력을 강조했습니다. 마지막으로 작업 환경을 깔끔하게 유지하기 위해 오래된 세션 파일을 정리하는 연습을 했습니다. 이러한 기술은 John the Ripper 를 사용하여 장시간 비밀번호 감사 또는 크래킹 작업을 수행하는 모든 사람에게 기본적입니다.