KeePass KDBX 데이터베이스 비밀번호 크랙하기

Kali LinuxBeginner
지금 연습하기

소개

KeePass 는 비밀번호를 안전하게 관리하는 데 도움이 되는 인기 있는 오픈 소스 비밀번호 관리자입니다. 비밀번호는 일반적으로 .kdbx 확장자를 가진 암호화된 데이터베이스 파일에 저장됩니다. 매우 안전하지만, 데이터베이스 보호의 강도는 사용자가 선택한 마스터 비밀번호에 크게 좌우됩니다.

이 실습에서는 보안 분석가의 역할을 맡아 KeePass 데이터베이스 비밀번호의 강도를 테스트합니다. 윤리적이고 교육적인 목적으로 비밀번호 크래킹의 기본 프로세스를 배우게 됩니다. keepass2john (John the Ripper 제품군의 도구) 을 사용하여 샘플 .kdbx 파일에서 비밀번호 해시를 추출하고, 강력한 비밀번호 복구 도구인 hashcat을 사용하여 사전 공격 (dictionary attack) 으로 이를 크랙할 것입니다.

이 실습 경험을 통해 공격자가 취약한 비밀번호를 어떻게 악용할 수 있는지 보여주고, 강력하고 복잡한 마스터 비밀번호를 사용하는 것의 중요성을 강조할 것입니다.

간단한 비밀번호로 샘플 KeePass 데이터베이스 생성하기

이 단계에서는 대상 KeePass 데이터베이스를 생성합니다. 비밀번호 크래킹 테스트를 수행하려면 먼저 작업할 .kdbx 파일이 필요합니다. KeePass 애플리케이션을 사용하여 새 데이터베이스를 생성하고 시연 목적으로 간단하고 추측하기 쉬운 비밀번호로 보호할 것입니다.

먼저 터미널에 애플리케이션 이름을 입력하여 KeePass 애플리케이션을 실행합니다.

keepass2

그러면 KeePass 그래픽 사용자 인터페이스가 열립니다. 이제 다음 단계를 따라 데이터베이스를 생성합니다.

  1. KeePass 창에서 메뉴로 이동하여 File -> New...를 클릭합니다.
  2. "Create New Password Database" 창이 나타납니다. 계속하려면 OK를 클릭합니다.
  3. 새 데이터베이스 파일을 저장하라는 메시지가 표시됩니다. /home/labex/project 디렉토리로 이동하여 파일 이름을 MySecrets.kdbx로 지정하고 Save를 클릭합니다.
  4. 다음으로 "Create Master Key" 창이 나타납니다. 여기서 데이터베이스의 마스터 비밀번호를 설정합니다. 이 실습에서는 "Master password" 필드에 password123을 입력하고 "Repeat password" 필드에도 동일하게 입력합니다. OK를 클릭합니다.
  5. "New Password Database - Step 2" 창이 나타납니다. 기본 설정을 그대로 유지할 수 있습니다. OK를 클릭합니다.
  6. 새롭고 비어 있는 데이터베이스가 생성되어 열렸습니다. 선택적으로 샘플 항목을 추가할 수 있지만, 이 실습에서는 필수는 아닙니다.
  7. 마지막으로 File -> Exit를 클릭하여 KeePass 애플리케이션을 종료합니다.

이제 ~/project 디렉토리에 MySecrets.kdbx라는 파일이 있어야 합니다. ls 명령으로 존재 여부를 확인할 수 있습니다.

ls -l ~/project

출력에서 MySecrets.kdbx가 나열된 것을 볼 수 있습니다.

keepass2john 을 사용하여 해시 추출하기

이 단계에서는 MySecrets.kdbx 파일에서 비밀번호 해시를 추출합니다. hashcat과 같은 비밀번호 크래킹 도구는 데이터베이스 파일 자체에서 직접 작동하지 않습니다. 대신, "해시"라고 하는 마스터 비밀번호의 암호화된 표현으로 작동합니다.

John the Ripper 비밀번호 크래커 제품군에 포함된 유틸리티인 keepass2john을 사용하여 KeePass 데이터베이스의 키 정보를 hashcat이 이해할 수 있는 형식으로 변환할 것입니다.

터미널을 열고 다음 명령을 실행합니다. 이 명령은 MySecrets.kdbx 파일을 읽고 해당 해시를 출력하며, 이 해시를 리디렉션하여 keepass.hash라는 새 파일에 저장합니다.

keepass2john ~/project/MySecrets.kdbx > ~/project/keepass.hash

이 명령은 출력이 keepass.hash 파일로 리디렉션되었기 때문에 터미널에 아무런 출력을 생성하지 않습니다. 새로 생성된 해시 파일의 내용을 보려면 cat 명령을 사용합니다.

cat ~/project/keepass.hash

출력은 다음과 같이 보이는 단일 긴 텍스트 줄입니다.

MySecrets:$keepass$*2*6000*0*b1b5b8a8a5b8a8a5b8a8a5b8a8a5b8a8*...*...

이 문자열이 해시입니다. 여기에는 암호화 알고리즘, 솔트 (salt), 암호화된 마스터 키를 포함하여 hashcat이 비밀번호를 크랙하는 데 필요한 모든 정보가 포함되어 있습니다.

KeePass 에 대한 올바른 Hashcat 모드 식별하기

이 단계에서는 KeePass 해시를 크랙할 때 hashcat이 사용할 올바른 모드를 결정합니다. hashcat은 운영 체제 비밀번호부터 애플리케이션별 형식에 이르기까지 수백 가지의 다양한 해시 유형을 지원하는 매우 다재다능한 도구입니다.

