본문 바로가기

DF

Windows 10 Timeline Forensics

Windows 10 Timeline 소개


 

Windows 10 Timeline은 Windows 10 Redstone 4 (1803)에서 생겨난 새로운 기능으로 실행 중인 현재 응용 프로그램과 과거의 활동을 보여주기 위한 Task View를 향상시켜준다.

(그림 1)에서처럼 최대 30일 동안의 사용자 활동에 관한 스냅샷을 보여주며 각각의 스냅샷을 타일 (Tiles)이라고 칭한다.

 

그림 1

 

  이와 같은 사용자 활동에 대한 정보는 해당 PC 내 데이터베이스 파일로 저장되기 때문에 디지털 포렌식 관점에 있어 의심스러운 PC 사용자의 행동을 보다 명확히 식별할 수 있어 유용하다. 

구체적으로는 Edge 브라우저, Photo, News, Sports, Weather, Maps, Xbox, 기본 Office sutie, 파일 열기, 복사/붙여넣기, 윈도우 클립보드 기능과 관련된 특정 활동 유형을 기록할 뿐 아니라 시스템에서 현재 실행 중인 프로세스도 기록한다.

 

  향후 Windows 10 기능 업데이트로 인해 추가적인 응용 프로그램 관련 활동도 기록될 것으로 예상되기 때문에 Windows 10 Timeline의 지속적인 분석은 디지털 포렌식에 있어 필요할 것으로 보인다.

 

  특히, 20201월 이후 마이크로소프트 윈도우 7 버전 업데이트 지원이 종료됨으로써 보안 취약점 발견 시 즉각 대응이 어렵다는 문제로 Windows 10 버전 사용이 권고되고 있는 상황이다. 이러한 상황에서 다양한 정부 및 기관 뿐만 아니라 개인의 Windows 10 운영체제 사용률이 비교적 늘어날 것으로 예상된다.

 

  이는 디지털 포렌식 관점에서 매우 중요하게 여겨질 수 있으며, 특히 Windows 10의 새로운 기능에 따른 아티팩트 분석은 필수적이다. Windows 10 TimelineWindows 10의 업데이트로 인해 추가된 핵심 기능으로 PC로부터 의심스러운 사용자의 행동을 보다 명확하게 식별할 수 있으므로 저작권 관련 범죄, 아동 영상 실행 여부 등 디지털 포렌식 조사 시 핵심적인 증거로써 활용될 수 있다.

 

  또한, 현재 디지털 포렌식 전문가, IT 전문가 등 외의 일반적인 PC 사용자의 경우 Windows 10 Timeline 기능 등장에 대한 인식률은 매우 낮다. 따라서, 일반 PC 사용자가 Windows 10 Timeline 기능 설정을 통하여 기본적으로 활성화되어 있는 Windows 10 Timeline 기능을 비활성화할 가능성은 매우 낮다. 많은 경우 Windows 10 1803 버전 이후 운영체제 사용자 PC 내에는 해당 아티팩트에 사용자 활동에 대한 기록이 유지되어 있을 것이다.

 

 

 

Windows 10 Timeline 기능


  Windows 10 TimelineMicrosoft WindowsConnected Devices Platform 서비스의 일부 기능으로 20184월 버전 1803이 등장하였다. , 동일한 마이크로소프트 계정으로 로그인한 여러 시스템에서 동기화가 가능하며 Android의 경우 Microsoft Launcher , iOS의 경우 Edge 브라우저 앱을 다운로드하여 사용함으로써 PC뿐만 아니라 모바일 기기를 통해 사용 가능하며 모바일 기기를 통한 사용자 행위 또한 기록한다.

 

  Windows 10 Timeline 기능은 기본적으로 활성화되어 있으나 설정을 통해 사용자로부터 비활성화 할 수 있다. (그림 2)는 Windows 10 Timeline 설정 화면으로 시작 > 설정 > 개인 정보 > 작업 기록에서 계정 활동 표시에 으로 선택하는 경우 사용자 활동을 기록하지 않는다. , 로컬 PC에 연결된 계정의 활동만 수집한다. 또한, 로컬 그룹 정책 편집기에서 로컬 컴퓨터 정책 > 컴퓨터 구성 > 관리 템플릿 > 시스템 > OS 정책에서도 해당 기능 설정의 상태를 설정할 수 있다.

 

