Windows 사용자 추적 방법 – RegRipper, Userassist Keys, MUICache, MRUList, Typedurls, Exchange

Windows 사용자 추적 방법

현재 우리가 분석하고 있는 사고는 시스템 장애가 아닌 누군가 침입하여 조작하였다는 것을 가정으로 진행하고 있다. 따라서 누군가 침입하였다면, 분명 시스템을 사용한 흔적들이 레지스트리, 혹은 파일, 유저 데이터 영역에 남아 있게 된다. 이를 타임라인으로 통합을 통해 나누어 분석하게 되면, 사용자가 어떠한 작업을 진행하였는지 을 알 수 있다.

이와 같은 사용자 추적이 필요한 이유는 침입 경로와 실행 개체를 확인해 공격된 경로를 알아냄으로써, 사고 머신에 발견하지 못한 흔적을 찾고, 침입할 수 있었던 취약점을 함께 확인 할 수 있다. 그럼 사용자의 흔적을 추적하는데 용의한 데이터를 확인하는 방법에 대해 알아보자.

사용자와 흔적에 관련된 파일은 Ntuser.dat 파일에 저장되어 있다. 이 파일은 앞서 레지스트리 분석에서 진행하였던 RegRipper를 이용하여 분석할 수 있으므로 손쉽게 분석된 정보를 얻을 수 있다. RegRipper GUI 도구를 이용하면 Ntuser.dat 관련 데이터만 분석하여 확인할 수 있으니 분석에 어려움은 없을 거라 판단된다. 그럼 각 항목별 이용법에 대해 설명하고, 개별 사용방법에 대해 알아보도록 하자.

[그림] MUICache를 이용하면 손쉡게 Ntuser.dat를 분석할 수 있다

Userassist 키는 유저가 실행한 프로그램에 대해 카운트하여 기록한다. 레지스트리에 기록되는 위치는 아래와 같다. 시작 메뉴 내에 존재하는 메뉴로 실행한 프로그램들에 대해 기록한다.

레지스트리 키는 다음과 같다.

Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count

해당 레지스트리를 이루는 값들에 대해 알아보자.

UEME_RUNPIDL: 바로가기 아이콘 혹은 LNK(링크) 파일을 시작 메뉴 혹은 시작 메뉴내 문서에서 실행하였을 때 나타난다.

UEME_RUNPATH    : 실행 프로그램을 탐색기, 시작메뉴 혹은 시작 à 실행에서 실행하였을 때 나타난다. 제일 유용한 정보이지 싶다.

UEME_RUNCPL: 제어 프로그램(제어판 확장자인 CPL로 제작된 프로그램)을 실행하였을 때 나타난다.

실제 값을 확인해 보면 마지막 괄호에 숫자가 표시되는데, 괄호안 숫자의 의미는 실행 횟수를 의미한다. 그리고 각 등록 프로그램별 마지막 실행일자만 표시된다.

C:\Forensic\Reg\RegRipper>rip -r c:\Forensic\case\NTUSER.DAT -p userassist

Launching UserAssist (Active Desktop) v.20080726

UserAssist (Active Desktop)

Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D

0-9888-006097DEACF9}\Count

LastWrite Time Mon Sep 26 08:29:01 2011 (UTC)

Mon Sep 26 08:29:01 2011 (UTC) ß 실행 일자

UEME_RUNPATH (234) ß RUNPATH이므로 탐색기 혹은 실행 메뉴를 통해 실행한 것으로 판단 가능하다.

UEME_RUNPATH:C:\WINDOWS\system32\cmd.exe (17) ß 실행한 프로그램과 실행 횟수를 알 수 있다.

Mon Sep 26 08:28:54 2011 (UTC)

UEME_UISCUT (48)

Mon Sep 26 08:28:33 2011 (UTC)

UEME_RUNPATH:C:\WINDOWS\system32\mmc.exe (11)

Mon Sep 26 08:26:00 2011 (UTC)

UEME_RUNPATH:C:\Program Files\Internet Explorer\iexplore.exe (29)

UEME_RUNPIDL (63)

UEME_RUNPIDL:::{2559A1F4-21D7-11D4-BDAF-00C04F60B9F0} (29)

Mon Sep 26 08:25:06 2011 (UTC)

UEME_RUNPIDL:%csidl2%\Twinternals\Protected Storage Explorer.lnk (2)

UEME_RUNPATH:C:\Program Files\Twinternals\Protected Storage Explorer\PSE

xplorer.exe (2)

UEME_RUNPATH:{E5CCBFD9-EE52-43DE-8336-8E5869A63A2D} (2)

Mon Sep 26 08:02:34 2011 (UTC)

UEME_RUNPATH:C:\Documents and Settings\Administrator\My Documents\prodis

cover_basic_6.5_setup.exe (3)

Mon Sep 26 05:44:24 2011 (UTC)

UEME_RUNPATH:C:\Forensic\Tool\fcli\fcli.exe (1)

…중략

[내용] 프로그램 실행 흔적을 확인할 수 있다

MUICache

