John the Ripper 를 사용하여 PDF 문서 크랙하기

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 강력한 오픈 소스 비밀번호 크래킹 도구인 John the Ripper 를 사용하여 비밀번호로 보호된 PDF 문서의 크래킹 과정을 탐구합니다. 안전한 PDF 를 생성하고, 해당 해시를 추출한 다음, 비밀번호를 크래킹하는 방법을 배우게 됩니다. 이 실습에서는 다양한 PDF 암호화 유형도 다루고 PDF 문서 보안을 위한 모범 사례를 제공합니다. 이러한 개념을 이해하는 것은 사이버 보안 전문가와 PDF 형식으로 민감한 정보를 다루는 모든 사람에게 매우 중요합니다.

비밀번호로 보호된 PDF 문서 생성

이 단계에서는 간단한 텍스트 파일을 생성하고 이를 비밀번호로 보호된 PDF 문서로 변환합니다. 이를 위해 enscriptps2pdf 명령어를 사용합니다. enscript는 텍스트 파일을 PostScript 로 변환하고, ps2pdf는 PostScript 를 PDF 로 변환합니다.

먼저, ~/project 디렉토리에 secret.txt라는 간단한 텍스트 파일을 생성합니다.

echo "This is a secret document." > ~/project/secret.txt
cat ~/project/secret.txt

다음으로, secret.txt를 PostScript 파일로 변환합니다.

enscript -p ~/project/secret.ps ~/project/secret.txt
ls -l ~/project/secret.ps

이제 PostScript 파일을 비밀번호로 보호된 PDF 로 변환합니다. 사용자 비밀번호와 소유자 비밀번호를 모두 labex123으로 설정합니다. 사용자 비밀번호는 문서 열기를 제한하고, 소유자 비밀번호는 인쇄 또는 편집과 같은 권한을 제한합니다.

ps2pdf -sOwnerPassword=labex123 -sUserPassword=labex123 ~/project/secret.ps ~/project/protected.pdf
ls -l ~/project/protected.pdf

비밀번호로 보호된 PDF 문서를 성공적으로 생성했습니다.

pdf2john 을 사용하여 PDF 에서 해시 추출

이 단계에서는 pdf2john.py를 사용하여 비밀번호로 보호된 PDF 문서에서 해시를 추출합니다. pdf2john.py는 John the Ripper 와 함께 제공되는 Python 스크립트로, PDF 파일에서 크래킹 가능한 해시를 추출하도록 설계되었습니다.

먼저, pdf2john.py 스크립트의 위치를 찾습니다. 일반적으로 John the Ripper 설치의 run 디렉토리에 있습니다.

find /usr/share/john -name pdf2john.py

이제 pdf2john.py를 사용하여 ~/project/protected.pdf에서 해시를 추출하고 pdf_hash.txt라는 파일에 저장합니다.

python3 /usr/share/john/pdf2john.py ~/project/protected.pdf > ~/project/pdf_hash.txt
cat ~/project/pdf_hash.txt

출력에는 John the Ripper 가 크래킹을 시도할 수 있는 해시 문자열이 표시됩니다. 형식은 일반적으로 PDF 버전, 암호화 유형 및 실제 해시에 대한 정보를 포함합니다.

John the Ripper 로 PDF 해시 크랙하기

이 단계에서는 John the Ripper 를 사용하여 추출된 PDF 해시를 크랙합니다. 이 시연에서는 간단한 단어 목록 (wordlist) 을 사용합니다.

먼저, ~/project 디렉토리에 wordlist.txt라는 단어 목록 파일을 생성합니다. labex123(올바른 비밀번호) 과 몇 가지 다른 일반적인 비밀번호를 포함시킵니다.

echo -e "password\n123456\nlabex123\nqwerty" > ~/project/wordlist.txt
cat ~/project/wordlist.txt

이제 wordlist.txt와 함께 John the Ripper 를 사용하여 pdf_hash.txt의 해시를 크랙합니다.

john --wordlist=~/project/wordlist.txt ~/project/pdf_hash.txt

John the Ripper 는 해시와 단어 목록을 처리합니다. 일치하는 항목을 찾으면 크랙된 비밀번호를 표시합니다.

크랙 후, John 이 찾아서 저장한 크랙된 비밀번호를 볼 수 있습니다.

john --show ~/project/pdf_hash.txt

protected.pdf에 대한 크랙된 비밀번호로 labex123이 표시되어야 합니다.

PDF 암호화 유형 이해하기

이 단계에서는 다양한 PDF 암호화 유형과 이러한 유형이 PDF 문서의 보안에 미치는 영향에 대해 알아봅니다. PDF 암호화는 시간이 지남에 따라 발전해 왔으며, 최신 버전은 더 강력한 보호 기능을 제공합니다.

