Linux

Linux 스터디 5주차 과제 1 - John The Ripper 실습

kchabin 2022. 5. 19. 21:36

패스워드 크래킹(Password Cracking) 

해당 시스템에 저장된 패스워드를 알아내는 해킹 기법

 

사전 공격(Dictionary Atttack) :  예상되거나 흔히 쓰이는 패스워드 모음집인 '사전'을 갖고 패스워드를 하나씩 대입해보는 방식이다.

 

이번 실습에서는 John The Ripper로 사전 공격을 해볼 것이다.

 

John The Ripper(JTR)

패스워드 크래킹 툴 중 하나로 비밀번호 강도, 즉 이 비밀번호가 얼마나 안전한지 그리고 암호화된 비밀번호를 무작위 대입 공격해 비밀번호를 크래킹하기 위해 고안됐다.

 

useradd 명령어로 swing1, swing2 계정을 추가해주고, passwd 명령어로 계정 당 암호도 숫자 네자리로 설정해준다. 

crunch 명령어로 사전 파일을 만들어준다. -> 사전 파일을 만들 때 사용하는 명령어다.

crunch [최소 자릿수] [최대자릿수] [사용할 문자] -o [저장할 파일명]

암호가 네 자리 숫자기 때문에 0000~9999로 이루어진 사전 파일을 만들어주려면 최소 최대 모두 4자리, 사용할 문자는 0123456789로 지정해줬다.

/etc/shadow 파일을 열어보면 비밀번호가 해시값으로 보인다. 

 

JTR로 사전 공격을 하기 위한 옵션 : john --wordlist=[사전 파일] [암호파일]

unshadow /etc/passwd /etc/shadow > password.txt 를 입력해서 /etc/passwd와 /etc/shadow를 합쳐 별도의 파일에 저장했다. 이 별도의 파일이 사전 파일을 대입해서 비교할 암호 파일.

에러

John The Ripper로 패스워드 알아내는 방법

1. john --format=crypt password.txt ->해시값을 분석해서 패스워드를 알려준다.

2. john --show password.txt -> 크래킹한 패스워드를 볼 수 있다. 

 

처음에 --wordlist 앞에 --format=crypt를 안 썼더니 계속 에러가 나왔다. 그래서 해결방법을 구글링해보니까,

cat password.txt 를 해서 보면 $y$가 username 뒤에 있는 것을 볼 수 있는데, 이게 패스워드가 yescrypt로 해시됐다는 뜻이란다. 그래서 john이 이 해시포맷을 감지하게 도우려면 --format=crypt 명령어를 추가해줘야한다. 이 명령어가 해시값을 분석하는 역할인데, 이게 없으니까 오류가 계속 난거였다. 

명령어를 제대로 입력했더니 swing1과 swing2의 비밀번호가 크랙돼서 나왔다. 

사전 공격 성공.