http://bwhite.tistory.com/226





    피해시스템 분석 및 대응 방법



     

     

     

     

     

    일반적 분석 및 대응 방법

    Freezing the scene

    시스템 분석

    별첨


     

    I.     목적

    -         명확한 분석과 철저한 증거보존을 위해서 반드시 절차가 필요

    -         관련자(개발자, SE ) 실수나 오류가 아닌경우로그삭제중요시스템 파일의 /변조가 되었을 가능성이 존재하므로절차에 대해 숙지가 필요

     

    II.             일반적인 분석  대응 절차

     

    피해시스템의 파일시스템에 대한 백업과 백업된 데이터를 별도의 분석을 위해 준비된 시스템(Linux) 피해상황의 현장보존과 증거 자료를 유지하는데 상당히 필요하나현재 상황에서는 서비스의가용성이 우선하므로, Freezing the scene 단계부터 진행한다.

     


    III.        Freezing the scene(Solaris)

    일차적으로 사고 인지 시점에서 가장 빨리 피해시스템의 현재 프로세스주요설정파일열린파일로그인 사용자 정보네트워크 상태 등에 대한 기록을 한다.

    기록하는 방법은 스크립트를 짜서 수행할 수도 있고콘솔상에서 script 명령을 사용하여 터미널에 표시되는 모든 내용을 기록을  수도 있다.

     

     

    1.     피해시스템에 터미널 로긴

    telnet Victim_IP

     

    2.     script 명령 실행

    script victim_IP_분석일시_분석자.txt

     

    3.     기본 정보 수집

     

    시스템 정보

    date

    who am i

    uname –a

    ifconfig –a

     

    프로세스 체크

    현재 프로세스에 대한 점검을 한다.

    ps –elf or ps –aux

     

    네트워크 세션 체크

    netstat –an

     

    ## 소켓에서 사용하는 프로세스 확인시

    lsof –i

      결과를 비교하여, netstat 바이너리가 위변조 되었는지 확인할수 있다

     

    netstat –an | grep LISTEN

    netstat -an | grep ESTABLISHED

     

    lsof –i | grep LISTEN

    lsof –i | grep ESTABLISHED

     

    현재 로그인 세션 체크

    w

    who –uT am i

     

    백도어 계정 존재여부 확인

    ls –al /etc/passwd

    cat /etc/passwd

     

    ls –al /etc/shadow

    cat /etc/shadow

     

    ls –al /etc/group

    cat /etc/group

     

    변경된 서비스 확인

    ls –al /etc/inetd.conf

    cat /etc/inetd.conf

    ls –al /etc/services

    cat /etc/services

     

    로그설정 변경 여부 확인

    ls –al /etc/syslog.conf

    cat /etc/syslog.conf

     

    로그인 설정 파일 점검

    ls –al /etc/default

    cat /etc/default/login

    ls –al /etc/default/su

    cat /etc/default/su

     

    snmp 설정 점검

    ps –ef | grep snmp

    cat /etc/snmp/conf/snmpd.conf | grep community | grep –v

     

    파일시스템 네트워크 접근 설정 점검

    ## .rhost 점검

    ls –al /.rhost

    cat /etc/hosts.equiv

    find / -name .rhosts –print –xdev

     

    ## nfs 공유 점검

    ls –al /etc/dfs/dfstab

    cat /etc/dfs/dfstab

     

    히든 파일에 대한 점검

    find / -name “..” –print –xdev

    find / -name “.* -print –xdev |cat –v

     

    /dev 디렉토리 불필요한 파일 점검

    find /dev -type f -exec ls -al {} \;

     

    www 퍼미션 파일점검

    find / -perm -2 -type f \-exec ls –xdev -lg {} \;

     

    Sniffer 설치 여부 확인

    ifconfig –a

     

    ## Sniffer 설치 여부에 대한 점검은 ifconfig  위변조 되었을 가능성도 있으므로네트워크단에서 promiscuous 모드로의 동작여부를 확인할 필요가 있음

     

    Setuid, Setgid 설정 파일에 대한 점검

    ## Setuid 확인

    find / -type f –perm 4000 –ls

     

    ## Setgid 확인

    find / -type f –perm 2000 –ls

     

    ## NFS/AFS 마운트 시스템의 경우

    find / -type f –perm 4000 –print –xdev

     

    ## root 소유의 Setuid, Setgid 파일 확인

    find / -user root -type f \( -perm -4000 -o -perm -2000 \) -xdev -exec ls -lg {} \;

     

    사용자들의 입력 명령 점검

    ## history 파일에 대한 점검

    find / -name ".*history" -print -ls –xdev

     

    ## pacct 로그 점검

    acctcom /var/adm/pacct

     

    예약작업 점검

    ## crontab 점검

    ls –al /var/spool/cron/crontabs

     

    ## /var/spool/cron/crontabs 디렉토리내 모든 예약작업 점검

    crontab -l

    cat /var/spool/cron/crontabs/root

    cat /var/spool/cron/sys

    cat /var/spool/cron/uucp

     

    ## at 점검

    ls –al /var/spool/cron/atjobs

    at -l

    ## /var/spool/cron/atjobs 디렉토리내 모든 예약작업 점검


    IV.           시스템 분석

    1.     로그 분석

    로그파일에 대한 분석은 문제가 발생했던 시점에서의 로그에 대한 분석이며이전 로그에 대한 분석은현재 로그를 별도의 디렉토리에 백업하고 있으므로 백업디렉토리의 로그파일을 통해 분석되어야 한다.

     

    acct 또는 pacct

     

    aculog

    lastlog

    loginlog

     

    messages

     

    secure

     

    sulog

     

    utmp

     

    utmpx

    wtmp

     

     

    wtmpx

    vold.log

     

    xferlog

    사용자별로 실행되는 모든 명령어 기록

    /usr/lib/acct/runacct 명령을 통해서 실행됨

    dial-out 모뎀 관련 기록

     사용자의 가장 최근 로그인 시간을 기록

    실패한 로그인 시도를 기록

    touch /var/adm/loginlog 명령으로 실행

    부트메시지등 시스템의 콘솔상에서 출력된 결과를 기록하고, /etc/syslog.conf  의해 생성된 메시지를 기록

    보안관련 접속로그

    /etc/syslog.conf  ‘authpriv.*  /var/log/secure’  설정

    su 명령 사용에 대한 기록

    su 명령 사용과 동시에 시작됨

    현재 로그인한 사용자의 기록

    who, w, whodo, finger, write  같은 프로그램에 의해서 사용

    utmp 기능을 확장

    지금까지 모든 사용자의 로그인로그아웃과 시스템의 종료재시작 등을 기록

    last 명령으로 로그 

    wtmp 기능 확장

    플로피 디스크나 cd-rom  같은 외부 매체의 사용에서 발생한에러 기록

    FTP 접근 기록

     

     

    ## 로그파일의 변경시간 확인

    ls –al /var/adm

    ls –al /var/log

     

    ## syslog 검사

    cat /var/log/syslog

     

    ## 지금까지 사용자들의 로그인로그아웃 히스토리

    last

    last –f /var/adm/wtmp

    last –f /var/adm/wtmpx

    cat /var/adm/lastlog

     

    ## secure 로그

    cat /var/log/secure

     

    ## 백업된 wtmp 로그파일 점검(batch1  경우)

    last –f /acctbck/data.d/wtmp/wtmp0831

     

    ## 로그인 실패 로그

    cat /var/adm/loginlog

     

    ## su 명령 로그

    cat /var/adm/sulog

     

    ## FTP /수신 로그

    cat /var/log/xferlog

     

    ## 실행명령내역

    lastcomm /var/adm/pacct

    or

    acctcom /var/adm/pacct

     

    ## 시스템 에러로그

    cat /var/adm/messages

    cat /var/log/syslog

     

    ## cron 로그

    ls –al /var/cron

    cat /var/cron/log

    cat /var/cron/olog

     

    2.     ftp 로그 분석

    ## ftp 데몬 실행확인

    lsof –i TCP:21

    COMMAND   PID USER   FD   TYPE        DEVICE SIZE/OFF NODE NAME

    inetd     229 root   11u  IPv4 0x30000d36800      0t0  TCP *:ftp (LISTEN)

    proftpd  5883  ec1    0u  IPv4 0x30019c47620  0t45068  TCP batch1:ftp->218.144.91.168:2047 (ESTABLISHED)

     

    lsof –c proftpd

    proftpd 13115 ftpshow    7w  VREG          32,8    21060 2331773 /var/spool/syslog/proftpd/auth.log

    proftpd 13115 ftpshow    8w  VREG          32,8    33002 2331774 /var/spool/syslog/proftpd/access.log

    proftpd 13115 ftpshow   10w  VREG          32,8   112716 1564997 /var/adm/wtmpx

    proftpd 13115 ftpshow   11w  VREG          32,8   112716 1622148 /var/log/xferlog

     

     내용을 통해 proftp  auth.log, access.log  남기고 있으며, wtmpx, xferlog  남기고 있음을 알수 있다.

    이러한 로그를 살펴본다.

     

     

    3.     시스템 바이너리 파일의 무결성 점검

    /etc/inetd.conf  참조하는 login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync 등의 파일에 대한 위변조 검사 수행

     

    ## Solaris  경우

    http://sunsolve.sun.com/pub-cgi/show.pl?target=content/content7

    http://sunsolve.sun.com/md5/md5.tar.Z

     링크에서 md5.tar.Z 파일을 임의의 디렉토리(/temp/md5) 풀고주요 유틸리티에 대해 md5 해쉬값을 얻는다

     

    $ /temp/md5/md5-sparc /usr/bin/su 
    MD5 (/usr/bin/su) = 8b98fb9c314bd5b378d9436b1617d014

     

    위에서 얻어진 해쉬값을 아래 URL 페이지에 넣고 변조 유무를 확인한다.

    http://sunsolve.sun.com/pub-cgi/fileFingerprints.pl

    .

    4.     MAC time  근거한 분석

    모든 파일시스템은 디렉토리나 파일과 관련된 시간속성(mtime, atime, ctime) 갖는다이러한 시간 속성은 시스템 또는 사용자 활동(Active) 대한 정보를 확인할  있다이러한 정보를 통해피해시스템의 분석에 활용한다.

    (MAC : Mtime, Atime, Ctime  줄여서 MAC time 이라 )

    텍스트 상자: mtime : 마지막 변경(modification) 시간 
