본문 바로가기

FTZ. System Hacking

ftz.시스템 해킹 테크닉(level4) - xinetd 백도어

먼저, hint를 살펴보자 .

"누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!" 라는 메시지가 나온다.

우선 xinted 데몬에 대해 알아보자

 

 

▶ 리눅스 시스템의 부팅 순서

1) 부트 로더(Grub) 실행

2) 커널 이미지 메모리 로딩

3) /etc/inittab 파일에 있는 내용 중 선택된 모드로 init 프로세스 실행

4) xinted 데몬에 의한 네트워크 데몬 가동

5) 부팅 완료

 

---> xinted 데몬은 자동으로 서비스를 구동한다. xinted는 네트워크 데몬으로서,

네트워크 데몬이란 FTP, 텔넷, SSH, 아파치 등과 같은 네트워크 통신을 위한 데몬이다.

 

 

xinted 데몬의 설정구조 : /etc/xinetd.conf (글로벌 설정)

# instances = 60 : xinted 데몬에 실행되는 네트워크 서비스 데몬의 최대 동시 접속 허용을 위한 데몬의 기동 수치이다.

# log_type = SYSLOG authpriv : 시스템 로그를 "보안 및 승인에 관한 메시지 등급"으로 저장한다.

# log_on_success = HOST PID : 접속에 성공했을 때 원격호스트 IP와 xinetd PID를 로그에 저장한다.

# log_on_failure = HOST : 접속에 실패했을 때 원격호스트 IP를 로그에 저장한다는 의미로, 접속 장애의 원인을 분석할 수 있는 최소한의 근거를 이력으로 남긴다.

# cps = 25 30 : 동시 접속이 25개가 되면 30초 동안 서비스를 비활성화 한다.

 

 

 

▶ 개별 서비스 telnet

# service telnet : 서비스의 이름으로서, /etc/services 파일에 있는 서비스명으로 선택하는 것을 권장한다.

# flags = REUSE : 서비스 포트가 사용 중인 경우 해당 포트의 재사용을 허가한다.

# socket_type = stream : TCP/IP 프로토콜을 선택

# wait = no : 이미 서비스가 연결된 상태에서 다른 요청이 오면 바로 응답한다. 다르게 표현하면 telnet은 동시에 다수 접속이 가능하다는 뜻이다.

# user = root : 해당 데몬은 root 계정의 권한으로 실행한다.

# server = /usr/sbin/in.telnetd : xinted에 의해 실행될 데몬 파일이다.

# log_on_failure += USERID : 정상적인 기동에 실패한 경우 USERID를 로그에 기록한다.

# disable = no : 데몬을 비활성화하지 않음. yes를 하는경우엔 서비스를 기동하지 않음.

 

위의 개념정도를 잘 이해했다면, /etc/xinetd.d의 백도어를 보고 쉽게 문제를 해결할 수 있다.

 


▶ 문제 해결하기

# 눈여겨 볼 부분은 level5의 권한으로 finger이라는 서비스를 이용하여 /home/level4/tmp/backdoor파일이 실행된다는 것이다.

 

finger은 79번 포트가 열려있고 LISTEN상태인것을 확인 할 수 있다.

/home/level4/tmp에 backdoor라는 파일이 없으므로 backdoor을 원하는대로

level5계정의 권한으로 명령어를 넣을 수 있다.

그럼 분석 결과대로 vi /home/level4/tmp/backdoor을 다음과같이 만들고 실행해보자.

# 약간 불안정이지만 문제를 풀었다.

불안정한 이유는 ftz.hackerschool.org 서버에서는 nc와 같은 원격 접속용 프로그램이 지원되지 않기 때문이다. 따라서 원격으로 접속하고 nc를 통해하면 좀 더 자연스럽고,

system("/bin/bash -i") ; 처럼 인터렉트브 옵션을주면 명확하게 문제가 풀린다.