디스크 이미징(Disk Imaging)
- 디지털 저장매체의 복제본인 디스크 이미지(Disk Image)를 생성하는 과정
디지털 저장매체
- 하드디스크(Hard Disk, HDD)나 SSD와 같이 데이터를 저장하는 장치 (C드라이브, D드라이브)
- 0과 1의 반복으로 구성되는 디지털 데이터 존재
디스크 이미지
- 디지털 저장매체에 저장되어 있는 디지털 데이트를 바이트 단위로 복제해서 하나의 파일로 저장한 것
- 원본 디지털 저장매체와 동일한 데이터 가지지만, 그 형태가 하나의 파일 형태로 존재
디스크 이미징 실습
FTK Imager 설치
→ 이미 필자의 노트북에 설치돼 있으므로 생략
FTK Imager를 이용한 디스크 이미징
→ 왼쪽 상단바의 Add Evidence Item 버튼을 누르면 증거물의 타입을 선택할 수 있는 창이 나옴

- 4가지 선택 항목의 의미
| 메뉴 | 의미 |
| Physical Drive | 물리적인 드라이브(=디스크)를 프로그램에 추가 |
| Logical Drive | 논리적인 드라이브(=드라이브)를 프로그램에 추가 |
| Image File | 디스크 이미지 파일을 프로그램에 추가 |
| Contents of a Folder | 특정 폴더의 파일들을 프로그램에 추가 |
디스크와(Disk)와 드라이브(Drive)
- 디스크: 물리적인 형태를 지닌 저장매체 (하드디스크, SSD)
→ FTK Imager에서는 Physical Drive - 드라이브: 논리적으로 구분되는 저장공간 (C 드라이브, D 드라이브)
Physical Drive 선택
→ USB 혹은 여분의 SSD 기기 있다면 연결

- 항목들을 보면 현재 기기에 연결된 저장장치들이 표시됨
→ 500GB 크기의 SSD 장치, 16GB 용량의 USB 장치 - \\.\PYSICALDRIVE0 선택

- 위 사진과 같이 \\.\PHYSICALDRIVE0 정상적으로 추가됨
- 왼쪽 Evidence Tree 탭 통해서 폴더들 더블클릭하여 저장된 파일 확인 가능
- 같은 방법으로 USB 디스크(\\.\PHYSICALDRIVE1)도 추가

- USB 디스크(\\.\PHYSICALDRIVE1) 우클릭하여 Export Disk Image 선택
- Export Disk Image: FTK Imager에 추가된 증거물들을 디스크 이미지로 생성해서 내보냄
→ 시간 오래 걸리므로 가급적 용량 작은 장치 선택


- 왼쪽 사진은 디스크 이미지 저장 위치를 선택하는 화면임 → Add 버튼 누르기
- 버튼을 누르면 오른쪽 사진이 나오는데, 이 창에서는 4가지의 디스크 타입을 선택할 수 있음 → E01 선택
| 디스크 이미지 파일 확장자 | 설명 |
| Raw (dd) | 원본 디지털 저장매체에 저장된 데이터를 어떠한 압축도 없이 원본 그대로 저장하는 파일 확장자. 이러한 원본 데이터를 Raw 데이터라고 부르며, Unix/Linux 운영체제에서 수행하는 dd 명령어를 수행한 결과와 비슷하여 별도로 표기되어 있음. |
| E01 | 일반적으로 많이 사용되는 디스크 이미지 파일 확장자. Encase 라는 디지털 포렌식 소프트웨어와 함께 보급됨. 원본 데이터 압축 저장하여 파일 크기 작아지고 CRC 및 MD5 필드를 통해 파일 변조를 검증할 수 있다는 장점이 있음 |
| SMART, AFF | 잘 사용되지 않으며, 특수한 경우에만 이용되는 파일 확장자 |


- Browse 버튼을 눌러 적당한 경로 선택하고 아래 칸에는 알맞은 파일 이름 작성
- Image Fragement Size는 0으로 변경한 후 Finish 버튼 누르기
* 이 부분에서 주의할 점:
- 디스크 이미지를 저장할 경로는 디스크 이미징 대상이 되는 저장위치와 달라야 함 (0번 디스크를 디스크 이미징하려면 0번 디스크 내에는 저장하면 안 됨)
- 저장할 경로의 크기가 충분한지 확인


