WARGAME/FTZ

FTZ level4 풀이

msh1307 2022. 2. 17. 12:26

*FTZ를 공부하면서 배운 것들을 정리했습니다. 틀린 정보가 있을 수 있습니다.

계정/비번: level4/suck my brain

 

로그인하고 힌트 먼저 봅시다.

/etc/xinetd.d/ 에 백도어를 심어놓았다네요. 

확인해봅시다. 

이 문제를 풀기 위해선 먼저 데몬에 대해 알고 있어야 합니다. 먼저 이 경로에 있는 다른 파일들을 확인해봐도 다 비슷한 형태를 하고있는 것을 알 수 있습니다.

 

먼저 데몬에 대해 한번 알아보자면, 데몬은 특정 서비스를 실행시키기 위해 메모리에 상주해있는 백그라운드 프로세스를 말합니다. 만약 요청이 들어오면 그 요청을 받고 즉시 처리할 수 있도록 대기중인 프로세스죠. 

데몬은 실행 모드가 두 가지가 있는데, standalone방식과 xinetd 방식이 있습니다. 

standalone방식은 응답속도가 빠른 대신, 메모리 자원을 항시 점유하고 있어 부하가 촉진될 수 있습니다. 

xinetd 방식은 standalone보다는 응답속도가 느립니다. 대신 슈퍼데몬 하나가 여러가지 데몬들을 제어합니다. 필요할 때만 데몬들이 메모리에 적재되기 때문에 메모리 부하를 줄일 수 있겠죠.

 

xinetd는 eXtended InterNET services Daemon의 약자로서 리눅스에서 실행되는 데몬의 일종입니다. 

인터넷 슈퍼데몬이라고 부르기도 합니다.

xinetd는 네트워크에 들어오는 요청을 듣고 거기에 맞는 적절한 서비스를 실행시킵니다. 

 

/etc/xinet.conf에는 모든 데몬에 적용되는 default값이 설정되어 있습니다.

/etc/xinetd.d 하위 경로에는 각 데몬에 대한 설정 파일들이 위치합니다. 

 

이제 파일 내용을 확인해봅시다. 

간단하게 설명해보자면, 

 

disable : 서비스 할것인지 아닌지를 의미합니다. yes가 서비스를 하지 않는 것, no는 하는것을 나타냅니다.

service : 서비스 이름을 의미합니다. /etc/services에 등록된 서비스들이어야 합니다.

user : 어떤 사용자 권한으로 서비스할 것인가를 설정합니다. 

server : 서비스 요청이 들어왔을 때, 해당 데몬의 경로를 지정합니다. 

 

근데 서버가 조금 이상하지 않나요?

요청이 들어왔을 때, 실행시키는 데몬의 위치가 /home/level4/tmp/backdoor이네요. 

지금 level4로 로그인 했으니, 그 backdoor를 마음대로 수정할 수 있겠네요. 

한번 서버의 경로로 가봅시다. 

 

 

백도어가 없네요. 그렇다면 만들어봅시다. 

vim을 열고 c프로그램을 작성하겠습니다. 

i누르면 insert모드로 바꿀 수 있습니다. 

이렇게 적어주고 esc를 누르고 :wq를 입력해서 저장하고 나가줍니다. 

이제 backdoor라는 이름으로 컴파일 해보겠습니다. 

백도어 파일을 생성했습니다. 

이제 아까 finger를 이용해서 이 백도어를 실행시키면 되겠네요. 

왜 안될까요? 

finger 파일을 찾아보니 두개가 나오네요.

환경변수 PATH에 따르면, /usr/bin에서도 찾으니, finger 명령을 실행시켰을 때, /usr/bin에 있는 finger가 실행되었군요. 

즉, 아까 finger를 실행시켰을 때는 실질적으로 /usr/bin/finger를 실행시킨겁니다.

당연한 말이죠. 외부에서 요청이 오지도 않았는 데 xinetd가 백도어를 실행시킨다면 그게 더 이상하죠.

xinetd.d에 있는 finger파일을 확인해봅시다.

xinetd.d의 finger을 보면 disable이 yes로 되어있어서 외부에서 요청이 왔을 때, 무시하는게 기본값이였습니다. 하지만  disable이 no인 백도어가 있었죠? 이 백도어를 이용하기 위해선 요청이 들어와야합니다. 그래야 disable no인 백도어가 실행되고 /home/level4/tmp/backdoor가 실행될테니까요. 

 

그렇다면 이제 finger로 요청을 어떻게 보낼 수 있을까요? 구글링을 해보니 user@host방식으로 외부의 사용자들을 조회할 수 있고, @localhost를 이용해 자기 자신한테 요청을 보낼 수 있다고 합니다. 참고로 호스트 옵션이 없을 땐 로컬로 접속한다고 하네요. 

 

finger @localhost 를 통해 자신한테 요청을 보내고 xinetd가 백도어를 실행시킬 수 있도록 하면 비밀번호를 얻을 수 있겠죠. 

 

 

 

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

FTZ level6 풀이  (0) 2022.02.26
FTZ level5 풀이  (0) 2022.02.24
FTZ level3 풀이  (0) 2022.02.15
FTZ level2 풀이  (0) 2022.02.12
FTZ level1 풀이  (0) 2022.02.12