그림 2

 

 

 Windows 10 버전 1803 등장 이전에도 이와 관련된 데이터를 ‘HKCU\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.taskflow.shellactivites\Current’Data 레지스트리 키에 기록하였다. 그러나 해당 레지스트리에는 사용자가 접근한 파일 경로 및 이름과 마지막으로 업데이트된 시간 정보만 기록하는 등의 많은 기능이 제한되어 있다.

 

 

 

Windows 10 Timeline Artifacts 분석 (ALL)


  Windows 10 Timeline 기능이 활성화된 상태에서 사용자로 인해 PC가 사용된 경우 ‘%UserProfile%\AppData\Local\CommetedDevicesPlatform\’ 경로 아래에 동기화된 계정과 관련된 이름으로 생성된 한 개의 폴더와 다양한 파일이 생성된다.

 

  위의 파일시스템 경로 내에 생성되는 한 개의 폴더 이름은 PC에 동기화된 계정 유형에 따라 다르게 생성된다. Windows 운영체제의 경우 사용자로부터 로컬 계정, 마이크로소프트 계정, Office 365 혹은 Azure Activity Directory 계정으로 로그인함으로써 동기화하여 사용될 수 있다.

 

  로컬 계정 (Local Account)은 윈도우 로그인에 사용되어 온 기존 방법으로 사용자 PC에서만 사용할 수 있는 오프라인 계정 정보이다. 로컬 계정으로 동기화된 경우 ‘%UserProfile%\AppData\Local\ConnetedDevicesPlatform\’ 경로 아래에 ‘L.{로컬계정명}’ 이름으로 폴더가 생성된다.

 마이크로소프트 계정 (Microsoft Account)은 마이크로소프트 온라인 서비스(OneDrive, OneNote, Skype, XBox, Windows Phone )를 이용하기 위해 필요한 인증 ID이다. 마이크로소프트 계정을 통해 동기화된 경우에는 랜덤하게 생성된 마이크로소프트 계정 식별자 이름으로 하위 폴더가 생성된다.

  주로 기업 혹은 교육기관의 경우 Office 365Azure Activity Directory 계정을 통해 동기화하여 사용하는 경우가 존재하는데 이런 경우에는 ‘AAD.{보안 식별자}’ 이름으로 하위 폴더가 생성된다. 아래 표는 계정 유형 따른 폴더 이름 정보와 각 유형 별 계정에 대한 정보를 확인할 수 있는 레지스트리 경로를 기술한다.

 

사용자 계정 유형 폴더명 레지스트리 경로
로컬 계정 L.{로컬 계정 명} -
마이크로소프트 계정 {마이크로소프트 식별자(CID)}

NTUSER.DAT\Software\Microsoft\IdentityCRL\UserExtendedProperties

Office 365 혹은 Azure Activity Directory 계정 AAD.{보안 식별자(SID)}

NTUSER.DAT\Software]Microsoft\OneDrive\Accounts

 

  그러나, 사용자는 로컬 계정 로그인 상태에서 마이크로소프트 계정으로 전환하는 것과 같이 시스템에서 기본으로 사용할 계정을 변경할 수 있다.

  로컬 계정에서 마이크로소프트 계정으로 전환하게 되면 기존에 존재하던 ‘L.{로컬계정명}’ 폴더가 삭제되고 마이크로소프트 계정 폴더가 생성된다. 이 때, ‘L.{로컬계정명}‘ ActivityCache.db 파일에 기록된 데이터는 새로운 ActivityCache.db 파일에 유지되고 클라우드와 동기화된다.

  반대로 마이크로소프트 계정에서 로컬 계정으로 전환된 경우에도 이전 마이크로소프트 계정 사용 기록이 새로운 ActivityCache.db 항목에 포함된다.

 

 

