HINT : 누군가 /etc/xinetd.d/에 백도어를 심어놓았다..!
/etc/xinetd.d의 xinetd에 대해 알아볼 필요가 있다.
먼저 데몬(Daemon)과 슈퍼 데몬(xinetd)을 알아 보자.
그렇다고 한다.
즉, 데몬 = 시스템에 관련된 작업을 하는 background process. ex) telnet, ftp, http...
슈퍼데몬 = 데몬을 제어하는 역할.
여기서 데몬의 실행모드가 두 가지가 있다.
독립적으로 실행되는 standalone Mode : (장점 - 빠른 응답 / 단점 - 메모리 점유 많음)
[슈퍼데몬은 standalone 실행]
슈퍼데몬에 관리되어 실행되는 xinted Mode : (장점 - 메모리 점유 적음 / 단점 - 느린 응답)
자 그럼 /etc/xinetd.d 폴더에 있는 backdoor는 슈퍼데몬(xinted)에 의해 관리 되는 것을 예상 할 수 있다.
backdoor의 내용을 자세히 봐 보자.
내용에서 disable = no는 xinetd에 의해 제어를 받겠다는 뜻 이며, 여기가 yes일 경우 제어를 받지 않겠다는 것이다.
또한, server = /home/level4/tmp/backdoor를 볼 수 있으며 여기에는 실행될 데몬의 경로가 들어간다.
그럼 /home/level4/tmp위치로 가보자.
아무 파일도 없다.
finger 명령어를 사용하면 이 위치에 있는 backdoor 파일이 실행될 것 이다.
그러므로 backdoor 파일을 만들어 보자.
bash쉘을 실행시켜 my-pass 명령어를 입력하게 만든다.
아주 잘 실행된다.
이제 finger 명령어를 사용하면 backdoor 파일이 실행되어 level5의 password를 알아 낼 수 있을 것이다.
하지만 finger, finger level5를 실행 해 본 결과 password를 얻을 순 없었다.
figer @localhost, finger @localhost level5,처럼 @host 서버를 등록해 주어야만 값을 얻을 수 있었다.
의문이 들어 다시 /etc/xinetd.d 폴더를 확인해 보았다.
/etc/xinetd.d 폴더 안에 finger라는 서비스가 하나 더 있었으며,
disable=yes인 것을 보아 슈퍼데몬에 관리를 받지 않는 것을 알 수 있었다.
위 글을 보면 @host를 적어주는 경우 해당 서버로 접속하는 것을 알 수 있다.
즉 finger, finger level5처럼 @host를 적지 않게 되면, 로컬에 접속하게 되므로 굳이 슈퍼데몬이 관리 할 필요가 없다.
따라서 이 경우 슈퍼데몬이 관리 하지 않는 /etc/xinetd.d/finger의 service finger가 실행 되는 것 같다.
하지만 finger @localhost 처럼 @host를 적게되면, 해당 서버로 접속해야 하며, 이때는 슈퍼 데몬의 관리가 필요하다.
관리가 필요하기 때문에 /etc/xinetd.d/backdoor의 service finger가 실행되며,
접속 서버가 localhost 이므로 바로 접속 해서 슈퍼 데몬의 관리 하에 backdoor 데몬이 실행되는 것 같다.
이때 위에서 볼 수 있 듯 권한은 level5이며
level5로 level4/tmp/backdoor를 실행 시키므로 password를 얻을 수 있었다.
이제 level5로 올라가 보자.
[Write-up] Level 6 (0) | 2019.12.06 |
---|---|
[Write-up] Level 5 (0) | 2019.12.05 |
[Write-up] Level 3 (0) | 2019.12.05 |
[Write-up] Level 2 (0) | 2019.12.05 |
[Write-up] Level 1 (1) | 2019.12.05 |
댓글 영역