0x01 malware forensics2009. 9. 2. 17:22


8. Non-Volatile Data Collection from a Live Windows System

보통 분석자들은 라이브 시스템의 하드디스크에 있는 파일에 접근하지 않는다. 왜냐하면 저장된 데이터들이 변경될 수 있기 때문이다. 하지만 상황에 따라서 라이브 시스템의 파일이나 레지스트리가 필요한 경우도 있다. 어떤 경우에는 많은 양의 비휘발성 데이터들이 모든것을 보호하기 위해서 그것들을 실행 불가능하게 만들지도 모른다. 분석자들은 테라바이트의 문서나 다른 데이터를 가지고 있는 서버의 포렌식 복사본을 만드는 것이 악성코드 사고와 얼마나 연관성이 있는지 확인한 후에 복사본을 만들것인지 말것인지 결정해야 한다.

여러대의 컴퓨터를 분석하는 경우 분석자들은 모든 컴퓨터의 복사본을 만드는 것이 필요한지 아닌지를 결정해야 한다. 대신 대부분의 위험함 시스템의 복사본을 만드는 것을 결정해야 하고 감염되었을 것으로 보이는 다른 시스템에서 충분한 정보를 획득해야 한다. 그리고 법정에서 그 사건들을 증명해야 한다.


9. Forensic Duplication of Storage Media on a Live Windows System

고가용성(HA) 서버와 꺼져서는 안되는 다른 시스템을 가지고 있다면 컴퓨터가 동작하는 있는 동안에 전체 시스템에 대한 복사본을 만드는 것은 가능하다. 비슷하게 라이브 시스템의 메모리 정보를 수집하기 위해 시스템에 연결된 스토리지 미디어에 복사본을 저장할 수도 있다. 예를 들어 다음 명령어는 하드디스크의 내용을 이동식 미디어에 파일로 저장한다. 그리고 무결성 검사를 위해 MD5 해쉬값을 만들고 수집과정에 대한 로그를 남긴다.


D:/IR> dd.exe if=\\.\PhysicalDrive0 of="E:\images\host1-diskimage-20090309.dd" conv=sync,noerror --md5sum --verifymd5= --md5out="E:\images\host1-diskimage-20090309.dd.md5" --log="E:\images\host1-diskimage-20090309.dd_audit.log"


처리량에 따라 로컬 네트워크에 있는 다른 시스템으로 복사본을 저장하는 것이 이동식 저장 장치에 저장하는 것보다 빠르다. 또는 SMB 공유를 통해 netcat 명령으로 원격 컴퓨터에 저장할 수도 있다. 하드디스크 내용을 원격 시스템에 복사본을 만들 수 있는 원격 포렌식 툴로는 다음과 같은 툴이 있다.

EnCase Enterprise : http://www.guidancesoftware.com/products/ee_index.aspx
OnlineDFS : http://www.onlinedfs.com/
LiveWire : https://www.wetstonetech.com/cgi/shop.cgi?view,14
ProDiscoverIR : http://www.techpathways.com/ProDiscoverIR.htm

아쉽게도 전부 상용입니다. 그 중에서도 EnCase가 가장 유명하죠..미국방성에서 쓴다던가...
EnCase 구버전은 암흑세계를 통해 구할실 수 있을 겁니다. 다른건 안찾아봐서...


10. Forensic Preservation of Select Data on a Live Windows System

윈도우 시스템에서 일반적으로 악성코드의 설치와 명령에 대한 정보를 가지고 있는 부분이 있다. 이런 부분에서 증거들을 찾아나가는 것은 다음에 예제로 제공될 것이다. 이번 섹션에서 언급하는 보호 기법은 포괄적이고 철저하지 않을 것이다(??) 그러나 악성코드와 연관이 있는 확실한 기초 증거를 제공할 것이다.
(해석이 좀 애매합니다...양해를...)

해쉬 분석이나 키워드 검색과 같은 좀 더 폭넓은 포렌식 분석이 필요한 경우에 분석자들은 포렌식 이미지상에서 작업을 수행한다(Chapter 4에서 언급)
이번장에서 언급되는 툴들은 윈도우 운영체제에서 실행되는 툴들이고 간혹 사후 분석에서도 유용하게 사용된다.

  - 보안 설정 평가
  - 호스트 파일 획득
  - Prefetch 검사
  - 자동 시작 검사
  - 로그 검사
  - 사용자 계정 검사
  - 파일 시스템 검사
  - 레지스트리 검사


10.1 Assess Security Configuration

