소개
디지털 포렌식의 세계에 오신 것을 환영합니다. 모든 조사에서 중요한 부분은 디지털 증거의 적절한 획득입니다. 이 과정은 원본 데이터를 변경하지 않고 저장 장치의 정확한 비트 단위 복사본을 만드는 것을 포함합니다. 또한 해당 복사본의 무결성을 보장하여 생성 이후 변경되지 않았음을 증명하는 것이 중요합니다.
이 실습에서는 주니어 포렌식 분석가의 역할을 수행하게 됩니다. 디지털 포렌식에서 가장 기본적인 두 가지 작업인 증거 획득 및 무결성 검증을 수행하기 위해 표준 Linux 명령줄 도구를 사용하는 방법을 배우게 됩니다. 디스크 이미지를 생성하기 위해 dd 명령을 사용하고 암호화 해시를 생성하여 증거가 건전함을 보장하기 위해 sha256sum을 사용합니다.
dd 를 사용하여 시뮬레이션 디스크 이미지 생성
이 단계에서는 시뮬레이션된 증거 파일에서 포렌식 이미지를 생성합니다. 디지털 포렌식에서 "이미지"는 소스 드라이브의 비트 단위 복사본입니다. 우리는 데이터 복사 및 변환을 위한 강력하고 다재다능한 유틸리티인 dd 명령을 사용합니다. 모든 데이터, 삭제된 파일 및 슬랙 공간을 포함하여 저장 장치의 정확한 복제본을 생성할 수 있기 때문에 포렌식에서 표준 도구입니다.
먼저 케이스 디렉토리로 이동하여 준비된 원본 증거 파일을 확인해 보겠습니다.
cd ~/project/forensics_case
ls -lh
original_evidence.dd라는 파일을 볼 수 있습니다.
-rw-rw-r-- 1 labex labex 11M Aug 5 15:28 original_evidence.dd
이제 dd를 사용하여 이 파일의 이미지를 생성해 보겠습니다. 이미지의 이름을 evidence_image.img로 지정합니다.
if=original_evidence.dd: 입력 파일을 지정합니다.of=evidence_image.img: 출력 파일을 지정합니다.bs=4096: 블록 크기를 4096 바이트로 설정합니다. 이는 일반적인 블록 크기이며 성능에 영향을 줄 수 있습니다.
다음 명령을 실행합니다.
dd if=original_evidence.dd of=evidence_image.img bs=4096
명령은 입력 및 출력 레코드 수와 복사된 총 바이트를 출력합니다.
2560+1 records in
2560+1 records out
10485809 bytes (10 MB, 10 MiB) copied, 0.0130138 s, 806 MB/s
이제 파일을 다시 나열하여 원본 파일과 새로 생성된 이미지를 모두 확인합니다.
ls -lh
evidence_image.img의 크기가 original_evidence.dd와 정확히 동일한 것을 볼 수 있으며, 이는 복사가 성공적으로 이루어졌다는 좋은 첫 번째 징후입니다.
-rw-rw-r-- 1 labex labex 11M Aug 5 15:43 evidence_image.img
-rw-rw-r-- 1 labex labex 11M Aug 5 15:28 original_evidence.dd
원본 및 이미지 파일의 해시 계산
이 단계에서는 방금 생성한 포렌식 이미지의 무결성을 검증합니다. 단순히 복사본이 있는 것만으로는 충분하지 않습니다. 복사본이 원본의 정확하고 변경되지 않은 복제본임을 증명할 수 있어야 합니다. 이를 위해 원본 파일과 이미지 모두에 대한 암호화 해시를 계산합니다.
해시 함수는 입력 (이 경우 파일의 내용) 을 받아 고정된 크기의 문자열인 "해시"를 생성합니다. 입력 파일의 아주 작은 변경이라도 완전히 다른 해시를 생성합니다. 원본 파일의 해시와 이미지 파일의 해시가 일치하면 복사본이 완벽하다는 것을 확신할 수 있습니다. SHA-256 해싱 알고리즘을 구현하는 sha256sum 명령을 사용합니다.
먼저 원본 증거 파일의 SHA256 해시를 계산합니다.
sha256sum original_evidence.dd
출력은 파일 이름 뒤에 긴 문자열 (해시) 이 표시됩니다.
55a290c58509790860da55a47256188865bdd8dd5cbf7cd5c4b95cb5264f109a original_evidence.dd
다음으로 생성한 이미지 파일의 해시를 계산합니다.
sha256sum evidence_image.img
55a290c58509790860da55a47256188865bdd8dd5cbf7cd5c4b95cb5264f109a evidence_image.img
두 해시를 비교합니다. 동일해야 합니다. 이것이 evidence_image.img가 original_evidence.dd의 정확하고 올바른 복사본임을 증명하는 수학적 증거입니다.
적절한 문서화를 위해 이러한 해시를 로그 파일에 저장하는 것이 가장 좋습니다. 지금 그렇게 하겠습니다.
sha256sum original_evidence.dd evidence_image.img > hashes.txt
이제 해시 로그 파일의 내용을 확인합니다.
cat hashes.txt
55a290c58509790860da55a47256188865bdd8dd5cbf7cd5c4b95cb5264f109a original_evidence.dd
55a290c58509790860da55a47256188865bdd8dd5cbf7cd5c4b95cb5264f109a evidence_image.img
이 hashes.txt 파일은 귀하의 사건에 대한 중요한 문서입니다.
타임스탬프와 같은 기본 파일 메타데이터 추출
이 단계에서는 파일의 메타데이터를 검사합니다. 메타데이터는 "데이터에 대한 데이터"이며 조사에서 중요한 맥락을 제공할 수 있습니다. 파일의 경우 생성 시간, 마지막 수정 시간, 마지막 액세스 시간과 같은 정보가 포함됩니다. 이러한 정보는 종종 MAC 시간 (Modify, Access, Change) 이라고 합니다.
stat 명령을 사용하여 이 상세 정보를 확인합니다. stat 명령은 파일 또는 파일 시스템 상태를 표시합니다.
먼저 original_evidence.dd 파일의 메타데이터를 살펴보겠습니다.
stat original_evidence.dd
출력은 많은 정보를 제공하지만 타임스탬프에 집중해 보겠습니다.
File: original_evidence.dd
Size: 10485809 Blocks: 20488 IO Block: 4096 regular file
Device: 7eh/126d Inode: 11210686 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 5000/ labex) Gid: ( 5000/ labex)
Access: 2025-08-05 15:43:57.680473291 +0800
Modify: 2025-08-05 15:28:59.196596566 +0800
Change: 2025-08-05 15:28:59.196596566 +0800
Birth: 2025-08-05 15:28:59.164595416 +0800
이제 evidence_image.img에 대해서도 동일하게 수행합니다.
stat evidence_image.img
File: evidence_image.img
Size: 10485809 Blocks: 20488 IO Block: 4096 regular file
Device: 7eh/126d Inode: 11206338 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 5000/ labex) Gid: ( 5000/ labex)
Access: 2025-08-05 15:44:14.001048192 +0800
Modify: 2025-08-05 15:43:57.692473714 +0800
Change: 2025-08-05 15:43:57.692473714 +0800
Birth: 2025-08-05 15:43:57.680473291 +0800
파일 내용이 동일하지만 (해시로 증명된 대로) 메타데이터는 그렇지 않다는 점에 주목하십시오. evidence_image.img의 타임스탬프는 원본 파일이 생성되거나 수정된 시간이 아니라 이미지가 생성된 시간을 반영합니다. 이는 예상된 동작이며 문서화하는 것이 중요합니다. 이는 조사관인 귀하가 획득을 수행한 시점을 보여줍니다.
획득한 증거에 대한 증거 보존 기록 생성
이 마지막 단계에서는 간단한 증거 보관 연속성 (Chain of Custody) 기록을 생성합니다. 증거 보관 연속성은 포렌식에서 가장 중요한 문서 중 하나입니다. 이는 증거의 압수, 보관, 통제, 이전, 분석 및 처분을 상세히 기록하는 연대순 기록입니다. 잘 유지된 증거 보관 연속성은 증거가 적절하게 처리되었고 변경되지 않았음을 증명합니다.
실제 증거 보관 연속성 양식은 더 복잡하지만, 간단한 텍스트 로그를 생성하여 우리의 행동을 문서화할 수 있습니다. 이 로그에는 증거 및 획득 프로세스에 대한 주요 정보가 포함되어야 합니다.
echo 명령을 사용하여 chain_of_custody.log라는 파일에 정보를 작성합니다. 몇 가지 정보를 수집해야 합니다.
- 사건 번호 (Case Number): 조사를 위한 고유 식별자입니다.
CASE-001을 사용합니다. - 항목 설명 (Item Description): 증거가 무엇인지 설명합니다.
- 획득 날짜/시간 (Date/Time of Acquisition):
date명령을 사용하여 얻을 수 있습니다. - 획득자 (Acquired by): 획득을 수행한 분석가입니다.
whoami명령의 출력을 사용합니다. - SHA256 해시 (SHA256 Hash): 획득한 이미지의 해시이며,
hashes.txt파일에서 가져옵니다.
로그를 생성해 보겠습니다. echo와 > 연산자를 사용하여 파일을 생성하고 첫 번째 줄을 추가한 다음, >>를 사용하여 후속 줄을 추가합니다. 먼저 이미지 파일의 해시를 가져옵니다.
IMAGE_HASH=$(grep 'evidence_image.img' hashes.txt | cut -d ' ' -f 1)
이제 필요한 모든 정보로 로그 파일을 생성합니다.
echo "--- CHAIN OF CUSTODY ---" > chain_of_custody.log
echo "Case Number: CASE-001" >> chain_of_custody.log
echo "------------------------" >> chain_of_custody.log
echo "Item ID: 1" >> chain_of_custody.log
echo "Description: Forensic image of original_evidence.dd" >> chain_of_custody.log
echo "Acquired By: $(whoami)" >> chain_of_custody.log
echo "Acquisition Date: $(date)" >> chain_of_custody.log
echo "SHA256 Hash: $IMAGE_HASH" >> chain_of_custody.log
echo "--- END OF LOG ---" >> chain_of_custody.log
마지막으로 완료된 증거 보관 연속성 로그를 표시합니다.
cat chain_of_custody.log
출력은 다음과 유사해야 합니다.
--- CHAIN OF CUSTODY ---
Case Number: CASE-001
------------------------
Item ID: 1
Description: Forensic image of original_evidence.dd
Acquired By: labex
Acquisition Date: Tue Aug 5 15:44:43 CST 2025
SHA256 Hash: 55a290c58509790860da55a47256188865bdd8dd5cbf7cd5c4b95cb5264f109a
--- END OF LOG ---
이제 귀하의 행동을 기록하고 증거의 무결성을 보존하는 기본적이지만 필수적인 문서 조각을 생성했습니다.
요약
이 실습에서는 디지털 포렌식 증거 획득 및 무결성 검증의 기초 단계를 성공적으로 수행했습니다.
다음과 같은 방법을 배웠습니다.
dd명령을 사용하여 데이터 소스의 비트 단위 포렌식 이미지를 생성하는 방법.sha256sum명령을 사용하여 암호화 해시를 계산하여 포렌식 이미지가 원본 증거의 정확한 복제본임을 증명하는 방법.stat명령을 사용하여 파일의 기록을 이해하는 데 중요한 타임스탬프와 같은 파일 메타데이터를 검사하는 방법.- 법적 절차에 필수적인 증거 처리 과정을 문서화하기 위한 기본 증거 보관 연속성 (Chain of Custody) 로그를 생성하는 방법.
이러한 기술은 건전한 디지털 포렌식 실무의 기반입니다. 증거가 올바르게 획득되고 무결성이 유지되도록 함으로써 성공적인 조사의 기반을 마련합니다.



