슈포스/디지털 포렌식 개론

[6장]디지털 증거 수집 기술

haerim9.9 2024. 11. 5. 17:28

 

이 글은 아래의 책 5장을 읽고 공부 목적으로 작성됨.

이상진, 「디지털 포렌식 개론」, 이룬, 2015

 


목차

더보기

1. 조사 대상 매체 파악

2. 활성 시스템 조사

3. 저장 매체 이미징

4. 임베디드 시스템 증거 확보


원칙

  • 원본을 있는 그대로 보존하면서 수집할 것, 원본을 보존할 수 없는 경우는 최대한 원본과 유사한 형태로 수집할 것
  • 관련 내역을 모두 기록할 것

6장에서는 이러한 원칙을 유지하면서 상황에 맞게 디지털 증거를 수집하는 절차와 기술에 대해 살펴본다.

 


1. 조사 대상 매체 파악

1) 조사 대상 시스템 확보

컴퓨터 시스템 확보

증거가 될 수 있는 모든 것을 확보한다. 특히 하드 디스크 드라이브와 같은 저장 매체에는 주요 증거물이 저장되어 있을 가능성이 크다. 하드 디스크 드라이브는 이미징(Imaging) 과정을 거쳐 사본 획득 후 증거물을 분석한다.

 

기타 디지털 기기 수집

컴퓨터 이외의 디지털 기기에도 데이터가 존재한다. 디지털 기기의 조사는 필수적이며, 중요한 증거가 저장되었을 가능성이 있으므로 디지털 데이터의 저장 위치/종류/추출 방법 등을 파악하고 있어야 한다.

예시 : 프린터, PDA 및 휴대폰, 전자수첩, 차량 항법 장치(Navigation), 콘솔 게임기 등

 

휴대용 저장 매체 확보

휴대용 저장 매체들은 점차 소형화되면서 수색이 어려워지고 있다. 저장 용량이 커지면서 실제 데이터를 휴대용 저장 매체에 보관하는 경향이 나타나고 있다.

예시 : USB 플래시 드라이브, CD, DVD, 외장형 하드 디스크 드라이브, 메모리카드, 테이프 등

 

2. 활성 시스템 조사

활성 시스템 : 정상적으로 가동 중인 시스템

 

활성 시스템 조사 시 고려 사항

  • 휘발성 데이터 수집 필요성
  • 활성 시스템에서 비휘발성 데이터의 수집 필요성
  • 수집한 비휘발성 데이터와 원본의 동일성
  • 수집 도구를 사용함으로써 시스템에 영향을 주는 요인

신뢰성 있는 도구를 사용해야 하며, 휘발성이 높은 데이터부터 우선적으로 수집해야 한다.

 

1) 물리 메모리 수집

물리 메모리는 시스템이 활성 상태이면 지속적으로 변화하므로 가장 먼저 수집해야 한다.

소프트웨어 방식으로 수집 시, 수집 도구가 물리 메모리에 삽입되어야 하므로 물리 메모리가 훼손될 수밖에 없다. 

 

① IEEE-1394 인터페이스 : 영상 기기에 사용되는 시리얼 버스(=직렬 통신 : 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 하나의 비트 단위로 데이터를 전송하는 과정)

IEEE-1394는 휘발성 데이터의 훼손을 최소화 하는 방법이다. 운영체제 종류와 구동 상태에 관계없이 IEEE-1394 장치가 활성화 되어 있으면 해당 장치를 연결해 명령을 전달할 수 있다.

더보기

IEEE-1394를 통해 시스템에 직접 접근할 수 있는 이유는 DMA(Direct Memory Access)를 사용하기 때문이다. IEEE-1394는 DMA에 직접 내릴 수 있는 장치이기 때문에 CPU 제어 없이 시스템의 물리 메모리 영역에 읽기 및 쓰기 명령을 내릴 수 있다.

*DMA : 메인보드에 장착되어 있는 장치, CPU 처리 속도와 입/출력 장치의 속도 차이를 개선하기 위해 사용된다.

 

② DumpIt : 윈도우용 물리 메모리 수집 도구 중 하나

