침투 테스트 시나리오를 위한 John the Ripper

Kali LinuxBeginner
지금 연습하기

소개

본 실험실에서는 침투 테스트 시나리오에서 John the Ripper (JtR) 를 사용하는 방법에 대해 알아보겠습니다. John the Ripper 는 강력하고 인기 있는 오픈 소스 비밀번호 크래킹 도구입니다. 침투 테스터에게 있어 JtR 은 가장 흔한 보안 취약점 중 하나인 약한 비밀번호를 식별하고 악용하는 데 필수적인 유틸리티입니다.

본 실험실에서는 JtR 을 일반적인 침투 테스트 워크플로우에 통합하는 방법을 배우게 됩니다. 먼저 캡처된 shadow 파일에서 사용자 비밀번호를 크래킹하고, 해당 정보를 권한 상승 (privilege escalation) 컨텍스트에서 사용한 다음, JtR 을 적용하여 보호된 파일의 비밀번호를 크래킹할 것입니다. 마지막으로, 발견한 내용을 문서화하고 이해 관계자에게 보고하는 중요한 단계를 배우게 됩니다.

침투 테스트 워크플로우에 John the Ripper 통합하기

이 단계에서는 정찰 (reconnaissance) 중에 얻은 해시를 크래킹하는 비밀번호 공격의 첫 번째 단계를 수행합니다. 로컬 권한 상승 (local privilege escalation) 의 일반적인 대상은 Linux 시스템에서 사용자 비밀번호 해시를 저장하는 /etc/shadow 파일입니다. ~/project 디렉토리에 shadow.txt 파일을 제공하여 이를 시뮬레이션했습니다.

먼저 사용자 정의 단어 목록 (wordlist) 을 사용하여 shadow.txt 파일에 대해 John the Ripper 를 실행해 보겠습니다. 단어 목록은 잠재적인 비밀번호를 포함하는 간단한 텍스트 파일입니다.

크래킹 프로세스를 시작하려면 다음 명령을 실행하십시오.

john --wordlist=wordlist.txt shadow.txt

John 은 해시를 로드하고 wordlist.txt의 각 비밀번호를 테스트합니다. weakuser의 비밀번호가 단어 목록에 있으므로 빠르게 크래킹될 것입니다.

