디지털 데이터
* 컴퓨터에서 2 바이트 이상의 데이터 저장할 때 빅 엔디언(Big Endian) 방식과 리틀 엔디언(Little Endian) 방식 중 하나 이용
리틀 엔디언(Little Endian)
- 작은(Smallest) 바이트부터 메모리에 저장하는 방식
- 예를 들어 0x01234567 을 메모리에 저장한다면, 아래 사진과 같이 저장됨

디지털 포렌식 분야에서 리틀 엔디언 표현 방식이 중요한 이유
- 디지털 포렌식 분야에서 주로 다루는 Windows 운영체제는 대부분 Intel 기반의 CPU 아키텍처로 구성되어 있고, Intel 등 상당 수의 CPU 아키텍처는 리틀 엔디언 방식을 따르기 때문에
- 디지털 포렌식 분야에서는 파일 시스템이나 파일 구조를 자주 분석함 이때 리틀 엔디언 표현 방식으로 값을 읽는 경우가 많음
리틀 엔디언 실습
- VBR(Volume Boot Record) 값을 HxD로 조회
- 아래 정보 참고해 값 직접 해석 실습
- 0x0B - 0x0C (2byte): Bytes per sector
- 0x0D - 0x0D (1byte): Sectors per cluster
- 0x1C - 0x1F (4byte): Hidden sectors
- 0x28 - 0x2F (8byte): Total sectors

해당 정보에 따라 리틀 엔디언으로 값을 올바르게 해석하면 다음과 같음
- Bytes per sector = 0x200
- Sectors per cluster = 0x8
- Hidden sectors = 0x3A800
- Total sectors = 0x3A1E246F
[주의점]
- 파일 시그니처(File Signature): 파일의 형식을 구별하기 위해 파일의 앞이나 뒤에 삽입하는 고유한 값
- 리틀 엔디언 방식 사용할 때 파일 시그니처 영역은 리틀 엔디언 적용하지 않고 보이는 그대로 읽기도 함
→ 예를 들어, 0x03 - 0x0A (8byte): OEM ID - 리틀 엔디언 방식으로 값 읽는다면 SFTN으로 읽어야 하지만 대부분의 경우에 NTFS라고 읽음, 이런 특징은 시그니처 영역만 예외적으로 적용된다고 생각하면 됨
- 리틀 엔디언 방식 사용할 때 파일 시그니처 영역은 리틀 엔디언 적용하지 않고 보이는 그대로 읽기도 함
인코딩
- 데이터를 정해진 규칙에 따라 특정한 형식으로 변환하는 것
- 인코딩과 암호화의 차이
→ 암호화는 관련 지식을 소유한 사람들을 제외하고는 누구든지 읽을 수 없도록 암호화 알고리즘을 이용해 암호화된 정보를 생성하는 과정
→ 인코딩 된 데이터는 누구나 규칙에 따라 디코딩하여 해석할 수 있지만, 암호화된 데이터는 암호화 키가 없이는 누구도 복호화할 수 없음
→ 인코딩은 데이터를 전달하는 것이 목적, 암호화는 데이터가 유출되거나 변조되지 않도록 하는 게 목적
- 인코딩과 암호화의 차이
- 디지털 포렌식에서 자주 쓰는 인코딩 종류: ASCII 인코딩, Base64 인코딩, UTF-8 인코딩
ASCII 인코딩
- ASCII 테이블에 따라 값을 문자로 변환하는 인코딩
→ ASCII 테이블: 128개의 문자와 특수문자를 0x00 ~ 0x7F(0~127)의 숫자로 매핑하는 테이블

- HxD 도구에서도 아스키 인코딩에 따라 값 해석함 - 왼: 파일의 Hex 값, 오: ASCII로 해석한 문자열 표시