Windows 10 Timeline Artifacts 분석 (1803)


  Windows 10 사용 시 기본 계정 유형에 따른 경로의 변경 사항을 제외하고는 생성되는 아티팩트 파일 유형은 동일하다. 아래 표는 Windows 10 Timeline의 아티팩트 파일 이름, 경로 및 해당 파일에 기록되는 정보를 설명한다.

 

파일명 경로 설명
CDPGlobalSettings.cdp

%UserProfile%\AppData\Local\CommetedDevicesPlatform

활성/비활성 사용자 정보 및 Windows 10 Timeline 기능 설정 정보 등을 기록하는 json 파일

Connected Devices Platform certifications.sst -
{계정ID}.cdp

클라우드에 마지막으로 동기화된 시간 정보 등을 기록하는 json 파일

ActivitiesCache.db

%UserProfile%\AppData\Local\CommetedDevicesPlatform\{Account}

전체적인 사용자 PC 사용 활동 정보를 기록하는 데이터베이스 파일

ActivitiesCache.db-shm  
ActivitiesCache.db-wal  

 

 

CDPGlobalSettings.cdp 파일 분석


  CDPGlobalSettings.cdp 파일은 활성 및 비활성 사용자 Id 정보와, Windows 10 Timeline 설정 정보 등을 기록하는 json 유형의 파일이다. (그림 3)은 CDPGlobalSettings.cdp 파일을 notepad++을 통해 살펴본 것이다.

ActivityStoreInfo 키에는 활성화 및 비활성화 사용자 ID 정보가 기록되어 있으며

AfcPrivacySettings 키에는 Windows 10 Timeline 설정(활성화, 비활성화) 정보가 기록되어 있다.

 

그림 3

 

{계정 ID}.cdp 파일 분석


  {계정ID}.cdp 파일은 클라우드에 마지막으로 동기화된 시간 정보 등을 기록하는 json 유형의 파일이다. 해당 파일에서 살펴봐야하는 주요 키는 CNCNotificationURiLastSynced 이다.

CNCNotificationURiLastSynced 키는 클라우드에 마지막으로 동기화된 시간 값을 기록한다.

이 파일은 조금 더 정확한 분석이 필요하다. 나중에 분석해서 각 키에 대한 정보를 분석해봐야겠다.

그림 4

 

ActivitiesCache.db 파일 분석


  ActivitiesCache.db은 전체적인 사용자 PC 사용 활동 정보를 기록하는 데이터베이스 유형의 파일로 가장 핵심이되는 주요 파일이다. Windows 10 1803 버전에는 아래 표와 같은 테이블로 구성되어 있다.

 

테이블 명 설명
Metadata Activity 유형 및 데이터베이스가 생성된 마지막 시간 정보
ManualSequence 마지막 활동 Etag 정보
Activity_PackageId Activity와 ActivityOperations 테이블 간의 트랜잭션 정보
ActivityAssetCache Empty
AppSettings Empty
Activity 사용자 활동에 관한 정보
ActivityOperation
타임라인으로부터 제거된 타일 정보

 

  위의 여러 테이블 중 Activity_PackageId, Activity, ActivityOperation 테이블은 가장 핵심적으로 자세히 분석해 볼 필요가 있다.

 

 

  • Activity_PackageId 

  Acitivity_PackageID는 Activity 테이블과 ActivityOperations 테이블 간의 트랜잭션 정보를 기록한다. 즉, sql 쿼리를 통해 두 개의 테이블로부터 데이터를 병합시킬 수 있다. (그림 5)는 Activity_PackageId 테이블의 일부 데이터를 나타낸다.

