짱짱해커가 되고 싶은 나

01. 디지털 포렌식 본문

forensic

01. 디지털 포렌식

동로시 2021. 1. 3. 21:15

디지털 포렌식: 정식 수색 기관, 연계보관성, 수학을 통한 검증, 검증된 툴의 사용, 반복가능성, 보고 그리고 가능하다면 전문가의 설명 등을 통해 디지털 증거와 관련하여 컴퓨터 공학과 수사 절차를 법적인 목적에 적용하는 것

- Ken, Zatryko

 

로카르드의 교환법칙(Locard's exchange principle)은 물리적 세계에서 범죄자가 범죄현장을 드나들 때 범죄자는 흔적을 남기고 나갈 때 무엇을 가지고 간다는 것이다. 이 법칙은 디지털에도 적용된다. ex)로그 파일, 레지스트리 키

 

디지털 포렌식 조사관은 전문가 증인 자격으로 법정에 스는데 이 때 전문가란 법적으로는 판사가 잘 알지 못하는 증거를 이해하거나 해석을 하는 데 있어 도움을 줄 수 있는 사람으로 비전문가와 달리 자신의 의견을 제시할 수 있다. 따라서 조사관들은 아무런 편견 없이 증거를 바라보고 효율적으로 의사소통할 수 있어야한다.

 

디지털 포렌식은 범죄 수사를 넘어서서 민사소송, 사기업에도 적용되고 데이터를 저장할 수 있는 모든 저장 기기를 대상으로 수행할 수 있다. 그리고 이런 디지털 포렌식이 올바르게 적용 될 수 있도로 표준과 모범 사례를 수립하는 데 도움을 주는 기관들도 여럿 존재한다. 한 예로 ASCLD/LAB에서는 디지털 포렌식의 황금 표준이라고 불리는 인가랩이다. ASCLD/LAB의 메뉴얼의 모든 표준과 요구사항을 충족시키면 인가를 받을 수 있는데 이 표준이 모든 측면을 엄격하게 다루고 있다.

 

디지털 포렌식을 하기 위해서는 컴퓨터의 내부 환경에 대해 깊게 이해하고 있어야 한다.

컴퓨터 속 데이터는 0과 1의 바이너리로만 표시되어 있다.

예를 들어 0x20은 space다. 이처럼 바이너리를 사람들이 이해할 수 있는 문자로 변환하기 위해서는 인코딩이  필요하다. 인코딩 방법은 ASCII(영어)와 Unicode(전 세계 모든 언어)가 존재한다. 

디지털 포렌식에서는 인코딩 된 데이터보다 바이너리 수준의 데이터를 이용해서 증거를 검색, 추출, 해석하는 경우가 많다. 이런 상황을 잘 보여주는 예로 파일 카빙이 있다.

 

파일 카빙(file carving): 할당되지 않은 공간처럼 특정한 형태가 없는 데이터를 바탕으로 파일의 위치를 파악하고 복원하는 것이다. 즉, 파일 시스템의 도움을 받지 않고 바이너리 데이터를 이용해서 디스크의 비할당 영역에 파일을 복구하는 것이다. 파일이 분할 되어 저장되어 있을 경우에는 비연속적 카빙을 사용하고 그렇지 않은 경우에는 연속적인 카빙을 사용한다. 파일 카빙에는 시그니처 기반 카빙, 램 슬랙 카빙, 파일 구조체 카빙(파일 크기 획득 기반 방법의 카빙, 파일 구조 검증 방법 기반의 카빙) 등이 있다.

 

* 시그니처 기반 카빙

: 각 파일의 포맷 별로 존재하는 파일 시그니처를 이용하는 방법이다. 시그니처에는 Header 시그니처와 Footer 시그니처가 존재한다. 만약 헤더 시그니처를 찾고 그 이후 footer 시그니처를 찾았다면 그 사이의 데이터는 해당 파일의 내용일 것이다. 파일을 식별할 때 확장자가 아닌 시그니처를 이용해 분석하는 이유는 확장자는 쉽게 변경해서 데이터를 숨길 수 있기 때문이다. 파일 확장자를 변경했어도 파일 헤더에서 확인한 시그니처는 원래 확장자를 그대로 갖고 있기 때문에 시그니처를 이용해 식별한다.

파일 포맷 Header 시그니처 Footer 시그니처
JPEG FF D8 FF D9
GIF 47 49 46 38 37 61 (GIF87a) 00 3B
47 49 46 38 39 61 (GIF89a)
PNG 89 50 4E 47 0D 0A 1A 0A 49 45 4E 44 AE 42 60 92
PDF 25 50 44 46 2D 31 2E (PDF-1.) 25 25 45 4F 46 (%%EOF)
HTML <HTML or <html </HTML> or </html>
<!DOCTYPE HTML or <!doctype html

 

* 램 슬랙 카빙

: 파일의 내용을 디스크에 기록할 때 512의 배수가 되지 않아 생긴 0x00 영역을 램 슬랙이라고 하는데 대부분 Footer 시그니처 이후에 램 슬랙이 존재해서 이를 바탕으로 Footer 시그니처와 램 슬랙을 확인할 수 있다.

 

* 파일 구조체 카빙

: 파일의 미리보기를 제공하는 파일에는 파일 포맷에 썸네일을 포함한다. 실제 파일 포멧과 썸네일의 파일 포멧은 동일한 구조로 이루어져 있다. 파일 포멧에 Header 시그니처는 있는데 Footer는 없을 경우, 파일 포맷 내부에 존재하는 여러 시그니처를 보고 구조를 분석하는 기법이다. 

- 파일 크기 획득 방법 기반 카빙:  파일의 구조체 안에 파일의 크기를 알려주는 부분이 존재하는데 이를 획득해서 카빙하는 방법이다. 예를 들어 exe나 dll 파일 같은 경우 PE파일 안에 파일 크기가 들어가 있다. 따라서 PE 헤더를 찾아서 파일 크기를 획득 할 수 있다. ex) BMP : 42 4D (BM), EXE, DLL : 4D 5A (PE)