파일을 생성한 시간
마지막으로 파일내용을 변경한 시간
atime : 마지막 접근(Acess) 시간
마지막으로 파일을 읽거(Read)나 실행(Execution)시킨 시간
ctime : 마지막 파일속성 변경(Status Change) 시간
마지막으로 파일의 소유자 , 그룹, 퍼미션 등이 변경된 시간
dtime 이 없는 시스템은 ctime 을 파일의 삭제 시간으로 추정할수 있음
dtime : 파일의 삭제(delettion) 시간








    예를 들어,

    금일 16 전체 파일시스템에(nfs 파일시스템제외생성된 파일에 대해 조사를  경우,

    find / -mtime -1 –ls –xdev | grep 16:

     

     

    10 이전까지 변경된 파일에 대해 조사를  경우,

    find / -ctime -10 –ls

     

    MAC time  관리자가 시스템을 둘러보기만 해도 쉽게 변경이 된다특히, find  같은 명령은 atime  변경되어 침입자가 접근했던 경로를 추적하기가 어려워 지게 된다.

    이처럼 MAC time  피해흔적을 조사하는데 중요한 정보가 되긴 하지만쉽사리 변경이 가능하므로, TCT  같은 별도의 도구를 이용하여 분석한다.

     

    5.     의심스런 파일(소스바이너리) 대한 분석

    의심스런 파일이 소스형태로 있는 경우라면소스프로그램을 분석

    바이너리 형태로 된경우는 strings 명령과 truss(sun), strace(Linux) 같은 명령을 통해 시스템콜을 분석

     

    ## 바이너리에 대한 분석

    strings 의심스런파일(바이너리)

     

    ## 시스템콜에 대한 분석

    ## -p 옵션 : PID 프로세스의 시스템콜에 대한 추적

    ## -f 옵션 : 자식프로세스에 대한 시스템콜 추적

    truss –f –p PID

     

    ## 파일입출력네트워크 관련 시스템콜을 감시

    truss –f –p PID 2 > &1 | egrep “read|recv|write|send|exec|socket|connect”

     

    ## read, write 시스템콜로 전달되는 모든 데이터의 저장(-o 옵션으로 로그파일 저장)

    truss –rall –wall –f –o log –p PID

     

     


    별첨 >

     

    i. 침입흔적 조사시 필요한 도구

    lsof

    모든 열려진 파일과  파일들을  프로세스들을 나열한다침입 프로그램을 탐지하는데 중요한 역할을 한다.

     

    tripwire

    파일  디렉토리의 무결성을 검사하는 도구로 주어진 파일  디렉토리에 대한 변조유무  삭제추가 사항을 알아낸다주기적으로 사용하여 중요한 파일의 변조유무를 알아내도록 한다.

     

    MD5

    암호를 이용한 체크섬 프로그램으로 임의의 길이의 메시지를 입력받아 지문과 같은 128 비트의 메시지 다이제스트(message digest) 만들어낸다서로 다른 메시지는 서로 다른 메시지 다이제스트(message digest) 만들어 내어 파일의 변조유무를 알아낼  있다.

     

    ii. acctcom 명령 활용

    특정사용자의 사용명령 로그 검색

    현재 로그중 검색

    acctcom –u 사용자계정

    ( : acctcom –u root )

     

    특정 로그일 검색

    acctcom –u 사용자계정 특정로그일로그파일

    ( : acctcom –u root /acctbck/data.d/pacct/pacct0831)

     

     

    특정 시간대의 사용명령 로그 검색

    현재 로그중 검색

    acctcom –s 시작시간 –e 끝시간

    ( : acctcom –s 10:00:00 –e 11:00:00)

    특정 로그일 검색

    acctcom –s 시작시간 –e 끝시간

    ( : acctcom –s 10:00:00 –e 11:00:00 /acctbck/data.d/pacct/pacct0831)

     

    iii. lsof 도구 활용

    특정파일을 사용하고 있는 프로세스 확인

    lsof filename

    ex) #lsof /etc/passwd

     

    디렉토리 또는 파일시스템  파일에 액세스하고 있는 프로세스 확인

    lsof DirectoryName

    lsof Filesystem_Name

    ex) lsof /etc

     

    모든 소켓에 대한 확인

    lsof –i

     

    특정 데몬이 사용하고 있는 파일 확인

    lsof –c Demon_Name

    ex) lsof –c Httpd

     

    해당 프로세스가 열고 있는 파일 확인

    lsof –p PID

    ex)lsof –p 1555

     

    특정 유저가 사용중인 파일 확인

    lsof –u (Username or UID)

    ex) lsof –u root,young,

     

    특정유저를 제외한 모든 유저에 대한 파일 확인

    lsof –u ^root

    or

    lsof –u ^o

     

    로그인 추적

    로그인 PID 추적

    lsof –i @hostname:23

     

    Device 확인

    lsof –p PID(위에서 확인한 PID)

     

    로그인 터미널 확인

    lsof /dev/pts/터미널ID  (sun  경우 15)


    Posted by beumbae