- 데이터 분석할 때 ASCII 인코딩을 알아야 하는 이유는 커다란 바이너리 데이터 내부에서 텍스트 데이터를 찾아낼 수 있기 때문
- ASCII 테이블 중에서도 특히 기억하고 있어야 하는 내용
| 분류 | ASCII (Hex) | 설명 |
| 줄바꿈 | 0xA, 0xD | Windows: 0xD 0xA Linux/MacOS: 0xA |
| 숫자 | 0x30 ~ 0x39 | 0 ~ 9 |
| 영어 대문자 | 0x41 ~ 0x54 | A ~ Z |
| 영어 소문자 | 0x61 ~ 0x7A | a ~ z (대문자와 소문자는 각각 0x20 차이) |
Base64 인코딩
- 바이너리 데이터를 미리 지정된 64개의 문자를 이용해 표현하는 인코딩 방법
- 바이너리 데이터는 0x00 부터 0xFF 까지 값을 가지는 반면, Base64 인코딩은 오직 패딩으로만 사용되는 = 문자를 제외하고 64개의 문자만 이용 → Base64 적용된 데이터는 원본에 비해 길이 약간 증가
- 독특한 형태 지니므로 데이터 형태보고 적용 여부 파악 가능 (영어 대·소문자, 숫자, 일부 특수문자 이용)
- Dreamhack! → RHJlYW1oYWNrIQ==
- Hunjison → SHVuamlzb24=
- Digital Forensics Basics → RGlnaXRhbCBGb3JlbnNjaXMgQmFzaWNz
- 인코딩에 사용되는 문자열
: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= - Base64 인코딩 및 디코딩 쉽게 할 수 있는 웹사이트
(인코딩, 디코딩할 크기가 너무 클 경우 Python 등 프로그래밍 언어 통해서도 할 수 있음)
UTF-8 인코딩
- 가변길이 인코딩* 방식 중 하나, 현재 가장 많이 사용됨 (주로 유니코드에 사용)
* 가변길이 인코딩: 입력 값이 존재하는 범위에 따라 인코딩 결과를 표시하는 바이트 수가 달라지는 인코딩 방식. 이 때문에 가변길이 인코딩 방식에서는 데이터를 몇 바이트 단위로 끊어 해석해야 할지 알려주는 지시자를 인코딩 된 데이터에 포함시킴.
- 유니코드는 ASCII와 달리 전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식임
(한글은 U+AC00 ~ D7A3로 매핑됨) - 유니코드 내 한글이 가지는 범위 값에 UTF-8 인코딩을 수행하면 3바이트의 크기를 가지게 됨 → 아래와 같은 모양을 가지기 때문에, 해당 패턴을 이용해 바이너리 데이터 속 한글 데이터 찾아낼 수 있음 (영어 대·소문자와 숫자는 UTF-8 인코딩과 ASCII 인코딩 결과 동일)
- 유 → 0xEC 0x9C 0xA0
- 니 → 0xEB 0x8B 0x88
- 코 → 0xEC 0xBD 0x94
- 드 → 0xEB 0x93 0x9C
파일 시그니처(File Signature)
- 파일의 콘텐츠를 식별하기 위해 사용되는 데이터
- 파일 시그니처가 파일의 앞부분에 존재하면 헤더(Header) 시그니처, 뒷부분에 존재하면 푸터(Footer) 시그니처
- PNG 파일의 헤더 시그니처: 89 50 4E 47 0D 0A 1A 0A (문자열 PNG 포함) / 푸터 시그니처: 49 45 4E 44 AE 42 60 82 (문자열 IEND 포함)


파일 시그니처의 필요
- 해당 파일의 형식 구별 가능 - 이미지인지, 압축 파일인지, 소리 파일인지
- 파일 이름 뒤에 붙이는 확장자(.png)는 사용자가 얼마든지 변경 가능하므로 컴퓨터는 시그니처를 이용해 파일 해석함
| 분류 | 파일 형식 | 헤더 시그니처 | 푸터 시그니처 | 비고 |
| 그림 | 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 | |
| 압축 | 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 0 F |
||
| 문서 | DOCX XLSX PPTX |
50 4B 03 04 P K |
ZIP과 구조 동일 |
파일 확장자(Filename Extension)
- 파일의 이름에서 파일의 종류와 역할을 표시
- 사용자가 임의로 바꿀 수 있으므로 정확 X

