앞에서 한거와 같이 ls로 무엇이 잇나 확인 후 hint를 실행합니다.
hint를 확인해보니 저 위치에 백도어가 심어놓았습니다.
궁금하니 확인해 보겠습니다.
/etc/xinetd.d 디렉토리를 확인해보니 맨위에 backdoor 라는게 보이는군요.
저 위치로 이동해서 backdoor라는 파일을 들여다 보았습니다.
finger는 현재 시스템에 로그인된 사용자를 보여줍니다.
그밑에 내용들도 봐보겠습니다.
service finger : 서비스의 이름
disable = no : 데몬을 비활성화 하지 않음 ( yes : 데몬 비활성화 )
flasgs = REUSE : 서비스 포트가 사용중일 경우 해당 포트의 재사용을 허가
socket_type = stream : 소켓 타입을 TCP/IP 프로토콜로 선택
wait = no : 서비스가 연결된 상태에서 다른 요청이 들어오면 대기시간 없이 바로응답
user = level5 : 해당 데몬이 level5 계정의 권한으로 실행
server = /home/level4/tmp/backdoor : xinetd에 의해 실행될 데몬 파일
log_on_failure += USERID : 정상적인 가동에 실패한경우 USERID를 로그에 기록
대충 해석해보니 level5 권한으로 /home~/backdoor가 finger서비스를 이용해 실행되는것 같내요.
tmp 경로로 이동후 확인을 해보았더니 backdoor 파일이 보이지가 않습니다.
잠시 생각에 빠졌습니다.
구글의 도움을 빌렸습니다.
backdoor 파일이 존재하지 않아 C파일로 생성해서 실행을 한다고 합니다.
우선 system() 함수로 위에서 봤던 hint파일 확인이 정상적으로 되나 확인해보려 합니다.
backoor.c 코드를 gcc 명령으로 컴파일해 a.out이란 파일이 생겼습니다.
실행해보니 정상적으로 작동합니다. ( ./ : 파일실행 명령 )
backdoor를 level5권한으로 실행시켜야 하니 my-pass명령을 삽입해서 비밀번호를 획득할 수 있습니다.
a.out 파일은 임의로 만든 파일이고 저희가 실행시켜아할 파일은 backdoor 파일입니다.
my-pass 소스코드를 품은 c파일을 backdoor 라는 이름으로 컴파일 했습니다.
finger 명령을 여러차례 시도했지만 왜 localhost로 접근하는지 확실하게 이해하지는 못했습니다.
finger @localhost처럼 접속 서버가 localhost이여서 슈퍼데몬의 관리가 필요해서
backdoor 데몬이 실행되는 것 같습니다.