Using default input encoding: UTF-8
Loaded 1 password hash (sha512, 512/512 AVX512BW 16x)
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (weakuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

비밀번호가 크래킹되면 John 은 ~/.john/ 디렉토리에 있는 john.pot라는 파일에 저장합니다. 특정 해시 파일에 대해 크래킹된 비밀번호를 보려면 --show 옵션을 사용할 수 있습니다.

크래킹된 비밀번호를 표시하려면 이 명령을 실행하십시오.

john --show shadow.txt

사용자 이름과 크래킹된 비밀번호가 표시됩니다.

weakuser:password123:19657:0:99999:7:::

1 password hash cracked, 0 left

사용자 비밀번호를 성공적으로 크래킹했습니다. 이는 많은 침투 테스트에서 중요한 첫 번째 단계입니다.

로컬 권한 상승을 위한 John the Ripper 사용

이 단계에서는 크래킹된 비밀번호를 사용하여 권한을 상승시키는 방법을 배우게 됩니다. weakuser의 비밀번호를 크래킹한 후, 다음 논리적 단계는 이 계정이 어떤 접근 권한을 제공하는지 확인하는 것입니다. 만약 weakusersudo 권한을 가지고 있거나 민감한 파일에 접근할 수 있다면, 시스템에 대한 더 많은 제어권을 얻을 수 있습니다.

방금 크래킹한 비밀번호 (password123) 를 사용하여 weakuser 계정으로 전환을 시도함으로써 이를 시뮬레이션해 보겠습니다.

su (substitute user) 명령을 사용하여 weakuser로 전환하십시오.

su weakuser

시스템에서 비밀번호를 입력하라는 메시지가 표시됩니다. password123을 입력하고 Enter 키를 누릅니다.

Password:

비밀번호가 올바르면 명령 프롬프트가 변경되어 현재 weakuser로 작동 중임을 나타냅니다.

weakuser@...:/home/labex/project$

실제 침투 테스트에서는 이제 이 사용자의 관점에서 시스템을 탐색할 것입니다. 예를 들어, sudo -l을 실행하여 sudo 권한을 확인하는 것입니다. 본 실험실에서는 계정에 접근할 수 있음을 보여주는 것만으로도 충분합니다.

이제 exit를 입력하여 원래의 labex 사용자 쉘로 돌아갑니다.

exit

이 연습은 약한 비밀번호의 직접적인 영향을 보여줍니다. 이는 무단 계정 접근으로 이어질 수 있으며, 이는 시스템 추가 침해의 발판이 됩니다.

네트워크 침투 테스트에 John the Ripper 적용하기

이 단계에서는 John the Ripper 의 다재다능함이 시스템 비밀번호 해시를 넘어선다는 것을 알게 될 것입니다. 침투 테스터들은 종종 파일 공유에서 또는 사후 착취 (post-exploitation) 중에 ZIP 아카이브와 같은 비밀번호로 보호된 파일을 발견합니다. JtR 도 이러한 파일들을 크래킹할 수 있습니다.

~/project 디렉토리에 protected.zip이라는 비밀번호로 보호된 파일을 제공했습니다. 이 과정은 두 단계로 이루어집니다. 첫째, 파일에서 크래킹 가능한 해시를 추출하고, 둘째, John 을 사용하여 해당 해시를 크래킹합니다.

많은 JtR 관련 도구들이 다양한 파일 형식에서 해시를 추출하는 데 도움을 줍니다. ZIP 파일의 경우 zip2john을 사용합니다. protected.zip에서 해시를 추출하여 zip_hash.txt라는 파일에 저장하려면 다음 명령을 실행하십시오.

zip2john protected.zip > zip_hash.txt

zip_hash.txt의 내용을 보면 해시가 어떻게 생겼는지 확인할 수 있습니다.

cat zip_hash.txt

이제 이 새로운 해시 파일에 대해 John the Ripper 를 실행합니다. 이번에는 단어 목록을 지정하지 않고 John 이 기본 모드를 사용하도록 할 것입니다. 기본 모드에는 일반적인 비밀번호 변형을 시도하는 단일 크래킹 모드 (single-crack mode) 가 포함됩니다.

john zip_hash.txt

John 은 비밀번호를 매우 빠르게 크래킹해야 합니다.

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP, 32/64)
Cost 1 (iteration count) is 1000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
supersecret      (protected.zip)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12345p/s 12345c/s 12345C/s supersecret
Session completed

이전과 마찬가지로 --show 옵션을 사용하여 ZIP 파일에 대한 크래킹된 비밀번호를 확인하십시오.

john --show zip_hash.txt
protected.zip:supersecret

1 password hash cracked, 0 left

ZIP 파일의 비밀번호를 성공적으로 복구했습니다. 이는 JtR 이 침투 테스트 중에 발견되는 다양한 유형의 데이터에 어떻게 적용될 수 있는지를 보여줍니다.

John the Ripper 공격 결과 문서화

이 단계에서는 침투 테스트의 중요하지만 비기술적인 측면인 문서화에 집중할 것입니다. 단순히 취약점을 찾는 것만으로는 충분하지 않습니다. 수정될 수 있도록 명확하게 문서화해야 합니다. 좋은 보고서는 취약점, 그 영향 및 수정 권장 사항을 자세히 설명합니다.

이제 마크다운 파일에 간단한 결과 보고서를 작성할 것입니다. nano 텍스트 편집기를 사용하여 findings.md라는 파일을 생성하십시오.

nano findings.md

nano 편집기 안에서 다음 텍스트를 복사하여 붙여넣으십시오. 이 템플릿은 지금까지 발견한 두 가지 취약점을 문서화합니다.

## 침투 테스트 결과 - 약한 비밀번호

### 발견 1: 약한 사용자 계정 비밀번호

