코딩마을방범대

John the Ripper 를 통해 패스워드 크래킹하기 본문

🎃 기타/상식 ❗

John the Ripper 를 통해 패스워드 크래킹하기

신짱구 5세 2024. 3. 15. 10:12

 

 

패스워드 크래킹

 

컴퓨터 시스템에 저장된 데이터 혹은 네트워크 상에서 전송되는 데이터를 이용하여 암호(password)를 복원하는 기술이다.

암호를 푸는데 걸리는 시간은 암호 강도(password strength)와 관련이 있으며,

대부분의 패스워드 크래킹 기법은 다수의 후보 암호를 생성하여 크래킹 한다.

 

 

패스워드 크래킹의 목적

  • 암호를 잊어버린 사용자를 위해 암호를 복구하는 것
  • 시스템에 허가되지 않은(unauthorized) 접속을 하는 것
  • 관리자가 자신이 설정한 암호가 풀기 쉬운지 체크하는 것

 

 


 

 

John the Ripper와 Hash Suite의 차이점

 

  John the Ripper Hash Suite
작동 방식 온라인 패스워드 크래킹 서비스로, 사용자가 웹 브라우저를 통해 액세스할 수 있다.
사용자는 해시 파일을 업로드하고 원하는 알고리즘과 설정을 선택하여 패스워드를 크래킹할 수 있다.
로컬에서 실행되는 소프트웨어로, 사용자가 자신의 컴퓨터에서 설치하여 사용한다.
사용자는 명령행 또는 GUI를 통해 작업을 수행할 수 있으며, 더 많은 기능과 설정을 제어할 수 있다.
보안성 온라인 서비스이기 때문에 사용자의 데이터를 외부 서버에 업로드해야 한다.
사용자는 개인 정보와 해시 파일을 신뢰할 수 있는 서버에 업로드하는 것에 대한 우려가 있을 수 있다.
로컬에서 실행되기 때문에 사용자의 데이터가 자신의 시스템에 안전하게 보관된다.
데이터가 외부로 유출될 가능성이 적다.

 

 

종합하면, 존더리퍼는 온라인 패스워드 크래킹 서비스로 편리성을 제공하며, 

Hash Suite는 로컬에서 실행되는 소프트웨어로 더 많은 제어와 안전성을 제공한다.

 

사용 결과 Hash suite보다 존더리퍼가 크래킹에 훨씬 더 많은 시간이 소요됐다.

(동일한 유저 정보에 대해 Hash Suite의 경우 3시간만에 완료되었고, 존더리퍼는 8시간이 지나도 크래킹이 완료되지 않았다.)

 

 

 

 

 


 

 

 

 

John the Ripper 실행 과정 중 프로세스 진행 사항 확인 방법

 

아래 방법들을 통해 존더리퍼를 실행시킨 후, 엔터를 치면 아래와 같은 화면을 볼 수 있다.

 

Loaded 4 password hashes with 4 different salts (crypt, generic crypt(3) [?/64])

위 문장은 4개의 비밀번호 해시를 발견하고, 각각 다른 솔트(salt)를 사용하여 암호화되었음을 나타낸다.

(솔트는 암호화 과정에서 무작위 데이터를 추가하여 같은 비밀번호라도 다른 해시 값을 생성하는 데 사용됨)

 

 

 

프로세스는 1번 프로세스를 기준으로 설명할 것이다.

각각의 의미는 아래와 같다.

 

예문 설명
0g 아직 비밀번호가 해독되지 않았음을 의미
(2g일 경우 2개의 비밀번호가 해독되었음을 의미)
0:00:00:03 프로세스가 7초 동안 진행되었음을 의미
55% 전체 작업의 11%가 완료되었음을 의미
1/3 전체 작업 중 현재 진행 상태
0g/s 초당 해독된 비밀번호의 수
59.44p/s 초당 시도하는 비밀번호의 수
59.44c/s와 59.44C/s 해시 계산 속도

 

 

 

 

 


 

 

 

 

유저의 비밀번호 크래킹하기

 

존더리퍼는 패스워드의 강도를 테스트하는 윤리적 해커에게 아주 유용한 도구이다.

나의 경우 리눅스에 추가된 유저의 비밀번호를 크래킹하는 작업을 테스트할 것이다.

 

 

1. 리눅스에 john the ripper 설치

 

아래 링크를 통해 직접 다운로드를 해주거나, 명령어를 통해 서버에 다이렉트로 설치해준다.

 

John the Ripper password cracker

John the Ripper password cracker John the Ripper is an Open Source password security auditing and password recovery tool available for many operating systems. John the Ripper jumbo supports hundreds of hash and cipher types, including for: user passwords o

www.openwall.com

 

아래는 jombo가 아닌 core 버전이므로, pdf와 zip 파일 등의 크래킹을 원하는 경우 jombo 설치가 필요하다.

