단어 목록 모드로 간단한 비밀번호 크랙하기

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 사이버 보안의 기본 기술인 비밀번호 크래킹을 탐구합니다. 인기 있고 강력한 오픈 소스 비밀번호 보안 감사 도구인 John the Ripper (JtR) 를 사용합니다. 특히, 저장된 비밀번호 해시를 대상으로 올바른 비밀번호를 추측하기 위해 미리 정의된 잠재적 비밀번호 목록을 사용하는 "단어 목록" 공격을 수행하는 방법을 배우게 됩니다.

이 실습은 샘플 비밀번호 해시를 생성하고, 단어 목록을 얻고, John the Ripper 를 실행하여 비밀번호를 크래킹하고, 마지막으로 결과를 확인하고 저장하는 과정을 안내합니다. 이 과정을 이해하는 것은 사용자 비밀번호의 강도를 테스트하려는 시스템 관리자와 미래의 보안 전문가 모두에게 매우 중요합니다.

이 실습이 끝나면 다음을 수행할 수 있습니다.

  • 비밀번호 해시가 포함된 파일 생성
  • John the Ripper 와 함께 단어 목록 사용
  • 간단한 비밀번호 크래킹 및 결과 확인

샘플 비밀번호 해시 파일 생성

이 단계에서는 샘플 사용자를 생성하고 해당 비밀번호 해시를 파일로 추출합니다. 비밀번호 크래킹 도구는 일반 텍스트 비밀번호가 아닌, 일반적으로 Linux 의 /etc/shadow와 같은 시스템 파일에 저장되는 해시된 표현으로 작동합니다.

먼저, 간단한 비밀번호 password123으로 testuser라는 새 사용자를 생성합니다. openssl을 사용하여 비밀번호의 해시를 생성하고 useradd를 사용하여 사용자를 생성할 것입니다.

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

sudo useradd -m -p $(openssl passwd -1 password123) testuser

다음으로, /etc/shadow 파일에서 testuser의 비밀번호 해시를 포함하는 줄을 추출해야 합니다. grep 명령을 사용하여 해당 줄을 찾고 출력을 현재 디렉토리 (~/project) 내의 hashes.txt라는 새 파일로 리디렉션할 것입니다.

sudo grep testuser /etc/shadow > ~/project/hashes.txt

이제 hashes.txt 파일의 내용을 확인하여 사용자 해시가 포함되어 있는지 확인합니다.

cat hashes.txt

이와 유사한 출력이 표시되어야 합니다. 첫 번째 콜론과 두 번째 콜론 사이의 긴 문자열이 해시된 비밀번호입니다.

testuser:$1$jE/Ipl8J$z4JgUjZfH.yN.CgCjWn.H.:19782:0:99999:7:::

이제 비밀번호 크래킹 실습을 위한 대상 파일을 성공적으로 생성했습니다.

일반적인 단어 목록 다운로드

이 단계에서는 단어 목록을 생성합니다. 단어 목록은 각 줄에 잠재적인 비밀번호가 포함된 간단한 텍스트 파일입니다. John the Ripper 는 이 파일을 읽고 대상 해시에 대해 각 비밀번호를 시도합니다. 이 실습에서는 크고 기존의 단어 목록을 다운로드하는 대신, 자체적으로 작고 사용자 정의된 목록을 만들 것입니다. 이를 통해 내용을 제어하고 성공적인 크래킹을 위해 올바른 비밀번호가 포함되도록 할 수 있습니다.

wordlist.txt라는 파일을 만들고 몇 가지 일반적인 비밀번호를 추가해 보겠습니다. 여기에는 testuser에 설정한 비밀번호도 포함됩니다.

먼저 파일을 만들고 password123을 추가합니다.

echo "password123" > ~/project/wordlist.txt

이제 동일한 파일에 몇 가지 더 일반적인 비밀번호를 추가합니다. >>를 사용하여 추가하면 파일을 덮어쓰지 않고 내용을 추가합니다.

echo "123456" >> ~/project/wordlist.txt
echo "qwerty" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt

새 단어 목록의 내용을 확인해 보겠습니다.

cat wordlist.txt

터미널에 다음 내용이 표시되어야 합니다.

password123
123456
qwerty
admin

이제 John the Ripper 와 함께 사용할 준비가 된 단어 목록이 있습니다.

단어 목록 모드로 John the Ripper 실행

이 단계에서는 생성한 단어 목록을 사용하여 John the Ripper 로 비밀번호 해시를 크랙합니다. JtR 을 단어 목록 모드로 실행하는 구문은 간단합니다. 단어 목록 파일과 해시가 포함된 파일을 지정해야 합니다.

