Hoin's security

[6주차] 패스워드 크래킹 본문

스터디/모의해킹

[6주차] 패스워드 크래킹

Hoin.s 2023. 11. 15. 16:55

5-1 패스워드 크래킹이란?

4) Password Cracking

패스워드 크래킹에는 3가지 종류가 있다.

(1) Brute Force Attacks

  • 모든 가능한 수단이 전부 시행됨
  • 패스워드 길이를 아는 것이 좋다. (패스워드 길이가 길수록 올바른 패스워드를 찾는 데 걸리는 시간이 기하급수적으로 늘어나기 때문)

(2) Dictionary Attacks

  • 이미 만들어져 있는 워드리스트를 사용
  • 공격툴들이 다양한 방법들을 이용 - 대문자/소문자, 숫자를 앞뒤로 붙이기 등

(3) Rainbow Table Attacks

  • 미리 컴파일된 잠재 해쉬들의 리스트
  • 빠르다
  • RAM용량을 많이 사용한다

Password Hash

  • Windows Hash※LM Hash : 패스워드를 저장하는 데 사용되는 매우 약한 단방향 기능.
  • UserName:UserID:LM Hash:NTML Hash:::
  • Linux Hash/etc/shadows 파일들은 실제 패스워드를 암호화된 포맷으로 저장하는데, 해쉬나 사용자 계정의 정보를 담고 있다.
  • UserName:�������ℎ�Salt$Hash:Last Changed:Min:Max:Warn:::

패스워드 크래킹 툴

HYDRA

  • 온라인 패스워드 크래킹 툴 : 패스워드 해쉬에 직접 액세스하지 않고, 웹의 형태로 사용자이름과 패스워드를 요청한다. 매우 느리다.

Cain & Abel

  • 패스워드 복원 툴. Microsoft OS에서 사용 가능.
  • Brute Force Attack, Dictionary Attack, Rainbow Attack

John the Ripper

  • 가장 유명한 패스워드 크래킹 툴 중 하나. Unix, Windows, OpenVMS 등에서 사용 가능.
  • Brute Force Attack, Dictionary Attack, Rainbow Attack
  • 수많은 패스워드 크래커들을 하나의 패키지로 합친다.
  • 패스워드의 해쉬 타입을 자동으로 탐지한다.
  • 세 가지 버전이 존재. (Free, Pro, Community-Enhanced)

John the Ripper 실습

이전에 XP 에서 Hashdump를 했던 것처럼, Win8과 Linux 환경에서의 password hash를 알아내본다.

Windows XP에서 했던 것과 마찬가지로 Windows 8.1에 psexec을 이용하여 exploit을 진행하고 meterpreter 세션으로 진입한다.

Windows 8.1에서는 바로 hashdump 커맨드로 hash를 알아낼 수 없다. 그러므로 post 모듈을 이용한다.

meterpreter> run post/windows/gather/hashdump

그러면 Windows 8.1에서의 password hash를 확인할 수 있다.

확인한 password hash를 nano 커맨드로 Kali의 Desktop에 txt파일로 저장한다.

root@kali:~# nano /home/kali/Desktop/hash_8.txt

저장할 때는 Ctrl+X 버튼을 이용한다.

이번에는 Metasploitable2의 password hash를 확인해보자.

우리는 Metasploitable2의 취약점으로 java_rmi가 있다는 것을 이미 알고 있으므로 이를 이용해 exploit을 수행해 meterpreter 세션을 열어준다.

Metasploitable2에서도 post를 이용한 커맨드를 이용해 hashdump를 수행해야 한다.

meterpreter> run post/linux/gather/hashdump

확인한 password hash를 마찬가지로 nano txt 파일로 저장해준다.

ohn the Ripper는 Metasploit에 내장되어 있어 별도의 설치를 하지 않아도 된다.

우선, john을 입력하면 John the Ripper에서 사용할 수 있는 커맨드들이 죽 나열되는 것을 확인할 수 있다.

이제 john을 이용해 오프라인 딕셔너리 공격을 수행해보자.

root@kali:~# john --wordlist=[딕셔너리 파일의 path]

새로운 터미널 창을 열어 password.lst 파일을 찾아본다.

root@kali:~# find / -nmae password.lst
root@kali:~# cd /usr/share/metasploit-framework/data/wordlists //password.lst 파일의 경로로 이동

이제는 password list 파일의 길이를 알아보자.

root@kali:~/wordlists# cat password.lst |wc 

그러면 숫자 세 개가 나오게 된다. 첫번째는 라인의 수, 두번째는 단어의 수(라인의 수와 같다), 그리고 마지막은 문자의 수이다.

그럼 이제 less 커맨드로 password.lst 파일을 보자.

root@kali:~/wordlists# less password.lst
/[검색할 password]

파일 안에서 /를 이용해 검색을 할 수 있다. 본인의 password 들을 검색해본다. 만약 검색 결과가 나오지 않는다면 추가해 본다.

Ctrl+_를 이용해 제일 밑으로 라인 이동을 하고 본인이 추가하고 싶은 패스워드들을 입력해 저장한다.

이제 다시 처음 터미널 창으로 돌아와서 다음과 같이 입력한다.

root@kali:~# john --wordlist=/usr/share/metasploit-framework/data/wordlists/password.lst /home/kali/Desktop/[본인의 XP해쉬 파일이름].txt
//XP에 password cracking 시도

그러면 hash type이 'LM'이라며 오류가 뜰 것이다.

이번에는 hash format을 'LM'으로 설정해준다.

root@kali:~# john --wordlist=/usr/share/metasploit-framework/data/wordlists/password.lst /home/kali/Desktop/hash_XP.txt --format=NT
//format=NT를 추가한 다음 XP에 password cracking 시도

이제 적합한 패스워드가 있다면 매치되는 결과가 나올 것이다.