jump

'WARGAMES > FTZ' 카테고리의 다른 글

level11_FTZ_RTL기법  (0) 2016.07.21
level10_FTZ  (0) 2016.07.21
level09_FTZ  (0) 2016.07.21
level08_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20

level6의 ID와 PW는 아래와 같습니다.

 

ID : level6

PW : what the hell

 

level6은 로그인을 하게 되면 [그림 1]과 같은 형태로 나오게 된다.

[그림 1] level06의 로그인 직후 모습


[그림 1]에서는 level6을 로그인하게되면 나오는 힌트 메시지이다. bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이라고 한다.

[그림 2] 로그인 창의 Enter 입력


Enter를 입력하면 [그림 2]와 같은 Enter를 입력하게 되면 나오게 되는 창이다. 그리고 1, 2, 3과 같은 선택지를 묻는 창이 뜬다. 

[그림 3] Ctrl+C를 입력한 모습


[그림 3]은 Ctrl+C를 입력한 모습이다. Ctrl+C는 운영체제에서의 signal이다. 운영체제가 하는 가장 중요한 일 중 컴퓨터와 인간이 서로 원활히 소통할 수 있게끔 도와주는 일이다. 이를 위해 운영체제에서는 signal이라는 것을 이용하게 된다.


시그널은 64개가 있고, 종류는 [그림 4]와 같다.

[그림 4] 시그널 종류


여기서 Ctrl+C는 시그널 2번의 SIGINT이다.


SIGINT는 프로세스를 종료시킨다는 의미를 가지는 시그널이다. 

이에 대한 자세한 설명은 아래의 링크를 참조하기 바란다.


<<시그널에 대한 설명>>


이제 이 SIGINT인 Ctrl+C를 입력하게 되면 [그림 5]와 같은 상태로 넘어가게 된다.

[그림 5] Ctrl+C를 입력한 후의 화면


hint 파일을 읽어보면 [그림 3]과 같은 힌트 메시지가 나오게 된다.

해당 문제는 로그온 시 나오게 되는 프로세스를 종료시키는 것이 해답이다.

[그림 6] password 파일


'WARGAMES > FTZ' 카테고리의 다른 글

level10_FTZ  (0) 2016.07.21
level09_FTZ  (0) 2016.07.21
level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20
level02_FTZ  (0) 2015.11.15

level5의 ID와 PW는 아래와 같습니다.

 

ID : level5

PW : what is your name?

 

level5의 hint 파일을 읽으면 [그림 1]과 같이 나오게 됩니다.

[그림 1] level5의 hint 파일


/usr/bin/level5 프로그램을 실행시키면 /tmp 디렉토리에 level5.tmp라는 이름의 임시파일을 생성한다고 합니다.

그러면 /usr/bin/level5 프로그램을 실행시켜 임시파일이 생성되는지 확인해보도록 합시다.

[그림 2] 프로그램 실행 후 /tmp 디렉토리


프로그램을 실행시켜도 /tmp 디렉토리에는 level5.tmp라는 이름을 가진 프로그램은 존재하지 않았습니다.

level5라는 프로그램이 실행될 때 임시적으로 level5.tmp 라는 프로그램을 생성했다가 다시 삭제하는 것으로 판단됩니다.

여기서 사용할 기법은 '레이스 컨디션'이라는 해킹 기법을 사용할 것입니다.

먼저 레이스 컨디션에 대해 간단히 알아보겠습니다.


[그림 3]은 일반적인 실행파일의 실행 구조의 예시를 보여줍니다.

[그림 3] 일반적인 파일 입출력 프로그램의 예시


일반적인 파일 입출력 프로그램이 File_Name1.bin과 File_Name2.bin을 읽고 쓰기를 하는 행위를 할 때의 모습입니다.

실행 파일은 두 파일의 이름을 가리켜 읽기/수정 행위를 하게 됩니다. 두 파일에는 실행파일에서 수행하는 행위가 담겨 있을 것입니다.


[그림 4]는 레이스 컨디션 기법으로 파일의 내용을 Hacker's File에 실행 파일에서 일어나는 입력 값을 받아오는 방법입니다.

레이스 컨디션 기법의 순서는 다음과 같습니다.


1. 임시로 생성되는 파일(혹은 사용되는 파일)의 이름과 동일한 심볼릭 링크 파일을 생성합니다.