디스크 이미징 vs 디스크 복제 vs 복사
- 디스크 복제: 원본 저장매체와 동일한 디지털 데이터를 가지는 복사본 저장매체를 만드는 행위
→ 디스크 이미징 - 디스크 이미지 파일 생성, but 디스크 복제 - 복사본 저장매체 생성 - 복사: 파일이나 폴더 단위의 디지털 데이터를 별개의 저장매체에 복사하는 행위
→ 디스크 이미징·디스크 복제 - 저장매체 단위, but 복사 - 저장매체 중 일부 데이터만 옮김
→ 최근 선별압수의 원칙* 적용하면서 압수·수색 현장에서 복사를 통해 증거 수집하는 경우 많아짐
* 선별압수의 원칙: 범죄혐의와 관련된 부분만을 선별하여 압수
→ '디지털 증거의 처리 등에 관한 규칙' 중 제14조(전자정보 압수·수색·검증의 집행) 및 제19조(현장 외 압수절차)에 언급됨
디스크 이미지 마운트
- 마운트(mount): 디스크 이미지 파일을 컴퓨터가 인식하도록 등록하는 것


- 왼쪽 사진에서 상단바 Add Evidence Item 선택, Image File 타입선택
- 오른쪽 사진에서 Browse 버튼 눌러 이미지 파일 찾아 설정하고, Finish 버튼 선택

- 파일이 추가되었다면 확장 버튼(+)을 눌러 이미징한 저장 장치의 내용 확인 가능
- 특정 폴더나 파일 우클릭하여 Export Files 버튼 누르면 파일 추출할 수 있음
메모리 덤프
메모리(RAM)
- 메모리 - 휘발성 데이터를 담고 있는 휘발성 메모리(RAM) 의미
- 휘발성 - 전원 공급이 중단되면 기억된 내용이 없어지는 성질

- 메모리: CPU가 빠르게 연산할 수 있도록 데이터를 전달하기 위해 데이터를 임시적으로 저장하는 공간
- 입력장치: 키보드나 마우스와 같이 컴퓨터 조작하는 장치
- 출력장치: 모니터나 스피커와 같이 조작의 결과를 확인하기 위한 장치
- 보조기억장치: 컴퓨터에 저장한 비휘발성 데이터들을 보관하는 장소
- 프로그램(Program): 하드디스크에 저장되어 있는 실행코드
- 프로세스(Process): 실행 중인 프로그램. 프로그램과 현재 실행 상태, 할당받은 자원 등을 포함하는 개념
* 쉽게 비유해보자면:
- CPU → 요리 재료를 썰어내는 칼
- 메모리 → 요리 재료들을 임시로 올릴 수 있는 도마 (도마의 크기가 한정되어 있어 모든 요리 재료를 한 번에 올릴 수 없듯이, 메모리도 큰 프로그램이나 데이터를 한 번에 메모리에 로드할 수 없음)
- 프로그램/데이터 → 요리 재료
메모리 덤프
- 메모리에 저장된 휘발성 데이터를 비휘발성 데이터로 저장한 데이터
(사건이 발생한 이후 최대한 빨리 수행하는 것이 중요)
메모리 포렌식(Memory Forensics)
- 메모리 덤프 파일에서 사용자 데이터를 찾아내어 분석하는 행위
메모리 덤프 실습
- Winpmem, HxD 설치
- HxD(Hex Editor, 헥스 에디터) - 파일의 내용을 16진수 형식으로 직접 보거나 편집할 수 있는 도구
* 막간 HxD 실습


- 왼쪽 부분에선 Hex 값과 디코딩된 텍스트를 보여줌, Hex 값 직접 편집 가능
- 또한 Offset 영역과 디코딩 영역으로 나뉨
- Offset 영역은 데이터 Hex 형식으로 표시
- 디코딩 영역은 Hex에 대응하는 ASCII 텍스트 표시
- 또한 Offset 영역과 디코딩 영역으로 나뉨
- 오른쪽 부분(특수 편집기)에서는 데이터를 다양한 형식으로 변환해 줌
메모리 덤프 실습 (계속)

- 메모장을 하나 띄우고 자유롭게 메모 작성, 메모장에 적힌 내용이 사용자의 중요 정보라고 가정함
- 실습을 위해 메모리 덤프 전까지 메모장 종료 X


- 관리자 권한으로 Windows Terminal 실행 (윈도우키 + X)
- Winpmem이 있는 폴더로 이동, .\winpmem_mini_x64_rc2.exe mem.raw < 명령어 입력

- 강의용 덤프 파일과 실제 실습한 메모리 덤프 파일 크기가 상의할 수 있음(각자의 컴퓨터 RAM 크기 다르므로)
- 메모리 덤프 파일 크기와 상관관계를 확인하기 위해 Windows 시스템 정보 확인
→ Windows + r 창에서 msinfo32 입력

HxD로 메모리 덤프 파일 열기


