John the Ripper 를 다른 도구와 통합하기

Kali LinuxBeginner
지금 연습하기

소개

John the Ripper (JtR) 는 강력하고 인기 있는 오픈 소스 비밀번호 크래킹 도구입니다. 자체적으로도 매우 효과적이지만, 다른 도구들과 함께 더 광범위한 보안 테스트 워크플로우에 통합될 때 진정한 잠재력을 발휘합니다. 스크립팅을 통한 자동화는 효율성을 더욱 향상시켜, 간소화되고 반복 가능한 비밀번호 감사 및 복구 작업을 가능하게 합니다.

이 랩에서는 John the Ripper 를 다른 일반적인 보안 도구와 통합하는 방법을 탐구합니다. Hashcat, Metasploit 및 Aircrack-ng 와 함께 JtR 을 사용하는 개념적인 워크플로우를 다룰 것입니다. 그런 다음 간단한 bash 스크립트를 작성하여 JtR 크래킹 세션을 자동화하는 실습 경험을 하게 될 것입니다.

John the Ripper 와 Hashcat 함께 사용하기 (개념적)

이 단계에서는 John the Ripper 와 Hashcat 의 개념적인 통합에 대해 논의합니다. 두 도구 모두 최고의 비밀번호 크래킹 도구이지만, 각기 다른 강점을 가지고 있습니다. John the Ripper 는 CPU 기반 크래킹 성능과 다양한 해시 유형을 자동으로 감지하는 능력으로 유명합니다. 반면에 Hashcat 은 세계에서 가장 빠른 비밀번호 크래커로, GPU 기반 공격에 탁월합니다.

두 도구는 종종 대안으로 여겨지지만, 워크플로우에서 함께 사용될 수 있습니다. 예를 들어, Linux 시스템에서 비밀번호 및 섀도우 파일을 추출하고 결합하기 위해 unshadow와 같은 John the Ripper 의 유틸리티를 사용할 수 있습니다.

예시 워크플로우:

  1. 대상 Linux 시스템에서 /etc/passwd/etc/shadow 파일을 얻습니다.
  2. JtR 의 unshadow 유틸리티를 사용하여 사용자 이름과 해시가 포함된 단일 파일로 결합합니다: unshadow passwd shadow > hashes_for_cracking.txt.
  3. 결과로 생성된 hashes_for_cracking.txt 파일을 Hashcat 에 전달하여 강력한 GPU 크래킹 기능을 활용합니다.

이 단계는 잠재적인 시너지를 이해하는 데 도움이 되는 순전히 개념적인 단계입니다. 여기서 실행할 명령은 없습니다. 핵심은 한 도구의 유틸리티를 사용하여 다른 도구에 대한 데이터를 준비할 수 있다는 것입니다.

John the Ripper 와 Metasploit 통합하기 (개념적)

이 단계에서는 John the Ripper 와 Metasploit Framework 의 개념적인 통합을 탐구합니다. Metasploit 은 취약점을 발견, 악용 및 검증하는 데 사용되는 강력한 침투 테스트 프레임워크입니다. 일반적인 후속 공격 (post-exploitation) 작업은 손상된 시스템에서 비밀번호 해시를 덤프하는 것입니다. 여기서 JtR 은 워크플로우의 중요한 부분이 됩니다.

예시 워크플로우:

  1. 공격자가 Metasploit 익스플로잇을 사용하여 시스템에 초기 접근 권한을 얻습니다.
  2. Meterpreter 세션 내의 후속 공격 모듈 (예: run post/windows/gather/hashdump) 을 사용하여 공격자는 비밀번호 해시 (예: Windows SAM 데이터베이스의 NTLM 해시) 를 덤프합니다.
  3. 공격자는 이 해시를 로컬 머신의 파일에 저장합니다.
  4. 그런 다음 John the Ripper 를 사용하여 사전 공격 (wordlist attacks) 또는 무차별 대입 (brute-force) 과 같은 다양한 기술을 사용하여 오프라인으로 이 해시를 크랙합니다.
  5. 비밀번호가 크랙되면, 권한 상승 또는 네트워크 내의 다른 시스템으로 피벗하는 데 사용될 수 있으며, 이때 psexec과 같은 다른 Metasploit 모듈을 사용할 수 있습니다.