파일 확장자 활용
- Everything: 컴퓨터에 있는 모든 파일을 쉽게 검색할 수 있는 도구 (설치는 이미 있으므로 생략)
Everything 실습
- 특정 경로 내 모든 파일 검색 - 경로의 하위 폴더까지도 모두 재귀적으로 검색됨
path:<검색경로>

- 조건 이용하여 검색 - 모든 조건을 다 만족하는 파일만이 목록에 나열됨
path:<검색경로> // 해당 경로 내에 있는 모든 파일 검색
*.exe // .exe 를 이름으로 하는 모든 파일
size:<크기조건> // 해당 크기 조건을 만족하는 모든 파일

* 이 외의 자세한 도구 사용 방법 - 링크
저장장치
컴퓨터 구조와 저장장치

메모리(RAM)
- 휘발성 메모리 저장, CPU에서 접근 속도가 빠르기 때문에 주기억장치라고도 부름
- 길고 얇으면서 아래쪽에 연결 단자가 있는 형태
- RAM 메모리는 RAM 슬롯에 장착되어 있음 but 휘발성 데이터이므로 분리할 일 거의 X
(오히려 컴퓨터가 켜져 있는 생테에서 획득하는 것이 일반적)
하드디스크(HDD)
- 일반적으로 저장장치라고 부르는 장치 - 하드디스크와 SSD: 비휘발성 데이터 저장
(바탕화면이나 C 드라이브에 저장된 파일들이 이 장치에 저장됨) - 기업용 PC나 오래된 컴퓨터, 대용량 저장이 필요한 경우 많이 사용됨


- 데이터가 기록되어 있는 동그란 플래터가 계속해서 회전하고, 바늘 모양의 헤드가 플래터로부터 데이터를 읽어오는 방식
- 하드디스크는 크기가 큰 편이고 충격에 약하기 때문에 보통 별도의 슬롯에 보관되어 있어 찾기 쉬움
SSD(Solid-state drive)
- 반도체를 사용해 데이터 저장하는 장치
- 하드디스크에 비해 높은 속도와 안정성을 가지므로 최근에는 하드디스크를 대체해 많이 사용됨
- 연결되는 인터페이스의 종류에 따라 모양이 달라짐



USB(Universal Serial Bus) 플래시 드라이브
- USB: 컴퓨터와 다른 기기를 연결해 전원을 공급하거나 데이터를 전송하기 위해 만들어진 일종의 프로토콜
→ 이 표준 규격을 이용해 데이터를 저장하는 장치를 USB 플래시 드라이브라고 부름 (짧게 줄여서 USB or USB 메모리) - 디지털 포렌식 관점에서는 반드시 수집해야 할 저장장치 (휴대성이 좋아 파일 이동하거나 보관하기 위한 용도로 많이 사용하므로)

SDCard
- USB보다도 작고 가벼운 저장장치
- 주로 디지털카메라, 내비게이션, 블랙박스 등 소형 기기에서 사용됨
- 3가지 종류의 크기 가짐 - SD, miniSD, microSD

저장장치의 종류 - 메모리(RAM), 하드디스크, SSD, USB 플래시 드라이브, SDCard
저장장치 인터페이스
* 인터페이스(Interface): 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면
- 수집한 저장장치를 어떻게 연결해 데이터를 읽어올 수 있는가
IDE / ATA
- IDE(Integrated Drive Electronics): 과거 하드디스크 연결을 위해 제작된 표준 인터페이스 규격
→ 이후 이름이 ATA(Advanced Technology Attachment)로 변경됨
→ ATA의 후속 규격인 SATA와 차이를 두기 위해 PATA(Parallel ATA)라고도 부름
: IDE, ATA, PATA 모두 같은 것 지칭하는 용어


SATA(Serial ATA)
- 직렬(Serial) 전송 방식 이용하면서 기존 IDE 방식에 비해 더 빠른 속도와 안정성 지원(데스크톱에서 가장 많이 이용됨)



