먼저, 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") ; 처럼 인터렉트브 옵션을주면 명확하게 문제가 풀린다.
'FTZ. System Hacking' 카테고리의 다른 글
level5 - 레이스 컨디션(Race Condition) (1) | 2017.12.22 |
---|---|
level4 - system()함수의 위험성 (0) | 2017.11.29 |
level2 - vi에서의 명령어 기능 (0) | 2017.11.29 |
level1 - setuid (0) | 2017.11.29 |
시스템 해킹 테크닉(1) - 리눅스 관련 기본 (0) | 2017.08.31 |