MUI (Multilingual User Interface), 다중 언어 지원 프로그램에 대해 레지스트리에 캐쉬해 놓은 내용을 할 수 있다. 단점이라면, 마지막 실행 파일의 실행 시간만 알 수 있다는 점이 아쉽다.

레지스트리 경로는 아래 위치에서 확인이 가능하다. 실행 파일중 의심 파일이 존재하는지 확인하는 용도로 사용하자.

Software\Microsoft\Windows\ShellNoRoam\MUICache

C:\Forensic\Reg\RegRipper>rip -r c:\Forensic\case\NTUSER.DAT -p muicache

Launching muicache v.20080324

MUICache

Software\Microsoft\Windows\ShellNoRoam\MUICache

LastWrite Time Mon Sep 26 08:27:10 2011 (UTC)

C:\WINDOWS\system32\taskmgr.exe (Windows TaskManager)

C:\Forensic\Reg\USBDumper.exe (USBDumper)

C:\Forensic\Reg\regdump.exe (regdump)

C:\WINDOWS\system32\logon.scr (Logon Screen Saver)

C:\Program Files\Cain\Cain.exe (Cain – Password Recovery Utility)

C:\Program Files\Internet Explorer\iexplore.exe (Internet Explorer)

C:\WINDOWS\system32\NOTEPAD.EXE (Notepad)

C:\Program Files\Windows NT\Accessories\WORDPAD.EXE (WordPad)

C:\WINDOWS\system32\cmd.exe (Windows Command Processor)

C:\Forensic\Tool\fcli\fcli.exe ( )

…중략

[내용] 마지막 실행 시간만 알수 있다

MRUList

사용하였던 문서와 같은 연결될 확장자 파일들과 시작메뉴의 실행에서 입력한 명령문에 대해서 확인 할 수 있다.

MRUList 키값은 실행에 입력한 Runmru와 연결된 확장자인 RecentDoc로 구분하여 확인할 수 있다. 통해 실행한 순서를 확인할 수 있는데 기존 입력값을 재사용한 경우가 있으므로 주의하기 바란다. 기준은 최근값이 앞에 나오며, 마지막 입력 실행 시간만 알 수 있다. RecentDocs의 경우 전체 리스트를 확인 후 각 파일별 실행 시간에 대해 확인할 수 있다.

레지스트리 경로는 다음과 같다.

연결된 확장자 실행 정보

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs

시작메뉴의 실행 입력 정보

Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

C:\Forensic\Reg\RegRipper>rip -r c:\Forensic\case\NTUSER.DAT -p recentdocs

Launching recentdocs v.20100405

RecentDocs

**All values printed in MRUList\MRUListEx order.

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs

LastWrite Time Thu Dec 29 08:31:49 2011 (UTC)

63 = 10.0.2.17??mysql

45 = unlockday.sql

44 = openfile.txt

62 = Forensic

49 = test.txt

61 = ads

60 = adstest.txt

51 = 쒖뺄 ?붿뒪??(C:)

50 = JUHAN-1.txt

34 = ??쇰ⅷ (E:)

36 = ‘Vboxsvr’??듭쑀 (Z:)

59 = SynDOS1.1(www.programas-hack.com).rar

58 = SynDOS1.1(www.programas-hack.com)

57 = style.ini

10 = _cfg.txt

11 = _cfg-1.txt

41 = 222235654_cfg.txt

…중략

1 = bginfo

0 = BGILAB08.BGI

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.BGI

LastWrite Time Mon Jun 20 23:57:24 2011 (UTC) ß BGILAB08.BGI의 마지막 실행 시간

MRUListEx = 0

0 = BGILAB08.BGI

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.bkf

LastWrite Time Tue Oct 11 08:40:25 2011 (UTC)

…중략

// 이제 실행 메뉴에 입력한정보를 확인해 보자.

C:\Forensic\Reg\RegRipper>rip -r c:\Forensic\case\NTUSER.DAT -p runmru

Launching runmru v.20080324

RunMru

Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

LastWrite Time Mon Sep 26 07:20:20 2011 (UTC)

// 실행 순서는 최근 사용한 값인 b부터 순서대로 정리 된다.

MRUList = bjiefhgdca

a \\vboxsvr\1

b regedit\1

c eventvwr\1

d gpedit.msc\1

e cmd\1

f mstsc\1

g \\10.0.2.16\1

h services.msc\1

i shutdown -a\1

j msconfig\1

[내용] 사용자의 입력과 확인한 문서 정보들에 대해 추적이 가능하다

Typedurls

인터넷 익스플로러에 직접 입력한 주소값에 대해 저장한다.

캐시된 열어본 페이지(또는 주소 상자)의 값을 보여주는 것으로 인터넷 옵션을 이용하여 삭제한 경우 값을 확인할 수 없다.

이 역시 마지막 입력값의 시간만을 알 수 있다.

C:\Forensic\Reg\RegRipper>rip -r c:\Forensic\case\NTUSER.DAT -p typedurls

Launching typedurls v.20080324

TypedURLs

Software\Microsoft\Internet Explorer\TypedURLs

