침해사고 발생시 분석을 위한 포렌식 데이터 수집 – 스크립트

윈도우 침해사고가 발생하였을 때 수집할 데이터 항목 못지않게 중요한 부분이 수집 방법인데, 수집할 자료를 어떻게 보관하여, 분석을 위해 어떻게 가져갈 것인지를 사전에 정해야 하는데, 크게 수집 경로와 수집 방법이 있다.

수집 경로는 로컬로 저장하는 방법과 원격지로 저장하는 방법등이 있으며, 수집 방법은 이 수집 경로에 따라 변화 하게 된다.

그리고 따로 수집툴을 가지고 다녀야 한다. 문제가 발생한 머신에 저장되어 있는 툴들은 이미 감염되어 정보를 조작하여 보여줄 수 있음을 고려하여야 한다.

그리고 수집데이터는 분석 사건마다 약간시 달라질수 있지만, 대부분의 수집 항목은 비슷하므로, 수집을 위해 사전에 수집 데이터를 스크립트로 만들어 두어야 한다.

만들 때 역시 네트워크 사용이 불가능한 경우와 로컬 사용이 불가능한 경우를 대비해 로컬 저장과 원격지 저장이 가능한 버전등을 고려해, 2×2(32비트와 64비트 운영체제)즉 4가지를 만들것을 추천한다.

그리고 비 휘발성 데이터의 경우, 따로 수집하는 것이 좋다. 이유인즉 용량이 매우 큰경우가 발생할 수 있어, 네트워크에 전송하도록 지정할 경우, 수집에 문제가 발생하면, 더 큰 어려움을 격게 된다. 따라서 상황에 맞게 로컬에 먼저 수집후 전송하거나, 네트워크 드라이브를 이용, 혹은 이동식 디스크를 이용하여도 좋다. 이와 같이 분석하여야하는 서버를 고려해 진행하도록 하자.

필자는 아래와 같이 각 단계별로 나누어 보았다.

기본은 각 사고별 기본적으로 수집해야하는 정보로 구분하였고, 1단계는 레지스트리와 로그 그리고 시스템에서 로드된 파일들 그리고 3단계에는 메모리 덤프를 생성하여 정밀 분석을 하는 방식으로 나누었다. 반드시 이 기준을 따라 수집하라는 것이 아니고(이외에 더 많은 정보가 필요할 수 도 있다.), 아래와 같이 본인에게 알맞은 수집 항목을 사전에 스크립트로 생성해 놓으면 사고 발생시 발 빠르게 대처 할 수 있을 것이다.

 

기준

수집 정보

이용 명령/도구

기본

컴퓨터 이름, 시스템 정보

Hostname, Psinfo

환경 변수 설정 정보

Set

계정 정보

Wmic useraccount

로그온 세션

Psloggedon

예약된 작업

Cchtasks /query, at

공유 리스트

Wmic share list

공유 연결 정보

Net use

네트워크 설정 정보

Ipconfig

네트워크로 연결된 세션

Tcpvcon

DNS 설정

Type c:\windows\system32\drivers\etc\hosts

ARP 정보

Arp

라우트 테이블 정보

Route print

자동실행 리스트

Autorunsc –a

시스템 파일 시그니처 확인

Sigcheck –u –e c:\windows\system32

인터넷 브라우저 주소 입력

Reg query “HKCU\SOFTWARE\MICROSOFT\Internet Explorer\TypedURLs” /s

1단계

레지스트리, 이벤트 로그

Hobocopy C:\WINDOWS\system32\config\*

사용 Dll 리스트

Listdlls

사용 핸들 리스트

Handle –a –u

최근 접근 파일

Afind –d 1 c:

인터넷 브라우저 히스토리

Xcopy “c:\Documents and Settings\%Username%\Local Settings\History\*”

사용한 실행 파일 정보

dir %windir%\prefetch\*.pf /b /s | pf –m

2단계

메모리 덤프

Mdd 

ADS 파일

Streams –s c:\

디스크 덤프

dd 

[내용] 사전에 수집하고자 하는 정보 리스트를 만들어 두는 것이 좋다

 

이제 각 수집 위치에 따라서 어떻게 수집하는지에 대해 알아보도록 하자.

 

원격 저장이 원활하지 않을 경우 로컬 수집이 유용할 것이다. 하지만, 로컬에 저장할 경우 비휘발성 데이터중 디스크데이터에 대한 손상을 감수하여야 한다.

따라서 분석 대상의 저장 공간에 수집은 추천하지 않는 방식이며, 되도록 원격지 혹은 별도의 저장 매체(이동식 디스크, 대용량 USB 메모리등)을 이용하여 진행하기를 바란다.

로컬 수집 방법은 배치 스크립트를 이용한 간단히 기술 할 수 있다.

그럼 지금까지 확인하였던 데이터들을 배치파일로 만든다면 아래와 같이 만들 수 있다.

 

Hostname > %computername%-%Date%.txt

Date /t > %computername%-%Date%.txt

Time /t > %computername%-%Date%.txt

PsLoggedon -accepteula > %computername%-%Date%.txt

Logonsessions -p -accepteula > %computername%-%Date%.txt

Tasklist /v > %computername%-%Date%-tasklist.txt

Handle /accepteula > %computername%-%Date%-handle.txt

Listdlls /accepteula > %computername%-%Date%-listdll.txt

Sigcheck -u -e c:\windows\system32 /accepteula > %computername%-%Date%-sigcheck.txt

Hfind c:\ > %computername%-%Date%-hfind.txt

AFind c:\ /d 2 > %computername%-%Date%-Afind.txt

ipconfig /all > %computername%-%Date%-ipconfig.txt

route print > %computername%-%Date%-route.txt

promiscdetect > %computername%-%Date%-promiscdetect.txt

netstat -anob > %computername%-%Date%-netstat.txt

net file > %computername%-%Date%-netfile.txt

nbtstat -c > %computername%-%Date%-nbtstat.txt

Tcpvcon /q /accepteula > %computername%-%Date%-tcpvcon.txt

Psloglist -h 24 application /accepteula > %Computername%-%Date%-eventapp.txt

Psloglist -h 24 system /accepteula > %Computername%-%Date%-eventsys.txt

Psloglist -h 24 security /accepteula > %Computername%-%Date%-eventsec.txt

//메모리 덤프는 이후 부터는 구분하여 따로 배치파일로 만드는 것이 좋다.

mdd -o %1\%Computername%-%Date%-Phys.dmp > %Computername%-%Date%-Physmem.txt

Hobocopy.exe “%HOMEDRIVE%\windows\system32\config\ %Computername%-%Date%-Registry

Hobocopy.exe “%HOMEDRIVE%\Documents and Settings\” %Computername%-%Date%-Registry

[내용] 데이터 수집을 위해 배치 파일 내용

 

누차 애기하지만 위 배치 스크립트는 절대적이지 않으며, 용도에 맞는 툴을 사용자가 선정하여 사용하면 되겠다.

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.