c0msherl0ck.github.io

https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html

https://m.blog.naver.com/PostView.nhn?blogId=s2kiess&logNo=220796244110&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F "UserAssist를 통한 파일실행 흔적 분석"

http://solatech.tistory.com/167 "윈7에서의 레지스트리 정보 분석"

http://forensic-proof.com/archives/607 "LNK (Windows Shortcut) 파일 포렌식 분석"

http://portable-forensics.blogspot.com/2014/11/prefetch-and-superfetch.html "프리패치와 슈퍼패치(Prefetch and Superfetch)"

https://m.blog.naver.com/PostView.nhn?blogId=nobless_05&logNo=50192638786&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F "[윈도우 포렌식] 파일 실행 흔적 - AppCompatCache Registry"

http://forensic-proof.com/archives/3397 "응용프로그램 호환성 아티팩트 (Application Compatibility Artifacts)"

http://forensic-proof.com/archives/5819 "응용프로그램 호환성 아티팩트 II (Application Compatibility Artifacts II)"

https://blog.1234n6.com/2018/10/available-artifacts-evidence-of.html?m=1&fbclid=IwAR3d-84boV0blmoIcjtWTWfBJZRIOWl-dp5TVtUedZkqXONFuWmDHOqppx8 "Available Artifacts - Evidence of Execution"


#10. What applications were installed by the suspect after installing OS?

#11. List application execution logs.

(Executable path, execution time, execution count...)


1. 레지스트리 분석(UserAssist, RunMRU, Uninstall)

2. 링크파일 분석(LinkParser)

3. 프리패치 분석(WinPrefetchView)

4. 호환성 아티팩트 분석(ShimcacheParser)


1. 레지스트리 분석


프로그램 설치 흔적

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

실행파일 실행 기록

HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count

바로가기 실행 기록

HKU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\Count

가장 최근에 실행되었던 프로그램

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU


가. Uninstall 키 확인


나. UserAssist 키 확인


다. RunMRU 키 확인


2. 링크파일(.lnk) 분석


링크파일이란?

LNK 파일이라고 하면 특정 응용프로그램을 설치했을 때 바탕화면에 자동으로 생성되거나, 사용자가 편의를 위해 바로가기를 생성했을 때 생기는 파일을 떠올릴 수 있다. 하지만, 바탕화면(Desktop) 외에도 "최근 문서 폴더(Recent)", "시작프로그램(Start)", "빠른실행(QuickLaunch)" 등 다양한 곳에서 수동 혹은 자동으로 생성되어 저장된다.


최근문서(Recent) 폴더

Windows XP : C:\Documents and Settings\<user name>\Recent

Windows 7 : C:\Users<user name>\AppData\Roaming\Microsoft\Windows\Recent

바탕화면(Desktop) 폴더

Windows XP : C:\Documents and Settings\<user name>\Desktop

Windows 7 : C:\Users\<user name>\Desktop

시작프로그램(Start) 폴더

Windows XP : C:\Documents and Settings\<user name>\Start Menu\Programs

Windows 7 : C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

빠른실행(QuickLaunch) 폴더

Windows XP : C:\Documents and Settings\<user name>\Application Data\Microsoft\Internet Explorer\Quick Launch

Windows 7 : C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch


가. Winhex 에서 Explore recursively 기능을 통해 partition 2 에 있는 모든 파일을 탐색한다.


나. 확장자로 정렬하여, .lnk 파일을 모두 추출한다.


다. LinkParser 툴을 이용하여, 추출한 링크 파일들이 있는 폴더를 불러온다.


라. LinkCreationDate 로 정렬하여 프로그램 실행흔적을 분석한다.

(링크가 생성된 시점이 파일이 실행된 시점이기 때문이다.)


3. 프리패치(.pf) 분석


프리패치 파일이란?

윈도우는 프리패치 파일에 실행 파일이 사용하는 시스템 자원을 미리 저장하였다가 윈도우 부팅 시 프리패치 파일(.pf)을 모두 메모리에 로드한 후 실제 사용할 때에는 메모리 매핑만을 수행하여 사용할 수 있도록 하여 실행 속도를 다소 향상시켰다.


프리패치 파일을 분석하면 다음을 알 수 있다.

-실행 파일 이름

-실행 파일의 실행 횟수

-실행 파일의 마지막 실행 시간

-프리패치 파일의 생성 시간(최초 실행 시간)

-실행된 볼륨의 정보

-실행파일 실행 시 참조하는 파일의 목록


가. Winhex 에서 분석 PC 의 Prefetch 폴더를 [우클릭]-recover/copy 한다.


나. WinPrefetchView 프로그램에서 해당 폴더를 다음과 같이 불러온다.



다. Last Run Time 을 기준으로 정렬한다.

