본문 바로가기

전공 공부/리눅스 보안 실습

John the Ripper를 활용한 비밀번호 해독 (리눅스, 윈도우)

728x90

이 글은 교육목적으로 작성하는 것으로 절대 타인의 컴퓨터에 공격을 해서는 안됩니다.

범죄 행위이고 처벌을 받을 수 있습니다.

모든 해킹 행위는 자기 자신에게 책임이 있습니다.

 

제 블로그는 불법적인 해킹 행위를 권장하거나 유도하지 않습니다. 오로지 테스트 및 연습 목적으로 읽어주시면 감사하겠습니다.

 

 

일반적으로 운영체제에서 비밀번호는 암호화되어 저장이 됩니다. 

이때 저장 되는 비밀번호 파일을 이용하여 해독해보겠습니다.

 

패스워드 저장 위치

유닉스/리눅스 서버 시스템: etc/passwd, etc/shadow

윈도우 시스템: C:/Windows/System32/config/SMA

 

vim /etc/shadow 

칼리 리눅스의 shadow 파일을 보면 다음과 같이 패스워드가 암호화되어 저장되어 있는 것을 볼 수 있다.

 

 

unshadow /etc/shadow /etc/passwd > /tmp/password.txt

unshadow 명령어를 사용하여 /etc/shadow 와 /etc/passwd 파일에 있는 패스워드를 /tmp/password.txt에 저장을 하는 명령어입니다. 

 

 

vim /tmp/password.txt

패스워드가 암호화되어 저장되어 있는것을 확인할 수 있습니다.

 

 

john --list=formats 

이제 jhon the ripper에서는 여러 포맷을 지원하고 있음을 확인할 수 있다.

 

 

john --format=crypt /tmp/password.txt

다음 명령어를 실행하면 우리가 추출한 패스워드 파일에 저장된 해쉬값을 분석하여 패스워드 값을 알려줍니다.

root의 비밀번호가 123456이라고 나오는 것을 볼 수 있습니다.

 

 

크랙 패스워드를 보려면 --show 옵션을 주면 됩니다. 

 

 

cat /root/.john/john.pot

john.pot 파일에는 크랙 된 파일은 별도의 해쉬 패스워드들에 대해 로딩 없이 다음번에 사용할 때 재사용됩니다.

 

리눅스 시스템 침투 및 비밀번호 해독

samba 취약점 중에 2007-05-14에 폭로된 삼바 커맨드 취약점을 이용해 침투해보도록 하겠습니다.

 

침투할 서버는 이전에 사용했던 메타스플로잇터블 서버를 사용하겠습니다.

 

 

exploit의 -z 옵션으로 바로 견결하지 않고 세션으로 남겨 놓았으며, -j 옵션으로 exploit 명령을 백그라운드에 동작하게 해 놓았습니다.

 

이제 sessions -l 명령어를 통해 세션이 연결되어 있음을 확인할 수 있습니다.

 

이제 Type Shell cmd/unix를 meterpreter 쉘로 업그레이드하였습니다.

 

 

sessions -l 명령어를 통해 연결되어 있는 세션 리스트를 보면 Type이 meterpreter로 새롭게 세션이 추가되어 있는 것을 볼 수 있습니다.

 

이제 해당 세션을 통해 meterpreter 쉘로 연결을 하였으니, 패스워드를 탈취해보도록 하겠습니다.

 

 

gather 에는 정보 수집을 할 수 있는 도구들이 있는데 그중에 hashdump를 이용해 해당 시스템에 있는 hash 값들을 파일로 내보낼 수 있습니다.

 

칼리 리눅스에 터미널을 하나 더 띄워서 살펴보면, hashdump로 생긴 파일이 존재하는 것을 확인할 수 있습니다.

 

이제 이를 이용해서 크랙을 추출해 보겠습니다.

 

john --format=crypt 추출한 hashdump이름

john을 이용해서 크랙킹 된 비밀번호와 아이디들을 볼 수 있습니다.

john의 --show 옵션을 통해 보면 root 계정인 경우 비밀번호: 1234,  msfadmin 계정인 비밀번호: msfadmin 인 것을 확인할 수 있습니다.

 

 

윈도우 시스템 침투 및 비밀번호 해독

 

search ms03_026_dcom은 2003-07-16에 26번째로 발견된 취약점입니다. 이 취약점을 이용해서 침투해보도록 하겠습니다.

 

https://epicarts.tistory.com/54

 

해당 공격은 reverse TCP로 연결하고, meterpreter 쉘로 연결하기 때문에 쉘 업그레이드는 필요가 없습니다.

 

이제 해당 세션을 통해  패스워드를 탈취해보도록 하겠습니다.

 

 

run post/windows/gather/hashdump 

다음과 침투한 윈도우의 hash 값들을 볼 수 있습니다.

 

 

 

creds

msfconsole에서 creds를 치면 수집한 hash 값들을 볼 수도 있습니다.

 

 

db_export -f pwdump /root/windows_passwords.txt

db_export를 통해 패스워드 파일을 /root 경로에 windows_passwords.txt  파일로 저장해 주겠습니다.

 

 

필요한 건 administrator 이므로 굳이 알 필요 없는 계정은 지워주겠습니다.

 

 

 

john --format=lm windows_passwords.msf

윈도우는 LM 해쉬를 사용하므로 포맷 옵션으로 lm을 주어야 합니다.

 

 

--show 옵션을 통해 추출된 파일을 보면 administrator 계정의 패스워드를 다시 한번 더 볼 수 있습니다.

728x90