일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 구글캘린더
- 일정관리
- 레노버
- outwit hub
- 구글웹화면
- Firefox
- 여름
- 공유기 패스워드
- 단축키
- 아이콘크기
- * 암호
- 댓글스팸
- 통합도서회원증
- 패스워드
- 달력
- 윈도우 탐색기
- Edge E125
- web scrapping
- 가로화면
- 번역툴
- Shortcut Key
- 스케쥴
- 가을
- 파워셸
- rainlendar
- Windows
- Google Calendar
- 2013사진공모전
- Asterisk password reveal
- 구글메인화면
- Today
- Total
Black&White
해킹된 피해시스템 분석 및 대응 방법 본문
對 外 秘 Restricted
예전에 정리해놓은 자료인데, 보안을 공부하는 이들에게 좋은 참고가 되면 좋을 듯하여 공개합니다.
피해시스템 분석 및 대응 방법
목 차
Ⅰ. 목 적
Ⅱ.
일반적 분석 및 대응 방법
Ⅲ. 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 위에서 얻어진 해쉬값을 아래 URL 페이지에 넣고 변조 유무를 확인한다. |
.
4.
MAC time 에 근거한 분석
모든 파일시스템은 디렉토리나 파일과 관련된 시간속성(mtime, atime, ctime)을 갖는다. 이러한 시간 속성은 시스템 또는 사용자 활동(Active)에 대한 정보를 확인할 수 있다. 이러한 정보를 통해 피해시스템의 분석에 활용한다.
(MAC : Mtime, Atime, Ctime 을 줄여서 MAC time 이라 함)
예를 들어,
금일
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 특정 로그일 검색 acctcom –s 시작시간 –e 끝시간 (예 : acctcom –s |
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) |