시스템 보안이 잘 되어 있는지 아닌지를 결정하는 것은 분석자들이 호스트의 위험 레벨을 평가하는데 도움을 준다. WinUpdatesList를 통해 패치 레벨이나 윈도우 시스템의 버전 정보를 확인할 수 있고 MBSA(Microsoft Baseline Security Analyzer)를 통해 추가적인 보안 정보를 확인할 수 있다.

WinUpdatesList : http://nirsoft.net/utils/wul.html




MBSA : http://technet.microsoft.com/en-us/security/cc184924.aspx




로깅 레벨이나 접근제어리스트는 auditpol이나 dumpsec 명령을 통해서 확인할 수 있다. 만약 보안 로깅이 비활성화되어 있다면 분석자는 Security Event Log에서 보안 로그를 획득할 수 없다. 반면에 시스템이 보안 이벤트를 로깅하도록 되어 있는데 보안 이벤트 로그가 비어 있다면 로그가 다른 어딘가에 저장되어 있는지 또는 의도적으로 지워졌는지 확인해야 한다.

auditpol : http://www.dynawell.com/download/reskit/microsoft/win2000/auditpol.zip
dumpsec : http://www.systemtools.com/somarsoft/index.html


10.2 Assess Trusted Host Relationships

신뢰할 수 있는 호스트와 네트워크에 대한 정보를 가지고 있는 %windir%\system32\derivers\etc에 있는 몇몇 파일들은 다음과 같이 저장하는 것이 중요하다.


E:\>type.exe %windir%\system32\drivers\etc\hosts >> E:\Results\Hosts\hosts.log
E:\>type.exe %windir%\system32\drivers\etc\networks >> E:\Results\Hosts\networks.log
E:\>type.exe %windir%\system32\drivers\etc\lmhosts >> E:\Results\Hosts\lmhosts.log


이 파일들은 로컬에서 도메인 네임 변환에 사용된다. 즉, DNS에 질의하기 전 이 파일들에 질의하고자 하는 도메인 네임이 있는지 찾아보고 있으면 해당IP를 사용하고 없으면 DNS에게 질의를 하게 된다. hosts 파일은 IP와 호스트네임, lmhosts는 IP와 NetBIOS 이름의 매핑 정보를 가지고 있고 networks 파일은 IP 주소 범위와 네트워크 이름의 매핑 정보를 가지고 있다.

일부 악성코드들은 이 파일들에 있는 컴퓨터들을 타겟으로 번식히고 하고 어떤 악성코드들은 이 파일의 내용을 변경하기도 한다. 파일의 내용을 변경하는 이유는 백신사이트나 Microsoft 사이트 등으로의 연결을 막기 위함이다. 즉, 업데이트나 패치를 못하게 하기 위함이다.




10.3 Inspect Prefetch Files

프로그램이 실행될 떄 효율성을 높이기 위해서 윈도우는 "prefetch"라는 것을 만든다. 이것은 단어 그대로 일종의 "미리읽기"를 뜻하는데 프로그램 접근 속도를 향상시킨다. fetch는 CPU에서 사용하는 개념인데 메모리에 있는 명령어(instruction)을 읽어와서 명령을 실행하기 전 CPU 레지스터에 저장하는 과정을 의미한다.

prefetch 파일들은 %systemroot%\Prefetch에 위치해 있고 각각의 파일들은 원래 프로그램의 이름을 가지고 있다. prefetch 디렉토리에 있는 파일의 생성시간과 최근 수정 시간을 기록할 때는 다음과 같이 신뢰할 수 있는 cmd.exe 명령을 통해서 할 수 있다.


E:\>cmd.exe /C dir "%SystemRoot%\prefetch" > E:\Result\prefetch-lastmodified.txt
E:\>cmd.exe /C dir /TC "%SystemRoot%\prefetch" > E:\Result\prefetch-created.txt


prefetch 파일은 프로그램이 실행되었던 최근 시간(byte 120-128)과 프로그램이 실행된 횟수(byte 144-148)를 포함하고 있다. 이 정보들은 수동으로 확인할 수도 있고 Windows File Analyzer와 같은 툴을 사용해서 확인할 수도 있다.

Windows File Analyzer : http://www.mitec.cz/wfa.html




이런 정보를 보는 다른 방법은 MountImage Pro와 같은 툴을 이용해서 포렌식 복사본을 마운트시키고 마운트된 드라이브에서 Windows File Analyzer를 이용해서 prefetch 폴더를 읽어 들이는 것이다.(chapter 4에서 언급함) 위 그림의 가장 오른쪽에 보이는 컬럼이 파일이 실행된 횟수이다. 그러나 이 숫자는 시스템 부팅시 자동으로 실행되도록 하는 위치에서 프로그램이 자동 실행될때는 증가하지 않는다.


10.4 Inspect Auto-starting Locations

