SuNiNaTaS(써니나타스) 14번

파일을 다운로드 하자 evidence.tar 파일이 다운받아졌다. 

압축을 풀어보니 passwd, shadow 두 파일이 나왔는데 무슨 파일인지 모르겠어서 검색해봤다.

 

리눅스에서는 파일로 사용자 계정을 관리하게 되는데

/etc/passwd : 계정 관리 파일

/etc/shadow : 패스워드 관리 파일

adduser 등의 명령어를 사용하면 이와 같은 파일들에 내용이 추가된다.

 

passwd 사용자 계정, root계정, 데몬에서 사용하는 계정들의 정보도 기록된다.

파일을 열어보면 아래와 같은 형식으로 써져 있다.

root:x:0:0:root:/root:/bin/bash

1:2:3:4:5:6:7

 

1. root : 계정 명

2. x : 패스워드, x라고 되어 있을 경우 /etc/shadow에 암호화 된 패스워드를 의미

3. 0 : 사용자ID(UID) 

4. 0 : 그룹ID(GID)

5. root : 계정에 대한 설명이다

6. /root : 해당계정의 홈 디렉토리

7. /bin/bash : 로그인시 디폴트로 사용되는 쉘

 

shadow의 패스워드는 암호화되어 기록된다.

root:$6$E2loH6yC$0lcZ0hG/b.YqlsPhawt5NtX2jJkSFBK6eaF/wa46d8/3KPs6d45jNHgNoJOl7X1RsOrYsZ.J/BBexJ93ECVfW.:15426:0:99999:7:::

1:2:4:5:6:7:8

 

1. daemon : 계정명

2. $~$~ : 암호화된 패스워드 $로 필드가 구분되어 있다.

$(알고리즘id)$(해쉬에 첨가할 랜덤값)$(알고리즘과 해쉬를 이용해 암호화한 패스워드)

알고리즘 id의 경우

1:MD5

2:BlowFish

5:SHA-256

6:SHA-512

해당 예시의 경우 6이 써 있으므로 SHA-512가 사용되고 있다.

이 외에

*(패스워드 잠김상태 로그인 불가), !(패스워드 잠김상태 로그인 불가, 또는 사용자 생성후 패스워드 미설정상태)

등이 있다.

3. 15426 : 마지막 변경일 1970년 1월 1일을 기준으로 일수 표시

4. 0 : 패스워드 최소 사용기간으로 패스워드를 변경한 후 최소 0일 이상은 써야 함을 의미한다.

5. 99999 : 패스워드 최대 사용기간 마지막 변경일로부터 99999일 후에는 변경하길 권장

6. 7 : 패스워드 만료 이전에 경고할 일수를 의미

7. 공백가능  : 패스워드 만료 후 계정이 잠기기 전까지 비활성 일수

8. 공백가능 : 계정 예약만료일

 

다시 문제로 돌아가보면 문제에서는 Do you know password of suninatas?라고 했다.

suninatas의 계정을 찾아 비밀번호를 알아내면 되는 문제 같다.

 

passwd파일을 보니

대놓고 계정명이 suninatas인 계정이 존재한다.

shadow파일에서 우리가 봐야할 곳은 두번째 패스워드 정보가 있는 곳 같다.

$6이므로 SHA-512알고리즘을 이용하고 있다.

하지만 해쉬를 이용한 암호화는 복호화가 불가능하다고 알고 있다.

검색해보니 John the ripper라는 프로그램을 많이 이용하길래 나도 그걸 이용했다.

 

메모장에 shadow파일의 내용을 넣고 pass.txt로 run 폴더에 저장한다.

 

cmd창을 켜서 cd run폴더로 해주고 john pass.txt를 입력한다.

가린 부분에 패스워드가 출력된다.

'문제풀이 > 보안 writeup' 카테고리의 다른 글

ctf-d network DefCoN#21 #2  (0) 2021.08.27
SuNiNaTaS(써니나타스) 6번  (0) 2021.08.26
hackerschool ftz : trainer 3  (0) 2021.07.30
hackerschool ftz : trainer 2  (0) 2021.07.30
hackerschool ftz : trainer 1  (0) 2021.07.30
myoskin