CTF-D/Disk

[Disk] 당신의 친구 Bob은 모의해킹 전문가이다.

Ron Weasley 2022. 3. 16. 23:00

문제를 한번 보겠습니다.

zip파일을 하나 주며, 파일을 다운 받아서 FTK로 열어보겠습니다.

열어보니 비어있는 폴더들이 엄청 많은데, 이것으로 보아 리눅스 시스템이다 라는것을 알 수 있으며, 우리는 "바보 같은 사용자를 찾아" 라고 문제에 써져있기 때문에 SHADOW, PASSWD 파일을 찾아야 하며 home디렉터리에 존재하는 사용자들을 찾아봐야 합니다.

 

먼저 SHADOW 파일부터 보겠습니다. 경로는 다음과 같습니다.

/etc/shadow

root : $6$PBY4XOYn$ : 16816 : 0 : 99999 : 7  :   :   :

  ①                  ②                   ③      ④      ⑤      ⑥   ⑦ ⑧ ⑨

 

① 사용자 계정

② 암호화된 패스워드( *는 막혀있는 계정이다.)

③ 패스워드 최종 수정일

④ 패스워드 변경 전 최소사용시간 (0으로 지정하면 언제든지 변경 가능)

⑤ 패스워드 변경 전 최대사용기간 (99999오랫동안 패스워드를 바꾸지 않았다는 것)

⑥ 패스워드 사용 만료일 전 경고메시지 제공기간

⑦ 패스워드 만료 경고기간

⑧ 계정 만료 기간

⑨ 예약필드

shadow파일을 보면 해당 시스템에 존재하는 사용자들의 아이디와 암호화된 패스워드 등 다양하게 볼 수 있으며 이것만 봐서는 찾을 수 없기 때문에 passwd파일도 한번 보겠습니다.

/etc/passwd

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

 ①      ②  ③  ④    ⑤         ⑥        ⑦

 

① 사용자 계정

② 사용자 패스워드(/etc/shadow 파일에 암호화되어 들어있다.)

③ 사용자 UID 계정 (root는 0)

④ 사용자 GID 계정 (root는 0)

⑤ 사용자 계정 정보

⑥ 사용자 계정 홈 디렉터리

⑦ 사용자 계정 기본 쉘

 

이것으로 보아 계정에는 root와 ash, tyson, gohan, totoro, luffy, cleopatra등 다양한 계정이 있습니다.

이제 홈 디렉터리로 가서 어떤 사용자들이 있는지 알아봅시다.

위에서 본 것과 달리 존재하는 디렉터리도 있는 반면 없는 사용자의 디렉터리도 존재합니다. 그래서 우리는 shadow파일과 passwd파일을 이용해서 사용자들의 패스워드를 일단 알아봐야 합니다.

 

근데 문제에서 "바보 같은 사용자" 라는 단어를 다양하게 해석을 할 수 있지만, 필자는 이렇게 해석을 하였습니다.

"사용자 계정에서 패스워드가 크랙이 걸려있으며, 쉬운 패스워드를 가진 사람" 이라고 생각을 하였습니다.

 

그래서 shadow파일과 passwd파일을 추출하여 칼리로 가져가 "john" 프로그램을 사용하였습니다.

명령어는 다음과 같습니다.

john shadow passwd > passwd.txt

그럼 passwd.txt파일이 하나 생성이 되며, 열어보면 다음과 같이 나옵니다.

플래그 값을 구할 수 있었습니다.

 

하지만 의문점이 john the ripper프로그램은 사용자 계정을 전부다 크랙을 해주는 프로그램인데 저렇게 다양한 사용자들이 있으면서 gohan이라는 명을 가진 사용자만 크랙이 되는것이 이해가 되지 않아 의문을 품고 있는데, 내린 결론은 다른 사용자 계정에는 "공백"이라는 NULL값이 채워져 있더라도 해쉬 함수로 암호화를 하는데 문제가 없기 때문에 gohan을 제외한 사용자들에게는 다 NULL값을 채워줬을 것이라는 추측이다.

 

자세히 아는 사람들은 댓글을 남겨 주시길 바랍니다.