본문 바로가기

코딩 문제/해커스쿨

FTZ : level4

728x90

먼저 파일과 디렉토리를 한번 살펴보자.

 

 

hint 폴더를 열어서 내용을 확인해보자.

음... 요번에도 힌트를 이해할 수가 없다...

백도어를 찾으란 건가..?

 

 

일단 저 경로로 들어가서 무엇이 있는지 확인해보자.

 

 

backdoor이란 파일이 있으니 열어서 확인해보자.

 

 

backdoor 파일을 여니 service finger이라는게 적혀있으니

finger이라는 파일도 한번 열어보자.

 

 

무슨 말인지... 하나도 모르겠다.

우선 아까 backdoor파일에 나온 경로로 들어가서

무엇이 있는지 확인해보자.

 

 

아무것도 없다;;;

그럼 우선 아까 봤던 것들을 한번 해석해보자.

 

< 위의 service finger 풀이 >

 

 

< finger >

 

 

사실 공부해도 잘 몰라서 다른사람들이 사용한 방법을 한번 보았다.

 

 

 

백도어 : 운영체제나 프로그램 등을 만들 때 정상적인 인증 과정을 거치지 않고,

            운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 뒷구멍같은 개념

 

일단 

 

 

아까 여기서 나온 것을 보니 /home/level4/tmp의 backdoor을

my-pass를 출력하는 프로그램으로 만들어 놓으면

level5 권한으로 실행하니 level5의 패스워드를 얻지 않을까란

생각을 해보았다.

 

 

그래서 우선 tmp로 이동하여 backdoor.c라는 C파일을 만들었다.

 

 

여기서 system함수는 명령을 수행하여 해당 프로세스가 종료하면

종료할 때의 값을 그대로 반환한다.

 

 

gcc명령을 이용하여 컴파일 한다.

 

[ gcc 명령어 사용법 ]

gcc test.c를 실행하면

결과값으로 a.out이라는 실행파일이 생긴다.

gcc -o test test.c를 실행하면

결과값으로 test라는 실행파일이 생긴다.

 

실행파일이 생성된 것을 확인한 후 finger명령어를 사용하여 답을 얻자.

 

 

[ finger 명령어는 안되는 이유 ]

생각대로라면 finger 명령어만 입력했을 때도 backdoor가 실행되어야 하는데

finger명령의 원래 값이 실행된다.

이유는 무엇일까?

backdoor 파일과 finger 파일의 차이점을 보게되면

disable 차이가 보이는 것을 확인할 수 있다.

disable이 yes면 xinetd의 제어를 받지 않고

no면 제어를 받는 것을 의미한다.

 

[ xinetd란 무엇인가. ]

바로 슈퍼데몬이다.

 

[ 슈퍼데몬의 역할 ]

만약 슈퍼데몬에 의해 제어되는 서비스 중 누군가 그 서비스에 접속을 시도하면

바로 그 서비스로 연결되는 것이 아니라 슈퍼데몬에 의해 허가된 사용자인가를 검사받은 후에

슈퍼데몬의 해당 서비스설정파일에 정의되어 있는 서비스데몬과 연결되어

사용자는 그 서비스를 이용할 수 있게 된다.

 

[ 데몬이란 ]

시스템에 관련된 작업을 하는 후위 프로세스를 의미하며,

대부분 시스템에 관련된 작업을 하는데, 서비스 요청이 없을 때는 유휴 상태에 들어가며

시스템의 CPU를 차지하지 않지만 메모리와 기타 자원을 상당 수 차지하게 된다.

 

[ 데몬의 실행모드 ]

1. standalone 환경

데몬은 독립적으로 실행되며 항상 메모리에 상주하여 서비스요청이 있을 때 언제든 바로 응답한다.

단점은 메모리에 항상 상주해 있으므로 메모리 점유로 인한 서버부하를 준다.

 

2. xinetd 환경

슈퍼 데몬에 의해 관리가 되며 필요한 경우에만 메모리로 적재되어 실행이 되어 응답한다.

빠르진 않지만 서버부하를 줄일 수 있다.

 

=> 이제 finger명령만 사용할 시 backdoor가 실행이 안되는지 보겠다.

우선 환경변수를 확인해 보자.

/usr/bin 폴더에 들어가보니

이렇게 finger라는 명령이 해당 폴더에 있는 것을 볼 수 있다.

즉 내가 프롬프트에 친 finger라는 명령어는 /etc/xinetd.d의 backdoor의 설정대로 동작한 명령어가 아니고

/usr/bin에 있는 명령어를 단순히 실행한 값이라는 것이다.

따라서 finger명령어를 통해 데몬을 이용할 수 있도록 작성하면 backdoor에서 설정한 finger의 명령어가

실행된다.

'코딩 문제 > 해커스쿨' 카테고리의 다른 글

FTZ : 6 ~ 10 정리  (0) 2019.01.12
FTZ : 1 ~ 5 정리  (0) 2019.01.12
FTZ : level3  (0) 2019.01.11
FTZ : level2  (0) 2019.01.11
FTZ : level1  (0) 2019.01.10