2. 심볼릭 링크 파일은 해커가 읽고 쓸 파일을 가리키도록 합니다.

3. 실행 파일을 실행합니다.

4. 이제 원래 File_Name1.bin에 입력되어야 할 내용이 Hacker's File에 입력되는 것을 확인할 수 있습니다.


[그림 4] 레이스 컨디션 기법을 이용한 입력 값 탈취


이제 어떤 행위가 일어나는지 알기 위해 레이스 컨디션 기법을 적용시켜봅시다.


[그림 5] 해커의 파일과 심볼릭 링크 파일 생성


cat > /tmp/hackerfile.bin 명령어를 입력하여 입출력에 사용될 파일을 생성합니다.

무슨 행위가 일어날지 모르기 때문에 파일에는 아무런 내용도 입력하지 않도록 합시다.

ln -s /tmp/hackerfile.bin /tmp/level5.tmp 명령어를 입력하여 hackerfile.bin파일을 가리키는 level5.tmp라는 이름의 심볼릭 링크 파일을 생성하도록 합니다.

위의 설명은 [그림 5]와 같은 결과를 볼 수 있게 됩니다.

[그림 5] /usr/bin/level5를 실행한 후의 hackerfile.bin의 변화


/usr/bin/level5를 실행하면 hackerfile.bin에 입출력의 어떤 변화가 있는지 살펴봅시다.

hackerfile.bin에는 next password : what the hell이라고 쓰여 있습니다.

이 실행파일은 임시파일을 생성하여 그 파일에 다음 레벨에 대한 비밀번호를 입력하는 것 같습니다.

'WARGAMES > FTZ' 카테고리의 다른 글

level09_FTZ  (0) 2016.07.21
level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20
level02_FTZ  (0) 2015.11.15
level01_FTZ  (0) 2015.11.15

level4의 ID와 PW는 아래와 같습니다.

 

ID : level4

PW : suck my brain

 

level4의 hint 파일을 읽으면 [그림 1]과 같이 나오게 됩니다.

[그림 1] level4의 hint 파일


"누군가 /etc/xinetd.d/에 백도어를 심어놓았다."로 보아 /etc/xinetd.d에 들어가보는 것이 좋겠다는 생각이 먼저 듭니다.

/etc/xinetd.d에 들어가면 [그림 2]와 같이 파일들의 리스트들이 보입니다.

[그림 2] /etc/xinetd.d의 디렉토리


위 그림에서 볼 때 backdoor라는 파일이 아주 눈에 띄는 것을 볼 수 있습니다.

cat 명령어를 통해 backdoor를 살펴보도록 합시다.

[그림 3] backdoor 파일의 내용


파일의 내용에는 service finger를 이용하여 다음과 같은 작업을 수행하는 것으로 보입니다.


service finger{} 안에 있는 내용에 대해 잠시 알아봅시다.


구분 

 내용

 disable

 사용 불가능에 대한 상태

 flags

 소켓이 작동될 때 사용하는 정보

 socket_type

 사용하는  TCP/IP 소켓, stream(TCP), dgram(UDP), raw, seqpacket이 올 수 있음

 wait

 yes or no로 설정 할 수 있음

yes

 xinetd가 요청된 한 데몬(daemon)이 끝날 때까지 다른 요청을 받지 않음

 single-thread service

no

 각 요청에 대해 데몬(daemon)이 작동함
 multi-thread service

 user

 데몬(daemon)의 UID를 설정, xinetd의 UID가 0이 아니면 의미가 없음

 server

 실행될 데몬(daemon), 반드시 지정되어야 함 

 log_on_failure

 로그인 실패 시 로그에 원하는 정보를 기록( log_on_failure = HOST은 HOST를 기록 )

log_on_failure += USERID

 로그인 실패에 대한 로그 정보를  추가해주며 쌓을 정보는 USERID를 넣어줌 

 log_on_success

 로그인 성공 시 로그에 아래와 같은 정보를 로그로 기록함

 PID

 프로세스ID

 HOST

 해당 호스트의 이름

 DURATION

 접속 유지시간

 EXIT

 접속 종료시간


[그림 3]의 설명은 다음과 같이 말할 수 있습니다.


- 사용 불가능이 아님

- 소켓이 동작할 때 사용하는 정보는 REUSE임

- 소켓 타입은 stream 형식