- Ctrl + f 버튼으로 서치 창 띄운 뒤 문자열 검색
- 텍스트 인코딩을 유니코드로 변경, 검색 방향을 전체로 설정 후 검색
- 메모리에 내가 메모장에 입력한 문자열이 담겨있는 것을 확인해 볼 수 있음
- 메모장 프로세스가 동작하면서 임의로 입력한 텍스트를 메모리에 저장했고, 그 메모리를 덤프 해서 파일로 만들었기 때문에 해당 텍스트를 발견할 수 있었음
해시 함수(Hash Function)
- 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
→ 이렇게 출력된 값을 해시 값 또는 해시라고 부름
HashCalc 프로그램
- Data Format 항목에서 입력값을 File(파일), Text string(일반적인 문자열), Hex String(16진수 문자열) 중에 선택 가능
→ 일단 Text String으로 설정 - 왼쪽 부분 체크 박스를 통해 여러 종류의 해시 함수 계산 여부 결정 가능
- 상단의 Data 박스에 데이터 입력하고 왼쪽 해시 함수 체크한 뒤, 아래에 Calculate 버튼 눌러주면 됨


| 해시 함수 | 데이터 변경 전 | 데이터 변경 후 |
| MD5 | eecdeb ... d12 | bb5b96 ... 100 |
| SHA1 | f582b6 ... bf1 | e47efd ... 6bd |
| SHA256 | 48bc02 ... 6df | 78df38 ... 27b |
- 단순 느낌표 하나 추가했음에도 해시 값 전체가 무작위로 바뀜
→ 눈사태 효과(Avalanche Effect): 입력 값에 주어진 작은 변화가 출력 값에서는 큰 차이를 만들어내는 현상 - 해시 함수는 입력 값이 단 1비트만 바뀌어도 그 출력값이 완전히 바뀌어 버림 (데이터의 무결성 확인할 때 활용)

해시값 계산
- 다른 형태의 동일한 데이터를 입력값으로 주었을 때 같은 해시값이 나오는지 확인
- File 입력: HxD로 편집한 데이터
- Text 입력: 일반적인 텍스트 데이터



- 왼: 포맷을 File로 바꾼 후 아까 HxD로 만든 파일 입력
- 오: 포맷을 Text String으로 변경 후 앞서 입력했던 텍스트만 복붙
- 형태가 다르더라도 같은 데이터를 입력하면 같은 해시값이 출력됨
Powershell 이용한 해시값 계산
- HashCalc은 편리하지만 여러 개의 해시 값 동시 계산 불가, 속도 느림 이유로 Powershell 이용
- 코드 구조: Get-FileHash <FileName> -Algorithm <Algorithm> | Format-List
→ <FileName>과 <Algorithm> 부분 알맞게 채워 넣고 실행, 와일드카드 문자(*) 이용해 파일 취사 계산 가능

해시 함수의 종류
MD5
- 가장 간단하면서도 많이 사용됨
- 해시 값 짧음 → 안전성 떨어짐, 충돌 저항성이 낮음 → 디지털 포렌식 보고서 작성할 때 사용 X
- 출력값: 128비트(16 바이트)
* 때로는 16바이트 해시값만 보고 해시 함수를 유추해야 하는 경우가 있으므로 각 해시 함수의 출력 길이 알 필요 있음
SHA(Secure Hash Algorithm)
- 현재 가장 많이 사용되는 해시 함수 (SHA-2 계열: SHA-224, SHA-256, SHA-384, SHA-512)
→ MD5 이후 SHA-1가 활발하게 사용되었지만 취약점 발견되어 잘 사용 X - 특정 해시 함수의 경우, 이름만 보고도 출력값의 길이 알 수 있음 (like SHA-256은 출력값이 256 임)
| 해시 함수 | 출력값 길이 | 특징 |
| MD5 | 128 비트(16 바이트) | 취약 |
| SHA1 | 160 비트(20 바이트) | 취약 |
| SHA256 | 256 비트(32 바이트) | 권장 |
| SHA512 | 512 비트(64 바이트) | 권장 |
'SWUFORCE > Dreamhack' 카테고리의 다른 글
| [드림핵 스터디] 6주차 - 시스템 로그, Track_the_file (0) | 2026.05.19 |
|---|---|
| [드림핵 스터디] 레지스트리, find the USB, Autoruns (0) | 2026.05.12 |
| [드림핵 스터디] 4주차 - 파일시스템 (0) | 2026.05.06 |
| [드림핵 스터디] 3주차 - 디지털 데이터와 디지털 장치 (0) | 2026.04.07 |
| [드림핵 스터디] 1주차 - 소개, 디지털 포렌식 기초 (0) | 2026.03.24 |