목표
Kali Linux에서 사용자 계정을 생성 후 비밀번호를 설정하고 John the Ripper와 Shadow파일의 암호화된 비밀번호를 통해서 비밀번호를 알아내려고 한다.
1) John the Ripper 개념
- 유닉스 패스워드 크랙 도구이고 무료이며 오픈소스 소프트웨어이다. (유료 버전은 John the ripper pro가 있다.)
- 알파벳 숫자의 조합, 숫자 조합, 단어 조합 등을 이용하여 무차별 대입 공격을 통해 패스워드를 크랙 한다.
- Windows에서는 Hash Swite, Android에서는 Hash Suite Droid라는 이름으로 사용된다.
2) John the Ripper 사용 준비
2.1) 사용자 계정 생성
- 크랙에 이용한 사용자 계정 5개를 생성합니다.
useradd test1
useradd test2
useradd test3
useradd test4
useradd test5
2.2) 사용자 계정별 비밀번호 할당
- 앞에서 만든 사용자 계정에 임의의 비밀번호를 할당합니다.
passwd test1
123123
passwd test2
1657841
passwd test3
69!#%&
passwd test4
tr@nsf3r
passwd test5
peemang12!
2.3) 사용자 계정 할당 확인
- 사용자 비밀번호가 정상적으로 설정이 되었는지 /etc/shadow 파일에서 확인합니다.
tail etc/shadow
- test계정 모두 비밀번호가 생성되어 암호화된 것을 확인할 수 있다.
- 추후에 shadow파일의 내용을 사용할 것이기 때문에 shadow파일 내용을 파일 형태로 저장해 놓는다.
cat /etc/shadow > shadowfile
2.4) /etc/shadow파일 설명
- 패스워드를 Crack 하기 위해서 shadow파일 안의 내용을 살펴보려고 한다.
- 위의 내용 중 test1을 살펴보면 암호화된 문장들이 들어있고 사이사이에 $가 들어간 것을 확인할 수 있다.
- 이 부분은 암호화가 해쉬 되어 저장된 Encryption 항목이다.
$6$GYl9C68/$MCwFEAxW2... |
- Shadow 파일 구조는 $Hashid$Salt$Hash Value로 구성되어있다.
- 각각의 항목에 대해 설명하려고 한다.
2.4.1) Hashid
- Hashid는 Identifier에 따라 어떤 Scheme을 사용했는지 확인할 수 있다.
- Identifier값에 따라 값이 달라지게 된다.
- 위 Shadow파일에서는 6을 사용했으므로 SHA-512를 사용한 것을 확인할 수 있다.
2.4.2) Salt
- Hash 함수는 무결성을 제공하기 위해서 해쉬 된 내용을 복호화할 수 없다.
- Rainbow Table Attack을 통해 고속으로 해쉬 된 패스워드를 Crack 할 수 있다.
- Rainbow Table Attack을 방해하기 위해서 암호화된 해쉬에 salt(임의의 값을) 추가로 대입한다.
- salt값을 알지 못한다면 Rainbow Table을 가지고 있어도 소용이 없게 된다.
2.4.3) Hash Value
- Hashid에 따른 해시 방법과 Salt값을 이용하여 Hash Function을 수행한 해시값이다.
3) Johnny를 활용한 Password Crack
- Apllications 항목에서 johnny를 실행한다.
- File → Open password file 항목에서 이전에 저장해둔 shadowfile을 업로드한다.
- Start new Attack 버튼을 클릭하여 패스워드 Crack을 시도한다.
- test 1 파일은 암호가 쉬워서 바로 Crack을 완료하였는데 test2부터는 바로 Crack이 되지 않았다.
- 무차별 대입 공격이라 시간이 지나면 더 해독이 가능할 수도 있겠지만 추 후에 사전 공격을 진행할 것이기 때문에 공격을 하다가 멈추었다.
3.1) John the Ripper 설정 파일 살펴보기
- 설정 파일인 john.conf파일에 들어간다.
vim /etc/john/john.conf
- 설정 파일 내부를 살펴보면 WordList 파일(password.lst)을 통해 대입하는 것을 확인할 수 있다.
cat /usr/share/john/password.lst |less
- password list파일을 보면 다양한 패스워드들이 저장돼있는 것을 확인할 수 있다.
4) Dictionary Attack
- 기존 공격 방식은 Wordlist에 내용이 많지 않기 때문에 유추하는데 시간이 오래 걸린다.
- 미리 패스워드 리스트(사전)를 생성하고 사전을 이용해 패스워드를 Crack 한다.
- 사전 파일은 crunch, cupp wordhound, BruteScrape 등의 도구를 사용하면 된다.
https://github.com/duyetdev/bruteforce-database
- 해당 github 홈페이지에서 100만 개의 패스워드가 저장된 파일을 다운로드한 후 password.txt로 저장하였다.
- 해당 명령어를 통해서 사전 공격을 진행한다.
john -w:password.txt -rules shadowfile
- 해당 명령어를 통해서 사전 공격 진행상황을 확인할 수 있다.
john -show shadowfile
- 시간이 경과하면 패스워드를 Crack 하는 것을 확인할 수 있다.
- 무차별 대입 공격은 효율적인 WordList를 가지고 많은 시간을 투자해 비밀번호를 Crack 하는 공격이다. 어떤 WordList를 쓰느냐에 따라 걸리는 시간이 천차만별 차이가 난다.
'Hacking & Security > Kali Linux' 카테고리의 다른 글
[Kali Linux] SQLmap을 통한 Database Schema 파악 (0) | 2020.01.07 |
---|---|
[Kali Linux] Paros를 통한 Cookie 값 변조 공격 (0) | 2019.12.31 |
[Kali Linux] Route Injection 공격 (OSPF) (0) | 2019.11.13 |
[Kali Linux] Route Injection 공격 (EIGRP) (0) | 2019.11.13 |
[Kali Linux] Route Injection 공격 (RIP) (0) | 2019.11.12 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