1) Last Run Time 은 분석을 진행하는 PC의 Time zone 이 적용된 값을 보여준다.(Korea Standard Time UTC+9)

   분석 PC 의 Time zone 은 Eastern Standard Time (UTC-5) 에 daylight time bias -60 minutes (+1 hour) 적용한 UTC-4 이다.

   그러므로, 현재 보여지는 Last Run Time에서 -13 hour 를 해준값이, 분석 PC 의 time zone 에 해당하는 값이 된다.

2) Created Time, modified time 등은 분석이미지에서 host PC 로 recover/copy 할때의 시간값이므로, 분석에 의미없는 값이다.



라. 다음과 같이 HTML Report 로 따로 뽑아낼 수도 있다.


report.html


4. 호환성 아티팩트(Shimcache, AppCompatCache) 분석


ShimCache(=AppCompatCache) 호환성 아티팩트란?

- 마이크로소프트 사에서 응용 프로그램 간 호환성을 제어하고, 트러블 슈팅과 문제 해결을 위해 만든 파일이다.

- OS에 따라 다르지만, 파일 경로/ 크기/ 마지막 수정시간/ 마지막 실행 시간등의 정보를 가지고 있다.


"응용프로그램의 실행 정보는 보통 프리패치(prefetch) 정보를 확인하면 알 수 있지만 프리패치의 개수는 한정되어 있기 때문에 오래된 흔적을 찾기는 어렵다. 또한, 최근 악성코드는 프리패치와 같이 알려진 흔적을 모두 삭제하는 경향이 있다. 이런 상황에서 호환성 캐시 정보는 분석에 매우 중요하게 사용될 수 있다. 특히, 시간 정보가 포함되기 때문에 더할 나위없이 유용하다. 뛰어난 공격자라면 각 운영체제 버전에 맞게 호환성 문제가 없는 프로그램을 사용하겠지만, APT 공격과 같이 오랫동안 여러 시스템을 감염시켜야 하는 경우 시스템 버전이 다양하기 때문에 호환성 캐시에 흔적이 저장될 가능성이 매우 크다."

[출처] http://forensic-proof.com/archives/3397 "응용프로그램 호환성 아티팩트 (Application Compatibility Artifacts)"


HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\*

HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\*

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache

%SystemRoot%\Windows\AppCompat\Programs\*


가. Eric Zimmerman's tools 의 AppCompatCacheParser (a.k.a shimcacheparser)사용한다.


나. 프로그램 설명


다. 다음의 명령어를 통해 분석 대상 PC의 SYSTEM 레지스트리에서 shimcache 관련 정보를 추출한다.

AppCompatCacheParser.exe --csv [결과파일 경로] -t --f [SYSTEM 레지스트리 하이브 파일 경로]



라. 생성된 결과파일을 확인하면 다음과 같다.

Windows7x64_Windows2008R2_SYSTEM_AppCompatCache.csv

https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html


#9. Explain the information of network interface(s) with an IP address assigned by DHCP.


#3 참고.


\HKLM\System\ControlSet001\services\Tcpip\Parameters\Interfaces\[하위키]


DhcpIPAddress : 10.11.11.129



https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html

http://www.antionline.com/showthread.php?275382-Time-and-date-of-last-shutdown


#8. When was the last recorded shutdown date/time?


#3 참고.


HKLM\System\ControlSet\Control\Windows

shutdown time : 57-A9-48-B5-10-67-D0-01 (2015-03-25 15:31:05)


[우클릭] - [Data interpreter]


https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html


#7. Who was the last user to logon into PC?


#3 참고.

다음의 레지스트리 경로에 마지막으로 로그온한 유저 정보가 있다.

HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI


LastLoggedOnUser : informant


https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html


#6. List all accounts in OS except the system accounts: Administrator, Guest, systemprofile, LocalService, NetworkService. (Account name, login count, last logon date…)


#3 참고.

다음의 두 레지스트리에서 사용자 계정 정보를 확인할 수 있다.

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList


1. HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users 확인


all accounts : informat, temporary, ITech Team, admin11, Guest, Administrator

위의 계정들에 해당하는 login count, last logon date, created on time, total login count, invalid login count 등이 있다.



2. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 확인


system, local, network 서비스들을 수행하기 위해서 필요한 계정과 사용자 계정의 SID 값을 확인할 수 있다.

S-1-5-18 : %systemroot%\System32\config\systemprofile

S-1-5-19 : %systemroot%\ServiceProfiles\LocalService

S-1-5-20 : %systemroot%\ServiceProfiles\NetworkService

S-1-5-{21-xxx}-1002 : C:\Users\informant

S-1-5-{21-xxx}-1001 : C:\Users\admin11