명령 형식은 john --wordlist=<path_to_wordlist> <path_to_hash_file>입니다.

이제 터미널에서 JtR 을 wordlist.txthashes.txt 파일로 지정하여 명령을 실행합니다.

john --wordlist=wordlist.txt hashes.txt

John the Ripper 가 처리를 시작합니다. 해시를 로드한 다음 단어 목록의 각 비밀번호를 시도합니다. 비밀번호가 목록에 있으므로 프로세스는 매우 빠를 것입니다. 다음과 유사한 출력이 표시됩니다.

Using default input encoding: UTF-8
Loaded 1 password hash (MD5-based crypt [MD5_body])
Cost 1 (algorithm [1:MD5 2:SHA256 3:SHA512] of 3) is 1 (MD5)
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s admin..password123
Session completed

password123 (testuser) 줄은 JtR 이 비밀번호를 성공적으로 크랙했음을 나타냅니다. 또한 이 결과를 "pot 파일"(일반 텍스트 파일) 에 저장하며, 일반적으로 ~/.john/john.pot에 위치하므로 알려진 비밀번호를 다시 크랙할 필요가 없습니다.

크랙된 비밀번호 보기

이 단계에서는 John the Ripper 가 이미 크랙한 비밀번호를 보는 방법을 배웁니다. 비밀번호가 크랙되면 JtR 은 이를 pot 파일에 저장합니다. 동일한 크래킹 명령을 다시 실행하려고 하면 JtR 은 이미 해결했기 때문에 "No password hashes left to crack"이라고 보고합니다.

주어진 해시 파일에 대한 크랙된 비밀번호를 표시하려면 --show 옵션을 사용합니다.

hashes.txt에 대한 크랙된 비밀번호를 보려면 다음 명령을 실행합니다.

john --show hashes.txt

이 명령은 pot 파일을 확인하고 hashes.txt의 해시와 관련된 크랙된 비밀번호를 표시합니다. 출력은 다음과 같이 표시됩니다.

testuser:password123:19782:0:99999:7:::
1 password hash cracked, 0 left

출력 형식은 username:password:other_shadow_file_fields입니다. 이는 testuser의 비밀번호가 password123임을 확인합니다. 이 명령은 pot 파일을 수동으로 파싱할 필요 없이 크래킹 세션의 결과를 빠르게 검색하는 데 매우 유용합니다.

크랙된 비밀번호를 파일에 저장

이 단계에서는 크랙된 비밀번호를 별도의 파일에 저장합니다. 이는 보고 목적으로 침투 테스트 및 보안 감사에서 일반적인 관행입니다. john --show 명령의 출력을 파일로 리디렉션하여 쉽게 달성할 수 있습니다.

결과를 cracked.txt라는 파일에 저장해 보겠습니다.

john --show hashes.txt > cracked.txt

이 명령은 이전과 같이 john --show hashes.txt를 실행하지만, 결과를 터미널에 출력하는 대신 > 연산자가 출력을 리디렉션하여 cracked.txt 파일에 저장합니다. 파일이 존재하지 않으면 생성됩니다. 파일이 존재하면 덮어쓰게 됩니다.

출력이 올바르게 저장되었는지 확인하려면 cat 명령을 사용하여 새 파일의 내용을 표시할 수 있습니다.

cat cracked.txt

터미널에 파일 내용이 표시되며, 이는 이전 단계에서 본 출력과 동일해야 합니다.

testuser:password123:19782:0:99999:7:::

1 password hash cracked, 0 left

이제 비밀번호를 성공적으로 크랙하고 문서화를 위해 결과를 파일에 저장했습니다.

요약

이 실습을 완료하신 것을 축하드립니다! John the Ripper 를 사용하여 기본적인 단어 목록 기반 비밀번호 크래킹 공격을 성공적으로 수행했습니다.

이 실습에서는 다음을 배웠습니다.

  • 시스템에서 샘플 비밀번호 해시 파일을 생성하는 방법.
  • 잠재적인 비밀번호를 포함하는 사용자 지정 단어 목록을 생성하는 방법.
  • 단어 목록 모드에서 John the Ripper 를 실행하여 비밀번호 해시를 크랙하는 방법.
  • --show 옵션을 사용하여 이미 크랙된 비밀번호를 보는 방법.
  • 명령 출력을 리디렉션하여 결과를 파일에 저장하는 방법.

이 연습은 간단하고 일반적인 비밀번호가 얼마나 쉽게 손상될 수 있는지를 보여줍니다. 시스템과 데이터를 보호하기 위해 강력하고 복잡하며 고유한 비밀번호를 사용하는 것의 중요성을 강조합니다. 여러분이 배운 기술은 보안 감사 및 침투 테스트의 기초적인 부분입니다.