디지털 포렌식과 복원
지운 파일은 어디로 가고, 어떻게 되살리며, 정말로 없애려면 무엇을 해야 하는가. '이미지'라는 말의 여러 뜻에서 시작해 증거를 다루는 원칙, 디스크 이미징과 해시 검증, 파일 시스템과 삭제의 원리, 파일 카빙, SSD와 암호화 디스크, 메모리 포렌식, 디가우징을 포함한 완전 삭제까지 조사·복구·폐기의 눈으로 정리한다.
목차 (13)
이 노트는 내 기기에서 잃어버린 자료를 되찾는 일, 권한을 위임받은 조직의 사고 조사, 다 쓴 저장 매체의 올바른 폐기를 다룬다. 남의 기기나 계정을 몰래 들여다보는 방법, 조사를 피하려고 흔적을 지우는 방법은 싣지 않는다. 저장 장치의 종류와 동작은 저장장치 › 종류 노트에, 파일 시스템이 운영체제 안에서 하는 일은 운영체제 노트에, 디스크 암호화의 바탕은 암호학 노트에, 실행 파일 분석은 리버스 엔지니어링 노트에 있다.
"이미지"라는 말의 여러 뜻
복원 이야기를 하다 보면 '이미지'가 한 문장에 두세 번, 서로 다른 뜻으로 나온다. "디스크 이미지를 떠서 그 안에서 지워진 이미지를 찾았다"처럼. 영어 image는 원래 '본뜬 모습'이라는 뜻이라, 무엇을 본떴느냐에 따라 가리키는 대상이 달라진다.
- 그림 이미지: 화면이나 사진을 픽셀 격자로 적은 것(래스터)이다. 포렌식에서는 복원 대상인 경우가 많다. 픽셀과 압축의 원리는 그래픽 기초 노트에 있다.
- 디스크 이미지: 저장 장치의 섹터를 처음부터 끝까지 비트 하나 다르지 않게 복제한 파일이다. 파일뿐 아니라 비할당 영역, 파일 끝 여유 공간, 파티션 표까지 담기 때문에 지운 파일을 찾을 수 있다. 같은 '디스크 이미지'라도 ISO처럼 파일들을 모아 새로 만든 배포용 이미지는 원래 매체의 사본이 아니므로 지운 흔적이 없다.
- 메모리 이미지: 켜져 있는 컴퓨터의 RAM 내용을 통째로 뜬 것이다. 전원을 끄면 사라지는 정보가 들어 있다.
- 컨테이너 이미지: 프로그램과 그 실행 환경을 읽기 전용 레이어로 묶은 것이다(OCI 이미지 명세). 자세한 구조는 컨테이너 노트에 있다. 사고 조사에서는 실행 중 컨테이너가 이미지에서 무엇이 달라졌는지 비교하는 데 쓴다.
- 실행 이미지: 운영체제의 로더가 실행 파일을 메모리에 올린 모습이다. 윈도 문서는 실행 파일 자체를 image file이라 부르고, 적재될 기준 주소를 ImageBase라 한다(PE 형식).
- 가상 디스크·백업 이미지: 가상 머신의 디스크(VMDK, VHDX, qcow2)나 시스템 백업처럼 파일 시스템이 든 큰 파일이다. 빈 곳을 저장하지 않거나 스냅숏을 겹쳐 두는 형식이 많아, 증거로 쓸 때는 그 형식을 이해하는 도구로 열어야 한다.
게임의 "ROM 파일"(롬 덤프)도 같은 뜻의 이미지다. 카트리지 안 ROM 칩의 내용을 바이트 그대로 떠낸 것이다(기억장치의 종류 노트).
| 뜻 | 무엇을 담나 | 대표 형식 | 더 볼 곳 |
|---|---|---|---|
| 그림 이미지 | 픽셀 격자(래스터)나 도형 정보 | JPEG, PNG, HEIC, RAW | 이 노트 끝의 사진 복원 절 |
| 디스크 이미지 | 저장 장치의 섹터를 처음부터 끝까지 비트 그대로 | raw(dd), E01(EWF), AFF4 | 디스크 이미징 절 |
| 배포용 디스크 이미지 | 파일들로 새로 만든 파일 시스템 하나 | ISO(광디스크), DMG, IMG | 포렌식 사본이 아니다 |
| 메모리 이미지 | 실행 중 RAM의 내용 전체 | raw, lime, crash dump | 메모리 포렌식 절 |
| 컨테이너 이미지 | 읽기 전용 파일 시스템 레이어와 설정 | OCI 이미지(매니페스트+레이어) | 컨테이너 노트 |
| 실행 이미지 | 로더가 메모리에 올린 프로그램의 모습 | PE의 image file, ImageBase | 리버스 엔지니어링 노트 |
| 가상 디스크·백업 이미지 | 파일 시스템이 든 큰 파일, 빈 곳은 생략하기도 | VMDK, VHDX, qcow2, 시스템 백업 | 디스크 이미징 절 |
포렌식의 원칙
디지털 포렌식은 저장 장치와 메모리에서 사실을 찾아 다른 사람이 믿을 수 있게 보여 주는 일이다. 그래서 '무엇을 찾았나' 못지않게 '찾는 과정에서 아무것도 바꾸지 않았음'을 증명하는 것이 중요하다. 디지털 증거는 복사해도 원본과 구별되지 않고, 반대로 파일 하나를 여는 것만으로도 접근 시각 같은 메타데이터가 바뀔 수 있기 때문이다.
- 증거 보존: 원본에는 되도록 손대지 않는다. 켜진 시스템을 함부로 끄거나 재부팅하지 않고, 저장 장치는 쓰기 방지 장치를 거쳐 읽는다.
- 무결성: 수집할 때 해시를 계산해 기록하고, 분석 뒤 다시 계산해 같음을 보인다.
- 연계 보관(chain of custody): 증거가 누구 손에서 누구에게, 언제, 왜 넘어갔는지 끊김 없이 적는다.
- 휘발성 순서: 빨리 사라지는 것부터 수집한다. RFC 3227은 레지스터와 캐시, 메모리, 임시 파일 시스템, 디스크, 원격 로그, 물리 구성, 보관 매체의 순서를 예로 든다.
- 사본으로 분석: 분석은 검증한 사본으로 한다. 실수로 사본을 망가뜨려도 원본에서 다시 뜨면 된다.
조직의 사고 대응 안에서 포렌식을 어떻게 굴리는지는 NIST SP 800-86이 수집·검사·분석·보고의 네 단계로 정리한다. 도구가 정말 원본을 바꾸지 않는지, 이미지를 정확히 뜨는지는 NIST CFTT가 시험해 결과를 공개한다. 사고 대응 전반은 보안 › 사람과 운영 노트에 있다.
디스크 이미징
디스크 이미징은 저장 장치를 섹터 0부터 마지막 섹터까지 읽어 파일 하나(또는 여러 조각 파일)로 옮기는 일이다. 파일을 복사하는 것과 달리 비할당 영역과 파일 끝 여유 공간, 파티션 표, 숨은 영역까지 그대로 담는다.
- 쓰기 방지 장치(write blocker): 원본 디스크를 그냥 연결하면 운영체제가 자동으로 마운트하면서 기록을 남길 수 있다. 하드웨어 장치는 디스크와 컴퓨터 사이에서 쓰기 명령을 막고, 소프트웨어 방식은 운영체제 수준에서 막는다.
- 물리 이미지와 논리 이미지: 물리 이미지는 장치 전체를 섹터 단위로 뜨고, 논리 이미지는 파티션 하나나 고른 파일만 뜬다. 지운 파일을 찾으려면 물리 이미지가 필요하다. 반대로 서버처럼 끌 수 없거나 너무 큰 시스템은 필요한 부분만 논리적으로 수집하기도 한다.
- 해시 검증: 수집할 때 원본의 해시(관행상 MD5와 SHA-256을 함께)를 기록하고, 이미지의 해시와 맞춰 본다. 예시 디스크(32,768바이트)의 SHA-256은 원본과 이미지가
2e184eb518b8…로 같고, 한 비트를 바꾼 사본은4e58463f15c9…로 완전히 달라진다. 해시 함수의 성질은 암호학 노트에 있다. - 이미지 형식: raw(dd) 형식은 섹터를 그대로 이어 붙인 파일이라 어느 도구로도 열리지만, 해시와 수집 정보는 따로 보관해야 한다. E01(EWF)은 데이터를 조각마다 압축하고 사건 정보와 원본 해시를 함께 담는다(libewf). AFF4는 여러 증거와 메타데이터를 한 컨테이너에 담는 열린 형식이다.
- 희소·압축 이미지: 한 번도 쓰지 않은 영역은 0으로 차 있어 잘 압축된다. 앞 1/4만 데이터인 예시 디스크 32,768바이트는 deflate로 8,342바이트가 되었다. 다만 압축은 공간을 줄일 뿐 이미지에 담긴 정보는 그대로다.
- 시간: 이미징은 장치 전체를 읽으므로 크기에 비례한다. 1 TB를 초당 150 MB로 읽으면 약 1.9시간이 걸린다.
망가져 가는 디스크는 다르게 다룬다. 읽기 오류가 난 곳을 오래 붙잡고 재시도하면 헤드와 표면이 더 상해 성한 곳까지 잃을 수 있다. 그래서 GNU ddrescue 같은 도구는 성한 곳부터 빠르게 건지고, 건너뛴 곳을 나중에 채우고, 마지막에 오류 섹터만 다시 시도한다. 어느 섹터를 읽었는지는 지도 파일에 적어 두어 중간에 멈춰도 이어서 할 수 있다.
저장 장치와 파일 시스템 기초
저장 장치는 고정 크기의 섹터(전통적으로 512바이트, 요즘 디스크는 물리적으로 4096바이트도 많다)를 번호(LBA)로 읽고 쓴다. 맨 앞의 파티션 표가 디스크를 나눈다. 옛 MBR 방식은 섹터 0의 446번째 바이트부터 16바이트짜리 칸 4개에 파티션을 적고 끝에 55 AA 서명을 둔다. 섹터 번호가 32비트라 512바이트 섹터에서는 2 TiB까지만 다룬다. 지금 주로 쓰는 GPT는 LBA 1에 헤더를, 그 뒤에 보통 128칸짜리 파티션 표를 두고, 디스크 맨 끝에 백업 사본을 둔다. 앞쪽 표가 지워져도 뒤쪽 사본으로 파티션을 되살릴 수 있는 까닭이다.
파일 시스템은 섹터 여러 개를 묶은 클러스터(ext4에서는 블록, 흔히 4 KiB)를 할당 단위로 쓴다. 메타데이터를 두는 방식은 파일 시스템마다 다르다.
- FAT32·exFAT: 디렉터리 항목에 이름, 크기, 첫 클러스터를 적고, FAT라는 표가 '이 클러스터 다음은 몇 번'을 사슬로 잇는다. 메모리 카드와 USB 메모리가 주로 쓴다.
- NTFS: 모든 파일이 MFT(Master File Table)에 레코드(보통 1 KiB) 하나씩을 가진다. 레코드에 이름, 시각, 크기와 함께 데이터가 놓인 구간 목록(런 리스트)이 있고, 아주 작은 파일은 내용까지 레코드 안에 들어간다(resident).
- ext4: 파일마다 inode가 크기, 시각, 블록 위치(extent)를 갖고, 이름은 디렉터리 항목이 inode 번호와 잇는다.
클러스터 단위로 할당하므로 파일 끝에는 남는 공간이 생긴다. 이것이 slack(파일 끝 여유 공간)이다. 요즘 운영체제는 마지막 섹터의 남은 부분을 0으로 채우지만, 클러스터 안에서 아예 쓰지 않은 섹터는 손대지 않아 예전에 그 자리에 있던 파일의 조각이 남는다. 어느 파일에도 할당되지 않은 클러스터 전체는 비할당 영역이고, 지운 파일 대부분이 여기에 있다.
삭제는 어떻게 일어나나
파일을 지울 때 운영체제는 내용을 지우지 않는다. 내용을 모두 덮어쓰면 큰 파일 하나 지우는 데 몇 분이 걸릴 것이다. 대신 메타데이터에 '이 자리는 이제 비었다'고만 적는다.
- FAT: 디렉터리 항목 이름의 첫 바이트를
0xE5로 바꾸고, FAT에서 그 파일의 클러스터 사슬을 0(빈칸)으로 지운다. 첫 클러스터와 크기는 남는다. - NTFS: MFT 레코드의 '사용 중' 표시를 끄고, 클러스터 할당 비트맵(
$Bitmap)에서 해당 비트를 0으로 바꾼다. 레코드 자체는 새 파일이 재사용할 때까지 남는다. - ext4: inode를 비할당으로 돌리면서 블록 위치 정보까지 지우는 편이라 메타데이터로 되살리기 어렵다. 저널에 옛 inode 사본이 남아 있으면 단서가 된다.
- 휴지통: 탐색기나 Finder에서 '삭제'는 사실 휴지통 폴더로의 이동이다. 윈도는
$Recycle.Bin아래에 내용 파일과 원래 경로·삭제 시각을 적은 작은 파일을 함께 둔다. 휴지통을 비워야 위의 진짜 삭제가 일어난다. - 빠른 포맷과 전체 포맷: 빠른 포맷은 새 파일 시스템의 메타데이터만 새로 쓰므로 데이터 영역은 그대로이고, 카빙으로 상당 부분을 되찾을 수 있다. 윈도 비스타 이후의 전체 포맷은 볼륨 전체에 0을 쓰므로 HDD에서는 사실상 복원이 안 된다. SSD에서는 포맷이 TRIM을 함께 보내는 경우가 많아 빠른 포맷이라도 복원이 어렵다.
파일 시스템 기반 복원
메타데이터가 아직 남아 있다면 복원은 간단하다. 지운 표시가 된 레코드를 찾아 이름, 크기, 위치를 읽고, 그 자리의 데이터가 다른 파일에 덮이지 않았는지(할당 비트맵에서 지금 비어 있는지) 확인한 뒤 꺼내면 된다. 이름과 폴더 구조, 시각까지 돌아오므로 가장 좋은 결과다. The Sleuth Kit은 이미지에서 지운 항목까지 포함해 파일 목록을 보여 주고, 그 위의 Autopsy는 이를 화면으로 묶는다. 잃어버린 파티션 자체를 찾을 때는 TestDisk가 디스크를 훑어 파일 시스템의 부트 영역 같은 흔적으로 파티션을 찾아 표를 다시 쓴다.
조각화(fragmentation)는 파일이 연속된 클러스터에 들어가지 못하고 여러 곳에 나뉘어 저장되는 것이다. 디스크가 거의 찼거나, 파일이 조금씩 자라거나(로그, 메일함), 여러 파일을 동시에 쓰면 생긴다. 메타데이터가 위치를 알려 주면 조각화는 문제가 아니지만, 메타데이터가 없으면 다음 절의 카빙이 이 문제와 정면으로 부딪힌다.
파일 카빙
메타데이터가 사라졌거나(덮였거나 포맷했거나 파일 시스템이 망가졌을 때) 아예 읽을 수 없으면, 남은 것은 바이트뿐이다. 파일 카빙(file carving)은 파일 시스템 정보 없이 바이트의 내용만 보고 파일을 '깎아 내는' 기법이다(Forensics Wiki). 많은 파일 형식은 맨 앞에 정해진 바이트, 곧 시그니처(매직 넘버)를 두고, 일부는 끝을 알리는 꼬리말도 둔다.
| 형식 | 머리말 | 꼬리말 | 참고 |
|---|---|---|---|
| JPEG | ff d8 ff | ff d9 | SOI 표식 뒤 다음 표식의 ff, 끝은 EOI 표식 |
| PNG | 89 50 4e 47 0d 0a 1a 0a | 49 45 4e 44 ae 42 60 82 | 끝은 IEND 덩어리 이름과 그 CRC |
25 50 44 46 2d ("%PDF-") | 25 25 45 4f 46 ("%%EOF") | 고쳐 저장하면 %%EOF가 여러 번 나온다 | |
| ZIP | 50 4b 03 04 | 50 4b 05 06 | 끝 표식(EOCD) 뒤에 18바이트와 주석이 더 온다 |
가장 단순한 방법은 머리말을 찾아 꼬리말까지 잘라 내는 것이다. 꼬리말이 없는 형식은 최대 크기까지 자르거나, 형식 안에 적힌 길이 정보를 읽어 끝을 정한다. 잘라 낸 결과는 반드시 검증한다. JPEG라면 디코더가 끝까지 풀어내는지, PNG라면 덩어리마다 붙은 CRC가 맞는지, ZIP이라면 중앙 디렉터리가 맞는지 본다. 아래 그림은 이 과정을 작은 장난감 이미지로 보인다.
블록 10개(160바이트). 파일 시스템 정보 없이 블록 머리마다 시그니처를 찾는다.
문제는 조각화다. 대부분의 카빙 도구는 파일이 연속돼 있다고 가정하므로, 중간에 다른 파일의 블록이 끼면 깨진 파일이 나온다. Garfinkel의 조사에서는 중고 디스크의 JPEG 중 약 17%, 워드 문서 약 16%, 아웃룩 메일 파일은 최대 58%가 조각나 있었다(Forensics Wiki 정리). 그가 제안한 두 조각 틈 카빙(bifragment gap carving)은 파일이 두 조각으로 나뉘었다고 보고, 머리말과 꼬리말 사이에서 빠져야 할 블록 구간(틈)의 위치와 길이를 바꿔 가며 검증을 통과하는 조합을 찾는다(Garfinkel 2007). 그림에서는 시도 두 번 만에 b5·b6·b8 조합을 찾았다. 조각이 셋 이상이면 조합이 폭발적으로 늘어 블록마다 어느 파일에 속할지 통계로 추정하는 방법이 연구된다.
- 도구: PhotoRec은 파일 시스템을 무시하고 수백 가지 형식의 시그니처로 카빙하며, 장치를 읽기 전용으로 다룬다. Scalpel과 foremost는 머리말·꼬리말 규칙 파일로 동작한다. bulk_extractor는 파일 대신 이메일 주소, URL, 압축된 조각 같은 '특징'을 모든 바이트에서 뽑는다. Autopsy도 카빙 모듈을 품고 있다.
- 한계: 카빙으로 되찾은 파일에는 원래 이름, 폴더, 시각이 없다. 같은 사진이 썸네일, 캐시, 이전 저장본으로 여러 번 나오기도 하고, 무관한 바이트가 우연히 시그니처와 맞아 쓰레기 파일도 나온다. 그래서 결과는 해시로 중복을 지우고 검증으로 걸러 낸다.
- 원본이 아니라 이미지에서: 카빙은 디스크 전체를 여러 번 읽으므로 반드시 이미지에서 하고, 되찾은 파일은 복원하려는 그 장치가 아닌 다른 곳에 저장한다. 같은 장치에 쓰면 아직 못 찾은 파일을 덮는다.
SSD·플래시에서 복원이 어려운 이유
HDD는 운영체제가 정한 주소의 자리에 그대로 덮어쓴다. 플래시 메모리는 그렇게 못 한다. 쓰기는 페이지(수 KiB) 단위, 지우기는 수백 페이지를 묶은 블록 단위로만 되고, 지우지 않은 페이지에는 다시 쓸 수 없다. 그래서 SSD 안의 FTL(flash translation layer)은 쓸 때마다 빈 페이지를 골라 쓰고 '주소 7은 이제 이 페이지'라고 표를 고친다.
- TRIM: 파일을 지우면 운영체제가 SSD에 '이 주소들은 이제 안 쓴다'고 알린다(SATA의 TRIM, NVMe의 Deallocate). 많은 SSD는 TRIM된 주소를 읽으면 원래 내용 대신 0을 돌려준다.
- 가비지 컬렉션: 무효 페이지가 쌓인 블록에서 아직 유효한 페이지만 다른 곳으로 옮기고 블록을 통째로 지운다. 컴퓨터가 쉬는 동안에도 SSD 스스로 한다.
- 웨어 레벨링: 셀마다 쓸 수 있는 횟수가 정해져 있어, 쓰기를 고르게 나누려고 데이터를 계속 옮긴다. 그래서 반대로 옛 사본이 운영체제가 닿지 않는 예비 영역에 남을 수도 있다. 이것이 SSD를 '덮어쓰기'로 확실히 지울 수 없는 이유이기도 하다.
SSD 복원은 TRIM이 꺼져 있었거나(일부 외장 케이스, 오래된 운영체제), 지운 직후 바로 전원을 끊은 경우에나 기대할 수 있다. 칩을 떼어 직접 읽는 방법도 있지만 컨트롤러의 데이터 배치와 암호화를 풀어야 해서 전문 기관의 영역이다.
암호화된 디스크는 이야기가 또 다르다. BitLocker나 FileVault로 암호화한 볼륨의 이미지는 키 없이는 고르게 퍼진 의미 없는 바이트일 뿐이라 카빙도 통하지 않는다. 내 디스크를 복원하려면 복구 키를 먼저 챙겨야 하는 이유다. 복구 키를 계정이나 안전한 곳에 보관해 두지 않았다면, 디스크가 멀쩡해도 자료를 되찾을 길이 없다. 암호가 왜 그렇게 단단한지는 암호학 노트에 있다.
메모리 포렌식 개요
디스크에는 남지 않는 것이 많다. 지금 돌고 있는 프로세스, 열린 네트워크 연결, 실행할 때 넘긴 명령줄, 풀린 상태의 암호 키, 파일로 저장되지 않고 메모리에만 주입된 악성 코드가 그렇다. 그래서 사고 대응에서는 켜져 있는 시스템이라면 끄기 전에 메모리 이미지를 먼저 뜬다. 휘발성 순서에서 메모리가 디스크보다 앞에 있는 이유다.
메모리 분석의 대표 도구는 오픈 소스 Volatility 3다. 운영체제별 기호 정보를 이용해 메모리 이미지에서 프로세스 목록(windows.pslist), 네트워크 연결(windows.netscan), 명령줄(windows.cmdline) 같은 것을 플러그인으로 뽑는다. 메모리를 뜨는 도구도 실행되는 순간 메모리를 조금 바꾸므로, 무엇을 언제 실행했는지 기록해 두는 것이 원칙이다. 프로세스와 가상 메모리의 기초는 운영체제 노트에, 수상한 코드를 분석하는 흐름은 리버스 엔지니어링 노트에 있다. 기업의 침해 사고 대응에서는 메모리 이미지와 함께 EDR이 평소 남겨 둔 프로세스 실행·네트워크 연결 기록이 시간 순서를 되짚는 주된 재료가 된다(보안 관제).
완전 삭제와 폐기
복원의 반대편은 폐기다. 회사 노트북을 반납하거나 중고로 팔거나 고장 난 디스크를 버릴 때, 앞에서 본 복원 기법이 남의 손에서 내 자료를 되살리지 못하게 해야 한다. 미국 표준기술연구소의 NIST SP 800-88이 이 분야의 기준 문서로, 목표 수준을 세 단계로 나눈다.
- 덮어쓰기: 일반 쓰기 명령으로 모든 주소에 0이나 난수를 쓴다. 2014년 판(Rev. 1)은 자기 매체에서 고정 패턴으로 한 번 덮어쓰면 최신 실험실 기법으로도 대개 복원할 수 없다고 적고, Clear는 '최소 한 번'이면 된다고 했다. 흔히 듣는 '35번 덮어쓰기'는 1996년 Gutmann 논문에서 왔는데, 저자 스스로 맺음말에서 그것은 여러 옛 기록 방식을 한꺼번에 겨냥한 목록이라 어떤 드라이브에든 35번 모두는 의미가 없고, 요즘 드라이브는 난수로 한두 번 덮는 것이 할 수 있는 최선이라고 바로잡았다. 덮어쓰기의 진짜 약점은 횟수가 아니라 닿지 않는 곳이다. HDD가 재배치한 불량 섹터, SSD의 예비 영역은 일반 쓰기로 닿지 않는다.
- 장치 내장 명령: ATA Secure Erase와 Sanitize, NVMe의 Format(보안 삭제 설정)과 Sanitize는 드라이브 펌웨어가 사용자가 닿지 않는 영역까지 지우게 한다. SSD는 블록 삭제나 암호화 삭제로 동작한다. 제조사 도구나 표준 명령을 쓰고, 끝나면 일부를 읽어 확인한다.
- 암호화 삭제(cryptographic erase): 자체 암호화 드라이브(SED)나 기본 암호화된 스마트폰은 모든 데이터를 내부 키로 암호화해 저장한다. 그 키만 안전하게 폐기하고 새로 만들면 남은 데이터는 해독할 수 없는 바이트가 된다. 몇 초면 끝나지만, 암호화가 처음부터 제대로 켜져 있었고 키가 다른 곳에 남지 않았다는 믿음에 기대는 방법이다.
- 디가우징(degaussing): 자기 매체(HDD, 테이프)를 강한 자기장에 노출해 자화 방향을 흩뜨린다. 데이터와 함께 헤드가 위치를 찾는 데 쓰는 서보 정보까지 지워지므로 HDD는 다시 쓸 수 없게 된다. 전하로 저장하는 SSD·USB 메모리·SD 카드에는 효과가 없다. Rev. 2는 디가우저의 세기가 매체의 보자력에 못 미치면 드라이브는 망가져도 데이터는 남을 수 있다고 경고하고, 디가우징을 승인된 Destroy 기법으로 보지 않는다.
- 물리 파괴: 파쇄, 분쇄, 소각, 용해. 플래시 칩은 작아서 조각 하나에도 많은 데이터가 들어가므로 HDD보다 더 잘게 부숴야 한다. 직접 망치로 부수기보다 인증된 파쇄 업체에 맡기고 파기 증명서를 받는 것이 일반적이다.
아래 표는 Rev. 1의 매체별 표를 줄여 옮기고 Rev. 2의 경고를 더한 것이다. 실제 작업에서는 최신 판과 제조사 안내를 따른다.
| 매체 | Clear | Purge | Destroy | 주의 |
|---|---|---|---|---|
| HDD(자기 디스크) | 전체 덮어쓰기 1회 | Sanitize 덮어쓰기, 암호화 삭제, 인증된 디가우저 | 파쇄·분쇄·소각 | 재배치된 불량 섹터는 일반 쓰기로 닿지 않는다 |
| SATA·NVMe SSD | 전체 덮어쓰기(일부 셀은 남을 수 있음) | Sanitize 블록 삭제, 암호화 삭제 | 작은 조각으로 분쇄 | 디가우징은 효과 없음 |
| USB 메모리·SD 카드 | 전체 덮어쓰기 | 대개 표준 명령이 없음 | 분쇄·소각 | 민감한 자료였다면 파괴가 현실적 |
| 스마트폰 | 공장 초기화 | 기본 암호화된 기기의 초기화(키 폐기) | 분쇄 | 제조사 안내대로, 계정 연결부터 해제 |
| 자기 테이프 | 덮어쓰기 | 인증된 디가우저 | 소각·분쇄 | 보자력에 맞는 장비가 필요 |
| 광디스크(CD·DVD·BD) | 해당 없음 | 해당 없음 | 전용 파쇄기·분쇄 | Rev. 1 표는 Clear·Purge를 두지 않는다 |
어느 방법이든 마지막은 확인과 기록이다. NIST는 매체 종류와 일련번호, 쓴 방법과 도구, 확인 방법, 담당자를 남기라고 한다. 조직이라면 이것이 감사와 개인정보 보호 의무를 지켰다는 증거가 된다. 그리고 이 모든 것은 다 쓴 매체를 내보낼 때의 이야기다. 수사나 소송이 예상되는 상황에서 자료를 지우는 것은 폐기가 아니라 증거 인멸이 될 수 있다.
사진 등 그림 파일 복원의 특이점
복원 요청에서 가장 흔한 것이 사진이다. 다행히 사진은 카빙에 유리한 편이다. 카메라와 휴대폰 메모리 카드는 보통 FAT32나 exFAT이고 파일을 차례로 쓰므로 조각화가 적으며, JPEG는 머리말과 꼬리말이 분명하다. 대신 몇 가지 특이점이 있다.
- Exif 메타데이터: 촬영 시각, 카메라 기종, 설정, 때로는 GPS 위치가 APP1 구간에 들어 있다(CIPA Exif 표준). 카빙으로 이름과 시각을 잃은 사진도 Exif로 언제 찍었는지 알 수 있다. 반대로 사진을 공유할 때는 위치 정보가 따라가지 않게 지우는 습관이 필요하다.
- 썸네일 잔존: Exif 안의 썸네일은 본 그림과 따로 압축돼 있어, 본 그림이 덮여도 썸네일만 온전히 남거나, 편집 프로그램에 따라 본 그림을 잘라 냈는데 썸네일은 옛 모습으로 남는 일이 있다. 운영체제와 갤러리 앱의 썸네일 캐시도 원본이 지워진 뒤 그림의 흔적을 오래 품는다.
- 부분 손상: JPEG의 압축 데이터는 앞 블록에 기대어 풀리므로(ITU-T T.81), 중간 한 블록이 깨지거나 다른 파일 조각이 섞이면 그 아래가 통째로 어긋난다. 재시작 표식(RST)이 있는 파일은 다음 구간부터 다시 맞춰진다. 위쪽 절반만 살아난 사진은 조각화를 의심하고 틈 카빙을 시도해 볼 만하다.
- RAW·HEIC·동영상: 카메라 RAW는 대개 TIFF 구조라 머리말이 형식마다 다르고, HEIC와 MP4는 길이가 적힌 상자(box)를 이어 붙인 구조라 꼬리말 대신 길이로 끝을 찾는다. 큰 동영상은 조각나기 쉬워 카빙 성공률이 낮다.
실수로 지운 사진을 되찾는 순서를 정리하면 이렇다. 그 카드나 휴대폰에 아무것도 더 쓰지 않는다. 카드라면 리더기로 연결해 이미지부터 뜬다. 이미지에서 PhotoRec 같은 도구로 카빙하고, 결과는 다른 디스크에 저장한다. 휴대폰 내부 저장소는 기본 암호화와 TRIM 때문에 직접 복원이 거의 안 되므로, 클라우드 백업과 '최근 삭제' 앨범을 먼저 확인한다.
법과 윤리
복원 기술은 그 자체로 중립이지만, 다루는 것이 다른 사람의 사생활일 때가 많다. 내 기기, 또는 소유자에게 정식으로 위임받은 조사에서만 쓴다. 가족이나 동료의 휴대폰이라도 허락 없이 들여다보면 법적 문제가 될 수 있고, 남의 기기나 계정에 권한 없이 접근하는 일은 정보통신망법 같은 법으로 처벌된다. 조사 중 되찾은 자료에 제3자의 개인정보가 섞여 있다면 개인정보 보호법에 따라 목적 밖으로 쓰거나 퍼뜨리지 않는다.
나라와 상황마다 규정이 다르고 자주 바뀌므로 이 절은 방향만 잡는 개요이고 법률 조언이 아니다. 복원 업체에 저장 장치를 맡길 때도 업체가 자료를 어떻게 다루고 언제 지우는지 확인한다.
핵심 자료
표준 문서와 도구, 이 분야의 출발점이 된 논문을 모았다. 요지는 직접 정리한 한 줄이다.
| 자료 | 종류 | 한 줄 요지 |
|---|---|---|
| NIST SP 800-88 Rev. 2 | 완전 삭제 지침 | 2025년 개정판. Clear·Purge·Destroy 구분과 삭제 프로그램 운영, 검증과 기록을 다룬다. |
| RFC 3227 | 증거 수집 지침 | 휘발성 순서, 피해야 할 일, 연계 보관을 정리한 2002년 지침이다. |
| NIST SP 800-86 | 사고 대응 지침 | 수집·검사·분석·보고의 네 단계로 포렌식을 사고 대응에 넣는 방법이다. |
| NIST CFTT | 도구 시험 | 쓰기 방지 장치, 이미징·카빙 도구가 명세대로 동작하는지 시험한 결과를 공개한다. |
| The Sleuth Kit | 분석 도구 | 디스크 이미지의 파티션과 파일 시스템을 읽는 오픈 소스 라이브러리와 명령줄 도구다. |
| Autopsy | 분석 도구 | The Sleuth Kit 위에 만든 그래픽 분석 환경이다. 타임라인, 키워드 검색, 카빙을 묶었다. |
| PhotoRec · TestDisk | 복원 도구 | PhotoRec은 파일 시스템을 무시하고 시그니처로 카빙하고, TestDisk는 잃어버린 파티션을 찾는다. |
| Scalpel | 카빙 도구 | 머리말·꼬리말 규칙 파일로 카빙하는 오픈 소스 도구다. |
| bulk_extractor | 카빙 도구 | 파일 시스템을 읽지 않고 모든 바이트에서 이메일·URL·압축된 조각 같은 특징을 뽑는다. |
| Volatility 3 | 메모리 분석 | 메모리 이미지에서 프로세스·연결·모듈 목록을 다시 세우는 오픈 소스 프레임워크다. |
| libewf | 이미지 형식 | E01(EWF) 이미지를 읽고 쓰는 라이브러리와 형식 문서다. |
| AFF4 Standard | 이미지 형식 | 여러 증거와 메타데이터를 한 컨테이너에 담는 열린 이미지 형식의 명세다. |
| Forensics Wiki — File carving | 개념 정리 | 카빙의 분류(머리말·꼬리말, 검증, 조각 복원)와 조각화 문제를 정리한 위키 문서다. |
| Garfinkel (2007) | 논문 | Carving contiguous and fragmented files with fast object validation. 두 조각 틈 카빙을 제안했다. |
| Gutmann (1996) | 논문 | Secure Deletion of Data from Magnetic and Solid-State Memory. 35회 덮어쓰기의 출처이자, 맺음말에서 그 오해를 바로잡는다. |
| File Signatures (SEARCH) | 시그니처 표 | 파일 형식별 머리말·꼬리말 바이트를 모은 표다. 원래 Gary Kessler가 관리했다. |
- NIST SP 800-88 Rev. 2 — 완전 삭제 지침
- RFC 3227 — 증거 수집 지침
- NIST SP 800-86 — 사고 대응 지침
- NIST CFTT — 도구 시험
- The Sleuth Kit — 분석 도구
- Autopsy — 분석 도구
- PhotoRec · TestDisk — 복원 도구
- Scalpel — 카빙 도구
- bulk_extractor — 카빙 도구
- Volatility 3 — 메모리 분석
- libewf — 이미지 형식
- AFF4 Standard — 이미지 형식
- Forensics Wiki — File carving — 개념 정리
- Garfinkel (2007) — 논문
- Gutmann (1996) — 논문
- File Signatures (SEARCH) — 시그니처 표
- NIST SP 800-88 Rev. 1 PDF (2014, 매체별 표)
- NIST SP 800-88 Rev. 2 PDF
- TestDisk
- Volatility Foundation
- OCI Image Format Specification
- PE Format (Microsoft Learn)
- QEMU qcow2 형식
- Master File Table (Microsoft Learn)
- ext4 Data Structures and Algorithms (커널 문서)
- BitLocker 개요 (Microsoft Learn)
- FileVault 볼륨 암호화 (Apple 플랫폼 보안)
- ITU-T T.81 — JPEG 명세
- PNG 명세 (W3C)
- ZIP APPNOTE (PKWARE)
- CIPA 표준 목록 — Exif(DC-008)
- 국가법령정보센터 — 개인정보 보호법
- 국가법령정보센터 — 정보통신망법