FTZ level4
ls -al명령어를 통해 hint 파일의 여부를 확인한다.
cat 명령어를 통해 hint내용을 확인했는데 /etc/xinetd.d/라는 곳에 백도어가 있다고 했다.
find 명령어를 통해 SetUID를 찾아보려 했으나 찾을 수 없었다.
cd명령어를 통해 /etc로 이동했다.
ls -al명령어를 통해 확인해 보니 backdoor라는 파일이 존재했다.
cat명령어를 통해 backdoor의 내용을 확인해 보았다.
무슨 말인지 하나도 모르겠다. 그래서 구글링을 해봤는데 해석해 놓은 블로그가 있었다.
일단 데몬에 대해서 알아야 하는데 데몬이란 시스템에 관련된 작업을 하는 후위 프로세스를 말한다. 이 중에서 xinetd라는 것이 있는데 extended internet service demon의 약자이다. 인터넷 슈퍼데몬을 의미하는데 리눅스 서버에서 운영하는 여러 다른 데몬들을 제어하면서 서비스들간의 연결을 담당한다.
그럼 backdoor의 내용을 해석해 보자.
먼저 service finger 이라는 것은 finger 라는 이름의 서비스를 의미한다. finger 요청에 응답하는 서버. finger는 사용자에 대한 로그인 네임, 디렉토리, 쉘과 최종 로그인 시간에 대한 정보를 제공 하는 프로토콜(컴퓨터간의 통신을 위해 사용하는 규칙)이다.
/etc/services 파일에 등록된 이름과 같아한다고 한다.
disable 가 no로 되어 있는 것은 xinetd의 제어를 받지 않는다는 의미이다.
user라는 것은 데몬의 UID를 의미한다.
server라는 것은 서비스가 실행 될때 어떤 위치에서 프로그램을 불러오는지를 의미한다.
따라서 여기 나온 finger서비스를 이용하면 server에 위치한 파일을 통해 level5권한으로 바꿔준다는것이다. 그렇다면 저 위치에 있는 backdoor프로그램을 실행시키면 되는 실제로 /home/level4/tmp에 가보면 backdoor라는 프로그램이 없다. (하지만 내가 했을 때는 존재했는데 다른 사람이 올려놓은 VMimage를 다운받을 경우 그럴수 있다고 한다. 이때는 파일을 지우면 된다.) backdoor라는 프로그램을 만들어 줘야 한다.
이렇게 프로그램을 짜준다. system(“my-pass”)는 my-pass을 실행시켜준다는 의미이다.
이제 컴파일을 시켜준다.
gcc 를 사용해도 실행 파일이 만들어지긴 하지만 gcc -o를 사용한 이유는 실행파일의 이름을 지정해 주기 위해서 이다. ls -al명령어로 확인해 보면 backdoor.c 파일과 이를 실행파일로 만든 backdoor 파일이 모두 있는 걸 확인할 수 있다.
backdoor 파일을 실행시켜 줘야 한다.
finger의 disable이 no이기 때문에 외부에서 접속할 경우에도 backdoor가 실행이 가능하다.
앞서 말했듯 finger은 외부 서버 유저의 정보를 가져올 수 있다. finger [user]@[host]를 통해 가능하다.
finger @localhost를 입력하면 backdoor 가 실행되고 level5 의 password가 나온다.
참고:




댓글
댓글 쓰기