LastWrite Time Mon Sep 26 08:27:11 2011 (UTC)

url1 -> http://majorgeeks.com/Disk_Image_Viewer_d3534.html

url2 -> http://www.kat.ph/search/pro%20discover%20forensic/

url3 -> http://www.securiteam.com/tools/5JP0I2KFPA.html

url4 -> http://torcache.net/torrent/6967E74A027BA660324E34FC39BC0AA9E3F16EDE.t

orrent

url5 -> http://fr.kat.ph/16-fbi-tools-analyse-hacker-t1959289.html

url6 -> http://www.openwall.com/passwords/microsoft-windows-nt-2000-xp-2003-vi

sta-7

url7 -> http://google.co.kr/

url8 -> http://jobkorea.co.kr/

url9 -> http://www.naver.com/

url10 -> http://msn.com/

url11 -> https://www.facebook.com/

url12 -> http://www.windyzone.com/

url13 -> http://naver.com/

…중략

[내용] 사용자가 접근한 웹사이트를 확인할 수 있다

앞서 확인한 Regripper는 별도의 파일로 Ntuser.dat 내보내기를 진행한 이후에 확인할 수 있는 도구이다. 만약 바로 확인을 진행하고자 한다면, Ntuser.dat를 파일로 내보내야 하는 시간이 필요하므로 작업이 번거로울 수 있다. 여기서는 특정 기능에 특화된 도구에 대해 알아보자.

UserAssist

http://blog.didierstevens.com/programs/userassist/ 에서 제작한 본 도구는 Userassist에 특화 하여 확인할 수 있다.

현재 로그인 유저의 데이터를 바로 확인할 수 있으며, 그 외 레지스트리 파일이나, DAT 파일을 연결하여 확인도 가능하다(현재 사용자에 대한 확인은, 비스타 이후 버전에서는 동작하지 않는다).

사용에 대한 어려움은 없으니 사용해 보도록 하자.

[그림] 현재 사용자의 Userassist 키값을 바로 확인할 수 있다

Index

현재 시스템에서 사용중인 Index.dat를 검색하여 인터넷 익스플로러를 통해 방문한 사이트들에 대해 효과적으로 확인할 수 있다.

본 도구는 아래 링크에서 다운로드 가능하다.

http://www.systenance.com/indexdat.php

사용법은 어렵지 않으니 굳이 설명하지 않겠다.

↓Index.dat 파일을 검색한다.

[그림] 검색이 완료되면 Index.dat를 선택해 분석이 가능하다

-박스종료-

메일 추적

익스체인지(Exchange) 서버 2007 이상 버전에서는 관리 도구에서 사용자가 전송한 메일 추적이 가능하다. 메일 추적이 중요한 이유는 특정 사용자의 장애상황이거나, 특정 사용자가 어떤 메일을 전송하였는지 감사할 때 유용하다. 만약 보안 사고가 발생하였고, 특정 유저의 계정이 해킹되어 사용되었다면, 메일을 통해 외부로 전송한 정보들이 존재하지 않은지 확인할 필요가 있겠다. 익스체인지에서는 메일 추적을 위해 GUI 도구도 제공하지만 입력 부분이 많고, 익숙하지 않아 시간이 걸리므로, 가독성이 좋은 CLI 도구인 Powershell을 사용하여 파일로 저장시키는 방법이 유용하다.

다음 명령을 통해 SEND라는 이벤트에 대한 특정 날짜 범위의 값을 파일로 추출 할 수 있다.

get-messagetrackinglog -EventID “SEND” -Start “7/1/2008 12:00:00 AM” -End “7/31/2008 11:59:00 PM” -ResultSize Unlimited | export-csv c:\logs\<monthname>s.csv

[내용] 지정 날짜 이내에 전송된 메일을 추적할 수 있다

위 명령을 실행하면 파일로 결과를 저장한다.

[그림] 보낸 메일만 확인할 수 있다

만약 현재 추적 기록된 모든 내용을 보고 싶다면, 아래와 같이 간단하게 지정할 수 있다.

get-messagetrackinglog | export-csv c:\logs\all.csv

[내용] 메세지 추적에 저장된 모든 내용을 볼 수 있다.

위 명령을 실행하면, 현재까지 저장된 모든 추적 내용을 확인 할수 있다.

단 서버가 역활 별로 구분되어 있다면 해당 서버를 지정해주어야 한다.

Exchange에서 사용하는 모든 허브전송서버 및 사서함 서버에서 특정 사용자의 메세지를 추적할 때는 아래와 같이 명령을 생성할 수 있다.

Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -MessageId test@itka.kr | Select-Object Timestamp,ServerHostname,ClientHostname,Source,EventId,Recipients | Sort-Object -Property Timestamp | export-cvs test0001.csv

[내용] 특정 사용자의 메세지 추적

익스체인지 서버에서 메세지 추적 사용 및 활성화 방법은 다음 문서를 참고하기 바란다.

http://technet.microsoft.com/ko-kr/library/aa998971(v=exchg.65).aspx

Facebook Comments

Leave A Reply

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