1. 풀이
- level4 홈 디렉터리의 hint 파일 내용확인
- /etc/xinetd.d에 백도어가 있음을 유추가능
데몬 동작 방식 | ||
xinetd.d 방식 | 구분 | standalone 방식 |
xinetd 데몬에 의해 실행 및 종료 | 동작 | 각각의 데몬이 독립적으로 실행 및 종료 |
xinetd에 의해 호출 된 경우에만 메모리 상주 | 메모리 상주 | 항상 메모리에 상주하여 독릭접으로 존재 |
상대적으로 느림 | 응답 속도 | 상대적으로 빠름 |
/etc/xinetd.d | 설정 파일 | /etc 디렉터리에 독립적인 설정파일 존재 |
tcp_wrapper (/etc/host.allow, /etc/host.deny) | 접근 제어 | 설정 파일 독립적 설정을 통해 제어 |
통합관리, 자원절약, 접근제어 | 장점 | 빠른 응답 |
느린 응답 | 단점 | 개별관리, 자원낭비 |
비교적 서비스 요청이 많지 않은 서비스 | 적용 | 비교적 서비스 요청이 빈번히 발생하는 서비스 |
telnet, ftp 등 | 예시 | httpd, mysql, sshd 등 |
* xinetd.d 서비스 방식을 standalone 서비스 방식으로 변경이 가능하며, 그 반대 또한 가능함(단, 지원하지 않는 서비스도 존재)
- /etc/xinetd.d 내용을 확인하면 backdoor 파일을 확일할 수 있음
- backdoor 파일의 내용을 정리하면 다음과 같음
① service finger : 서비스 이름
② disable = no : 서비스의 사용 가능 유무(no=서비스 사용가능, yes=서비스 사용 불가)
③ flags = REUSE : 서비스 포트가 사용중인 경우 해당 포트의 재사용 허가
④ socket_type = stream : TCP/IP 프로토콜 사용
⑤ wait = no : 해당 서비스가 이미 연결된 상태에서 또 다른 요청이 올 경우 대기 없이 응답
⑥ user = level5 : 해당 데몬은 level5의 권한으로 실행
⑦ server= /home/level4/tmp/backdoor : xinetd에 의해 실행될 데몬 파일
⑧ log_on_failure += USERID : 로그인 실패에 대한 USERID를 로그에 기록
- finger 서비스는 level5의 권한으로 /home/level4/tmp/backdoor 파일을 이용해 서비스를 제공하는 것을 알 수 있음
- 하지만, /home/level4/tmp/backdoor 파일은 존재하지 않음.
- 해당 파일이 level5의 권한으로 실행됨을 확인 했으므로(user = level5), level5의 비밀번호를 알 수 있는 backdoor 파일을 해당 경로에 작성 후 finger 서비스를 수행하면 level5의 비밀번호를 알 수 있음
- 해당 파일을 컴파일한 후 finger 서비스를 실행하면 level5의 비밀번호를 알 수 있음
2. GDB를 통한 의사 코드 복원
- 공격을 위해 작성한 backdoor 분석
- system() 함수로 my-pass 명령을 실행함
'문제풀이 > FTZ' 카테고리의 다른 글
FTZ Level6 풀이 (1) | 2022.10.28 |
---|---|
FTZ Level5 풀이 (0) | 2022.10.27 |
FTZ Level3 풀이 (0) | 2022.10.25 |
FTZ Level2 풀이 (0) | 2022.10.25 |
FTZ Level1 풀이 (0) | 2022.10.24 |