- 각 요청에 대해 데몬이 동작하는 multi-thread service임

- user ID는 level5로, 데몬의 UID는 level5임

- 실행될 데몬의 경로와 파일은 /home/level4/tmp/backdoor

- 로그온 실패시 USERID를 로그에 기록함


여기서 눈여겨 봐야 할 곳은 server에 나타나 있는 경로입니다.

이 backdoor 파일의 설명을 간단히 하면, 위와 같은 경로에 있는 backdoor 파일을 level5유저의 권한으로 실행시키는 서비스라고 할 수 있습니다. 

그렇다면 우리가 찾아봐야 하는 경로는 /home/level4/tmp입니다.

로컬로 설치했을 경우에는 /tmp에는 아무것도 없을 것입니다.

여기에 우리가 원하는 exe프로그램을 backdoor의 이름으로 만들어 level5의 권한으로 실행시킬 수 있을 것입니다.

먼저 system("id"); 를 사용해봅시다.

[그림 3] finger 서비스를 이용하여 backdoor 서비스를 실행


system("id"); 의 명령어를 수행하는 프로그램을 backdoor로 만들었을 때의 결과는 [그림 3]과 같습니다.

finger @localhost는 xnetd.d 디렉토리 내의 서비스를 실행시키는 것을 의미합니다.

이 때 backdoor라는 서비스 또한 실행되고, server가 가리키는 /home/level4/tmp/backdoor라는 파일이 실행되게 됩니다.

backdoor에 사용된 명령어는 id와 같기 때문에 level5의 권한으로 실행시킨 id 명령어는 level5의 id를 보여주게 됩니다.

[그림 4] system("my-pass")를 사용


이제 system("my-pass")를 입력하여 비밀번호를 알아내도록 합시다.

system("bash"), system("/bin/bash") 등은 사용되지 않아서....


'WARGAMES > FTZ' 카테고리의 다른 글

level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level03_FTZ  (0) 2015.11.20
level02_FTZ  (0) 2015.11.15
level01_FTZ  (0) 2015.11.15
FTZ - hackerschool Local Setting  (0) 2015.08.04

level3의 ID와 PW는 아래와 같습니다.

 

ID : level3

PW : can you fly?

 

level3의 hint 파일을 읽으면 [그림 1]과 같이 나오게 됩니다.

[그림 1] level03 hint 파일 캡처


[그림 1]에서는 어딘가에 작성되어 있는 autodig라는 파일의 코드입니다.

이 소스를 이용하여 level4의 권한을 얻어야 합니다.

more hints로는 동시에 여러 명령어를 사용하기 위한 방법문자열 형태로 명령어를 전달하는 방법이 있습니다.

먼저 level03에서 사용할 autodig 파일을 검색해봅시다.

명령어는 다음과 같은 형태로 find를 작성할 수 있습니다.


find / -name autodig 2>/dev/null 



[그림 2]와 같이 autodig 파일은 /bin 디렉토리 내에 있다는 것을 알 수 있습니다.


[그림 2] autodig 위치


autodig라는 파일을 찾았으면 먼저 그 파일을 어떻게 이용할 수 있는지 탐색해볼 필요가 있습니다.

가장 먼저 권한과 사용자가 어떻게 되어 있는지 살펴봅시다.

ls -l /bin/autodig 명령어를 작성하여 파일의 권한을 보니 [그림 3]과 같이 나타났습니다.


[그림 3] autodig 파일의 권한


파일은 level4의 소유자로 되어있으며, user 권한에는 setuid가 설정되어 있는 s가 보입니다.

level4 권한으로 실행할 수 있는 이 파일을 이용하여 우리가 원하는 명령어를 사용할 수 있도록 방법을 궁리해봅시다.

이에 대한 답은 more hint에서 힌트를 얻을 수 있습니다.


more hint 내용

 명령어를 한 번에 여러 개를 실행할 수 있는 방법 

 명령어를 문자열 형태로 입력하는 방법


<명령어를 한 번에 여러 개를 실행>

    기존의 명령어를 실행한 후, 해커가 원하는 명령어도 실행할 수 있도록 한다는 의미입니다.


<명령어를 문자열 형태로 입력>

    여러 개의 명령어를 하나로 한 녀석을 하나의 argv에 집어넣기 위한 꼼수입니다.


[그림 3][그림 4]는 위 설명에 대한 예시를 보여줍니다.