물리 메모리의 Raw 포맷 이미지(dd)만 수집할 수 있다. 메모리 이미지 파일의 저장경로는 현재 DumpIt 프로그램이 있는 위치에 저장된다.

 

2) 휘발성 데이터

휘발성 데이터는 빠르고 정확하게 확보하는 것이 중요하다. 수집 도구는 Command Line Interface의 사용을 권장한다. 조사 도구를 구동하면 물리 메모리부터 수집하는 것이 원칙이다.

 

① 프로세스 정보

현재 구동되고 있는 시스템의 메모리 상태를 파악하기 위해 프로세스 정보를 수집해야 한다.

수집할 세부정보 : 프로세스 실행 파일의 전체 경로, 프로세스를 실행한 계정, 부모/자식 프로세스 관계, 프로세스가 로드한 동적 라이브러리(Dynamic link library), 사용 중인 네트워크 연결정보, 프로세스 실행 시작 시간 등

 

-윈도우 프로세스

수집 도구 또는 명령어 설명
tasklist (콘솔, XP 시스템 명령어) 시스템의 프로세스 상태를 파악
pslist 실행 중인 프로세스의 자세한 정보를 보여줌
listdlls 프로세스에 종속되거나 로드된 DLL 목록을 확인
handle 프로세스가 사용하고 있는 모든 (파일과 소켓에 대한) handle을 확인
ProcessExplorer (GUI) 프로세스 관리자 프로그램으로 각 프로세스의 구동여부와 해당 프로세스의 구동여부와 해당 프로세스가 사용하는 DLL 정보, 메모리 매핑 등 다양한 정보 제공

 

-리눅스 프로세스

수집 도구 또는 명령어 설명
ps 실행 중인 프로세스 정보
ex) ps -aux, ps -elf
top 실시간 프로세스 상태 모니터링
PID, 실행되고 있는 프로세스, 가상주소 등의 정보 열람
pstree 실행 중인 프로세스 정보를 트리 형식으로 제공
ex) pstree -Inpu
cat /proc/[pod]/[항목] cmdline : 모든 명령행 인자값 확인
cwd : 현재 작업 디렉터리의 심볼릭 링크
environ : 프로세스의 환경변수
exe : 실행 파일의 심볼릭 링크
fd : 서브 디렉터리
status : 프로세스 상태정보(이름, 상태, PID, 부모 PID 등)
ex) cat /proc/100/status
pmap 프로세스의 메모리상 주소공간정보 확인

 

 

② 시스템 정보 : 시간 정보, 구동 시간, 계정 정보, 디스크 정보

-윈도우 시스템

수집 항목 수집 방법
시스템 시간 정보 date 명령어를 사용 (date /t)
현재 로그온 계정 net users (netbios 명령어)
net sessions (netbios 명령어)
psloggedon
디스크 정보 di (Windows Supported Tools)

 

-리눅스 시스템

수집 항목 수집 방법
시스템 관련 정보 date : 현재시간, uptime : 활성시간 정보
uname : 현재 작동 중인 시스템 정보 출력
사용자 관련 정보 who : 현재 로그인 상태인 사용자 관련 정보 확인
last : 가장 최근 로그인한 사용자 정보
w : 각 사용자가 진행 중인 작업 확인
운영체제 정보 /proc/version : 커널 버전 정보, /proc/cpuinfo : CPU 정보
/proc/uptime : 활성시간 정보, /proc/stat : 시스템 상태
/proc/meminfo : 메모리 사용량, /proc/loadavg : 평균 부하량

 

 

③ 네트워크 정보

현재 네트워크 연결 및 사용정보를 바탕으로 비인가 접속을 판별하기 위해서 수집해야 한다. 허가되지 않은 사용 정보를 수집해야 한다.

 

-윈도우 시스템의 네트워크

수집 항목 수집 방법
현재 네트워크 연결 정보 netstat -ano
열린 네트워크 포트와 연결된 프로세스 정보 Fport
공유 파일 net file
openfiles
psFile

 

-리눅스 시스템의 네트워크

수집 항목 수집 방법
IP 설정 정보 ifconfig -a
라우팅 테이블 정보 netstat -n 혹은 route
ARP 정보 arp -a
TCP, UDP 상태정보 netstat -anp
포트 별 프로세스 정보 netstat -lnp
네임서버 파일 /etc/hosts
Listen 포트 관련 프로세스 lsof I grep LISTEN, lsof I grep [pid]

 

 

