디지털 포렌식 - Background - Digital evidence
1. 디스크 이미징
1.1 디스크 이미징이란 ?
- 디스크 이미지를 생성하는 과정
- 디스크 이미지는 디지털 저장매체(hdd, ssd 등)의 디지털 데이터를 바이트 단위로 복제해 하나의 파일로 저장한 것
1.2 FTK Imager를 이용한 디스크 이미징
- Select Source
메뉴 의미 Physical Drive 물리적인 드라이브(=디스크)를 프로그램에 추가 Logical Drive 논리적인 드라이브(=드라이브)를 프로그램에 추가 Image File 디스크 이미지 파일을 프로그램에 추가 Contents of a Folder 특정 폴더의 파일들을 프로그램에 추가 cf) Disk : 물리적 형태를 지닌 저장매체 aka 하드디스크, SSD
Drive : 논리적으로 구분되는 저장 공간 e.g. C 드라이브, D 드라이브
- Select Image Type
디스크 이미지 파일 확장자 설명 Raw (dd) 원본 디지털 저장매체에 저장된 데이터를 어떠한 압축도 없이 원본 그대로 저장하는 파일 확장자. 이러한 원본 그대로의 데이터를 Raw 데이터라고도 부르며, Unix/Linux 운영체제에서 수행하는 dd 명령어를 수행한 결과와 비슷하기 때문에 별도로 표기되어 있다. E01 E01은 일반적으로 많이 사용되는 디스크 이미지 파일 확장자로, Encase라는 디지털 포렌식 소프트웨어와 함께 널리 보급되었다. 원본 데이터를 압축하여 저장하기 때문에 파일 크기가 작아지고, CRC 및 MD5 필드를 통해 파일 변조를 검증할 수 있다는 장점이 있다. SMART, AFF 잘 사용되지 않거나, 특수한 경우에 이용되는 파일 확장자. nb) 디스크 이미지를 저장할 경로는 디스크 이미징 대상이 되는 저장장치와 달라야 하며, 저장 경로의 크기가 커야 함
- 디스크 이미징 vs 디스크 복제 vs 복사
디스크 복제 : 원본 저장매체와 동일한 디지털 데이터를 갖는 복사본 저장매체를 만드는 행위 복사 : 파일이나 폴더 단위의 디지털 데이터를 별개의 저장매체에 복사하는 행위
1.3 디스크 이미지 마운트
- 디스크 이미지 파일을 컴퓨터에 인식시키는 과정
2. 메모리 덤프
2.1 메모리란?
- 휘발성 데이터를 담고있는 RAM 을 의미함

- 컴퓨터 구조에서 CPU에 전달하기 위한 임시 데이터들이 저장되는 공간으로, 프로그램과 프로세스가 호출하거나 처리하는 데이터들 (e.g. 프로세스가 실행 중에 열어본 파일, 프로세스에 사용자가 입력한 비밀번호 등)이 저장됨
2.2 메모리 덤프와 메모리 포렌식
- 메모리에 저장된 휘발성 데이터를 비휘발성 데이터로 저장한 데이터
- 메모리 덤프를 수행한 시각에 저장되어 있는 데이터만이 메모리 덤프의 결과물이 됨
- 메모리 덤프 파일에서 사용자 데이터를 찾아내 분석하는 행위를 메모리 포렌식이라고 함
2.3 메모리 덤프 실습
- Winpmem : 메모리 덤프 수행
- HxD : 헥스 에디터
Offset 영역(데이터가 Hex 형식으로 표현됨)과 Decoding 영역(Hex에 대응하는 ASCII 텍스트)으로 구성됨
💡Offset 영역은 파일의 시작 지점으로부터의 거리(바이트 단위)를 뜻함 오프셋
0x10
→ 파일 시작에서 16바이트 떨어진 위치
HEX ASCII 48 65 6C 6C 6F Hello 20 57 6F 72 6C World
3. 해시 함수
3.1 해시함수란?
- 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
- 조금이라도 바뀌면 해시값이 완전히 변해버리는 특성으로 데이터 수집할 때 해시값 계산하고, 법정에서 증거로 활용할 때 해시값을 다시 계산해 일치하는지 확인하는 방식으로 데이터의 무결성 획득
- 해시 함수의 종류 : MD5, SHA-1, SHA-256 etc..
3.2 해시 값 계산
- 형태가 다르더라도(File vs Text) 같은 데이터를 입력하면, 같은 해시값이 출력됨
3.3 해시함수의 종류
| 해시 함수 | 출력값 길이 | 특징 |
| MD5 | 128 비트(16 바이트) | 취약 |
| SHA1 | 160 비트(20 바이트) | 취약 |
| SHA256 | 256 비트(32 바이트) | 권장 |
| SHA512 | 512 비트(64 바이트) | 권장 |
cf) 1 바이트 = 16진수 2자리, 16바이트 = 16진수 32자리
- 해시 함수가 종류가 여럿인 이유
이유 설명 🔓 보안 강도 차이 오래된 해시 함수(MD5, SHA-1)는 충돌(다른 데이터가 같은 해시값 가짐) 때문에 깨져서 요즘엔 잘 안 씀. 그래서 더 강력한 SHA-256, SHA-3 같은 게 나옴. 🏃♂️ 속도와 효율성 차이 어떤 해시 함수는 빠르고 가볍게 (파일 무결성 체크용), 어떤 건 느려도 보안성 높게 설계됨 (비밀번호 저장용). 💻 용도 특화 비밀번호 저장 → bcrypt, scrypt 파일 무결성 체크 → SHA-256, SHA-3 블록체인 → SHA-256 디지털 포렌식 → MD5, SHA-1, SHA-256 📜 표준과 호환성 시스템이나 규정마다 요구하는 해시가 다름 (예: 미국 정부는 SHA-2 계열 사용 권장)
4. 리틀 엔디언
빅 엔디언 vs 리틀 엔디언