- **취약점:** 사용자 `weakuser`의 약한 비밀번호.
- **비밀번호:** `password123`
- **영향:** 로컬 권한 상승 및 무단 시스템 접근 가능성.
- **권장 사항:** 복잡성과 길이를 요구하는 강력한 비밀번호 정책을 시행하십시오. `weakuser`의 비밀번호를 재설정하십시오.

### 발견 2: 보호된 아카이브의 약한 비밀번호

- **취약점:** 아카이브 `protected.zip`의 약한 비밀번호.
- **비밀번호:** `supersecret`
- **영향:** 아카이브 내의 민감한 데이터가 파일을 찾는 모든 사람에게 노출됩니다.
- **권장 사항:** 모든 암호화된 파일 및 아카이브에 대해 강력하고 복잡한 비밀번호를 사용하십시오.

텍스트를 붙여넣은 후, Ctrl+X를 누르고, Y를 누른 다음, 마지막으로 Enter를 눌러 파일을 저장하고 nano를 종료하십시오.

이제 전문적인 침투 테스트의 필수적인 부분인 명확하고 간결한 결과 기록을 생성했습니다.

이해관계자에게 약한 비밀번호 보고

이 마지막 단계에서는 시스템 관리자 또는 경영진과 같은 이해관계자에게 적합한 고수준 요약본을 만드는 연습을 할 것입니다. 상세한 결과 문서는 기술 팀을 위한 것이지만, 요약 보고서는 위험과 조치의 필요성을 보다 직접적인 방식으로 전달합니다.

이메일이나 보고서 요약을 시뮬레이션하는 report_summary.txt라는 간단한 텍스트 파일을 생성할 것입니다.

nano 편집기를 사용하여 파일을 생성하십시오.

nano report_summary.txt

nano 편집기 안에서 다음 요약본을 복사하여 붙여넣으십시오. 이 텍스트는 문제를 요구되는 조치와 함께 명확하고 간결하게 전달합니다.

To: 시스템 관리자
From: 침투 테스터
Subject: 중요 취약점: 약한 비밀번호 발견

본 보고서는 최근 침투 테스트 중에 발견된 중요 비밀번호 취약점을 요약합니다.

1. 사용자 'weakuser'는 크래킹 가능한 비밀번호('password123')를 가지고 있어 권한 상승의 위험이 있습니다.
2. 보호된 파일 'protected.zip'은 약한 비밀번호('supersecret')를 사용하여 내용이 노출될 수 있습니다.

더 강력한 비밀번호 정책을 시행하고 식별된 약한 비밀번호를 재설정하기 위한 즉각적인 조치가 필요합니다.

파일을 저장하고 Ctrl+X를 누른 다음 Y를 누르고 Enter를 눌러 nano를 종료하십시오.

이로써 이 시나리오에 대한 침투 테스트 워크플로우가 완료되었습니다. 취약점을 식별하고 악용한 것뿐만 아니라, 이를 해결하기 위한 문서화 및 보고서 준비까지 마쳤습니다. 이것으로 발견부터 수정까지의 사이클이 완료되었습니다.

요약

이 실습을 완료하신 것을 축하드립니다! John the Ripper 를 사용하여 현실적인 침투 테스트 워크플로우를 성공적으로 진행했습니다.

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

  • shadow 파일의 해시를 크래킹하여 John the Ripper 를 침투 테스트 프로세스에 통합하는 방법.
  • 크래킹된 비밀번호를 사용하여 로컬 권한 상승 시도를 시뮬레이션하는 방법.
  • 보호된 ZIP 아카이브의 비밀번호를 크래킹하여 JtR 을 다른 데이터 유형에 적용하는 방법.
  • 발견 사항을 명확하고 구조화된 방식으로 문서화하는 것의 중요성을 이해하는 방법.
  • 이해관계자에게 취약점을 효과적으로 전달하기 위한 요약 보고서를 작성하는 방법.

이러한 기술은 윤리적 해킹 및 보안 감사에 관련된 모든 사이버 보안 전문가에게 필수적입니다.