S-1-5-{21-xxx}-1003 : C:\Users\temporary


해당 계정의 폴더를 확인하면 다음과 같다.

사용자 생성 계정 : admin11, informant, temporary

기본 생성 계정

- All Users : 윈도우 XP 이후 사용하지 않지만, 호환성을 위해 남아있다.

- Default : 새로운 계정을 만들때, default 를 복사해서 만든다.

* default 계정에 악성코드를 심어두면, 계정을 만들때마다 감염된다.

- Default User : 윈도우 XP 이후 사용하지 않지만, 호화성을 위해 남아있다.

- Public : 모든 사용자가 공통으로 접근할 수 있다.



[참고] SID 란?


[출처] 알기사 2018 정보보안기사&산업기사 윈도우 서버 보안 편

SID(Security Identifier)란 윈도우에서 계정을 하나의 코드 값으로 표시한 것이다.

S-1-5-{Sub-authority value}-{relative ID(RID)}

1) S : SID 를 의미한다.

2) 1 : revision number(SID 명세버전)

3) 5 : Identifier authority value(48bit, 윈도우 보안 권한)

4) Sub-authority value

- 도메인 또는 로컬 컴퓨터 구분자이다.

- 시스템의 고유한 숫자로, 시스템을 설치할 때 시스템의 특성을 수집하여 생성된다.

5) relative ID(RID)

- 기본적으로 생성되는 builtin 계정이 아니라면, 1000보다 큰 숫자의 RID 가 생성된다.

- 관리자(Administrator)는 500번, Guest 계정은 501번, 일반 사용자는 1000번 이상의 숫자를 갖는다.


SID 

 설명

 S-1-0-0

 SID 를 모를 때 사용하는 SID

 S-1-0-1

 Everyone

 S-1-5-7

 Anonymous

 S-1-5-18

 System Profiles(시스템의 서비스용 계정이다)

 S-1-5-19

 Local Service

 S-1-5-20

 Network Service

 S-1-5-domain-500

 Administrator

 S-1-5-domain-501

 Guest


https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html


#5. What is the computer name?


#3 참고.

컴퓨터 이름에 대한 정보는 다음 레지스트리 경로에 있다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

ComputerName : INFORMANT-PC

https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html

https://blogs.msdn.microsoft.com/bclteam/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free/


#4. What is the timezone setting?


윈도우에서 timezone information 은 다음의 레지스트리에 존재한다.

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation


1. CurrentControlSet 파악하기

CurrentControlSet은 현재 로그인한 유저의 세팅값(Hardware profile 등)을 저장하고 있으며, 오프라인 상태에서는 ControlSetXXX을 통해 분석한다. ControlSetNumber는 아래와 같이 HKLM\SYSTEM\Select의 Current Value에 저장되어 있다. 해당 값이 1이라면 ControlSet001을, 2라면 ControlSet002를 분석한다.

2. 시간값 해석하기

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 레지스트리 값을 해석하면 다음과 같다.


Bias : 300 minutes

DaylightBias : -60 minutes

ActiveTimeBias = Bias + DaylightBias = 240 minutes


즉, UTC -4 가 timezone setting 값이다.

[주의] UTC 로 해석할때는 - 를 붙인다.


https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html #3. Explain installed OS information in detail. (OS name, install date, registered owner…)


윈도우 OS 정보는 다음 레지스트리 경로에 있다.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion Tools 1) 이미지 내 레지스트리 획득 : Arsenal Image mounter, WinHex 2) 레지스트리 분석 : registry explorer 1. Arsenal Image Mounter 로 이미지 파일 마운팅하기


가. 왼쪽 하단의 mount image 를 클릭하고, 이미지 파일을 선택한다.

나. 다음과 같이 이미지 파일이 마운트 되어 있는 것을 확인할 수 있다.

이미지 마운팅을 하지 않고, Winhex 에서 이미지를 바로 연후, [Specialist]-[Interpret Image File As Disk]를 하여도 된다. 2. Winhex 에서 레지스트리 파일 추출하기


가. [Tools] - [Open disk]

나. Arsenal Virtual 클릭

다. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion 레지스트리 파일을 추출하여야 한다. [참고] "(FP) 레지스트리 포렌식과 보안 (Registry Forensics)"의 레지스트리 획득 부분 https://github.com/proneer/Slides/tree/master/Windows

레지스트리 파일은 hive 파일 형태로 저장되어 있으며, 윈도우 7의 레지스트리 파일 경로는 다음과 같다. 1) 운영체제 하이브 파일 위치 : %SystemRoot%\System32\Config 2) %UserProfile% 목록 확인 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 3) HKLM 레지스트리 경로별 하이브 파일 위치