4.1 리틀 엔디언 실습

파일 시그니처 : 파일의 형식을 구별하기 위해 파일의 앞이나 뒤에 삽입하는 고유의 값
리틀 엔디언으로 0x03 - 0x10 를 읽는다면 SFTN 이라고 읽어야 하지만, 실제로는 절대다수의 경우에 대해 NTFS 으로 읽음.
5. 인코딩
5.1 인코딩이란?
- 데이터를 정해진 규칙에 따라 특정한 형식으로 변환하는 것
5.2 인코딩의 종류
- ASCII 인코딩
- Base64 인코딩
- UTF-8 인코딩
5.3 ASCII 인코딩
- ASCII 테이블에 따라 값을 문자로 변환하는 인코딩
- HxD 도구에서 쓰임
| 분류 | ASCII(Hex) | 설명 |
| 줄바꿈 | 0xA, 0xD | Windows: 0xD 0xA Linux/MacOS: 0xA |
| 숫자 | 0x30~0x39 | 순서대로 0부터 9까지 |
| 영어 대문자 | 0x41~0x5A | 순서대로 A부터 Z까지 |
| 영어 소문자 | 0x61~0x7A | 대문자와 소문자는 각각 0x20 차이 |
5.4 Base64 인코딩
- 바이너리 데이터를 미리 지정된 64개의 문자를 이용해 표현하는 인코딩 방법
- 바이너리 데이터는 0x00 부터 0xFF 까지 값을 가지는 반면, Base64 인코딩은 오직 패딩으로만 사용되는 = 문자를 제외하고 64개의 문자만 이용
- Base64 인코딩이 적용된 데이터는 원본에 비해 길이가 약간 증가
- 영어, 숫자, 일부 특수 문자 (ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=)
5.5 UTF-8 인코딩
- 가변길이 인코딩 방식 중 하나, 가장 많이 사용되고 있는 방식
- 다양한 데이터데 적용될 수 있으며 주로 유니코드에 사용됨
가변길이 인코딩?
입력 값이 존재하는 범위에 따라 인코딩 결과를 표시하는 바이트 수가 달라지는 인코딩 방식 이런 동작을 위해, 가변길이 인코딩 방식에서는 데이터를 몇 바이트 단위로 끊어 해석해야 할지 알려주는 지시자를 인코딩된 데이터에 포함함
- 유니코드는 한국어, 중국어 등 전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식한글의 모든 글자는U+AC00~D7A3로 매핑되어 있음
- 유니코드 내 한글이 가지는 범위 값에 UTF-8 인코딩을 수행하면 3바이트의 크기를 가짐. 그 결과가 일반적으로 아래와 같은 모양을 가지기 때문에, 해당 패턴을 이용해 바이너리 데이터를 분석할 때 한글 데이터를 찾아낼 수 있음
유 → 0xEC 0x9C 0xA0 니 → 0xEB 0x8B 0x88 코 → 0xEC 0xBD 0x94 드 → 0xEB 0x93 0x9C
6. 파일 시그니처
6.1 파일 시그니처란?
- 파일의 콘텐츠를 식별하기 위해 사용되는 데이터
- 파일 시그니처가 파일의 앞 부분에 존재하면 헤더(Header) 시그니처, 파일의 뒷 부분에 존재하면 푸터(Footer) 시그니처라고 부릅니다. 짧게 헤더, 푸터라고도 부름
파일 시그니처 예시


