특성	설명	관련 쟁점
비가시성	디지털 데이터는 눈으로 볼 수 없다는 성질	· 도구의 신뢰성 · 분석가의 전문성
휘발성	시간이 지남에 따라 데이터가 사라지는 성질	· 현장에서 수집 순서
변조 용이성	디지털 데이터의 변주가 쉽다는 성질	· 해시함수를 이용한 무결성 입증
복제 용이성	디지털 데이터를 복제했을 때 원본과 동일하다는 성질	· 원칙적으로 출력하거나 복제
대규모성	데이터의 크기가 너무 크다는 성질	· 효과적인 검색 방법 · 프라이버시 침해 문제
초국경성	데이터가 국경을 넘어 다양한 위치에 저장된다는 성질	· 원격 압수·수색

항목	설명
해시 함수	임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
눈사태 효과	어떤 암호 알고리즘의 입력값에 미세한 변화를 줄 경우 출력값에 상당한 변화가 일어나는 성질
와일드 카드	여러 파일을 한꺼번에 지정할 목적으로 사용하는 기호(*)

해시 함수	출력값 길이	특징
MD5	128비트(16바이트)	취약
SHA1	160비트(20바이트)	취약
SHA256	256비트(32바이트)	권장
SHA512	512비트(64바이트)	권장

분류	ASCII(Hex)	설명
줄바꿈	0xA, 0xD	Windows : 0xD 0xA Linux/MacOS : 0xA
숫자	0x30~0x39	순서대로 0부터 9까지
영어 대문자	0x41~0x5A	순서대로 A부터 Z까지
영어 소문자	0x61~0x7A	대문자와 소문자는 각각 0x20 차이

분류	파일 형식	헤더 시그니처	푸터 시그니처	비고
압축	ZIP	50 4B 03 04 P K
압축	7Z	37 7A BC AF 27 1C 7 Z
문서	PDF	25 50 44 46 % P D F	25 25 45 4F 46 % % E O F
문서	DOCX XLSX PPTX	50 4B 03 04 P K		ZIP과 구조 동일
그림	PNG	89 50 4E 47 0D 0A 1A 1A P N G	49 45 4E 44 AE 42 60 82 I E N D
그림	JPG (JPEG)	FF D8 FF E0 XX XX 4A 46 49 46 J F I F	FF D9

저장장치

RAM : 휘발성 메모리 저장하고 CPU에서 접근 속도가 빠르기 때문에 주기억장치라고도 부름

디지털 포렌식 관점에서 RAM에 저장되는 데이터는 휘발성 데이터이기 때문에 RAM을 분리하지 않고 오히려, RAM에 저장되는 데이터는 컴퓨터가 켜져 있는 상태에서 획득함

하드디스크 : 비휘발성 데이터 저장 ex) 바탕화면, C 드라이브에 저장된 파일

SSD : 반도체를 사용해 데이터 저장

USB 플래시 드라이브 : USB 표준 규격을 이용해 데이터를 저장하는 장치

SDCard : USB보다도 작고 가벼운 저장장치 ex) 디지털 카메라, 내비게이션, 블랙박스

저장장치 인터페이스

IDE/ATA : 과거 하드디스크 연결을 위해 제작된 표준 인터헤이스 규격. 이후 이름이 ATA로 변경되었기 때문에 IDE는 ATA라고도 부름. 또한 ATA의 후속 규격인 SATA와 차이를 두기 위해 PATA라고도 부름.

SATA : 직렬 전송 방식을 이용하면서 기존 IDE 방식에 비해 더 빠른 속도와 높은 안정성을 지원함. SATA는 현재까지도 데스크톱에서 많이 이용되고 있는 인터페이스

PCI/PCIe : 컴퓨터 메인 보드에 주변 장치를 장착하기 위한 컴퓨터 버스의 일종이자 인터페이스. 속도가 더 빠르면서 다양한 크기를 가진 PCLe(PCL-express) 또한 현재 같이 사용됨

보통 그래픽 카드를 연결하지만, SSD를 연결하는 경우도 있음

M.2 : 소형 커넥터 규격

USB : 장치와 장치를 연결하는 인터페이스의 규격이자 동시에 데이터를 전송하는 프로토콜

디지털 포렌식 도구

하드웨어 장비

디스크 이미지 장비 : 수집 현장에서 하드디스크나 SSD를 발견할 경우 이러한 이미지 장비들에 연결해 복제본을 획득 ex) Logicube 사의 Falcon 장비