이 통합은 Metasploit 이 접근에 사용되고 JtR 이 오프라인 자격 증명 크래킹에 사용되는 일반적인 공격 라이프사이클을 보여줍니다. 이 단계는 개념적이며 실행할 명령은 없습니다.

John the Ripper 와 Aircrack-ng 함께 사용하기 (개념적)

이 단계에서는 John the Ripper 를 Aircrack-ng 제품군과 함께 사용하여 Wi-Fi 비밀번호를 크랙하는 방법에 대해 논의합니다. Aircrack-ng 는 무선 네트워크 감사를 위한 도구 모음입니다. WPA/WPA2 감사에서 핵심적인 부분은 클라이언트가 액세스 포인트에 연결될 때 발생하는 4-way 핸드셰이크를 캡처하는 것입니다. 이 핸드셰이크에는 네트워크의 사전 공유 키 (PSK) 를 밝히기 위해 크랙할 수 있는 해시가 포함되어 있습니다.

예시 워크플로우:

  1. airodump-ng와 같은 Aircrack-ng 제품군의 도구를 사용하여 무선 트래픽을 모니터링하고 WPA/WPA2 핸드셰이크를 캡처합니다. 이는 일반적으로 .cap 파일로 저장됩니다.
  2. .cap 파일 자체는 해시가 아닙니다. 비밀번호 크래커가 이해할 수 있는 형식으로 변환해야 합니다. 이 변환을 위해 aircrack-ng 또는 hcxpcaptool과 같은 다른 도구를 사용할 수 있습니다.
  3. 예를 들어, -J 옵션과 함께 aircrack-ng를 사용하여 John the Ripper 도 처리할 수 있는 Hashcat 호환 파일 (.hccapx) 을 생성할 수 있습니다. 명령은 다음과 같은 형태일 것입니다: aircrack-ng your_capture.cap -J output_hash_file.
  4. 마지막으로, John the Ripper 를 사용하여 사전 파일로 해시 파일을 크랙합니다: john --wordlist=passwords.txt output_hash_file.hccapx.

이 워크플로우는 한 도메인 (Wi-Fi) 을 위한 전문 도구가 JtR 과 같은 범용 도구가 처리할 원시 데이터를 어떻게 제공할 수 있는지 보여줍니다. 이 단계는 개념적이며 명령은 필요하지 않습니다.

자동화를 위한 John the Ripper 스크립트 사용

이 단계에서는 이론에서 실천으로 나아갑니다. John the Ripper 를 "통합"하는 가장 일반적인 방법은 명령줄 인터페이스를 스크립트로 감싸는 것입니다. 이를 통해 반복적인 작업을 자동화하고 더 큰 도구 체인에 통합할 수 있습니다. 여기서는 사전 공격을 실행하는 간단한 bash 스크립트를 만들고 결과를 표시합니다.

먼저 자동화 스크립트를 만듭니다. nano 편집기를 사용하여 현재 디렉토리인 ~/projectcrack.sh라는 새 파일을 만듭니다.

nano crack.sh

이제 파일에 다음 내용을 추가합니다. 이 스크립트는 해시 파일과 사전 파일을 입력으로 받아 John 을 실행하고 크랙된 비밀번호를 표시합니다.

#!/bin/bash

if [ "$#" -ne 2 ]; then
  echo "Usage: $0 <hash_file> <wordlist_file>"
  exit 1
fi

HASH_FILE=$1
WORDLIST=$2

echo "[-] Starting John the Ripper..."
john --wordlist="$WORDLIST" "$HASH_FILE" > /dev/null 2>&1

echo "[+] Cracking attempt finished."
echo "[+] Showing cracked passwords:"
john --show "$HASH_FILE"