올바르게 작동하려면 제공하는 해시의 종류를 hashcat에 명시적으로 알려야 합니다. 이는 -m 플래그를 사용하여 숫자 모드를 지정함으로써 수행됩니다. KeePass 에 대한 모드 번호를 찾으려면 hashcat의 도움말 문서를 검색할 수 있습니다.

터미널에서 다음 명령을 실행합니다. 이 명령은 hashcat의 전체 도움말 출력을 grep으로 파이프하고, grep은 "keepass"라는 단어가 포함된 줄을 필터링합니다.

hashcat --help | grep -i keepass

grep-i 플래그는 검색을 대소문자 구분 없이 수행합니다. 출력에는 관련 모드가 표시됩니다.

13400 | KeePass 1 (AES/Twofish) / KeePass 2 (AES)             | Password Managers

이 출력에서 KeePass 1 및 2 데이터베이스의 모드가 13400임을 알 수 있습니다. 이것이 마지막 단계에서 공격을 시작하는 데 필요한 숫자입니다.

공격을 위한 단어 목록 준비하기

이 단계에서는 사전 공격 (dictionary attack) 을 위한 단어 목록을 준비합니다. 사전 공격은 크래킹 도구가 미리 컴파일된 목록의 모든 단어를 잠재적 비밀번호로 시도하는 방법입니다. 이 공격의 성공 여부는 올바른 비밀번호가 목록에 포함되어 있는지에 전적으로 달려 있습니다.

실제 시나리오에서 공격자들은 수백만 또는 수십억 개의 일반적인 비밀번호를 포함하는 방대한 단어 목록을 사용합니다. 이 실습에서는 크래킹 프로세스가 빠르고 성공적으로 진행되도록 매우 작고 사용자 정의된 단어 목록을 만들 것입니다. 가장 중요하게는 올바른 비밀번호인 password123을 목록에 포함시킬 것입니다.

nano 텍스트 편집기를 사용하여 wordlist.txt라는 새 파일을 만듭니다.

nano ~/project/wordlist.txt

nano가 열리면 편집기에 다음 비밀번호를 각 줄에 하나씩 입력합니다.

password
123456
password123
qwerty
labex

단어를 입력한 후 Ctrl+X를 누르고, 확인을 위해 Y를 누른 다음, 마지막으로 Enter를 눌러 파일을 저장하고 nano를 종료합니다.

이제 hashcat에서 사용할 수 있는 단어 목록이 준비되었습니다.

공격 시작 및 마스터 비밀번호 복구하기

이 마지막 단계에서는 모든 것을 종합하여 hashcat으로 비밀번호 크래킹 공격을 시작합니다. 해시 파일 (keepass.hash), 올바른 해시 모드 (13400), 그리고 사용자 정의 단어 목록 (wordlist.txt) 이 준비되었습니다.

이제 터미널에서 다음 명령을 실행하여 공격을 시작합니다.

hashcat -m 13400 -a 0 ~/project/keepass.hash ~/project/wordlist.txt

이 명령을 분석해 보겠습니다.

  • hashcat: 실행하는 프로그램입니다.
  • -m 13400: 이전 단계에서 식별한 KeePass 2 의 해시 모드를 지정합니다.
  • -a 0: 공격 모드를 지정합니다. 모드 0은 "Straight" 또는 사전 공격입니다.
  • ~/project/keepass.hash: 대상 해시가 포함된 파일의 경로입니다.
  • ~/project/wordlist.txt: 단어 목록의 경로입니다.

hashcat이 초기화되고 단어 목록에서 비밀번호를 테스트하기 시작합니다. 목록이 매우 짧고 올바른 비밀번호를 포함하고 있으므로 프로세스는 매우 빠르게 진행될 것입니다. 상태 업데이트가 표시되며 곧 프로세스가 완료될 것입니다.

공격이 완료되면 hashcat은 찾은 비밀번호를 "potfile"이라는 파일에 저장합니다. 크랙된 비밀번호를 보려면 --show 플래그를 사용하여 동일한 명령을 다시 실행할 수 있습니다.

hashcat -m 13400 -a 0 ~/project/keepass.hash ~/project/wordlist.txt --show

이 명령은 크랙된 해시와 해당 비밀번호를 즉시 표시합니다.

MySecrets:$keepass$*2*6000*0*...:password123

출력에는 원본 해시와 콜론, 그리고 복구된 비밀번호인 password123이 명확하게 표시됩니다. 축하합니다. KeePass 데이터베이스 비밀번호를 성공적으로 크랙했습니다!

요약

이 실습에서는 사전 공격을 수행하여 KeePass KDBX 데이터베이스의 마스터 비밀번호를 성공적으로 복구했습니다.

다음과 같은 완전하고 실용적인 비밀번호 감사 워크플로우를 배웠습니다.

  1. 약한 비밀번호로 샘플 KeePass 데이터베이스 생성.
  2. keepass2john을 사용하여 크래킹에 적합한 형식으로 비밀번호 해시 추출.
  3. KeePass 데이터베이스에 대한 hashcat의 올바른 해시 모드 (13400) 식별.
  4. 잠재적 비밀번호를 포함하는 사용자 정의 단어 목록 준비.
  5. hashcat으로 공격을 시작하고 비밀번호 성공적으로 복구.

이 연습은 중요한 보안 원칙을 강조합니다. 전체 비밀번호 데이터베이스의 보안은 마스터 비밀번호만큼만 강력하다는 것입니다. 간단하거나 일반적이거나 추측하기 쉬운 비밀번호를 사용하면 강력한 암호화로 보호되더라도 사전 공격에 취약해집니다. 비밀번호 관리자에는 항상 길고 복잡하며 고유한 마스터 비밀번호를 사용하십시오.