sudo wget https://www.openwall.com/john/k/john-1.9.0.tar.gz

 


 

2. 압축파일 해제

 

아래 명령어를 실행해 압축파일을 해제해준다.

sudo tar -xzf 파일이름.tar.gz -C /원하는/디렉토리/경로

 

옵션명 설명
x tar 압축을 풂
z gzip으로 압축하거나 해제함
f 파일 이름을 지정
v 묶거나 파일을 풀 때 과정을 화면으로 출력
c 파일을 tar로 묶음

 


 

3. src 디렉토리로 이동 후 컴파일 진행

 

src 폴더로 이동해서 컴파일을 진행해준다.

cd /john설치 위치/src && sudo make linux-x86-64

 


 

 

4. run 디렉토리로 이동 후 존더리퍼를 실행해준다.

 

/etc/shadow 파일엔 사용자 정보가 담겨있다, 해당 파일 대신에 해시값이 들어있는 아무 파일이여도 가능하다.

cd ../run && sudo ./john –-format=crypt /etc/shadow

 

 

John the Ripper는 멀티 코어 프로세스가 가능하므로, 병렬 처리를 활용하면 더욱 빠른 크래킹이 가능하다.

후자 명령어에 --fork=코어수 옵션을 넣어주면 해당 숫자(예시는 8)만큼 코어가 작동된다.

 

현 서버의 코어 수를 알아보는 방법은 아래 명령어를 실행해주면 된다.

 

lscpu

 

위 명령어를 실행시킨 후 위로 올려보면 저 빨간 네모 부분이 core 수를 나타낸다.

(사진의 경우는 8 코어를 나타냄)

 

 

만약 실행 시켰을 때 아래와 같이 Crash recovery file is locked: ./john.*.rec 라는 텍스트가 출력된다면,
John the Ripper가 비정상적으로 종료되었거나, 현재 다른 인스턴스가 실행 중인 경우를 의미한다.


1. 아래 명령어를 통해 실행되어 있는 john the ripper pid 번호를 알아낸다.

ps aux | grep john​

 

2. 아래 명령어를 통해 모든 프로세스를 종료시킨다.
sudo kill -9 [pid번호]​

 

3.  run 폴더에 john.숫자.rec라고 되어있는 파일을 아래 명령어를 통해 전부 삭제해준 뒤 john the ripper를 재실행시켜준다.
sudo rm ./john.*.rec
sudo ./john –-format=crypt /etc/shadow

 

 

 

 

 

 


 

 

 

 

 

PDF, ZIP 파일 크래킹하기

 

존더리퍼를 이용해 pdf와 zip파일의 암호도 알아낼 수 있다.

이 경우 core 버전이 아니라 jombo 버전 설치가 필요하다.

 

 

1. 리눅스에 john the ripper 설치

 

아래 링크를 통해 직접 다운로드를 해주거나, 명령어를 통해 서버에 다이렉트로 설치해준다.

 

John the Ripper password cracker

John the Ripper password cracker John the Ripper is an Open Source password security auditing and password recovery tool available for many operating systems. John the Ripper jumbo supports hundreds of hash and cipher types, including for: user passwords o

www.openwall.com

sudo wget https://www.openwall.com/john/k/john-1.9.0-jumbo-1.tar.gz

 


 

2. 압축파일 해제

 

아래 명령어를 실행해 압축파일을 해제해준다.

sudo tar -xzf 파일이름.tar.gz -C /원하는/디렉토리/경로

 

옵션명 설명
x tar 압축을 풂
z gzip으로 압축하거나 해제함
f 파일 이름을 지정
v 묶거나 파일을 풀 때 과정을 화면으로 출력
c 파일을 tar로 묶음

 


 

3. src 디렉토리로 이동 후 컴파일 진행

 

src 폴더로 이동해서 컴파일을 진행해준다.

cd john설치 위치/src
./configure && make -s clean && make -sj4

 


 

4. zip파일 또는 pdf의 hash 값을 저장한다.

 

sudo zip2john 파일명.zip > hash.txt
sudo perl pdf2john.pl 파일명.pdf > hash.txt

 


 

5. 존더리퍼를 실행한다.

 

여기에 마찬가지로 --fork=코어수 옵션을 넣어서 실행 시 더욱 빠른 크래킹이 가능하다.

sudo ./john hash.txt

 


 

6. 크래킹된 비밀번호 확인하기

 

sudo ./john --show hash.txt

 

 

 

 

 

SMALL

'🎃 기타 > 상식 ❗' 카테고리의 다른 글

Nexus를 이용해 Maven 라이브러리를 배포하기  (0) 2024.02.22
포트와 어댑터 아키텍처  (1) 2024.01.09
[윈도우] 사진 텍스트 추출하기  (0) 2023.11.23
Radius란?  (0) 2023.08.31
RDBMS와 NoSQL의 차이점  (0) 2023.08.29