- 파일 구조 검증 방법 기반 카빙: 문서 파일처럼 수정이 잦은 경우 데이터 표현을 위해 고유한 계층 구조를 사용한다. 이 방법은 이런 계층 구조를 검증해서 카빙하는 방식이다. 특히 마이크로소프트 복합 문서나 압축 파일 같은 경우 계층 구조마다 고유한 시그니처가 존재한다. 따라서 파일의 계층 구조를 확인해 가며 옳바른 구조라면 정상적인 파일이라고 판단할 수 있다.

파일 포맷 헤더 시그니처 푸터 시그니처
ZIP 50 4B 03 04 50 4B 05 06
ALZ 41 4C 5A 01 43 4C 5A 02
RAR 52 61 72 21 1A 07 3D 78 00 40 07 00
Compound D0 CF 11 E0 A1 B1 1A E1  

 

데이터는 전자기, 극미한 전자 드랜지스터(플래시), 빛의 반사로 쓰이고 컴퓨터 내의 저장장치는 서로 다른 목적으로 사용된다. 자기 디스크는 자기로 데이터를 읽고 쓰고 엑추어터 암이 풀래터 위를 이동하면서 헤드가 데이터를 읽고 쓴다.

플래시 메모리는 전하를 이용해 데이터를 쓰는데 비휘발성이다. 플래시 메모리는 USB, 메모리카드, SSD 등에 사용된다. 광 저장장치는 광 디스크에 있는 반사 물질과 레이저를 이용해 데이터를 읽고 쓴다. 컴퓨터는 반사된 빛의 변화를 이용해 데이터로 변환하고 대표적으로 CD, DVD, Blu-ray 디스크 등이 있다.

 

