❗ 이 글은 Dreamhack의 'Digital Forensics Specialist' 강의를 바탕으로 공부하며 정리한 것입니다.
해야할 일
1. Evidence.E01 파일 분석 -> 단서가 될 파일 모두 확인
2. 범죄와 관련된 단서 찾아내기
3. 디지털 포렌식 보고서 작성
💡 파일 분석
파일 내부 구조, 포맷, 데이터 배치 방식까지 분석하는 과정. 도구를 이용해 이진수 수준의 저수준 데이터까지 분석하기도하고, 필요에 따라서 CPU의 레지스터, 메모리 구조까지 분석하기도 함.
![]()
- 중앙 : 파일 내부의 데이터가 16진수 값으로 표시됨
- Offset : 16진수 값이 파일 내에서 어느 위치에 저장되어있는지 상대적인 위치 표현
- Decoded Text : 16진수 값을 사람이 읽을 수 있는 문자열(ANSI코드)로 변환하여 보여줌
ANSI와 ASCII는 유사한 인코딩 방식으로 일반적으로 파일분석시 두 인코딩 방식 혼용해도 관계없음
💡 오프셋 Offset
: 16진수 값의 위치. 파일 내 특정 데이터가 어디에 위치하는지 나타내는 주솟값
.jpg, .png가 아닌, 저장장치 전체를 디지털로 그대로 복제한 디스크 이미지 파일
단순히 장치 내 파일 목록만 복사하는 것이 아닌, 빈공간, 삭제된 파일, 파일 시스템 구조, 메타데이터 등을 포함하여 물리적 저장장치를 바이트 단위로 그대로 복제한 결과물 (= 원본 디지털 저장장치를 복제 파일)
.dd. 가장 기본 포맷, 무압축, 비트 단위 복사.E01, .Exx. 메타데이터(이미지 생성일시, 생성자정보, 주석, 사건번호) 및 해시 포함, 법정 증거에 적합, 압축 지원으로 파일 크기 축소 가능 .001, .002. 대용량 이미지 여러 조각으로 분할 저장 💡 이미지 파일을 분석하는 이유?
원본 상태 유지, 반복 분석 가능, 삭제 파일 & 히든 영역(숨겨진파티션, 슬랙공간, 빈공간) 분석의 이유 때문에 실제 수사에서는 저장장치를 직접 분석하지 않음.
운영체제가 파일을 어떻게 저장하고 관리할지 정의한 구조.
폴더와 파일의 구조 정의, 파일의 시작 위치와 크기, 수정 시간 등을 기록, 삭제된 파일의 흔적까지 포함, 메타데이터 저장 -> 파일이 어떻게 저장되고 지워졌는지 추적 가능
💡 서로 다른 시스템에서 포맷된 저장장치는 기본적으로 읽히지 않음.
저장장치 삽입 시 포맷 요구하는 메시지 나타날 수도*Windows에서 포맷한 USB - NTFS, macOS에서 읽기전용
macOS에서 포맷한 USB - HFS+, Windows에서 인식 불가
exFAT, FAT32 포맷 - macOS/Windows 양쪽 모두에서 호환 가능-> 어떤 운영체제에서 사용되었는지 추론하는 단서가 될 수 있음
New Case로 새로운 케이스를 생성, Case Name에 내부 폴더 명으로 사용될 이름을 지정, Base Directory에 케이스가 저장될 경로 지정.
Optional Information은 실제 수사과정에서 분석자 정보 기록하기 위해 사용됨.
New Case가 생성되면 Add Data Source가 자동으로 뜬다. Next로 다음으로 넘어가고 Disk Image or VM File을 선택한다. 4. Configure Ingest에서 분석범위와 사용할 모듈을 설정할 수 있다.

모듈은 아래처럼 존재한다.