상단에는 테이블 필드 정보로 rowid, ActivityId, Platform, PackageName, ExpirationTime 다섯가지로 구성된다.

 

ActivityId 필드는 Activity 테이블과 ActivityOperation 테이블의 Id 필드에 매칭된다.

PackageName 필드는 사용자가 실행한 파일 경로와 파일 이름을 기록한다.

ExpirationTime 필드는 이벤트가 처음 트리거된 시간으로부터 30일 (UTC) 이후의 시간 정보를 기록한다.

Platform 필드는 이벤트와 관련된 활동 및 응용 프로그램 유형 정보를 기록한다. 각 Platform의 값은 아래 표를 나타낸다.

 

그림 5

Platform 값

설명

x_exe_path

독립형 실행 파일 경로

afs_crossplatformhost

클라우드 동기화 사용 가능 활동 (로컬 계정 사용시 존재 안함)

host

알 수 없음. 테스트 결과 보통 공백 혹은 Edge 및 Office 365에 관한 정보를 기록함

packageid

알 수 없음. 기본 프로그램과 사용자 설치 프로그램 정보를 기록함

windows_win32

설치된 소프트웨어 (UWP 제외)

windows_universal

윈도우 UWP 어플리케이션

android

안드로이드 어플리케이션

ios

iOS 어플리케이션

msa

Microsoft 어플리케이션

web

웹 어플리케이션

 

  • Activity

  Activity 테이블은 Windows 10 Timeline 타일에 관한 활동 정보를 기록한다.

해당 테이블은 (그림 6)에서와 같이 26개의 필드로 구성되어 있다. 여기서는 주요 필드에 대한 정보만 기술하겠다.

 

그림 6

컬럼명 설명
Appid

JSON 형식 레코드로 실행한 파일 정보를 기록한다.

그림 7
PackageIdHash 파일 해시 값 정보를 기록한다. 
ActivityType

파일 및 응용 프로그램 focues 정보를 기록한다.

5: 파일/응용 프로그램이 열려있음

6: 파일/응용 프로그램이 화면에 초점되어 있음

AppActivityId

실행한 문서 파일 이름 혹은 Edge 브라우저를 통해 방문하거나 검색한 URL 정보를 기록한다.

그림 8
ActivityStatus

타일의 상태 정보를 기록한다.

1: Active (어플리케이션이 열려 있음)

2: Updated (이전의 Active entry가 업데이트됨)

3: Deleted (타임라인으로부터 타일이 제거됨)

LastModifiedTime

이벤트가 마지막으로 발생한 시간을 기록한다.

ExpirationTime

LastModifiedTime에서 30일 후 시간을 기록한다.

LastModifiedOnClient

클라이언트에서 마지막으로 수정된 날짜를 기록한다.

CreatedInCloud

클라우드에서 생성된 날짜를 기록한다.

StratTime

실행 파일이 클릭된 시간을 기록한다.

EndTime

보통 LastModifiedTime과 동일하나 Activity Type이 6인 경우 in-focues 종료 시간을 나타낸다.

PlatformDeviceID

NTUSER.dat\Software\Microsoft\Windows\CurrentVersion\TaskFlow\DeviceCache\ 레지스트리 경로에 존재하는 사용자 기기 ID 정보를 기록한다.

그림 9
Payload

JSON 형식의 레코드로 파일 및 응용 프로그램에 대한 세부사항을 기록한다. 이는 ActivityType 유형에 따라 아래와 같은 정보가 기록된다.

ActivityType 5: 프로세스/파일 이름 정보 (displayText)

ActivityType 6: 이벤트에 참여한 시간 (초 단위) (activeDurationSeconds)

 

(그림 10)은 ActivityType이 5일 때 기록된 정보이다. display Text 키를 통해 파일 정보를 확인할 수 있다. (그림 11)은 ActivityType이 6일 때 기록된 정보이다. activeDurationSeconds 키를 통해 이벤트가 실행된 초단위 시간 정보를 확인할 수 있다. 