PCI / PCIe
- PCI(Peripheral Component Interconnect Bus): 컴퓨터 메인 보드에 주변 장치를 장착하기 위한 컴퓨터 버스* 의 일종이자 인터페이스, 속도가 더 빠르면서 다양한 크기를 가진 PCIe(PCI-express)도 같이 사용됨
- PCI - 고정된 크기 / PCIe - 다양한 크기
- PCI/PCIe 는 주로 그래픽 카드 연결하는 데에 이용되지만 SSD와 연결되는 경우도 있음 → 이 경우, SSD 자체에서 직접 연결하는 것을 지원하거나(아래 사진에서 왼쪽), M.2 단자를 이용하여 연결할 수 있도록 변환하는 어댑터(아래 사진에서 오른쪽)를 사용하는 방식이 있음
* 버스(Bus): 컴퓨터 부품을 연결해 정보를 전송할 수 있도록 하는 통신 시스템


M.2
- 데스크톱에서는 SATA 인터페이스가 가장 대중적으로 사용되었지만 크기 때문에 소형 디바이스에 적용되기에는 어려움이 있었음 → 이 때문에 단체에서 mPCle(mini PCI-express), mSATA(mini SATA) 등 발표하기도 함
- 이러한 배경 속에서 등장한 소형 커넥터 규격, 현재 가장 많이 사용됨
- 최근 출시되는 데스크톱이나 노트북에는 M.2 전용 슬롯이 있어, 아래 오른쪽 사진과 같이 직접 장착하는 경우 많음



USB(Universal Serial Bus)
- 장치와 장치를 연결하는 인터페이스의 규격이자 동시에 데이터 전송하는 프로토콜
- 타입
- A 타입 USB: 가장 일반적으로 사용됨 (저가형 USB, 키보드, 마우스, 무선 블루투스 등)
- B 타입 USB: 현재 자주 사용 X, 과거 디지털카메라나 프린터·MP3 등에 이용됨
- C 타입 USB: 빠른 속도로 최근 많이 사용됨 - USB 2.0 버전과 3.0 버전이 주로 사용됨 → 이론적으론 서로 호환 가능하지만, 간혹 동작하지 않는 경우 있음

디지털 포렌식 도구
하드웨어 장비
1) 디스크 이미지 장비
- 디스크 이미징이나 복제 수행
- 수집 현장에서 하드디스크나 SSD 발견할 경우 이러한 장비들에 연결해 복제본 획득


2) 쓰기 방지 장치(Write-Blocker)
- 하드디스크와 같은 저장 매체에 접속해 데이터를 살펴볼 때 데이터 쓰기를 방지해 불필요한 변조를 막아줌
- 저장장치의 데이터는 단순 컴퓨터 부팅만으로 내용이 변해서 해시값이 달라지므로 증거로 사용하기 어려워지기 때문에, 쓰기 방지 장치 연결해 변조 방지

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

소프트웨어 도구
비휘발성 데이터 수집 및 분석 도구
1) FTK Imager
2) KAPE(Kroll Artifact Parser And Extractor)
: Eric Zimmerman의 도구 이용해 데이터 수집부터 분석까지 한 번에 수행할 수 있는 통합 플랫폼

휘발성 데이터 수집 및 분석 도구
- 시스템을 불필요하게 변형하지 않기 위해 GUI 도구보다는 CLI 기반의 도구 선호



통합 포렌식 도구
- 장점
- 한 번에 많은 작업 수행 가능
- 반복적인 작업들을 단순하게 처리 가능 - 단점
- 분석 시간 오래 걸림
- 자동 분석만으로는 온전히 사건 해결 어려움 → 결국엔 전문가 필요
- 유료이고 비쌈

'SWUFORCE > Dreamhack' 카테고리의 다른 글
| [드림핵 스터디] 6주차 - 시스템 로그, Track_the_file (0) | 2026.05.19 |
|---|---|
| [드림핵 스터디] 레지스트리, find the USB, Autoruns (0) | 2026.05.12 |
| [드림핵 스터디] 4주차 - 파일시스템 (0) | 2026.05.06 |
| [드림핵 스터디] 2주차 - 디지털 증거 (0) | 2026.03.31 |
| [드림핵 스터디] 1주차 - 소개, 디지털 포렌식 기초 (0) | 2026.03.24 |