내용정리

[인프런] 기초부터 따라하는 디지털포렌식_섹션 03. 윈도우 포렌식 깊게 들어가 보아요

suuuullloc 2023. 5. 9. 23:52

Windows 포렌식 개요 & Registry 개요

 

01. Windows Artifacts

: Windows가 가지고 있는 특유의 기능들과 그 기능을 구현하는데 필요한 요소

: Windows의 사용자가 수행하는 활동에 대한 정보를 보유하고 있는 개체

 

# 생성증거 : 프로세스, 시스템에서 자동으로 생성한 데이터

# 보관증거 : 사람이 기록하여 작성한 데이터

 

# Windows Artifacts 종류 예시

- 레지스트리

- $MFT, $Logfile, $UsnJrnl

- LNK

- JumpList

- Recycle Bin

 

# 공부할 때 중요한 점

1. 사용자의 행위에 따라 어디에 어떤 정보가 저장될까?

2. 컴퓨터는 대체 어떻게 동작하는 걸까?

 -> 사용자는 컴퓨터로 무슨 일을 했을까?

 

 

02. Registry

: 윈도우 운영체제와 응용 프로그램 운영에 필요한 정보를 담고 있는 계층형 데이터베이스

 - 운영체제 및 응용 프로그램의 설정 정보, 서비스의 중요 데이터 등 기록

 - 부팅 과정부터 로그인, 서비스 실행, 응용 프로그램 실행, 사용자 행위 등 모든 활동에 관여

: 윈도우 시스템의 모든 정보가 담겨 있음

 - 윈도우 시스템 분석의 필수 요소

 

# Registry에 담겨있는 정보 예시

- 시스템 표준 시간(TimeZone)

- 시스템 정보(Systeminfo)

- 사용자 계정 정보

- 환경 변수 정보

- 자동 실행 프로그램

- USB 연결 흔적

 

# 레지스트리 조회

- regedit(레지스트리 편집기) 이용

 : 레지스트리 조회 및 편집 가능

 

# 레지스트리 구조

레지스트리 구조

- 루트 키

루트 키 약어  설명
HKEY_CLASSES_ROOT HKCR 파일 확장자 연결 정보, COM 객체 등록 정보
HKEY_CURRENT_USER HKCU 현재 시스템에 로그인된 사용자의 프로파일 정보
HKEY_LOCAL_MACHINE HKLM 시스템의 하드웨어, 소프트웨어 설정 및 기타 환경 정보
HKEY_USERS HKU 시스템의 모든 사용자와 그룹에 관한 프로파일 정보
HKEY_CURRENT_CONFIG HKCC 시스템이 시작할 때 사용되는 하드웨어 프로파일 정보

Windows Registry 동작 원리 (1)

 

# Registry - Timezone

- 경로 : HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

 - Bias를 통해 현재 컴퓨터의 timezone을 알 수 있음.

 

# Registry - SystemInfo

- 경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

 - 현재 윈도우 버전, 설치 시간, ProductID 등 시스템과 관련된 정보들을 알 수 있음.

 

# Registry - Autoruns

- 경로 : HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(RunOnce, RunOnceEx)

          : HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(RunOnce, RunOnceEx)

- 시작 프로그램(Autoruns) 확인

 

# Registry - User Account

- 경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

 - S-1-5-18 : systemprofile

 - S-1-5-19 : LocalService

 - S-1-5-20 : NetworkService

 - S-1-5-21 : 사용자가 만든 계정

  - 1000 이상은 user 권한

  - 500은 adminstrator

 

- 사용자의 최종 로그인 시간

 - LocalProfileLoadTimeHigh

  = 0x01d84236

 - LocalProfileLoadTimeLow

  = 0x5f0dff92

   -> 0x01d842365f0dff92

- 사용자의 최종 로그인 시간은 Dcode로 확인

 

# Registry - Environment Variables

- 시스템/사용자 환경변수 확인

- 사용자 환경변수 경로 : HKU\{SID}\Environment

- 시스템 환경변수 경로 : HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

 

# Registry - Executable

- 응용프로그램(exe) 실행에 따른 흔적

 

- UserAssist : 최근에 실행한 프로그램 목록, 마지막 실행 시간, 실행 횟수

- OpenSavePidIMRU : 열기 혹은 저장 기능으로 사용된 파일

- LastVisitedPidIMRU : 열기 혹은 저장 기능을 사용한 응용 프로그램


Windows Registry 동작 원리 (2)

 

# Registry - USB Connection

- USB 등 외부 저장매체 연결 흔적을 추적 가능

 - USB 제품명, 시리얼 번호, 최초 연결 시각, 마지막 연결 시각

- 모든 USB 경로 : HKLM\SYSTEM\ControlSet001\Enum\USB