6.2 파일 시그니처의 필요성
- 시그니처를 확인하여 해당 파일의 형식(이미지파일 : png, jpg / 압축파일 : zip, rar / …)을 구분할 수 있음
- 확장자는 사용자가 얼마든지 변경 가능하기에 신뢰할 수 없음
6.3 자주 사용하는 파일 시그니처 모음
| 류 | 파일 형식 | 헤더 시그니처 | 푸터 시그니처 | 비고 |
| 압축 | ZIP | 50 4B 03 04 P K | ||
| 압축 | 7Z | 37 7A BC AF 27 1C 7 Z | ||
| 문서 | 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 |
6.4 Everthing을 이용해 파일 찾기
- 윈도우 인덱싱 서비스를 이용해 컴퓨터에 존재하는 대부분의 파일 정보를 데이터베이스로 만들어 두고 빠르게 검색할 수 있음
path:<검색경로> // 해당 경로 내에 있는 모든 파일 *.exe // .exe 를 이름으로 하는 모든 파일 size:<크기조건> // 해당 크기 조건을 만족하는 모든 파일
7. 디지털 장치
7.1 저장장치의 종류
- 메모리(RAM)
- 하드디스크
- SSD
- USB 플래시 드라이브
- SDCard
7.2 저장장치 인터페이스
- 저장장치 인터페이스 : “수집한 저장장치를 어떻게 연결해 데이터를 읽어올 수 있는가”
- IDE / ATA / PATA : HDD 연결을 위해 제작된 표준 인터페이스 규격
- SATA : 직렬전송 방식, 기존 IDE 방식에 비해 빠른 속도와 높은 안정성, 현재 자주 사용되는 인터페이스

왼쪽 4핀 : SATA 간 호환성을 위한 핀 / 가운데 : SATA 데이터 단자 / 오른쪽 : SATA 파워 단자
- PCI / PCIe : 컴퓨터 메인 보드에 주변 장치를 장착하기 위한 컴퓨터 버스의 일종이자 인터페이스

PCI는 고정된 크기를 가지고, PCIe(PCI express)는 다양한 크기를 가질 수 있음. 그래픽카드를 연결하는 데에 주로 사용되지만, 간혹 SSD를 연결하는 경우도 있음
- M.2 : 대중적으로 사용되는 SATA 인터페이스의 크기 때문에 소형 디바이스에는 적용되기에 어려움이 있었고, 그러한 와중 파생된 여려 소형 커넥터 규격 중 하나
M.2는 연결 단자의 규격을 나타낸 표준으로, a) SATA 방식 b) NVMe방식으로 데이터를 전송할 수 있음
- USB : 장치와 장치를 연결하는 인터페이스의 규격이자 동시에 데이터를 전송하는 프로토콜
8. 디지털 포렌식 도구
8.1 하드웨어 장비
- 디스크 이미지 장비

Logicube - Falcon / SATA 연결 단자, PCIe 연결 단자 등 존재, 디스크 이미징이나 복제 수행 가능 
- 쓰기 방지 장치(Write-Blocker) : 하드디스크와 같은 저장 매체에 접속해 데이터를 살펴볼 때 데이터 쓰기를 방지해 불필요한 변조를 막아주는 장비

- 패러데이(Faraday) : 디지털 장치의 전자기파를 차단하여 외부와의 통신을 차단하는 역할, 특히 무선 통신이 주로 일어나는 스마트폰이나 임베디드 기기에서 불필요한 무선 통신으로 인해 데이터가 변조되지 않도록 하는 역할을 함

8.2 소프트웨어 도구
- 비휘발성 데이터 수집 및 분석 도구
- FTK Imager
- KAPE

Eric Zimmerman의 도구들을 이용해 데이터 수집부터 분석까지 한 번에 수행할 수 있는 통합 플랫폼
- 휘발성 데이터 수집 및 분석 도구 : 불필요한 변형을 방지하기 위해 GUI보다는 CLI 기반 도구 선호
- Dumplt : 휘발성 데이터 수집 도구
- Winpmem : 휘발성 데이터 수집 도구

- Volatility : 수집한 메모리 덤프 분석 도구

- 통합 포렌식 도구 : 수집한 디스크 이미지 파일을 입력하면 프로그램이 주요 시스템 파일을 분석, 의심스러운 파일 추출, 다양한 사용자 행위를 추출하여 데이터베이스 형태로 만듦
- Magnet AXIOM

- Magnet AXIOM