TryHackMe 사이트의 Basic Pentesting 문제입니다.
이전 문제 RootMe와 비슷하게, 공격 대상의 IP만 가지고 시스템 권한까지 획득하는 문제입니다.
개인적으로 RootMe보단 더 어려웠습니다.
이번에 침투할 주소는 10.10.183.14 입니다.
nmap을 이용해 어떤 포트와 서비스가 활성화되어있나 확인해 보겠습니다. 몇분정도 걸릴 수 있습니다.
스캔 결과입니다. ssh를 이용하고 있고 웹 서비스도 제공하고 있네요. 또한 139, 445 포트에서는 smb 서비스도 제공하고 있습니다. smb를 공격에 이용할 수도 있을 것 같아요.
일단 웹 사이트부터 접속해 보겠습니다.
웹 사이트는 특별한 게 없네요. 미완성 사이트인 것 같습니다.
그래도 혹시 숨겨진 페이지가 있을 수 있으니, 찾아봅시다.
gobuster 툴을 이용해서 숨겨진 페이지와 디렉터리를 찾아보도록 하겠습니다.
-u는 대상 주소
-w는 탐색에 사용할 사전 파일
-t는 스레드 수입니다.
development 라는 숨겨진 디렉터리가 있었네요. 확인해 봅시다.
두개의 txt 파일이 있습니다.
음.. 둘이서 개발에 대한 내용을 주고받는 메시지입니다. 한명은 J, 한명은 K로 이름이 시작되나 보네요.
뭐 특별할 건 없어 보입니다.
이번엔 삼바서버 정보를 조회했습니다. smbclient -L은 공유디렉터리 정보를 출력하는 명령어입니다.
패스워드 입력하라고 뜨는데, 그냥 엔터 누르셔도 됩니다.
Anonymous 공유디렉터리가 존재하네요? 확인을 안해볼 수 없죠.
anonymous 공유디렉터리로 접속합니다. 이번에도 패스워드 입력은 그냥 엔터 누르면 됩니다.
smb에 접속해서, dir 명령어로 파일목록을 확인했습니다. staff.txt 파일이 있네요.
get 명령어로 해당 파일을 다운로드해서 읽어봅시다.
Kay가 직원에게 알리는 메시지가 담겨 있습니다. 번역해보면 이런 내용입니다.
직원에게 알림:
업무와 관련 없는 항목을 이 공유에 업로드하지 마십시오. 재미있는 건 다 알지만
이것이 실수가 일어나는 방식입니다. (이것은 당신도 의미합니다, Jan!)
아까 봤던 K와 J가 Kay, Jan을 의미했었나 봅니다.
아까 스캔 과정에서 ssh 서비스가 가동중인 걸 확인했었죠. 그렇다는 건 우리는 ssh를 통해서 해당 시스템에 접속할 수 있다는 뜻입니다. 단, 계정명과 패스워드를 알아야 하지만 말이죠.
확실한 건 아니지만, 계정명이 Jan 이라고 가정하고 패스워드에 대한 brute force 공격을 시도해 볼 수 있습니다.
저는 hydra 툴을 이용했고, 사전 파일은 rockyou.txt 를 이용했습니다. 구글링하여 다운로드받을 수 있습니다.
-f : 패스워드를 찾으면 중지
-l : 계정명
-P : 사전 파일 경로
ssh://10.10.183.14 : 해당 주소의 ssh에 대하여 공격하라
공격은 몇분 정도 걸릴 수 있습니다. 저는 10분정도 걸렸습니다.
jan 계정의 패스워드를 획득했습니다.
이제 ssh를 통해서 jan 계정으로 접속해 봅시다.
패스워드 입력해 주시고,
접속에 성공했습니다.
이제 권한 상승을 위해서 뭔가 힌트가 될 만한 게 있는지 찾아봅시다.
/home 디렉터리에서 kay 계정의 홈 디렉터리를 발견했습니다.
그런데 숨겨진 디렉터리 .ssh 안에, kay계정의 ssh 개인키가 있더라구요. 심지어 우리가 읽을 수 있는 권한입니다.
저걸 이용하면, kay 계정으로 ssh 접속이 가능합니다. (개인키는 id_rsa 입니다)
음... 하지만 개인키를 이용하기 위해선, 개인키 패스워드가 필요하네요.
그렇다면, 우리는 개인키 파일을 읽을 수 있잖아요? 이 파일을 이용해서 개인키 패스워드를 크랙해 봅시다.
개인키 파일의 내용을 복사해서, 우리의 시스템으로 돌아와 붙여넣기하여 새로운 파일로 만들어 줍니다.
그리고 ssh2john 파일의 경로를 찾아야 합니다.
ssh2john은 ssh 개인키를 크랙할 때 사용되는 프로그램으로써, john the ripper의 친구같은 존재입니다.
ssh2john으로 개인키 파일을 john이 크랙하기 좋게 가공해 준다고 생각하시면 됩니다.
그렇게 가공된 파일을 john으로 크랙하는 것입니다.
이렇게 가공을 해 줍니다.
john 툴을 이용해서 아까와 같은 사전파일 지정해 주고, 방금 가공한 파일을 크랙해 줍시다.
크랙에 성공해서 개인키 패스워드를 획득하였습니다. 이제 kay계정으로 접속할 수 있을 것 같습니다.
일단 jan 계정으로 다시 접속합시다.
-> 혹시나 이 부분에서 뜬금없이 "no password hashes left to crack (see faq) john the ripper" 오류가 뜨시는 분은 맨 아래부분을 참고해 주세요. 전 개고생했습니다...
그리고 /home/kay/.ssh 디렉터리로 온 후
kay 계정으로 접속을 시도합니다.
개인키 패스워드 입력 후에, 접속에 성공하였습니다!!
이 문제는 root권한이 아닌 kay계정을 얻는게 최종 목표이기 때문에 홈디렉터리에 있는 flag( kay계정의 진짜 패스워드 )를 확인하면 문제는 종료됩니다.
패스워드가 아주 기네요.
이렇게 Basic Pentesting 문제를 해결할 수 있었습니다!
=============================================
no password hashes left to crack (see faq) john the ripper 오류에 대하여..
처음 진행할 때는 크랙이 아주 잘 되었습니다. 하지만 복습하고자 문제를 다시 풀 땐, 분명히 개인키 파일을 ssh2john으로 잘 가공하고 john 명령어를 똑같이 입력했는데도 계속 오류가 뜨더라고요.
결과적으로 말씀드리면, john은 이미 크랙한 파일에 대해서는 해당 오류와 함께 크랙하지 않습니다!!
만약 크랙 결과를 보시려면, john --show [파일명] 명령어를 입력하면 크랙 결과를 보실 수 있고,
만약 크랙을 다시 진행하고 싶다면, "john.pot" 파일을 삭제한 후 진행하시면 됩니다. (크랙을 하긴 하지만 1초만에 끝나더군요)
'Hacking > [모의침투]TryHackMe' 카테고리의 다른 글
TryHackMe[Overpass] (0) | 2023.06.01 |
---|---|
TryHackMe[OhSINT] (0) | 2023.06.01 |
TryHackMe [RootMe] (0) | 2023.05.23 |