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 다운로드
바로가기(.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 이용하여 분석
'내용정리' 카테고리의 다른 글
[유튜브] 리버싱 핵심원리_Ch 01. 리버싱 스토리 (0) | 2023.10.03 |
---|---|
[유튜브] 리버싱 핵심원리_Ch 00. 악성코드 분석 개요 (0) | 2023.10.02 |
[FORENSIC-PROOF] 메모리 포렌식 (Memory Forensics) (0) | 2023.04.25 |
[인프런] 기초부터 따라하는 디지털포렌식_섹션 02. 침해사고 대응기법, 해커의 발자취를 찾아라!! (0) | 2023.04.04 |
[인프런] 기초부터 따라하는 디지털포렌식_섹션 01. 디지털 포렌식 기초, Warm-up (0) | 2023.03.28 |