ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ubuntu] Unix 침해사고 분석-스케줄링(crontab)
    > Information Security/Linux 2017. 2. 11. 17:27

    침해사고가 발생하면

    분석 조사관은 crontab을 통해 서버의 스케줄링을 확인한다.


    crontab은

    Unix에서 사용되는 'cron'이라는 소프트웨어에서 규정해놓은 테이블 명칭이다.

    주기적으로 (월/일/시/분/초 단위) 운영자가 설정해놓은 명령어를 실행시키는 스케줄러인 셈이다.


    이 기능은 동일한 업무를 자동화하는 편리함을 갖춘 반면, 공격자에게도 좋은 도구가 된다.

    예를 들면, 대량의 정보를 한꺼번에 수집하여 공격자에게 전송하면 관리자의 모니터링 대상이 될 수 있으므로 소량의 데이터를 주기적으로 공격자에게 전송하거나, 백도어 프로세스를 생성하는 등에 활용된다. 마치 주기적으로 실행되는 작업인 양, 관리자가 눈치채지 못하게 스케줄(crontab)에 등록하는 것이다.


    테스트 환경 : Ubuntu 14.04.5 LTS

    -    목    차    -

    1. 현재 등록된 작업스케줄 확인하기

    - crontab -l

    2. 스케줄링을 직접 해보자

    - crontab -e

    3. 간단한 출력 테스트 

    - 1분마다 쉘 실행

    - 백업파일 자동생성/업데이트

    - 생성된 지 30일이 지난 로그파일 삭제

    ※ 침해사고가 발생했다면 어떻게 이용할것인가


    1. 현재 등록된 작업스케줄 확인하기

    # crontab -l

    스케줄이 사전에 지정되지 않았다면, 'no crontab for root[계정명]' 이라는 메시지가 뜬다.


    2. crontab 스케줄링을 직접 해보자

    # crontab -u 계정명 -e


    스케줄 등록 시, 기존 에디터 설정이 없었다면 위처럼 '에디터를 설정하라'는 메시지를 띄운다.

    가장 쉬운 에디터로 추천된 '/bin/nano'을 선택하면 다음과 같은 default 페이지가 있다.


    ※주석(#) 설정된 메시지는 [Ctrl+K]를 통해 삭제하고 스케줄링 할 명령어를 작성하면 된다.


    3. 간단한 출력 테스트

         1) 1분 마다 쉘 실행 

    # crontab -e 

    [환경] 바탕화면에 생성한 쉘 스크립트 'cat_test2.sh'를 1분마다 실행


    이 때 스케줄링은 * * * * * 명령어 순으로 작성하는데, 의미는 아래와 같다.

    *(분, 0~59) *(시, 0~23) *(일, 1~31) *(월,1~12)  *(요일,0(일)~6(토)) 명령어


    매일 3시에 실행 : 0 3 * * * /home/sj/Desktop/cat_test2.sh

    매주 수요일 3시 15분마다 실행 : 15 3 * * 4 /home/sj/Desktop/cat_test2.sh

    매월 2일 3시 15분마다 실행 : 15 3 2 * * /home/sj/Desktop/cat_test2.sh


             ※ crontab이 제대로 작동했는지 실행로그 확인

    # sudo tail -F /var/log/syslog



    2) 백업파일 자동생성/업데이트 

    - 백업파일을 만드는 스크립트 작성

    #! /bin/bash

    TARGET_FlLE=backup-$(date +%Y-%m-%d-%H-%M-%S).tar    // 'backup-연도-월-일-시-분-초.tar'라는 파일 생성

    cd /home/sj/Desktop   

    tar -cvf $TARGET_FILE .    // Desktop 이하 파일들 압축

    mv $TARGET_FILE /home/sj/Desktop/backup  // 압축된 파일을 바탕화면의 backup 폴더로 이동


    [환경] 바탕화면 이하의 파일들을 해당 날짜를 이름으로 한 백업파일 생성하는 스크립트 'backup.sh'


    - 스크립트 실행 테스트

    # chmod a+x backup.sh

    # ./backup.sh


    - 매일 23:59:00에 백업파일 생성하도록 스케줄링

    # crontab -e

      > 59 23 * * * /home/sj/Desktop/backup.sh  // 매일 23시 59분에 backup.sh 스크립트 실행



    3) 생성된 지 30일이 지난 파일 삭제
         - 30일이 지난 *파일을 삭제하는 스크립트 작성 (*예: 로그, 백업파일)

    # vim delete_log.sh

       > #! ./bin/bash

    find /var/log/ -mtime +30 -name .log.\* -exec rm{}\;  // 삭제할 파일이 위치하는 경로에서 log확장자를 가진 파일을 삭제

    - 작성된 스크립트 crontab에 등록

    # crontab -e

      > 0 1 * * * /home/sj/Desktop/delete_log.sh  // 하루에 한번씩 delete_log.sh 스크립트 실행



    침해사고가 발생했다면 어떻게 이용할 것인가


    1. crontab을 수정한 이력이 있는지 로그확인

    1) 가장 최근 수정 이력 확인

    # cd /var/spool/cron/crontabs

    # ls -al

    crontab을 통해 스케줄을 등록/수정한 파일이 남아있다. ls -al로 확인했을 때 최종 수정자명이 나타난다. 

    예를 들어 root와 sj라는 실 사용 관리계정이 운영중인 시스템에서 제3의 계정이 cron을 수정했을 때, 공격자의 스케줄링 수정작업을 유추할 수 있다.


    2) history 로그 확인

    # history

    최근에 실행되었던 command 명령어들이 기록된 history 로그를 살펴보며, crontab이 수정된 적이 있는지 확인한다.


    2. 인지되지 않은 쉘 스크립트 존재하는지 확인

    시스템 담당자와 인터뷰를 통해 서버의 용도와 목적에 따라 실행중인 스케줄 외에 인가되지 않은 쉘 스크립트가 crontab에 등록된 지 확인이 필요하다.


    < 참고 > 

    crontab 세팅 중 에러 - askubuntu.com

    위키백과 -cron

    crontab 스케줄러 이용하기 

    http://pymon.tistory.com/5

    오늘날짜 백업파일을 만드는 스크립트-http://goproprada.tistory.com/212


    728x90
    반응형

    '> Information Security > Linux' 카테고리의 다른 글

    파일시스템  (0) 2014.01.02
    [EXT] 디렉토리 엔트리  (0) 2013.10.15
    [EXT] 리눅스 시스템 - 아이노드  (0) 2013.10.15
    [Linux] EXT 파일시스템 구조  (0) 2013.10.15
    입출력 방향 변경  (0) 2010.11.15
Designed by Tistory.