그림 10
그림 11

 

 

  • ActivityOperation

  ActivityOperation 테이블은 Windows 10 Timeline에서 마우스 우클릭을 통해 제거된 타일 정보를 기록한다.

 ActivityOperation 테이블에는 타일이 제거되면 새로운 ETag 값과 새로운 ActivityStatus 및 OperationType 값이 할당된 레코드가 생성된다. Windows 10 Timeline은 사용자가 "모두 지우기" 옵션을 통해서 모든 타일을 제거할 수 있지만, 데이터베이스에는 삭제된 정보가 유지된다.

 

 

Windows 10 Timeline Artifacts 분석 (1809)


  Windows 10 1803이 업데이트되면서 Windows 10 1809 버전에서 ActivitiesCache.db 데이터베이스에 필드 및 테이블이 추가되었다. 변경사항은 다음과 같다.

  • Activity 테이블에 UserActionState, IsRead, GroupItems 필드가 추가됨
  • DataEncryptionKey 테이블이 추가됨 - 데이터 암호화를 위한 키 정보

그림 12

  • ActivityOperation 테이블에 UploadAllowedByPolicy, UseraActionState, IsRead, GroupItems 필드가 추가됨
  • Metadata 테이블의 Key 필드에 DatabaseNotificationSubscriptionInfo, DatabaseActivityPolicies, PendingActivityTypes 키가 추가됨

그림 13

  • Activity_PackageId 테이블에 이벤트와 관련된 활동 및 응용 프로그램 유형을 나타내는 Platform 속성에 data_boundary 값이 추가됨 (ex: microsoft.default.default, microsoft.dredentials.wifi)

 

 

Windows 10 Timeline Artifacts 분석 (1903)


  Windows 10 1903에서는 마이크로소프트에서 제공하는 클립보드와 복사/붙여넣기 활동에 관한 정보를 추가적으로 기록한다.

 

 Windows 10 클립보드 (Clipboard) 기능은 클라우드 기반의 클립보드이다. 기존의 [ctrl] + [c] 및 [v] 단축키를 통해 사용한 클립보드는 직전에 복사한 내용 하나만 저장되고 새로 복사하는 경우 앞서 저장되어 있던 내용이 덮어쓰기 된다. 그러나 Windows 10 클립보드는 다중 클립보드로 여러개의 데이터를 복사할 수 있다.

 

  Windows 10 클립보드 사용은 기존의 [ctrl] + [c] 키를 통해 복사하고 [ctrl] +[v] 대신 [Win] + [V] 키를 누르면 Windows 10 클립보드에 액세스하여 복사했던 내용들을 확인할 수 있다. 이는 최대 25개까지 복사한 내용이 저장되며, 복사한 내용이 25개를 넘어가면 가장 먼저 복사되어 있던 내용들부터 덮어씌워진다.

 

 Windows 10 클립보드 검색 기록 기능을 사용하기 위해서는 [설정] > [클립보드] 항목에서 아래 (그림 14)에서와 같이 클립보드 검색 기록] 항목을 켬으로 설정하면 된다.

 

그림 14

  Windows 10 클립보드는 ActivityType 번호가 10으로 ClipboardPayload에 아래 (그림 15)와 같이 Base64로 인코딩되어 저장된다. 

 

 

  반면, 복사/붙여넣기는 ActivityType 16으로 데이터를 복사/붙여넣기한 응용 프로그램의 데이터가 기록된다.

Windows 10 1903 버전에서의 Timeline 아티팩트에 관한 분석은 다음에 시간이 된다면 더 자세히 살펴봐야겠다.

 

 

시간 될 때 짬짬히 전체적으로 조금씩 분석을 손봐야겠다~~

'DF' 카테고리의 다른 글

디스크 인터페이스 간략 정리 (정리중)  (0) 2020.06.03
[Python] Timestamp Convert  (0) 2020.04.07
Cuckoo Sandbox 구축  (1) 2020.03.04