ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HackerSchool] Level4
    오래된/HackerSchool 2011. 4. 27. 20:54

    [level4@ftz level4]$ cat hint


    누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!

    [ Level4 hint ]

    백도어를 이용한 권한상승이 목표인것을 예상해 볼 수 있겠다.

    1. xinetd

    xinetd 데몬은 서비스 하고싶은 프로그램들을 대신하여 실행 시켜주는 역할을 한다.
    해당 서비스들은 /etc/xinetd.d/ 디렉토리에 형식을 맞추어 파일을 작성하여 넣어두면 xinetd 데몬이 해당 파일을 읽어들여
    서비스 하려는 프로그램을 실행 시켜주는 역할을 하게 된다.

    [level4@ftz xinetd.d]$ pstree
     init-+-anacron---run-parts-+-00-logwatch---sh-+-applystddate
         |                     |                  |-cat
    ...[중략]...
         |-sshd-+-sshd---sshd
         |      |-sshd---sshd---bash
         |      `-sshd---sshd---sh
         |-syslogd
         |-5*[vim]
         `-xinetd-+-in.telnetd---login---sh---testsh
                  |-in.telnetd---login---bash
                  |-in.telnetd---login---sh
                  `-in.telnetd---login---bash---pstree
    [ 프로세스 목록 확인 - tree 구조 ]

    sshd 프로세스의 경우 독립적으로 실행되어 서비스 되고 있으며, telnet의 경우 xinetd 에 의해 실행 되고 있음을 확인 할 수 있다.( 일반적으로 ssh 는 자체적 보안 기능을 가지고 있으므로 독립적으로 실행 되어도 큰 문제를 일으키지 않지만, telnet 은 자체적으로 취약하기 때문에 xinetd 의 도움을 받아 실행된다. )

    하지만 독립적이라고 해서 완전 독립적인 것은 아니고, super daemon인 initd 프로세스에 의해 실행 된다.
    initd 에 의해 실행되는 프로세스들은 /etc/init.d/ 에 존재하게 되며, 각 Run Level에 따라 각각 등록된다.

    [level4@ftz xinetd.d]$ ls -al /etc/xinetd.d
    합계 92
    drwxr-xr-x    2 root     root         4096  1월 15  2010 .
    drwxr-xr-x   52 root     root         4096  4월 21 03:34 ..
    -rw-r-----    1 root     level4        171 12월  8  2003 backdoor
    ...[중략]...
    [ 백도어 ]

    /etc/xinetd.d 디렉토리를 확인해보면, 이름이 아주 정직한 파일이 존재함을 알 수 있다.

    service finger
    {
            disable = no
            flags           = REUSE
            socket_type     = stream
            wait            = no
            user            = level5
            server          = /home/level4/tmp/backdoor
            log_on_failure  += USERID
    }
    [ /etc/xinetd.d/backdoor ]

    서비스 이름은 finger 인데, 프로그램 이름을 보면 backdoor 라는 프로그램을 실행 시킨다는 것을 알 수 있다.
    ( socket_type : stream / TCP 서비스, user : level5 / 실행 권한 )

    xinetd 는 backdoor 파일을 읽어들여 finger 라는 서비스가 /etc/services 에 등록되어 있는지 확인하고, 등록되어 있다면 포트 정보를 읽어들여 해당 포트를 오픈하고 프로그램을 실행시켜 서비스하게 된다.

    ...[중략]...
    finger          79/tcp
    finger          79/udp
    ...[중략]...
    [ /etc/services 파일 내용 ]

    finger 서비스는 79번 포트를 이용한다는 것을 알 수 있다.

    2. backdoor 작성

    backdoor 는 말 그대로 "뒷 문" 이다.
    공격자가 공격 성공이후, 재차 공격을 통해 권한상승을 하는 번거로움을 피하기 위해 제작하게 된다.

    이제 /home/level4/tmp/backdoor 파일에 우리가 원하는 실행을 하도록 내용을 작성하고, 해당 서비스 포트로 접속을 하면 되겠다. (실행 권한을 줘야 한다는 점을 잊어서는 안되겠다. )

    * 겁도 나고 의심도 들어 ftz.hackerschool.org 의 79번 포트로 접속하는 것을 꺼리는 경우가 종종 있는데, F.T.Z 라는 점을 잊지 말자! *

    '오래된 > HackerSchool' 카테고리의 다른 글

    [HackerSchool] Level6  (0) 2011.04.27
    [HackerSchool] Level5  (0) 2011.04.27
    [HackerSchool] Level3  (0) 2011.04.26
    [HackerSchool] Level2  (0) 2011.04.26
    [HackerSchool] Level1  (0) 2011.04.26

    댓글

Designed by Tistory.