HEKY_LOCAL_MACHINE\COMPONENTS : %SystemRoot%\System32\Config\COMPONENTS HEKY_LOCAL_MACHINE\SYSTEM : %SystemRoot%\System32\Config\SYSTEM HEKY_LOCAL_MACHINE\SAM : %SystemRoot%\System32\Config\SAM HEKY_LOCAL_MACHINE\SECURITY : %SystemRoot%\System32\Config\SECURITY HEKY_LOCAL_MACHINE\SOFTWARE : %SystemRoot%\System32\Config\SOFTWARE

4) USER 관련 레지스트리 경로별 하이브 파일 위치

HKEY_USERS\<SID of local service account> %SystemRoot%\ServiceProfiles\LocalService\NTUSER.DAT HKEY_USERS\<SID of network service account> %SystemRoot%\ServiceProfiles\NetworkService\NTUSER.DAT HKEY_USERS\<SID of username> %UserProfile%\NTUSER.DAT HKEY_USERS\<SID of username>_Classes %UserProfile%\AppData\Local\Microsoft\Windows\Usrclass.dat HKEY_USERS\.DEFAULT %SystemRoot%\System32\Config\DEFAULT


라. WinHex 에서 partition#2의 \Windows\System32\config 에서 components, system, sam, security, software 5개의 파일을 추출한다. [우클릭] - [Recover/Copy]

3. Registry Explorer 를 통한 분석


가. [File] - [Load offline hive] 나. Winhex 에서 추출한 5개의 파일을 로드한다. 다. 5개의 파일이 다 로드되면 다음과 같다. 라. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion 경로의 registry 를 보면 다음과 같다. ProductName : Windows 7 Ultimate InstallDate : 1427034866(unix time) = Sunday, March 22nd 2015, 14:34:26 (GMT+0) RegisteredOwner : informant

https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html


#2. Identify the partition information of PC image.


파티션 정보는 MBR 에 저장되어 있다.(MBR 에 저장이 안되어있다면, 이것은 GPT 방식으로 GUID Partition Tables 를 보아야 한다.)

MBR 에서 파티션 정보 찾는 방법은 이전 포스팅 "MBR, partition table info 파티션 테이블 정보 찾기"를 참고한다.

http://holywaterkim.tistory.com/3?category=810422


** bytes per sector = 512 (properties 에서 확인가능)


partition#1

Boot flag : 80 / File system type : 07 / LBA : 00 00 08 00 / SIZE : 00 03 20 00

부트 파티션 / NTFS / 시작위치 : 0x8000 sector(=0x1000000 bytes) / 크기 : 0x32000 sector(=0x6400000 bytes = 104857600 bytes = 100MB)


partition#2

Boot flag : 00 / File system type : 07 / LBA : 00 03 28 00 / SIZE : 02 7C D0 00

부트 파티션 아님 / NTFS / 시작위치 : 0x32800 sector(=0x6500000 bytes) / 크기 : 0x27CD000 sector (=0x4F9A00000 bytes = 21367881728 bytes = 20378MB)

https://www.cfreds.nist.gov/data_leakage_case/data-leakage-case.html #1. What are the hash values (MD5 & SHA-1) of all images?

Does the acquisition and verification hash value match?


.dd : raw image, 실제와 똑같은 비트 단위로 복사 .e01 : encase image, Encase 프로그램으로 압축파일 형식으로 이미징. Stored(Verification) Hash is the acquisition hash (hash of the data in the .dd .ad1 .e01 etc image file) 이미지 내에 stored(verification) hash value 존재(이미지 파일을 만들 때, 소스에 대한 해시값을 계산하여 이미지 파일 내에 저장) Computed Hash is the hash of the original data in the source medium (hard disk etc). source(이미지 파일, 물리적 디스크 등)에 대한 hash value 를 계산하는 것 이미지 파일에 대해 분석을 할 경우 이미지 파일이 위변조 되지 않아야 한다. 이를 검증하기 위한 방법으로 stored hash value 와 computed hash value 의 일치여부를 비교하는 것이다.

Personal Computer (PC) – 'EnCase' Image pc.E01, pc.E02, pc.E03, pc.E04 을 다운로드 받고, 다음의 과정을 진행한다. Tool : FTK imager 4.2.0


1.[File] - [Add Evidence Item]

2. Image file 선택

3. E01 만 로드하면 된다.(E01, E02, E03, E04 는 분할 압축 파일 개념과 유사하다.)


4. [File] - [Verify drive/image] 를 통해 이미지 해시를 검증할 수 있다.

** [View] - [Properties] 를 통해, 이미지의 stored verification hashes를 비롯한 여러 속성을 확인할 수 있다. 언제) acquire date : 2015-04-23 어디서) acquired on OS : Windows 7 누가) examiner : dForensic_Team