RAM은 휘발성 메모리로 현재 CPU에 작업 중인 모든 데이터를 저장하고 이 데이터는 RAM에서 CPU로 전송되어 실행된다. 기존의 포렌식 분석은 대부분 비휘발성인 하드 드라이브를 중심으로 분석했는데 반드시 하드 드라이브에 모든 정보가 있는 것은 아니다. 만약 로그 기능을 사용하고 있지 않다면 증거는 컴퓨터가 실행 중일 때 RAM에서만 저장되어 있기 때문이다. RAM의 공간은 한정적이기 때문에 page를 swap하며 사용한다. 따라서 페이지 파일에는 드라이브에 없는 파일이나 파일 조각이 있을 수 있어서 매우 중요하다. 

 

컴퓨터 환경에는 독립형, 네트워크, 메인 프레임, 클라우드 등 크게 4가지로 분류 할 수 있다.

독립형 컴퓨터는다른 컴퓨터에 연결되지 않은 컴퓨터로 증거가 있을 만한 장소가 한정적이어서 조사하기 가장 용이하다.  네트워크 컴퓨터는 네트워크를 통해 많은 컴퓨터에 연결되고 연결될 수 있는 컴퓨터다. 요새는 파일이나 흔적이 여러 서버나 다른 컴퓨터에 분산되어 있어 포렌식 공식에 변수가 생길 수 있다. 메인프레임 시스템은 모든 컴퓨터 능력을 한 위치에 집중시긴 시스템으로 프로세서, 저장장치, 프로그램 모두가 한 곳에 집중되어 통제된다. 클라우드는 3가지 서비스를 제공하는데 IaaS(하드웨어), PaaS(환경), SaaS(소프트웨어)가 있다. 클라우드에서 제공되는 가상 환경은 매우 복잡하고 데이터의 국경을 허물어 포렌식에 있어 커다란 도전이다.

 

데이터는 활성 데이터, 숨은 데이터, 아카이브 데이터 3가지로 분류할 수 있다.

 

활성 데이터: 컴퓨터에서 항상 사용하는 데이터다. OS는 이런 파일을 보고 추적한다. 이런 파일은 드라이브에 할당된 공간이 있는 파일들이다.

- 실행 중인 프로세스, 연결 중인 프로세스, 현재 로그인 사용자, 현재 시스템 리로스 상황, 현재 전송 중인 패킷 등

 

숨은 데이터: 이미 삭제되었거나 아니면 부분적으로 덮어써진 데이터다. OS에서 더 이상 관리하지 않기 때문에 일반 사용자에게 보이지 않는다. 이런 데이터를 수집하기 위해서는 bit stream이나 포렌식 이미지가 필요하다.

 

아카이브 데이터: 백업 데이터라고도 불리며 DVD, 백업 테이프 등 여러 가지 형태로 존재한다. 백업 매체의 종류와 연대에 따라 아카이브 데이터를 확보하는 것이 간단할 수도 복잡할 수도 있다. 만약에 백업 데이터가 더 이상 생산되지 않는 sw/hw로 만들어졌다면 데이터를 복원하기 위해서는 이 테이프를 생산할 때 사용했던 것과 동일한 툴이 필요하다. 이처럼 더 이상 생산되지 않는 오래된 버전의 sw로 만들어졌거나, 사라졌을 경우 레거시 데이터(legacy data)라고 한다.

 

파일 시스템은 드라이브의 사용 가능한 공간과 각 파일의 위치 등을 관리한다. 

- FAT, NTFS, HFS+

slack space는 저장매체의 물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비 공간이다. 파일을 삭제해도 해당 섹터에는 그 파일이 그대로 사용되고 있기 때문에 이런 공간은 복원할 수 있으며 실제 사용할 수 있는 정보가 있을 수도 있다.

 

섹터: 컴퓨터가 데이터를 저장할 때 사용할 수 있는 최소 단위(512byte)

cluster: OS는 데이터를 클러스터 단위로 저장한다.

 

 

'forensic' 카테고리의 다른 글

03. 디지털 증거  (0) 2021.01.17
02. 포렌식 랩과 툴  (0) 2021.01.13
[NONamed Wargame] 입사 테스트 [2] writeup  (0) 2021.01.07
[NONamed Wargame] MagicIMAGE writeup  (0) 2021.01.05
[Suninatas] 21 writeup  (0) 2021.01.04
Comments