시스템이 재부팅될때 자동으로 시작되는 프로그램이 있는 곳이 몇군데 있다. 이렇게 자동으로 실행되는 위치들은 특별한 폴더나 레지스트리키, 시스템 파일 그리고 운영체제의 다른 곳에 존재한다. 자동 실행되는 위치를 확인하는 가장 효과적인 툴은 Sysinternals 패키지에 포함되어 있는 AutoRuns이다.




Ctrl+V를 누르면 해당 파일에 대한 검증을 하는데 Microsoft에서 생성한 파일이라면 Verified라는 문자가 뜰 것이고 기타 어플리케이션이나 악성코드들은 Not Verified라고 뜨게 된다. 즉, Not Verified라고 나온다고 해서 모두 의심할만한 것은 아니기 때문에 분석자가 면밀하게 살펴보아야 한다.

그리고 Nirsoft에서 개발한 StartupRun이라는 프로그램도 AutoRuns와 비슷한 결과를 보여주지만 AutoRuns의 다양한 결과와는 비교가 되지 않는다.

StartupRun : http://www.nirsoft.net/utils/strun.html


10.5 Collect Event Logs

악성코드와 관련된 사고는 이벤트 로그를 발생시킨다. 예를 들어 로그온 실패는 보안감사로그(Security Event log)에 저장되고 안티바이러스 경고 메시지는 어플리케이션감사로그(Application Event Log)에 저장된다. 이런 로그들은 Microsoft 포맷으로 저장되는데 Microsoft 포맷을 지원하지 않는 로그 분석 툴을 이용한 분석을 위해 ASCII 형태로 추출할 수 있다.

eldump 툴은 윈도우 시스템에서 이벤트 로그를 처리할 수 있고 저장된 이벤트 로그를 읽을 수 있다.

eldump : http://www.ibt.ku.dk/jesper/ELDump/default.htm


E:\>eldump -l security > E:\security-events.log
E:\>eldump -l system > E:\system-events.log
E:\>eldump -l application > E:\application-events.log


이벤트 로그를 수집하는데 사용될 수 있는 다른 툴들은 다음과 같은 것들이 있다.

dumpevt : http://www.systemtools.com/download/dumpevt.zip
dumpel : http://support.microsoft.com/kb/927229
psloglist : http://technet.microsoft.com/en-us/sysinternals/bb897544.aspx (Sysinternals 패키지에 포함되어 있다)

NTlast 명령을 이용해서 사용자 로그온, 로그오프 이벤트를 획득할 수 있다. 이 정보는 내부 사용자에 의한 악의적인 행위인 경우에 특히 유용하지만 반대로 외부 공격자에 의한 공격이나 사고라면 별 상관이 없다. 이벤트 로그 조사는 chapter 4에서 Microsoft LogParser Tool을 다루면서 좀 더 자세하게 언급하겠다.

NTlast : http://www.foundstone.com/us/resources/proddesc/ntlast.htm

보안감사로그는 시스템의 사용자나 그룹에 대한 이해가 필요하다.


Review Use Acount and Group Policy Information
분석자들은 허가되지 않은 새로운 계정이나 패스워드 없는 계정이나 관리자 그룹에 추가된 계정이 있는지 확인해야 한다. 그리고 로컬이나 도메인 레벨 관리자 그룹에 속하지 않아야 하는 사용자 계정이 있는지 확인해야 한다. net user 명령은 로컬 시스템의 모든 사용자 계정 목록을 보여준다.




하지만 이 명령어만으로는 비정상적인 사용자 계정을 찾을 수는 없다.

UserDump : http://joeware.net/freetools/tools/userdump/
GPList : http://www.ntsecurity.nu/toolbox/gplist/
GPResult : http://www.microsoft.com/windowsxp/using/setup/expert/gpresults.mspx (윈도우 기본 명령어이다)

MS에서 배포하는 userdump는 User Mode Process Dumper로 위 userdump와는 성격이 약간 다르다.


Examine the File System
파일의 특정 유형을 신속하게 조사하는 것은 악성코드 사고와 연관된 정보를 빠르게 이끌어 낼 수 있고 수집된 휘발성 데이터의 추가적인 context를 제공할 수 있다. 정확히 말하자면 파일의 특정 유형이란 숨김파일, 대체된 파일 스트림, 휴지통에 있는 파일들을 말한다. Foundstone에서 개발한 Forensic Toolkit에 있는 HFind나 SFind와 같은 프로그램은 대체된 데이터 스트림이나 일반 사용자에 의해 숨겨진 파일들의 위치를 알아내는데 사용될 수 있고 HFind를 이용해서 목록화할 수 있다. 대체된 파일 스트림의 위치를 알아내는데 사용되는 다른 툴로는 LADS, lns, steams등이 있다.

