주어진 shadow 크랙
힌트
-
- John the Ripper
- --format=crypt
-
NordPass
-
- --wordlist
- 우리나라
1. 힌트 없이 크랙
1.1. shadow 분석
root:!:19886:0:99999:7:::
cju:$y$j9T$7zQyQ3FkZXAHdO3OaIIic.$9IEiwQHWhke1FnxET1YBRgNm4cmKiXCvHCPwBtj7yD8:19886:0:99999:7:::
victim1:$y$j9T$1MXwvOINz3y64UQhze4UG.$8rRuki/11CoMM8j28/1Elwtr7nlyBLd.SvauLKtQbfC:19977:0:99999:7:::
victim2:$y$j9T$tlF3l4f38xFyfDAIct9oV1$jhYQONgr/02UMHvg8E23j27UboZDCT0Lpew88dAIgB9:19977:0:99999:7:::
victim3:$y$j9T$L2cMOrHNFn9sOSU35rfkY/$vWDLAVoVfx6n6rrojYS6QJLGSuWx2y4CDD4g3Wz3C56:19977:0:99999:7:::
- root의 암호는 없음.
- $y$는 yescrypt 알고리즘을 의미
1.2. 힌트 회피
- John the Ripper 대신 Hashcat 사용
- Hashcat은 2024/09/24 기준 yescrypt를 지원하지 않음. (Github Issue)
- John the Ripper를 대체할 수 없음
- --wordlist 옵션 비사용
- NordPass와 관련된 wordlist 비사용
- 한국과 관련된 wordlist 비사용
1.3. 크랙 시도
1.3.1. 10분동안 기본적인 crack 시도
$ john --format=crypt shadow
...
1111 (cju)

- cju = 1111
- cju를 제외한 나머지 유저는 크랙 실패
1.3.2. Brute Force 시도 (incremental mode)
$ john --format=crypt -i shadow
...
- 자고 일어나면 크랙될 것으로 예상
- 6시간 후 크랙 실패
gpgpu 설정하면 더 빨라질 것으로 예상..
- 6시간 후 크랙 실패
1.4. 결론
- 힌트 없이는 힘들다.
2. 힌트를 사용
2.1. 힌트 분석
- NordPass wordlist 검색
- 한국으로 지역 설정

'Get the password list' 버튼 클릭

- 한국의 wordlist가 아님.
- 웹에서 복사
복사 결과
1 1111111 < 1 second 4,753 2 admin < 1 second 4,196 3 123456 < 1 second 3,652 4 111111 < 1 second 2,449 5 12345 < 1 second 2,217 6 1q2w3e4r < 1 second 2,114 7 P@ssw0rd < 1 second 1,872 8 1q2w3e < 1 second 1,785 9 1qaz2wsx < 1 second 1,754 10 qwer1234 < 1 second 1,701 11 qpalzm123 3 hours 1,659 12 1q2w3e4r5t < 1 second 1,608 13 UNKNOWN 17 minutes 1,568 14 pascal < 1 second 1,480 15 12345678 < 1 second 1,450 16 qwe123 < 1 second 1,114 17 123123 < 1 second 995 18 1q2w3e4r! 2 seconds 954 19 ******* < 1 second 954 20 1q2w3e4r5t! 2 seconds 941
2.2. wordlist 생성
-
vscode의 정규표현식 replace를 사용하여 정리
Find: ^[0-9]{1,2}\n(.*)\n.*\n.* Replace: $1
변환 결과
1111111 admin 123456 111111 12345 1q2w3e4r P@ssw0rd 1q2w3e 1qaz2wsx qwer1234 qpalzm123 1q2w3e4r5t UNKNOWN pascal 12345678 qwe123 123123 1q2w3e4r! ******* 1q2w3e4r5t!
- nordkrlist.lst로 저장
2.3. 크랙 시도
-
생성한 wordlist를 사용하여 크랙
$ john --format=crypt --wordlist=nordkrlist.lst shadow ... UNKNOWN (victim1) ******* (victim3) 1q2w3e4r5t! (victim2)
- victim1 = UNKNOWN
- victim2 = 1q2w3e4r5t!
- victim3 = *******
2.4. 결론
| User | Password |
|---|---|
| cju | 1111 |
| victim1 | UNKNOWN |
| victim2 | 1q2w3e4r5t! |
| victim3 | ******* |
- 비밀번호 생성 시 사전에 없는 단어 사용
- 패스워드 유출에 대비해 각 계정마다 다른 비밀번호 사용
- 힌트를 적극적으로 활용