티스토리 뷰
우선 힌트를 보면 level9 계정의 비밀번호가 담긴 shadow 파일에 대한 힌트를 주고 있는 것 같은데요.
힌트에 나온 대로 파일의 용량을 기준으로 한번 검색해보았습니다.
명령어는 아래와 같습니다
find / -group level8 -size 2700c 2> /dev/null
그럼 위와 같이 파일 한 개가 찾아지는 것을 볼 수 있습니다.
잠깐 명령어에 대해 설명하고 넘어가자면, -group 옵션은 파일의 그룹 소유자를 지정할 수 있게 해줍니다.
(처음에는 -user level8 옵션으로 검색해보았지만 결과가 나오지 않아 -group 옵션을 사용했습니다.)
그리고 -size 옵션에 대한 정리를 해보겠습니다.
find 명령의 -size 옵션은 파일 크기를 기준으로 검색할 수 있게 해주는데요.
# find / -size +N => N 이상 크기의 파일을 검색한다.
# find / -size -N => N 이하 크기의 파일을 검색한다.
# find / -size N => N 크기의 파일을 검색한다.
# 사이즈 단위
# b : 블록 단위
# c : byte
# k : kbyte
# w : 2byte word
힌트에서는 그냥 2700의 크기라고 표현하였지만 일반적으로 생각할 수 있는 크기는 바이트 단위겠죠.
그래서 2700c 로 해서 검색했습니다.
이제 찾은 파일을 cat 명령으로 출력해보겠습니다.
위와 같이 같은 내용이 반복되는 걸 볼 수 있습니다.
결론적으로 level9의 shadow 파일의 내용이 담겼다는 걸 알 수 있습니다.
잠시 linux 의 shadow 파일 형식에 대해 review 를 해보겠습니다.
linux shadow 파일은 1:2:3:4:5:6:7:8:9 형태입니다.
1 - 사용자명
2 - 패스워드를 암호화시킨 방식
$1 : md5
$2 : Blowfish
$5 : SHA-256
$6 : SHA-512
(비어 있을 경우 로그인에 필요한 패스워드가 없다는 의미)
(:*: 라고 되어 있을 경우 계정을 막아둠을 의미)
3 - 1970년 1월 1일부터 패스워드가 수정된 날짜의 일수를 계산한 값
4 - 패스워드가 변경되기 전 최소 사용 기간(일수)
(0이면 언제든지 바꿀 수 있다는 의미임.)
5 - 패스워드 변경 전 최대사용기간(일수)
(99999는 오랫동안 패스워드를 바꾸지 않았다는 것을 의미함)
6 - 패스워드 사용 만기일 전에 경고 메시지를 제공하는 일수
7 - 로그인 접속차단 일 수
8 - 로그인 사용을 금지하는 일 수 (월/일/연도)
9 - 예약필드로 사용되지 않음.
그렇기에 level9 의 shadow 파일 기준으로 말하자면, md5 hash 값이기 때문에 바로 복호화는 불가능해서 bruteforce가 필요하다는 것이겠습니다.
bruteforce 는 linux hash cracking에 가장 보편적으로 사용하는 john the ripper를 사용해보았습니다.
https://www.openwall.com/john/
위 도구를 사용하기 위해서 준비물로 unshadowed 파일이 필요하기 때문에 임시로 unshadowed.txt 라는 파일을 만들고, 해당 파일 내용으로 아래와 같이 넣어주었습니다.
# unshadowed.txt 파일 내용
level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:0:0:level9/home/level9:/bin/bash
그리고 아래 명령어를 실행해보았습니다.
john --format=md5crypt-long --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
root> john --format=md5crypt-long --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt-long, crypt(3) $1$ (and variants) [MD5 32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
apple (level9)
1g 0:00:00:00 DONE (2021-11-17 12:27) 14.28g/s 10285p/s 10285c/s 10285C/s bambam..marissa
Use the "--show" option to display all of the cracked passwords reliably
Session completed
사전(Dictionary) 기반으로 bruteforce 했봤을 때 결과를 보면 level9의 비밀번호가 apple 인 걸 알 수 있습니다.
이제 로그인을 해보면 아래와 같이 잘 로그인 되는 것을 알 수 있습니다.
- 끝 -
'보안 > Wargame' 카테고리의 다른 글
[FTZ] level9 문제풀이/Writeup - 해커스쿨(Hackerschool) (0) | 2021.11.25 |
---|---|
[Hackthebox] - AbuseHumanDB Writeup(문제풀이) (0) | 2021.11.24 |
[FTZ] level7 문제풀이/Writeup - 해커스쿨(Hackerschool) (0) | 2021.11.06 |
[Hackthebox] - TwoDots Horror Writeup(문제풀이) (3) | 2021.11.06 |
[FTZ] level6 문제풀이/Writeup - 해커스쿨(Hackerschool) (0) | 2021.11.04 |