ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [FTZ]해커스쿨(HackerSchool) LEVEL4 풀이(Solution)
    미사용/##Security 2015. 7. 28. 14:43

    HackerSchool FTZ WARGAME Solution

     

    Start : 15.07.03

     

    LEVEL4

     

    [그림 1]

     

    level4의 hint를 확인해보면 /etc/xinetd.d/ 에 백도어를 심어놓았다고 한다.

     

    [그림 2]

     

    해당 경로에 가보면 그냥 'backdoor' 라는 이름의 파일이 있는 것을 확인할 수 있다.

     

    [그릠 3]

     

    backdoor 파일의 내용을 확인 해 보면 [그림 3]과 같이 출력이 되는데 이를 가지고 알 수 있는 것은 backdoor 라는 파일은 finger 서비스 파일이며, 현재 서비스 중이라는 것이다. 좀 더 자세히 설정을 분석해보자.

     

    disable = no // 현재 서비스 중이다.

    socket_type = stream // TCP 로 통신을 한다.

    wait = no // 서비스 요청마다 데몬이 각각 작동을 함

    user = level5 // finger 데몬의 권한

    server = /home/level4/tmpbackdoor // 서비스 요청 시 실행할 프로그램

    log_on_failur += USERID // 문제가 발생했을 때 로그파일에 UserID 를 추가

     

    이 설정에서 주목해서 봐야하는 부분은 user와 server 부분인데 확인해보면 user는 level5 로 설정이 되어있고, server는 /home/level4/tmp/backdoor 를 실행하도록 설정이 되어있다. 이걸 보면 마치 setuid 가 걸린 백도어 파일을 서비스로 돌려서 만들어 둔 것 같아 보인다. 그래서 우리는 server에 설정된 경로에 backdoor 라는 파일을 생성해서 쉘을 실행 시키거나 my-pass 를 실행 시켜서 level5의 비밀번호를 확인하도록 하면 된다.

     

    [그림 4]

     

    system 함수를 이용해 my-pass 를 실행시키는 프로그램을 만든다.

     

    [그림 5]

     

    그리고 finger 를 실행시켜 보았으나 내가 원하는 프로그램은 실행 안되고, 현재 로그인 되어 있는 사용자 목록이 출력이 되었다. 실제 finger 서비스가 실행 된 것이다.

    [그림 6]

     

    그래서 man finger 명령어를 통해 finger 의 사용법을 다시 한번 확인 해 보았더니 finger [옵션] [계정] [계정@host명] 형식으로 실행을 시켜야 하는 것 같다.

     

    [그림 6]

     

    그러면 [그림 6]과 같이 level5 의 패스워드가 출력이 되었다.' finger level5 level5@localhost' 를 실행시켜도 마찬가지로 실행이 된다. 그런데 backdoor 프로그램을 만들 때 'system("/bin/sh");' 로 작성을 하면 finger 실행 시 command 에러가 뜬다. finger 가 동작하는 방식과 뭔가 충돌이 일어나는 것 같은데 정확한 원인은 좀 더 분석 해 봐야 할 것 같다.

     

    댓글

Designed by Tistory.