3) 비휘발성 데이터

비휘발성 데이터의 수집은 쓰기 방지 장치를 부착하는 것이 원칙이다.

 

4) 활성 시스템 데이터 수집 도구

운영체제의 종류 별로 수집에 사용할 수 있는 도구 및 시스템 API(Application Programming Interface)가 다르기 때문에 이러한 특성을 고려하여 도구가 개발되어야 한다.

시스템 상태의 변경을 최소화하기 위해 CLI(Command Line Interface)의 사용을 권장한다. 

 

윈도우 활성 시스템 데이터 수집 도구 : CLDFS(Command line Live Data Forensics)

CLDFS는 CLI 기반으로 동작하는 프로그램이다. 수집할 데이터 옵션을 설정하면 csv 파일이 출력된다. 해당 파일을 CLDFS_viewer를 통해 결과를 확인한다.

 

<CLDFS에서 추출 가능한 정보>

기본 정보 - 케이스 정보, 추출 로그

시스템 정보 - OS 정보, HDD 정보, 파티션 정보, IP 정보

사용자 계정 정보 - 모든 사용자, 로그온 된 사용자

프로세스 정보 - 실행중인 프로세스, 시스템에 로드된 DLL

네트워크 정보 - 네트워크 인터페이스(NIC), 라우팅 테이블, ARP 테이블, TCP/IP 포트, 같은 도메인 내의 지역 시스템(NET VIEW), 공유 리소스 정보(NET SHARE), 원격 유저 정보, 원격 리소스(NET USE)

 

3. 저장 매체 이미징

하드 디스크 드라이브를 수집하면 원본 보존과 추후 분석을 위해서 모든 데이터를 있는 그대로 복제한다.

 

1) 디스크 이미지

원본 디스크에 저장되어 있는 정보의 모든 비트 스트림을 포함하는 사본 파일을 의미한다.

 

디스크 이미징 도구

소프트웨어 : dd(UNIX), dfcldd(미국방부 컴퓨터 포렌식 연구소 버전), ENCase(Guidance Software)

하드웨어 : DIBS Rapid Action Imaging Device, Solo-3

하드웨어 기반 이미지 생성 도구는 신속한 이미징 작업이 필요한 경우 효과적이다.

 

2) 디스크 이미지 생성

디스크 이미징은 원본 데이터에 대한 손상을 방지하는 작업 과정이다.

 

조사 대상 시스템에서 Bootable CD를 활용한 디스크 이미징

조사 대상 시스템으로부터 저장 매체를 분리하지 않은 상태에서 이미징하려면 Bootable CD를 활용한다. 기존 시스템에 부착되어 있던 저장 매체를 읽기 전용으로 마운트할 수 있어 데이터의 무결성을 손상시키지 않고 이미징할 수 있다.

예시 : Helix, BackTrack, Knoppix 등

 

*Bootable CD : 물리 메모리만을 이용해 시스템을 부팅할 수 있게 운영체제를 저장한 CD

 

② 조사용 시스템에서의 디스크 이미징

조사 대상 시스템에서 저장 매체를 분리한 후에는 쓰기 방지 장치(Write blocker)와 함께 이미징 기능을 갖춘 전용 도구를 사용한다.

 

윈도우 : EnCase, FTK Imager 등

리눅스 : dd계열의 도구

 

4. 임베디드 시스템 증거 확보

1) 휴대폰

① 물리적 수집 방법 : bit-by-bit로 복사하는 방식으로 완벽히 동일한 사본을 얻을 수 있다.

  • JTAG(Joint Test Action Group)을 이용한 물리적 증거 수집
    JTAG : 하드웨어 보드 프로그램에 어떤 부분에서 문제가 발생했는지 알아내기 쉽게 하드웨어 보드에 핀을 내장하도록 한 것이 JTAG이다. JTAG는 산업 표준으로써 모든 임베디드 기기에 적용할 수 있다. 그러나 대부분의 제조사는 JTAG 인터페이스를 차단하거나 숨긴다.
  • 플래시 메모리 분리 후 물리적 증거 수집
    임베디드 기기가 고장, 침수 등의 문제로 인해 다른 방법이 이용이 불가능할 때 사용해야 한다. 접착된 부분의 핀이 일부 손상되어 있을 가능성이 높으므로, 손상된 핀을 복원하는 리볼링 과정을 거친다. 