- USB 저장장치 경로 : HKLM\SYSTEM\ControlSet001\Enum\USB\USBSTOR

- 마운트 디바이스 경로 :  HKLM\SYSTEM\MountedDevices

 

# Registry - Shellbags

- 사용자가 접근한 폴더 정보를 기록함.

- BagMRU : 폴더의 구조를 계층적 구조로 나타냄.

- Bag : 윈도우 사이즈, 위치 등 사용자의 환경설정을 저장


Windows Registry 실습 (1)

 

# 레지스트리 파일 추출

 

# FTK Imager 이용


Windows Registry 실습 (2)

 

.


$MFT 개념 및 실습

 

# MFT(Master File Table)

: NTFS 파일시스템에서 파일, 디렉터리를 관리하기 위한 구조

- 하나의 파일당 하나의 MFT 엔트리를 가짐

- $MFT란 MFT 엔트리들의 집합

 

# MFT 엔트리

- 파일의 이름, 생성•수정•변경시간, 크기, 속성 등을 가지고 있음

- 파일의 디스크 내부 위치, 파일의 시스템 경로를 알 수 있음

 

# $MFT Practice

- FTK Imager를 이용

 - [root]\$MFT 추출

 

- MFTExplorer 다운로드

 

실습


$LogFile, $UseJrnl 개념 및 실습

 

$LogFile

 

# 저널링(Jounaling)

: 데이터 변경을 디스크에 반영하기 전에 행위를 기록하여 추후 오류 복구에 활용

 - 데이터를 기록하는 동안 시스템에 문제가 생기면 데이터가 손실됨

 - 문제가 발생하기 전에 "어떤 데이터를, 언제, 어디에 쓰는지" 기록

 - 문제가 발생하면 기록을 토대로 작업이 이루어지기 전 상태로 시스템을 복원

 

# 트랜잭션(Transaction)

: "쪼갤 수 없는 업무 처리의 최소 단위"

- 파일이나 디렉토리 생성, 수정, 삭제, MFT 레코드 변경 등

- $LogFile : 메타데이터의 트랜잭션 저널 정보

 

 

$UsnJrnl

: 파일이나 디렉토리에 변경 사항이 생길 때 이를 기록하는 로그 파일

- 파일 복원의 목적이 아니라, 단순 파일 작업이 있었다는 사실을 확인하기 위함

- 시간 순서대로 엔트리를 저장하고, 기본 크기는 32MB

 - 하루 8시간 사용시 4~5일 정도의 데이터를 저장하고 있음

 

 

# $LogFile & $UsnJrnl Practice

- FTK Imager를 이용

 - [root]\$LogFile 추출

 - [root]\$Extend\$UsnJrnl\$J 추출

 

- NTFS Log Tracker 다운로드

 

$LogFile 실습

 

$UsnJrnl 실습


바로가기(.LNK) 개념 및 실습

 

# 바로가기(LNK)

- 'Windows Shortcut'

- .lnk 확장자

 

# 바로가기(LNK) 생성하는 방법

- 사용자가 직접 생성

- 프로그램 설치 시에 생성

- 운영체제가 자동으로 생성

 

# 바탕 화면 경로

: %UserProfile%\Desktop

 

# 시작 메뉴 경로

: %ProgramData%\Microsoft\Windows\Start Menu

: %UserProfile%\Appdata\Roaming\Microsoft\Windows\Start Menu

 

# 최근 실행 경로

: %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent

 

# 빠른 실행 경로

: %ProgramData%\Microsoft\Internet Explorer\Quick Launch

: %UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

: %UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User
Pinned\TaskBar

 

# 바로가기(LNK) Practice

- FTK Imager를 이용

 - %UserProfile%\Desktop

 - %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent

 

- LECmd 이용하여 분석

 

실습


Jumplist 개념 및 실습

 

# 점프리스트란?

: 최근 사용한 파일/폴더에 빠르게 접근하기 위한 구조

 

# 종류

- Automatic : 운영체제가 자동으로 남기는 항목
- Custom : 응용프로그램이 자체적으로 관리하는 항목

 

# Jumplist 경로

: %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
: %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations

 

# Jumplist Practice

- FTK Imager 이용하여 추출

 - %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
 - %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations

- JumpList Explorer 이용하여 분석

 

실습


Prefetch 개념 및 실습

 

# Prefetch

: 응용프로그램의 빠른 실행을 위해서 존재하는 파일

- 응용프로그램을 실행할 때에 생성

 - 실행 파일 이름, 경로

 - 실행 파일의 실행 횟수

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

 - 실행 파일의 최초 실행 시간

 

# Prefetch Practice

- 프리패치의 경로 : %SystemRoot%\Prefetch

 

- WinPrefetchView 이용하여 분석

 

실습