분석 대상이 어떤 구조로 구성되어 있는지 보여주는 영역
💡 볼륨 Volume
한 저장장치 안에서 파일시스템이 구성된 독립적 논리 영역. Windows의 C:드라이브, D:드라이브
저장장치의 공간은 볼륨이라는 단위로 쪼개며, 각 볼륨 안에서 구조를 나누고 그 안에 내용을 저장.
분석 대상에는 3개의 볼륨이 존재하는데, vol1, vol3에는 Unallocated로 비할당 영역, 즉 비어있거나 사용되지 않는다.
vol2는 FAT32 파일 시스템을 사용하는 영역으로 사용자의 데이터가 들어있는 것으로 추측된다.
$OrphanFiles, $RECYCLER.BIN, $Unalloc 등 : 시스템이 자동 생성하거나 삭제된 파일과 관련된 디렉토리System Volume Information : 시스템 복원 관련 정보(보통 분석 제외)code.pptx등.. : 사용자 파일💡 비할당영역 Unallocated Space
- 시스템이 현재 사용중이 아니라고 표시한 공간. 파일이 이미 삭제되거나 포맷되어 더 이상 파일시스템에 의해 활성화되지 않은 영역
- 파일을 삭제한다면, 시스템이 파일에게 할당된 영역을 '사용가능'한 것으로 표시한다. 삭제된 파일의 데이터는 새파일이 해당 공간을 덮어쓸 때 까지 존재한다. -> 메타데이터가 남아있기 때문에 삭제된 파일 복구가 가능

필요한 파일들을 외부로 Export하는 기능이다.
항목을 우클릭하여 Extract File(s)를 클릭하면 추출할 수 있다.
Filename extension. 파일의 형식이나 종류를 구분하기 위해 . + 알파벳의 형식으로 표기하는 것
- 압축 :
.zip,.rar,.7z,.tar,.gz- 문서 :
.doc / .docx,.ppt / .pptx,.xls / .xlsx,.hwp / .hwpx- 그림 :
.png,.jpg / .jpeg,.gif- 오디오 :
.mp3,.wav- 비디오 :
.mp4,.avi- 텍스트 및 코드 :
.txt,.json,.xml,.js,.cpp- Windows 프로그램 :
.exe(응용프로그램. 실행파일),.dll(라이브러리),.lnk(바로가기),.tmp(임시파일)
확장자 맨 뒤에 'x'가 달린 형식을 Office Open XML 형식 이라고 한다. 줄여서 OOXML. ex).pptx
.zip형태로 압축된 XML 기반의 포맷이다.
XML은 데이터를 전공하고 저장하기 위한 Markup언어이다.
마크업 언어는 태그(< >)를 사용하여 문서나 데이터의 구조, 서식, 배치 등을 기술하는 언어이다.
XML, 이미지, 미디어파일 등이 .zip형태로 압축되어 만들어진 것이기에, .zip의 파일 구조와 동일하다.
-> OOXML 형식의 확장자를 가진 파일은 .zip파일로 변환이 가능하다. 여기서 zip파일로의 변환은 별도의 압축과정이 아닌, '이름바꾸기'로 가능하다는 것이다.
디지털 포렌식 수사관으로서 증거분석 만큼 중요한 일은 법정에서 사용할 수 있는 증거로 제시하는 것이다.
결정적인 단서일지라도, 단서를 획득하기까지의 과정과 근거가 명확히 설명되지 않으면 재판에서는 증거로서의 힘을 잃는다. 보고서 작성이 증거로서의 가치를 갖추게 하는 작업이다.
어떤 자료를 어디서 어떻게 확보했는지, 위/변조 가능성은 어떻게 통제했는지, 어떤 절차로 수행했고 동일한 결과가 재현되는지 등의 분석 결과를 법원이 이해할 수 있는 형태로 구조화하고 그에 대한 신뢰성을 뒷받침하는 근거를 제시한다.
양식은 다음의 링크에서 확인할 수 있다.
KCFPA
By Extention의 Images는 5개인데 By MIME Type의 image는 4개의 항목이 뜬다. 대조해 봤을때 signature(1).png 항목이 수상하다. Content Viewer에 뜨는 걸로는 잘 모르겠다.
삭제된 파일은 항상 수상하니까~ USB_OWNER.txt라는 문서가 있고 'The owner of this USB is Nando' 라는 내용이 담겨있다. 이 USB의 주인이 Nando라는 사람인가보다.
signature(1).png 파일을 HxD로 열어보면 헤더 시그니처가 PDF(25 50 44 46)인 것을 확인할 수 있다. 푸터는 .png의 푸터다. 헤더 시그니처의 값을 png시그니처로 수정을 해보자.
수정하고 저장해주자
이런 이미지가 나왔다. 전체 조직도는 아니지만 조직도의 일부를 발견한 듯 하다. 조직명은 'Blue Hack'이라고 한다.
signature(2).jpg 도 HxD로 열어보자. 정상적인 jpg의 헤더 시그니처다.
하지만 푸터 시그니처 ff d9 를 ctrl+F로 찾아보니 3개나 나온다. 파일 시그니처는 딱 한 번씩만 나와야 정상이다. 이 결과를 통해 이미지가 붙어있을 수 있다는 것을 추측할 수 있다.
ctrl+E또는 '편집 > 블록선택' 을 통해 원하는 오프셋의 범위를 지정할 수 있다.
2A9AB ~ 3A2FF, 3A300 ~ 491F6까지 잘라서 각각 새파일을 만들고 확장자를 지정해 저장해주면 아래와 같이 남은 조직도 조각을 얻을 수 있다.