파일을 저장하고 Ctrl+X, Y, Enter를 눌러 nano를 종료합니다.

다음으로 스크립트를 실행 가능하게 만들어야 합니다.

chmod +x crack.sh

이제 테스트를 위해 간단한 사전 파일을 만듭니다. 이 실험실의 설정 스크립트는 이미 샘플 해시가 포함된 hashes.txt라는 파일을 생성했습니다. 이 해시의 비밀번호는 password123입니다.

echo "password123" > wordlist.txt

마지막으로 자동화 스크립트를 실행합니다. hashes.txt 파일과 새로 만든 wordlist.txt를 제공합니다.

./crack.sh hashes.txt wordlist.txt

스크립트가 John 을 성공적으로 실행하고 비밀번호를 찾았음을 나타내는 다음과 같은 출력을 볼 수 있습니다.

[-] Starting John the Ripper...
[+] Cracking attempt finished.
[+] Showing cracked passwords:
user1:password123

1 password hash cracked, 0 left

이제 John the Ripper 를 자동화하는 간단한 스크립트를 성공적으로 만들었습니다!

John the Ripper API 이해하기 (해당하는 경우)

이 마지막 단계에서는 "John the Ripper API"라는 개념을 명확히 할 것입니다. 개발자들이 API(Application Programming Interface) 에 대해 이야기할 때, 종종 웹 서비스를 위한 REST API 또는 특정 프로그래밍 언어를 위한 잘 문서화된 라이브러리를 의미합니다.

John the Ripper 는 이러한 의미에서 공식적이고 안정적인 공개 API 를 가지고 있지 않습니다. 주요 인터페이스는 명령줄 (CLI) 이며, 이는 강력하고 유연하며 이전 단계에서 보여준 것처럼 상호 작용 및 스크립팅을 위해 설계되었습니다.

JtR 의 핵심 기능은 때때로 libjohn이라고 불리는 라이브러리에 포함되어 있습니다. 고급 C 프로그래머가 이 라이브러리에 링크하여 사용자 정의 애플리케이션을 구축하는 것이 기술적으로 가능합니다. 그러나 이는 복잡한 작업이며 일반적인 사용 사례가 아니며 공개 API 로 지원되지 않습니다.

따라서 대다수의 사용자 및 통합의 경우 "JtR API 사용"은 다음을 의미합니다.

  • 스크립트에서 JtR 실행 파일을 호출하는 것 (예: Bash, Python, Perl).
  • 도구의 명령줄 출력을 파싱하는 것.
  • 해시 파일 입력 및 크랙된 비밀번호가 저장되는 john.pot 파일과 같은 파일과 상호 작용하는 것.

핵심은 John the Ripper 와의 통합 및 자동화는 전통적인 프로그래밍 라이브러리나 웹 API 가 아닌 CLI 스크립팅을 통해 달성된다는 것입니다.

요약

이 실험실에서는 John the Ripper 를 다른 도구와 통합하고 실행을 자동화하여 기능을 향상시키는 방법을 살펴보았습니다.

JtR 을 다른 주요 보안 도구와 결합하는 개념적 워크플로를 배웠습니다.

  • JtR 의 유틸리티를 사용하여 Hashcat의 GPU 기반 크래킹을 위한 해시를 준비합니다.
  • Metasploit Framework를 사용한 후반 작업 중에 얻은 해시를 크랙하기 위해 JtR 을 사용합니다.
  • Aircrack-ng 스위트로 캡처된 Wi-Fi 핸드셰이크를 크랙하기 위해 JtR 을 사용합니다.

그런 다음 bash 스크립트를 작성하고 실행하여 암호 크래킹 세션을 자동화함으로써 이론을 실천에 옮겼으며, 이는 JtR 을 더 큰 워크플로에 통합하는 주요 방법입니다. 마지막으로 JtR 의 "API"는 강력한 명령줄 인터페이스이며, 이는 유연성과 통합 잠재력의 핵심임을 명확히 했습니다.