HFind, SFind : http://www.foundstone.com/us/resources/proddesc/forensic-toolkit.htm (Foundstone ForensicToolkit)
LADS : http://www.heysoft.de/nt/ep-lads.htm
lns : http://www.ntsecurity.nu/toolbox/lns/
streams : http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx (Sysinternals)

휴지통에 있던 파일들의 목록은 Foundstone사의 rifuti 툴을 이용해서 INFO 파일을 통해 획득할 수 있다.

rifuti : http://www.foundstone.com/us/resources/proddesc/rifiuti.htm

하지만 휴지통 폴더를 직접 확인하는 것도 권할만한 방법이다.
악성코드 사고의 시간대를 알게 되면 macmatch.exe를 이용해서 그 기간 동안에 생성되고 수정되고 접근된 모든 파일의 메타데이터를 획득할 수 있다.


E:\>macmath C:\ -c 2009-03-30:00.00 2009-03-31:00.00


macmatch : http://www.ntsecurity.nu/toolbox/macmatch/

Microsoft LogParser Tool을 이용해서도 이런 정보를 획득할 수 있다.


Dumping and Parsing Registry Contents
원본 형태의 레지스트리 파일을 가져올 수도 있지만 이런 데이터를 ASCII 형태로 변환하는 것은 조사나 검색을 용이하게 할 수 있다.
이렇게 원본 형태의 레지스트리를 ASCII 형태로 변환하는 툴은 다음과 같은 것들이 있다.

reg.exe : 윈도우 기본 명령어
dumpreg : http://www.systemtools.com/cgi-bin/download.pl?DumpReg

그리고 전체 레지스트리 내용을 텍스트 파일로 덤핑하는 독립적으로 실행되는 특별한 공간이 있는데, 예를 들어 USBDeview라는 프로그램으로 레지스트리로부터 USB에 있는 정보들을 추출할 수 있다.

USBDeview : http://www.nirsoft.net/utils/usb_devices_view.html




과거에 어떤 USB가 연결되었었는지도 보여주고 있습니다.


Examine Web Browsing Activities
웹 브라우저 히스토리를 확인해서 어떤 경로를 통해 악성코드가 다운로드되었는지 확인할 수 있다. 이런 히스토리를 뒤져보면 파일명, URL, 컨텐츠 타입, 접근 날짜(시간), 경로 등 다양한 정보들을 확인할 수 있다. 그리고 Internet Explorer에서 쿠키 파일에 대한 정보를 확인은 galleta라는 프로그램을 통해서 확인할 수 있고 FireFox에서는 MozillaCookieView라는 프로그램을 통해서 확인할 수 있다.

galleta : http://www.foundstone.com/us/resources/proddesc/galleta.htm
MozillaCookieView : http://www.nirsoft.net/utils/mzcv.html

만약 이메일 계정이나 패스워드와 같이 웹사이트 로그인에 관련된 계정 정보들은 보호된 공간(Protected Storage)에 저장되는데 특정 프로그램을 통해서 이런 정보들을 획득할 수 있다.

Protected Storage PassView(IE) : http://www.nirsoft.net/utils/pspv.html
DumpAutocomplete(FF) : http://www.foundstone.com/us/resources/proddesc/DumpAutoComplete.htm

FireFox에서 자동 입력 및 보호된 공간의 컨텐츠는 DumpAutocomplete라는 프로그램을 사용해서 정보를 획득할 수 있다.


그외 웹 히스토리를 확인하는 프로그램은 다음과 같은 것들이 있다.

Pasco : http://www.foundstone.com/us/resources/proddesc/pasco.htm
IECacheviewer : http://www.nirsoft.net/utils/ie_cache_viewer.html
IEHistoryview : http://www.nirsoft.net/utils/iehv.html
MyLastSearch : http://www.nirsoft.net/utils/my_last_search.html
MozillaHistoryView : http://www.nirsoft.net/utils/mozilla_history_view.html
MozillaCacheView : http://www.nirsoft.net/utils/mozilla_cache_viewer.html
FavoritesView : http://www.nirsoft.net/utils/faview.html
WebHistorian : http://www.mandiant.com/software/webhistorian.htm





정말 오랜만에 Malware Forensics를 업데이트 하는 것 같습니다.
이제 Chapter 1의 마지막 Tool Suite만 남았네요..
아마도 Chapter 1에서는 Tool Suite가 가장 중요하지 않을까 생각됩니다.
앞서 보셨던 프로그램들을 패키지화해서 분석에 사용하기 용이하게 만들어야 하는거니까요..

Chapter 1의 마지막을 잘 장식할 수 있도록 노력하겠습니다. ^^









Posted by demantos