파일의 이름과는 다르게, location_B2.png 파일에는 고양이 그림이, time.wav 에는 알 수 없는 치지직 소리가 담겨있다. 무언가 숨겨져 있을 것이라 의심할 수 있다.
먼저 png파일을 분석하기 위해 파일을 불러오면 위와 같은 화면이 나타난다.
Browse Bit Planes 버튼을 클릭하면 위와 같은 이미지로 바뀐다. RGB값의 정도를 변경하면서 사진을 확인할 수 있다.
이미지에 B2라는 것이 적혀있었으므로, RGB 값 변환 정도를 의미하는 게 아닐까 추측할 수 있다. Blue 2(Blue:채널, 2:2nd Bit)옵션이 있다. 서울역 6번 출구라는 장소 정보를 획득할 수 있다.
무차별 대입 Brute-Force
: 모든 조합을 하나씩 검사하는 방식. 시간이 오래 걸리지만, 결국 정답을 찾을 수 있으므로 실제 암호나 PW를 풀기 위한 공격 기법으로 자주 사용됨
Audacity에서 파일을 올린 후 스펙트로그램을 클릭하면 메시지를 확인할 수 있다. (왼쪽 영역 우클릭)
April Fools 만우절(4월1일)을 뜻한다. '만우절 자정'이 범행 시각이라고 예측할 수 있다.
code.pptx 에는 알 수 없는 슬라이드 하나만 덩그러니 있다.
CODE(()is()_in()) 이라는 함수 비스무리 한 것과 마침 3가지 색의 텍스트가 있다.
빨간 글자를 드래그해보면 튀어나온 부분이 있는 것을 확인할 수 있다.
따로 드래그하여 글자색과 크기를 키워주면 James라는 단어를 확인할 수 있다.
파란색은 Advanced Properties다. 고급속성을 왜 적어뒀을까?
파일 > 정보 > 속성을 클릭하여 고급속성 창으로 들어갈 수 있다.
메모칸에 Interested 라는 단어가 있다.
녹색은 글자가 아니라 이미지파일이다. ppt파일의 확장자가 pptx다. pptx는 OOXML로 zip형식으로 변환할 수 있다.
변환하여 압축을 해제하면 폴더는 위와 같이 구성된다. 아까 본 녹색 이미지의 위치는 /ppt/media에 있다.
이미지는 jpg로 적혀있지만 확장자가 png이다. 어딘가 거슬린다. HxD에 일단 넣어보자.
헤더는 png가 맞다.
푸터도 png가 맞다. 하지만 뒤에 무언가가 더 존재한다. FF D8 FF E0이 있는 것으로 보아 jpg이다. 푸터도 마저 찾아보자. 마지막에 있는 걸 보니 다른 건 뭐가 더 없는 듯 하다. ff d8 부터 복사해서 새파일로 만들고 .jpg파일로 지정해주면 Chemistry를 얻을 수 있다.
최종적으로 CODE는 James is Interested in Chemistry.