[그림 3] 여러 명령어를 한 번에 실행


명령어가 한 번에 실행될 수 있는 방법은 여러가지가 있습니다.

그중 우리가 사용할 옵션은 세미콜론(;)입니다.


[그림 4] 명령어를 문자열로 입력


문자열로 한 번에 주기 위해서는 따옴표(')로 묶어줄 수 있습니다.

즉, 127.0.0.1이라는 문자열과 vi라는 문자열을 한 번에 argv[1]에 입력값으로 집어넣을 수 있다는 것을 의미합니다.

127.0.0.1이라는 값이 autodig에 사용되고 이후 level4의 setuid 권한을 통해 vi가 실행됩니다.

level02에서 했던 방법대로 bash 명령어를 사용하면 level4의 권한을 얻게 됩니다.

'WARGAMES > FTZ' 카테고리의 다른 글

level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level04_FTZ  (0) 2015.11.26
level02_FTZ  (0) 2015.11.15
level01_FTZ  (0) 2015.11.15
FTZ - hackerschool Local Setting  (0) 2015.08.04

level2의 ID와 PW는 아래와 같습니다.

 

ID : level2

PW : hacker or cracker

 

level2의 hint 파일을 읽으면 [그림 1]과 같이 나오게 됩니다.

[그림 1] level2 cat hint 실행 화면


'텍스트 파일 편집 중 쉘의 명령얼 실행시킬 수 있다.'라는 힌트를 볼 수 있습니다.

쉘 명령을 실행할 수 있다는 것은, level3로 쉘을 실행시킬 수 있는 프로그램이 있다는 것을 짐작할 수 있습니다.

그렇다면 여기서 level1과 마찬가지로 find명령어를 이용하여 level3의 파일을 찾아보도록 합시다.

find 명령어는 [그림 2]와 같습니다.

[그림 2] find 명령어 사용


[그림 2]를 살펴보면 찾아낸 프로그램은 /usr/bin이라는 경로에 있으며 프로그램 이름은 editor입니다.

이제 찾아내 프로그램의 정보를 살펴봅시다.

/usr/bin/editor의 프로그램은 level3의 권한으로 setuid가 설정되어 있음을 볼 수 있습니다.


editor 프로그램을 실행시킨 화면은 [그림 3]과 같습니다.

실행된 화면이 리눅스 내의 프로그램인 vi editor와 비슷한 모습을 보이고 있는 것을 알 수 있습니다.

vi editor의 옵션을 살펴보도록 합시다.


vi 옵션 참고 URLhttp://comefeel.com/tt/comefeel/entry/


vi에서는 ! 를 이용하여 쉘 명령어를 실행시킬 수 있습니다.


명령어 예시

내용

 :!ls -l

 ls -l 명령어가 실행되어 결과값을 화면에 보여줌 

 :r!ls -l 

 ls -l 명령어가 실행되어 에디터에 결과값을 작성해줌 

 :e! [filename]

 새로운 파일을 편집함 

[그림 3] editor 프로그램 화면


이제 vi의 옵션을 통해 쉘 명령어를 실행시켜보도록 합시다.

우리가 실행시킬 명령어는 level3의 권한을 가져오기 위한 bash 명령어 입니다.

[그림 4] level3의 권한을 탈취


vi를 통해 실행된 bash는 level3의 쉘을 실행시켜줍니다.



'WARGAMES > FTZ' 카테고리의 다른 글

level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20
level01_FTZ  (0) 2015.11.15
FTZ - hackerschool Local Setting  (0) 2015.08.04


level1의 ID와 PW는 아래와 같습니다.

 

ID : level1

PW : level1


 

로그인을 하면 아래와 같은 권한으로 들어가집니다.

ls -l 명령어를 사용해보면 hint라는 파일 1개, public_html, tmp라는 디렉토리 2개가 보입니다.


cat hint 명령을 사용하여 hint 파일의 내용을 확인해보면 다음과 같은 힌트가 주어집니다.

힌트의 내용은 [그림 1]과 같습니다.

즉, level2라는 사용자가 자신의 파일 중 setuid를 걸어놓은 것이 있는지 찾아보는 것을 의미합니다.

[그림 1] level1의 hint 파일


level2라는 유저가 setuid를 설정한 파일을 찾는 명령어는 [그림 2]와 같습니다.

 명령어 or 옵션

내용 

find

 파일 혹은 디렉토리를 찾는 명령어

/

 '/'라는 디렉토리(최상위 디렉토리)에서부터 검색을 시작한다는 것을 의미

 -user level2

 사용자는 level2라는 것을 지정하는 옵션 

-perm +4000

 권한은 +4000 즉, setuid가 설정되어 있는 파일을 지정하는 옵션 

 2>/dev/null

 /dev/null은 리눅스의 휴지통과 같은 의미로, error(2)이면 휴지통으로 보냄 


[그림 2] level2라는 유저가 setuid를 설정한 파일을 찾는 명령어 및 파일


/bin/ExecuteMe를 실행시키면 다음 [그림 3]과 같은 내용이 나옵니다.

[그림 3] /bin/ExecuteMe 실행화면


이 파일은 level2권한으로 원하는 명령어를 실행시킬 수 있도록 해주는 프로그램입니다.

단, my-pass와 chmod는 사용할 수 없게 외어 있습니다.

여기서 실행할 명령어를 신중하게 골라야 합니다.

[그림 4] bash 명령어를 실행하여 level2 권한을 유지함


[그림 4]와 같이 bash명령어를 실행하여 level2권한을 실행시킬 수 있음을 숙지해둡시다.


my-pass의 명령어를 실행시켜보면 패스워드가 나옵니다.


PS. vi명령어로도 해봅시다.

'WARGAMES > FTZ' 카테고리의 다른 글

level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20
level02_FTZ  (0) 2015.11.15
FTZ - hackerschool Local Setting  (0) 2015.08.04

참고 출처(1) : http://noplanlife.com/?p=606

참고 출처(2) : http://taeeun83.com/?p=48


해커스쿨 FTZ를 로컬에 환경을 구축하여 풀는 게 낫네요.

FTZ 서버가 Hackerschool에서 자주 닫히는 경우가 있어 친절한 우리 해커돌이님들께서 로컬로 할 수 있도록 해주셨어요.

전 바보같이 이제 알았네요.


---------<<방법 1>>---------


구글 드라이브에서 FTZ이미지 다운로드

타겟 이스 저 노란색.


다운받아주세요.


아마 많은 vmware파일들이 있을 건데,

vmware player 혹은 vmware workstation이 있다면

.vmx파일을 더블클릭하면 바로 실행이 될 거에요.


ID  : root

PW : hackerschool


ifconfig로 ip를 확인해주시고 putty나 다른 프로그램으로 들어가시면 될 거에요.


제 로컬 환경에서는 SSH로 들어가야 하더군요.

왜인지는 모르겠지만 그렇더라구요.


* 만약 vmware가 실행이 잘 안 된다면 서비스가 잘 켜저 있는지 확인하세요.




---------<<방법 2>>---------


해커스쿨에서 Red Hat 9.0다운받기

구글드라이브에서 FTZ_Setting다운받기


Red Hat 9.0을 받고, Vmware로 구동시켜요.



CD-Rom 마운팅 기능을 설정하여 ftz.iso 파일을 연동시켜주고요.


Use ISO image file에서 Browse를 클릭하고 ftz.iso 파일이 들어있는 디렉토리를 들어가 마운트 시켜주세요.


mount /dev/cdrom /mnt/cdrom


참고 링크 (2)에서 작성하신 분은 "FTZ restore Manual.docx"파일을 보고 설정해도 된다고 하시네요.

하지만 저 처럼 귀차니즘 분들은 그냥 AUTO_SCRIPT를 추천하더군요.


AUTO_SCRIPT 하위 폴더에가보면 자동 설치를 위한 shell파일이 있어요.


 bash auto_script.sh

or

sh auto_script.sh


설치가 정상적으로 완료되면 ifconfig로 ip를 확인한 후, putty나 다른 프로그래을 이용하여 ssh로 들어가주면 끝.




'WARGAMES > FTZ' 카테고리의 다른 글

level08_FTZ  (0) 2016.01.07
level07_FTZ  (0) 2016.01.07
level06_FTZ  (0) 2016.01.07
level05_FTZ  (0) 2015.11.27
level04_FTZ  (0) 2015.11.26
level03_FTZ  (0) 2015.11.20
level02_FTZ  (0) 2015.11.15
level01_FTZ  (0) 2015.11.15

+ Recent posts