쓰기 방지 장치 : 하드디스크와 같은 저장 매체에 접속해 데이터를 살펴볼 때 데이터 쓰기를 방지해 불필요한 변조를 막아주는 장비

패러데이 : 디지털 장치의 전자기파를 차단하여 외부와의 통신을 차단하는 역할 ex) 스마트폰, 임베디드 기기

소프트웨어 도구

비휘발성 데이터 수집 및 분석 도구

FTK Imager : 비휘발성 데이터 수집 및 분석 도구는 말 그대로 비휘발성 데이터 수집하거나 분석하는 역할

KAPE : 데이터 수집부터 분석까지 한 번에 수행할 수 있는 통합 플랫폼

휘발성 데이터 수집 및 분석 도구

CLI 기반 도구 : Dumpli, WinPmem, Volatility(메모리 덤프 내에서 프로세스 정보를 분석하고, 프로세스와 연관된 파일들을 추출할 수 있는 도구

통합 포렌식 도구

Magnet AXIOM

파일시스템

파티션 – 저장 장치 내의 공간을 분리해 독립적인 공간을 만든 것

볼륨(=드라이브) – 파일시스템을 갖춘 저장 공간, 일반적으로 하나의 볼륨은 하나의 파티션 내에 생성되기 때문에, 파티션과 볼륨은 혼용되어 사용되기도 함

파일시스템

: 디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식

- 저장장치 내에 비어 있는 공간을 파악하고, 적절한 공간에 파일을 저장함

- 사용자가 파일을 생성하고, 수정하고, 삭제할 수 있음

- 파일 생성 시각, 수정 시각, 변경 시각 등을 관리

- 파일 생성, 수정, 삭제에 대한 로그를 기록하고 백업, 복구 등을 지원

- 사용자에 따라 접근 권한을 부여

운영체제	파일시스템	특징
Windows	NTFS	Windows NT 3.1 이후부터 현재까지 사용하고 있는 파일시스템
	ReFS	NTFS를 대체하기 위한 차세대 파일시스템
Linux	EXT4	Linux에서 2006년부터 사용하고 있는 파일시스템
Unix	UFS	Unix 계열 운영체제에서 사용하는 파일시스템
macOS	HFS+	Apple 구형 파일시스템
	APFS	Apple 신형 파일시스템
공통	FAT/FAT32	초기 Windows에 사용되었으나 현재는 USB 등에 주로 사용됨
	exFAT	FAT32의 크기 단점을 개선하는 파일시스템

MBR과 VBR

MBR – 단순히 디스크 가장 처음 512 바이트 영역에 저장되는 데이터

섹터 – 디스크의 최소 기억 단위로, 전통적인 하드디스크에서는 512 바이트 크기를 가짐

VBR – 볼륨의 가장 첫 섹터에 저장되는 데이터

slack – 파일시스템이나 데이터의 구조에서 빈 공간을 나타내는 표현

FAT32

FAT32 – 파일이 저장되는 위치를 기록한 테이블

Reserved Area : VBR을 포함하고, 볼륨 전체의 설정값들을 저장하는 영역

FAT Area : 2개의 FAT 테이블이 저장되는 영역

Data Area : 실체 파일이나 폴더가 위치하는 영역

Reserved Area

Boot Sector : 0번 섹터(원본), 6번 섹터(백업) - 주요한 데이터들 위치

FSINFO : 1번 섹터(원본), 7번 섹터(백업)

Boot Strap : 2번 섹터(원본), 8번 섹터(백업)

Reserved Sector : 나머지 섹터들에 해당하며 일반적으로 비어 있음

FAT32 Boot Sector 구조 – BPB 1             FAT32 Boot Sector 구조 – BPB 2

FAT Area

FAT Area – FAT Table 2개가 연속으로 존재하는 영역, 1개는 손상을 대비한 백업 역할을 하기 때문에 2개가 존재함

Data Area

FAT Area 주소에서 FAT 크기 2개를 더한 값

=> Data Area 오프셋 = VBR 오프셋+Reserved Sector*섹터 크기+FAT Size*섹터 크기*2

Name : TEST1

Extension : TXT

First Cluster High & Low : 0x5 -> 파일 데이터의 클러스터 번호를 나타냄

File Size : 0x1B0

NTFS

MFT이라는 별도의 구조를 두어, MFT에 모든 파일의 메타데이터를 저장함. 다만, VBR은 볼륨의 맨 끝에 Backup VBR을 별도로 두어 복구 가능하도록 함

VBR

NTFS VBR 구조 – BPB 1                    NTFS VBR 구조 – BPB 2

MFT

0x200 크기의 MFT 엔트리가 계속해서 반복하는 구조

NTFS MFT Entry Header 구조 1           NTFS MFT Entry Header 구조 2

$STANDARD_INFORMATION(ID:0x10) 중에서도 시간 정보를 알려주는 필드(DCode 도구에서 Windows Filetime 방식으로 해석 가능)

$FILE_NAME(ID:0x30) 중에서 파일의 이름을 알려주는 필드(파일 이름 : test1.txt)

$DATA(0x80) 중에서 파일의 데이터를 담고 있는 필드(파일 데이터 : test1 test1 test1 ...)

Data Area

일반적으로 파일의 크기가 약 700 Byte 이하인 경우에는 MFT에 파일 데이터가 포함됨

파일 데이터가 700 Byte보다 큰 경우에는 MFT가 아닌 Data Area에 파일 데이터가 저장됨

NTFS MFT $DATA 영역

Cluster Run의 첫 바이트를 4 bit씩 쪼개어, 앞 4 bit는 Run Offset의 길이를, 뒤 4 bit는 Run Length의 길이를 나타냄

Run Offset – 데이터가 저장되어 있는 볼륨의 클러스터 번호

Run Length – 총 몇 개의 클러스터에 데이터가 존재하는지를 나타냄

데이터 위치 – Run Offset(0xB88) * 클러스터 크기(0x1000) = 0xB88000

레지스트리

아티팩트

생성 증거 중에서 일정한 구조를 띄는 데이터

보관 증거 – 디지털 증거 중에서 사람이 직접 작성한 데이터

생성 증거 – 사용자의 직접적인 개입 없이 자동으로 생성된 증거

사용자의 구체적인 행위에 따라 생성되는 아티팩트의 차이

사용자가 A라는 행위를 했을 때, B라는 아티팩트가 생성되었다면, 사용자가 A’라는 행위를 할 때에도 B가 생성되는지, B’가 생성되는지 확인해야 함

Windows 운영체제가 지원하는 많은 기능이 내부적으로 처리되는 방식

Windows는 어딘가에 저장된 정보를 이용해 사용자에게 기능을 제공하고, 그 결과를 분명히 어딘가에 저장할 것임. Windows 운영체제가 내부적으로 어떤 데이터베이스/설정 파일에서 정보를 가져오는지, 실행 결과는 다시 어디에 저장되는지 살펴보아야 함.

레지스트리

- Windows 운영체제에서 사용자, 시스템, 프로그램 실행과 관련된 수많은 설정들을 저장할 수 있는 계층형 데이터베이스

분석 대상 시스템의 기본 정보, 시간 정보 추출 가능

사용자의 응용프로그램 실행 흔적이나, USB 연결 흔적 파악 가능

레지스트리 편집기

데이터가 트리 형태의 구조로 조직되어 반복적인 부모-자식 관계를 가지는 것

Windows + r – regedit - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

레지스트리 구조

5개의 루트 키 존재, 윈도우 레지스트리 중 가장 상위레벨에 있는 레지스트리 키

주요 레지스트리 경로

Timezone

Bias 값은 현재 시스템 시간과 UTC 시간이 얼마나 차이 나는지를 분 단위로 나타냄(UTC+9)

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

Systeminfo

현재 시스템의 다양한 정보들을 알 수 있는 경로

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

DCode 이용한 시간 값 변환

Autoruns

- 컴퓨터가 재부팅될 때 자동으로 실행하는 프로그램

악성코드가 시스템에 침투했을 경우 해당 경로에 실행 파일을 넣어두고 컴퓨터가 재부팅될 때마다 되살아나도록 하기 위해 자주 사용

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

사용자 계정

- 시스템에 존재하는 모든 사용자의 계정 목록 획득할 수 있음

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

ProfileList 중에서 사용자가 만든 계정은 단 1개뿐

시스템 계정

S-1-5-18 : systemprofile

S-1-5-19 : LocalService

S-1-5-20 : NetworkService

사용자 계정

- S-1-5-21-1678925537-2499940438-4107561857-1001

ProfileImagePath – 사용자의 홈 디렉토리

Sid – Windows 계정의 SID(Security ID)값 획득

- 하나의 Windows 시스템에서 사용자별로 고유하게 부여되는 ID 값

관리자 계정(Administrator) 500, 게스트 계정(Guest) 501, 일반 사용자 계정 1000 이상의 값

LocalProfileLoadTimeHigh 필드와 LocalProfileLoadTimeLow 필드를 조합하는 것으로 사용자 계정의 최종 로그온 시각과 오프라인 시각을 알 수 있음.

High 값과 Low 값의 조합은 DCode 도구를 통해서 계산할 수 있음

환경 변수

프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임

사용자 계정 환경 변수 – HKCU\Environment

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

기기 연결 흔적

USB 제품명, 시리얼 번호, 최초 연결 시각, 마지막 연결 시각 파악 가능

HKLM\SYSTEM\ControlSet00?\Enum\USB

USB의 제조사(Vendor) ID와 제품(Product) ID를 의미, VID와 PID를 통해 연결된 USB 장치를 식별할 수 있음

HKLM\SYSTEM\ControlSet00?\Enum\USBSTOR

순서대로 제조사, 제품, 버전 의미, 해당 정보를 통해 특정한 저장장치를 식별할 수 없음

HKLM\SOFTWARE\Microsoft\Windows Portable Devices\Devices

FriendlyName 필드에서 시스템에 마운트된 볼륨 이름 확인, 고유 인스턴스 ID 값 확인

고유 인스턴스 ID – 같은 모델이라도 제품마다 고유하게 부여된 장치의 번호로, 시리얼 번호를 이용해 생성한 값

시리얼 번호가 있을 때 : #{SerialNumber}&{?}#

시리얼 번호가 없을 때 : #{?}&{RandomNumber}&{?}#

C:\Windows\INF\setupapi.dev.log

USB가 시스템에서 처음 연결된 시각 - >>>  Section start 2025/03/12 11:13:54.903

레지스트리 파일

- 하나의 파일로 저장되는 것이 아니라, 같은 파일들로 나뉘어 저장됨

- 레지스트리 편집기에서는 이러한 파일들을 모아서 마치 하나의 레지스트리 데이터베이스인 것처럼 보여줌(레즈스트리 하이브 : 레지스트리 파일들)

- C:\Users\[UserName]\NTUSER.DAT

- C:\Users\[UserName]\AppData\Local\Microsoft\Windows\UsrClass.dat

- C:\Windows\System32\config\DEFAULT

- C:\Windows\System32\config\SAM

- C:\Windows\System32\config\SECURITY

- C:\Windows\System32\config\SOFTWARE

- C:\Windows\System32\config\SYSTEM

레지스트리 수집 방법

시스템 파일이기 때문에 시스템이 동작하고 있을 때에 일반적인 방법으로는 복사할 수 없음

FTK Imager – Logical Drive – C:\(C:\와 같은 드라이브 레터 대신 [root] 사용) .LOG1, .LOG2 파일을 같이 수집해야 함

레지스트리 수집 후 처리

dirty – 사용 중이던 레지스트리가 정리되지 않은 상태

cmd – RLA 실행 - PS C:\Users\gold\Documents\2024_dreamhack_tmp> mkdir registry_clean - PS C:\Users\gold\Documents\2024_dreamhack_tmp> dir - PS C:\Users\gold\Documents\2024_dreamhack_tmp> C:\Tools\rla\rla.exe -d .\registry\ --out .\registry_clean\

Registry Explorer

레지스트리를 사용자가 볼 수 있게 도와주는 도구로 Windows에 내장된 레지스트리 편집기와 달리 검색 기능을 지원하고, 자주 사용하는 레지스트리 경로에 대해 북마크를 지정할 수 있어 더 빠른 분석 가능

속도가 조금 느리긴 해도 원본 데이터를 보기 때문에 보다 정확하게 분석 가능

File – Loda Hive – 수집한 레지스트리

Regripper

CLI 기반의 레지스트리 분석 도구, 원본 데이터에서 필요하다고 생각되는 부분들을 직접 분석해 결과를 출력

출력된 결과만을 이용해 분석을 빠르게 수행, 다만 도구가 제대로 작동하지 않아 결과를 찾을 수 없을 때도 있고, 때로는 도구 출력 결과에 오류가 있을 수 있음

- FriendlyName : USB 저장장치의 이름

- First InstallDate : USB 저장장치가 처음으로 설치된 시간

InstallDate : USB 저장장치의 설치 시간

Last Arrival : USB 저장장치가 마지막으로 제거된 시간