PDF 암호화는 일반적으로 RC4 또는 AES 와 같은 알고리즘을 사용합니다. 키 길이도 다양하며, 키 길이가 길수록 더 높은 보안성을 제공합니다.

  • RC4 40-bit: 이것은 더 오래되고 약한 암호화 방식으로, 쉽게 크랙될 수 있습니다.
  • RC4 128-bit: 더 일반적인 이전 표준이지만, 최신 크래킹 기술에 여전히 취약합니다.
  • AES 128-bit: 더 강력한 암호화 표준으로, 무차별 대입 공격 (brute-force attacks) 에 더 잘 견딥니다.
  • AES 256-bit: 현재 PDF 에서 사용 가능한 가장 강력한 암호화로, 견고한 보호 기능을 제공합니다.

exiftool을 사용하여 PDF 의 암호화 세부 정보를 검사할 수 있습니다. 생성한 protected.pdf를 확인해 보겠습니다.

exiftool ~/project/protected.pdf | grep "Encryption"

출력에는 PDF 를 생성하는 데 사용된 도구 및 버전에 따라 Encryption : RC4 128-bit 또는 AES 256-bit와 같은 세부 정보가 표시됩니다. 당사의 ps2pdf 명령은 일반적으로 이전 호환성을 위해 기본적으로 RC4 128-bit 를 사용합니다. 더 강력한 암호화는 특정 옵션이나 최신 PDF 생성 도구를 필요로 합니다.

암호화 유형을 이해하는 것은 비밀번호 크랙에 필요한 노력에 직접적인 영향을 미치기 때문에 중요합니다. 약한 암호화 유형은 크랙하는 데 훨씬 더 빠릅니다.

PDF 문서 올바르게 보안하기

이 단계에서는 PDF 문서에 대한 무단 액세스 및 크랙을 방지하기 위한 모범 사례를 배웁니다. John the Ripper 와 같은 도구가 약한 비밀번호를 크랙할 수 있지만, 강력한 보안 조치는 이를 매우 어렵거나 불가능하게 만들 수 있습니다.

PDF 문서를 보호하기 위한 주요 권장 사항은 다음과 같습니다.

  1. 강력한 비밀번호 사용: 이것이 가장 중요한 단계입니다. 강력한 비밀번호는 다음과 같아야 합니다.

    • 길어야 합니다 (최소 12-16 자).
    • 복잡해야 합니다 (대문자, 소문자, 숫자 및 기호 혼합).
    • 고유해야 합니다 (다른 계정이나 문서에 사용되지 않음).
    • 무작위여야 합니다 (사전 단어 또는 개인 정보 피하기).
  2. 강력한 암호화 알고리즘 사용: 항상 사용 가능한 최고 수준의 암호화 표준, 가급적 AES 256-bit 를 선택하십시오. PDF 를 생성할 때 소프트웨어가 최신 암호화를 사용하도록 구성되었는지 확인하십시오.

  3. 사용자 비밀번호 및 소유자 비밀번호 모두 설정:

    • 사용자 비밀번호: 문서 열기를 제한합니다. 이것이 주요 보호 기능입니다.
    • 소유자 비밀번호: 인쇄, 내용 복사, 편집 또는 주석 추가와 같은 권한을 제한합니다. 사용자 비밀번호를 알고 있더라도 소유자 비밀번호는 특정 작업을 방지할 수 있습니다.
  4. 문서와 함께 비밀번호 저장하지 않기: PDF 자체와 동일한 위치 또는 동일한 시스템에 PDF 비밀번호를 저장하지 마십시오.

  5. 소프트웨어 정기 업데이트: PDF 생성 및 보기 소프트웨어가 최신 보안 패치 및 암호화 표준의 이점을 누릴 수 있도록 최신 상태로 유지하십시오.

  6. 디지털 서명 고려: 인증 및 무결성을 위해 디지털 서명은 문서의 출처를 확인하고 위변조되지 않았음을 보장할 수 있습니다.

이러한 관행을 따르면 PDF 문서의 보안을 크게 강화하고 민감한 정보가 무단 액세스로부터 보호되도록 할 수 있습니다.

요약

이 실습에서는 John the Ripper 를 사용하여 비밀번호로 보호된 PDF 문서를 크랙하는 실습 경험을 쌓았습니다. 비밀번호로 보호된 PDF 를 생성하고, pdf2john.py를 사용하여 해시를 추출한 다음, 성공적으로 비밀번호를 크랙하는 방법을 배웠습니다. 또한, 다양한 PDF 암호화 유형을 탐색하고 보안에 미치는 영향을 이해했습니다. 마지막으로, 강력한 비밀번호와 최신 암호화 표준의 중요성을 강조하며 PDF 문서를 올바르게 보호하기 위한 필수 모범 사례를 검토했습니다. 이 지식은 민감한 정보를 보호하고 PDF 파일의 잠재적 취약점을 이해하는 데 매우 중요합니다.