② 논리적 증거 수집 방법 : 메타데이터와 미할당 영역을 제외한 파일 또는 파일의 컨텐츠를 복사하는 방법이다.

  • 파일 단위 접근 : 임베디드 기기와 PC를 USB 케이블을 이용하여 연결한다.
    PC에서 정보 요청 -> 디렉토리 접근 권한 획득 -> 파일의 목록 받음 -> 해당 파일 접근 권한 획득 -> 파일의 내용 전송받음
  • 컨텐츠 단위 접근 : PC-Link 소프트웨어를 이용한다. 모든 기기에 적용할 수 있으나 획득할 수 있는 데이터가 임베디드 기기의 화면으로 확인할 수 있는 데이터로, 매우 제한적이다.
  • 백업 소프트웨어를 통한 접근 : 임베디드 기기는 백업 또는 동기화 기능을 제공한다. 이를 이용하면 임베디드 기기에 저장되어 있는 데이터를 수집할 수 있다. PC에 저장된 데이터가 반대로 임베디드 기기에 전송되지 않도록 주의해야 한다.

2) 스마트폰

① 물리적 수집 방법

  • JTAG을 이용한 물리적 증거 수집 : 메인보드에 JTAG 인터페이스가 존재해야 한다.
    -장점 : 무결성 유지 가능 / 수집 대상 데이터를 선택적으로 수집 가능
    -단점 : 디버깅 모드 진입에 실패해서 정상 부팅되면 무결성이 훼손될 수 있음 / 시간이 많이 소요됨
  • 플래시 메모리 분리 후 물리적 증거 수집
    -장점 : 무결성 유지 가능 / 모든 임베디드 기기에서 사용 가능
    -단점 : 플래시 메모리의 재결합이 어려움 / 전체 영역에 대해서만 수집 가능 -> 특정 데이터만 수집하는 것이 불가능
  • AP(Application Processor) 명령어를 사용한 물리적 증거 수집
    -장점 : 무결성 유지 가능 / JTAG보다 범용적 / JTAG보다 전송 속도가 빠름
    -단점 : 스마트폰마다 AP 종류가 다양함 / 새 AP 출시 -> 새로운 스마트폰에 대한 대응이 어려움
  • Rooting (Jailbreaking) 방법을 사용한 물리적 증거 수집 : 스마트폰 운영체제의 관리자 권한을 획득하여 수집하는 방법이다.
    -장점 : 전송 속도가 빠름 / 데이터의 선택적 수집이 가능 / 재부팅하면 자동으로 관리자 권한을 상실 -> UnRooting 작업 불필요
    -단점 : 안드로이드 exploit, 아이폰 Jailbreak 사용 시, 사용자 데이터가 존재하는 파티션이 약간 훼손됨 / 안드로이드 리커버리 Rooting은 원본 리커버리 커널로 원상 복구를 수행해야 함 / 아이폰에서 Jailbreaking 수행시 내부 데이터의 초기화

② 논리적 수집 방법

  • Rooting (Jailbreaking) 방법을 사용한 파일 단위 수집 : 물리적 수집 방법의 장단점과 동일하다.
  • 운영체제가 제공하는 기능을 사용한 파일 또는 컨텐츠 단위 수집
    -장점 : Rooting을 수행하거나 exploit 등을 삽입하지 않고 수행 가능 / 미할당 영역에서 삭제된 데이터 복구 가능
    -단점 : 데이터 훼손이 발생될 수 있음 / CP 사용하는 경우, 수집할 수 있는 데이터가 제한적 / CP 사용하는 경우 삭제된 데이터 복구 불가능
  • 백업 소프트웨어를 통한 파일 또는 컨텐츠 단위 수집 : 삼성 - Kies 사용 / LG - LG PC Suite, LG Mobile Sync for Android / 아이폰 - 아이튠즈(iTunes)