[Digital Forensic] 메모리 분석 (1)

 

메모리 분석

메모리 분석에 관련된 이야기들은 대부분 윈도우와 관련되어 있으며, 각 OS별로 메모리를 사용하고 관리하는 데 차이가 있기 때문에 당연히 메모리 구조에서도 차이가 있기 마련이다.

 

그렇기 때문에 모든 OS 메모리 구조를 다루지는 못하여 제일 우리 일상 생활에서 밀접한 Windows OS에 관한 메모리 분석을 다루며, 포렌식에서 빼놓을 수 없는 부분이 바로 메모리 분석이다.

 

메모리에는 프로세스가 사용한 데이터, 프로세스 자체, 웹 브라우저를 통해 전송된 정보, 복호화 된 데이터 등이 기록되어 있다.

 

메모리 분석 연구는 파일 시스템 분석이나 레지스트리 분석과 비교하였을 때는 아직 부족하지만 현재 수준에서도 시스템의 많은 정보를 얻을 수 있는 부분이 메모리이기 때문에 메모리에 대해 반드시 알고 시스템 정보를 찾고 찾은 정보를 사용할 줄 알아야 한다.


(1) 메모리 분석의 관심 & 장점과 단점

1-1. 하드디스크에서 실행되지 않고 메모리 상에서 바로 실행되는 악성코드의 존재

  • 이러한 경우 아무리 하드 디스크를 이미지 파일로 이미징하여 분석한다고 하더라고 악성 파일의 실행 원본 파일이나 흔적을 하드 디스크에서 찾을 수 없으므로, 당연히 실행되고 있는 메모리 영역을 분석해야 함

 

1-2. 사용자 응용 프로그램 프라이버시 보호 기능 강화

  • 요즘 암호화나 개인정보보호 프로그램이 일반화되어 많이 사용되고 있으며, 이러한 프로그램들은 일반 사용자의 개인 파일들을 보호하기도 하지만 일반 사용자 시스템에 침투한 악성코드 조차도 보호하는 경우가 발생

  • 이러한 일이 발생하는 이유는 당연히 개인정보보호 프로그램이 악성코드 판별 기능이 없기 때문

  • 이러한 상황에서 악성코드를 분석하려면 메모리 영역을 분석해야만 하며, 실행 파일들은 암호화가 되어 있거나 보호를 받고 있다고 하더라도 메모리 영역에서는 복호화가 되어 실행되기 때문에 원본 파일 그대로를 메모리 영역에서 얻을 수 있음

 

1-3. 안티 포렌식 기술의 확산 > 하드 드라이브에 존재하고 있는 데이터의 무결성 불완전

  • 안티 포렌식 기술은 좋다고 할 수도 있고 나쁘다고 할 수도 있음

  • 예로, 루트킷의 경우는 나쁘다고 할 수 있지만 데이터 완전 삭제 기술 같은 경우에는 일반 사용자에게 개인정보 파일들을 유출되지 못하도록 하는 기술이기 때문에 좋다고 할 수도 있음

  • 루트킷이나 데이터 완전 삭제 경우 하드 디스크의 데이터 무결성(원본)을 저해하는 행위이기 때문에 무결성이 저해되기 전 데이터는 하드 디스크가 아니면 메모리에서 밖에 복구하지 못함

  • 하지만 메모리에 있는 데이터도 완전한 데이터가 아니며, 아예 얻지 못하는 것보다는 일부라도 얻어 분석에 도움이 되는 것이 좋기 때문에 메모리 영역을 분석해 데이터를 추출하는 것 

 

위와 같은 이유로 포렌식 관점에서의 메모리 분석 분야가 관심받기 시작했지만 아직까지는 발전 단계가 낮으며, 메모리 분석에 관심을 가진 시간이 짧을 뿐더러 메모리 분석을 하기 위한 선행 지식이 너무 방대하고 메모리 구조는 OS마다 다르고 세부적으로 패치에 따라 달라질 수 있기 때문에 아직까지 발전 단계가 낮은 것이다.

 

메모리 분석과 Live Response를 비교해 봤을 때, 메모리 분석 과정이 Live Response 과정에 포함될 수 있으며 메모리 분석을 통해 얻는 정보는 대부분 Live Response에 정보와 일치하기 때문이다.

 

하지만 메모리 분석을 위한 선행 지식이나 기술들을 봤을 때, Live Response 과정에 메모리 분석을 넣는 것은 조사관 판단에 달려 있으며, 얻어지는 정보가 비슷하거나 일치한다고 하여 메모리 분석을 Live Response로 대체하는 것은 불가능하며, 반대 경우도 마찬가지이다. (이론적 가능 > 현실적 불가능)

 

 

Live Response는 메모리 분석과 비교하였을 때 다음과 같은 단점을 지닌다.

 

1) 도구 신뢰성 저하

  • Live Response 도구들은 대부분 윈도우에서 기본적으로 제공하는 API에 의존

  • 그렇기에 악의적인 해커나 악성 프로그램이 윈도우 DLL 파일을 변조하거나 교체한다면, 그 DLL을 사용하는 Live Response 도구 결과는 신뢰성이 떨어짐 

 

2) 분석 반복성 없음

  • Live Response 정보는 모두 휘발성으로 시간이 지나고 다시 같은 방법으로 수집하여도 데이터가 일치한다고 보장하지 못함

  • 이로 인해 Live Response 데이터가 합법적 절차를 통해 수집되었다는 증명을 못할 수도 있음

  • 객관적 증명을 하려면 동일 환경에서 동일한 수행이나 입력이 되었을 때, 동일한 결과가 나와야 하지만 Live Response는 그렇지 못함

 

3) 분석 다양성 없음

  • 조사관은 하나의 휘발성 정보 수집을 위해 여러 방법을 사용해야 함

  • 이유는 휘발성 정보를 증거나 참고용으로 제출 > 상대편에서 반박 시, 객관적 증명을 하기 위해 다른 방법으로 조사하여 동일한 결과값을 얻은 증거를 제출해야 함

  • Live Response는 수행 과정에서는 여러 방법을 사용해 정보를 수집 가능하지만, 그 조사가 끝나고 나면 다시 정보를 수집할 방법이 없음 (물론 반박을 대비해 여러 방법을 사용하여 정보를 수집하면 좋지만, 경과 시간 등을 비교해 봤을 때 좋은 방법은 아님)

 

위와 같이 Live Response는 단점을 가지고 있는 반면 메모리 분석은 Live Response에 대해 다음과 같은 장점을 가진다.

 

1) 도구 신뢰성 보장

  • 메모리 분석을 위해 사용되는 API는 윈도우 프로세스/메모리에 관련된 API가 아닌, 파일 시스템 API이기 때문에 API 변조와 상괸이 없어 얻어진 결과에 대해 신뢰성을 가질 수 있음 

 

2) 분석 반복성 보장

  • 메모리 분석 대상은 변하지 않는 것이기 때문에 언제든지 조사를 반복 가능

  • Live Response와 달리 언제든지 동일한 입력 값을 통해 동일한 결과를 얻을 수 있음 

 

3) 분석 다양성 보장

  • 메모리 분석 대상은 조사가 끝나도 존재 (Live Response는 존재 X)

  • 언제든지 다른 조사 방법이나 새로운 조사 방법을 적용하여 조사를 다시 할 수 있음

 

결론으로는, 한쪽으로 치우치는 분석을 시도하기 보다는 서로 성호작용하는 분석을 수행하는 것이 가장 중요하다.


(2) 메모리 분석에 앞서 알아두어야 할 사항

2-1. 메모리 덤프 개요

  • 메모리 분석에 앞서 해야 할 작업은 메모리 내용이 가장 순수한(변조되지 않은) 메모리 덤프 파일을 시스템으로부터 얻는 것

  • 메모리 덤프 방법으로는 하드웨어 이용 방법, 소프트웨어 도구 이용 방법, OS 크래시 덤프 이용 방법, 하이버네이션 파일 이용 방법이 있음

  • 각 방법은 장점, 단점이 있어 조사관 판단에 따라 상황에 맞게 적절하게 사용해야 함

 

2-2. 하드웨어 이용 메모리 덤프

  • 하드웨어 덤프 수행 시, DMA 기능을 이용해 OS 특성에 상관없이 메모리 덤프를 수행 가능

  • 응용 프로그램을 실행하는 것이 아니기에, 시스템 메모리에 어떤 영향도 미치지 않아 소프트웨어 방식보다는 조금 더 정확한 메모리 덤프 가능

  • 하지만, 메모리 덤프 과정의 안전성이 검증되지 않아 시스템에 크래시를 일으킬 수 있고, 최신 마더보드 경우 MIMO 기능을 가지는 데 악의적 사용자가 이 기능을 이용해 메모리 덤프 과정을 방해할 가능성 있음 

 

DMA (Direct Memory Access) : CPU 도움없이 메모리 접근 방법으로 입출력장치들이 많이 쓰며, 이 기능으로 입출력장치와 CPU 속도차 개선 (메모리 맵핑(Mapping)은 OS가 아닌 하드웨어에서 이루어 짐)

 

MIMO (Memory Mapped I/O) : I/O를 하기 위한 특별 장치없이 레지스터 설정만으로 메모리와 맵핑하여 입출력이 가능하게 하는 기능

 

 

하드웨어를 이용한 메모리 덤프 방법 종류는 다음과 같다.

 

1) PCI 장치

  • 일반적으로 잘 알려진 메모리 덤프 방법

  • Tribble이라는 기기를 사용하며, 이 장치는 실험적인 장치이므로 구매 불가능

 

2) FireWire 장치

  • IEEE 1394 인터페이스 사용

  • 윈도우에서도 사용 가능하며, 대상 컴퓨터에 무언가를 설치할 필요가 없고 PCI 장치 방법보다 간편

 

하드웨어를 이용한 방법은 실습할 방법이 없으므로 설명만으로 공부해야 한다.

 

직접 실습해보기 위해서는 개인적으로 하드웨어 장비 구비하거나 회사를 통해 하드웨어 장비를 구해 실습해보는 방법 밖에 없다.

 

 

2-3. 소프트웨어 이용 메모리 덤프

  • 즉석에서 메모리 덤프를 만들 수 있다는 가장 좋은 점을 가짐

  • 하드웨어 방법보다는 소프트웨어 방법이 좀 더 많이 쓰임

  • 단점으로는 메모리 덤프용 소프트웨어들은 대부분 OS의 API에 의존하며, 악의적인 사용자가 API를 조작하게 되면 메모리 덤프 결과도 조작되는 셈

 

하드웨어를 이용한 메모리 덤프는 얻어지는 결과에 대해서는 좋지만 그 과정에 제약 사항이 많고 검증되지 않은 기법들이어서 보통 소프트웨어를 통한 메모리 덤프를 수행한다.

 

 

소프트웨어를 통한 메모리 덤프에는 다음과 같은 방법들이 존재한다.

 

1) DD

  • 유닉스 도구 중 하나로 GNU License로 배포

  • 사용법이 간단하며, 결과물이 좋음

  • 유닉스 도구를 기초로 하여 윈도우에서도 적용 가능한 윈도우 버전도 존재

  • 사용자가 접근 가능한 모든 데이터를 바이트 또는 블록 단위로 복사

  • 복사하려는 영역을 OS가 인식하지 못하거나, 사용자 권한이 낮아 접근하지 못하는 영역이거나, 지원하는 API가 없는 경우를 제외하고는 모든 시스템 데이터 덤프 가능

  • 커널 메모리 경우 /dev/kmem 장치를 입력으로 덤프하고, 시스템 메모리 경우 /dev/mem 장치를 입력하여 덤프를 시도

  • 포맷 이미지는 Raw 데이터 포맷 이미지라고 하여 대부분 포렌식 도구에서 이 포맷을 지원

  • 장점으로는 데이터 형태를 그대로 덤프한다는 것이고, 단점은 부가 정보가 제공되지 않아 분석하는 데 시간이 오래 걸림

 

2) KntDD

  • 메모리 덤프를 네트워크로 전송하는 기능을 포함

  • 메모리 덤프를 윈도우 크래시 덤프 포맷으로 변환하는 기능을 가짐

  • 이 도구는 보안 회사, 정부 기관에서만 제공되어 일반인들은 사용할 수 없음

 

3) MDD

  • 메모리 덤프만을 위해 만들어진 도구

  • Windows XP SP2 이후 버전에서도 문제없이 수행 가능하지만 업데이트가 되지 않음

 

4) WIN32(64)DD

  • 이 도구 역시 MDD처럼 메모리 덤프 전용으로 개발된 도구

  • 많은 기능을 포함하며, 지원하는 윈도우 버전이 많음

  • 기본적으로 Raw 포맷을 지원하며, 추가로 크래시 포맷과 하이버네이션 포맷을 지원

  • 네트워크 전송 기능도 갖고 있으며, 64bit 시스템도 지원하고 4GB 이상의 메모리 덤프도 지원

 

5) FastDD

  • win32dd보다 속도가 빠름

  • 32bit 시스템과 64bit 시스템 모두 지원

 

6) 기타 상용 도구

  • FastDump : CLI 기반 도구

  • Pro Discover IR : 메모리 덤프 전용이 아닌 침해사고용으로 개발된 도구

  • EnCase Enterprise : Guidance software사에서 제작

  • AccessData Enterprise : 기업 환경에서의 네트워크에 있는 컴퓨터 메모리 덤프를 수집하는 데 목적

 

대부분 상용 도구들은 메모리 덤프 전용이 아닌 복합적 기능이 구현된 도구들이다.

 

그렇기에 가격도 비싸 개인적으로 메모리 덤프만 할 것이라면 굳이 구입할 필요는 없다.

 

 

2-4. OS Crash Dump

  • OS가 시스템에 일어난 오류 문제 원인을 찾기 위해 생성하는 메모리 덤프

  • 크래시 덤프는 Windows Server 2008 R2 이상 버전에서는 무조건 생성되며, Windows 7 이상 버전에서는 해당 로컬 컴퓨터가 Active Directory 도메인에 가입되어 있으면 무조건 생성

  • HKEY_LOCAL_MACHINE의 AlwaysKeepMemorydump의 값이 1이면 Windows Server 2008 R2가 아니거나 도메인에 가입되어 있지 않아도 크래시 덤프는 무조건 생성

 

크래시 덤프 생성 과정

  • BSOD (BlueScreen Of Death)이 발생하면 OS는 오류 문제를 찾기 위해 메모리를 덤프하여 파일로 저장

  • 일반적으로 XP 경우, 디스크의 2GB의 여유 저장 공간이 있으면 크래시 덤프 파일을 생성 (메모리 크기 + 300MB 크기로 생성)

  • Win 7의 경우 디스크의 25GB 이상 여유 공간이 있어야만 크래시 덤프 파일 생성

  • 크래시 덤프 파일을 생성할 때 조건으로 디스크 여유 공간이 25GB 이상인지 확인

  • 이는 이전 Windows 버전에서 디스크 용량이 충분하지 못한 상황에서 메모리 덤프를 막아 시스템 리소스 낭비를 줄이자는 의도

 

일반적으로 크래시 덤프 파일은 다음 과정을 통해 생성

 

1. SystemRoot에 존재하는 PageFile.sys에 메모리를 기록

 

2. PageFile.sys의 내용을 이용 > 크래시 덤프 파일 생성

 

 

PageFile.sys : SystemRoot에 존재하는 시스템 파일로, 메모리에서 swap되는 page들을 저장하는 파일 (휘발성 성격의 메모리 데이터를 비휘발성 성격으로 갖고 있는 파일)

 

크래시 덤프는 메모리 덤프 방법 중 가장 순수한 메모리 덤프 파일을 얻을 수 있는 방법이다.

 

하지만 메모리 덤프 파일을 얻기 위한 방법이 복잡하고 메모리 전체 덤프를 언제나 얻을 수 있는 것은 아니다.

 

또 OS마다 크래시 덤프 발생 조건이 다르게 설정되어 있어 분석 대상 시스템에 크래시 덤프 파일 생성 설정이 되어 있지 않다면 해당 방법을 사용하기가 매우 모호하다.

 

 

크래시 덤프 종류

 

1) 작은 메모리 덤프

  • 오류가 발생한 원인을 밝히기 위한 최소한의 정보만을 기록

  • 부트 볼륨에 최소한 2MB 이상 페이지 파일이 있어야 함

 

2) 커널 메모리 덤프

  • 할당되지 않은 메모리 영역과 사용자 모드로 동작 중인 프로그램들에 메모리 영역을 제외한 커널 모드와 HAL (Hardware Abstraction Layer) 메모리 영역만을 기록

  • 포렌식 관점에서는 사용자 모드 프로그램의 메모리 영역을 기록하지 않아 중요하진 않지만, 오류 수정하는데 적합한 덤프

 

3) 전체 메모리 덤프

  • 메모리 전체를 기록

  • 부트 볼륨에 전체 메모리 크기에 1MB를 더한 만큼의 페이지 파일이 있어야 함

  • 32bit 환경에서는 2GB 이상의 메모리는 덤프할 수 없음

 

 

2-5. 하이버네이션 (Hibernation)

  • 시스템에 일정 시간이 지나도 아무런 입력이 없을 때 OS가 모든 메모리 데이터를 하드 드라이브에 기록

  • 시스템 구동에 필요한 최소 전원 공급만을 남겨둔 채 필요 없는 전원을 차단하는 기능

  • 기능 목적은 호율적 전원 관리

  • Sleep mode와 유사하지만, 몇 가지 차이가 있음

 

슬립 모드와 하이버네이션 차이

  • 슬립 모드(Sleep mode)는 메모리의 데이터가 손실되지 않도록 계속 전원을 공급하는 방식

  • 하이버네이션은 메모리의 데이터를 하드 드라이브에 기록하고 시스템 구동에 필요하지 않은 전원들을 모두 차단

 

결과적으로 슬립 모드와 하이버네이션 차이점은 메모리의 데이터를 유지하는 방식과 전원 차단에 있다.

 

이로 인해 슬립 모드의 경우에는 다시 시스템을 원상태로 복구하는 시간이 짧은 반면에 하이버네이션은 슬립 모드보다 오래 걸린다.

 

 

하이버네이션 장점 

  • OS에서 제공하는 기능으로 메모리 덤프 파일을 만들기 때문에 추가적인 프로그램이나 장비가 필요하지 않음

  • OS 기능을 이용하기 때문에 크래시 덤프와 견줄 정도의 순수한 메모리 덤프 파일을 얻을 수 있음

 

하이버네이션 단점

  • 하이버네이션 파일이 존재한다 하더라도 침해사고 발생 전에 생긴 파일일 수도 있음

  • 메모리를 전체적으로 덤프하는 것도 아니며, OS뿐만이 아닌 마더보드도 이 기능을 지원해야 함

  • 제일 중요한 점은 일반 PC 경우에 이 기능이 기본 설정으로 비활성화 되어 있음

 

하이버네이션 기능 수행 조건

  • CMOS와 OS 설정에서 하이버네이션 설정이 되어 있어야 함

  • 시스템에 얼마간의 입력이 없어야 하며, 서비스나 프로세스에 의해 입력이 있어서도 안 됨

 

하이버네이션으로 인해 생성되는 파일은 hiberfil.sys이며, pagefile.sys와 같은 위치에 저장되어 있다.

 

참고로 하이버네이션 기능을 사용하여 메모리 분석을 하면 좋지만, 필요성을 느끼지 못한다면 굳이 할 필요는 없다.


(3) 가상 메모리 구조

3-1. 가상 메모리 정의

  • 물리적 실체를 가지고 있지 않은 메모리

  • OS가 만들어낸 논리적인 형태의 메모리를 뜻함

  • 가상 메모리에 저장된 데이터라고 해서 가상으로 저장할 수는 없으며, 가상 메모리의 데이터는 물리 메모리나 하드 드라이브에 저장

  • 가상 메모리는 VAS라는 것을 OS로부터 할당 받음

 

VAS (Virtual Address Space) : 가상 메모리에 할당되는 주소를 뜻하며, 물리 메모리의 주소와는 다른 주소

 

 

32bit 시스템 경우, 4GB 크기의 가상 메모리 영역을 할당 받으며, 64bit 시스템의 경우에는 이론적으로 17EB의 가상 메모리 영역을 할당 받지만, 64bit의 경우 할당 받는 영역의 크기가 너무 크고 비효율적이어서 8TB 정도로 제한을 한다.

 

가상 메모리 크기는 시스템의 bit에 따라 정해져 있으며 프로세스 크기에 따라 변하지 않고 무조건적으로 정해진 크기가 할당된다.

 

또한 프로세스는 자신에게 할당된 가상 메모리의 영역을 자신의 것으로만 생각하고 단편화 되지 않은 연속적 주소 공간으로 인식한다.

 

그렇기 때문에 시스템에 상관없이 매번 고정 크기의 가상 메모리를 할당받아 프로세스는 시스템마다 다른 메모리 크기의 한계를 느끼지 않고 실행될 수 있는 것이다.

 

메모리 덤프를 하면 사용자 영역에 있는 데이터들은 불완전 형태로 덤프되는 경우가 있고 커널 영역은 온전 형태로 덤프 되는 경우가 있는데 이러한 경우는 가상 메모리와 사용자 영역에서 데이터가 물리적 메모리와 페이지 파일을 오고 가기 때문이다.

 

프로세스가 사용하는 데이터가 오랫동안 사용되지 않을 경우 페이지 파일에 저장해두고 필요할 경우 다시 물리적 메모리에 적재하여 사용하는 방식 때문에 불완전하게 덤프 되는 것이다.

 

커널 영역의 경우 시스템에 필요한 데이터들이고, 자주 사용되는 것들이기 때문에 페이지 파일에 저장하지 않고 물리 메모리에 저장되기 때문에 온전하게 덤프 되는 것이다.

 

가상 메모리와 물리적 메모리 주소는 맵핑이 되어 있는데 가상 메모리 어떤 데이터의 주소가 다른 프로세스의 가상 메모리의 어떤 데이터 주소와 같다고 하더라도 물리적 메모리에서의 주소는 다르기 때문에 서로 충돌이 일어나거나 데이터를 덮어 씌우지 않는다.

 

 

3-2. 가상 메모리와 물리적 메모리 사이 주소 변환

  • 가상 메모리 주소는 32bit 시스템에서는 32bit 길이를 가짐

  • 가상 주소가 물리 주소로 변환될 때에는 2개의 테이블과 한 개의 오프셋을 거쳐 변환됨

  • 위 변환 과정을 거치는 이유는 4GB 가상 메모리와 페이지 프레임 단위로 구성되어 있는 실제 메모리 사이 맵핑 정보를 하나의 표로 만들게 되면 4MB 정도가 되는 표가 만들어짐

  • 프로세스마다 이러한 표를 만들어 메모리에 적재하면 메모리 낭비이고, 안 올리면 맵핑 속도가 크게 저하된다는 문제점이 발생

 

위와 같은 이유로 윈도우는 가상 메모리와 물리 메모리 사이의 맵핑을 2개 테이블로 나누고, 그 중 첫 번째 테이블(페이지 디렉토리 테이블)만 메모리에 보관하고 나머지 하나의 테이블을 필요할 때만 메모리에 적재한다.

 

메모리는 페이지(page)라는 단위로 불리는 일정 크기 단위를 사용하여 물리적 메모리를 관리하는데 가상 주소와 물리 주소의 맵핑 또한 이 페이지를 기준으로 이루어진다.

 

 

3-3. 가상 주소를 이용해 물리 주소 찾기

  • 각각의 페이지는 첫 번째 페이지부터 0번호가 매겨지며, 이 번호를 페이지 프레임 넘버(Page Frame Number)라고 함

 

가상 주소의 구조는 다음과 같다.

 

가상 주소 = 페이지 디렉토리 인덱스 (10bit) + 페이지 테이블 인덱스 (10bit) + 바이트 주소 인덱스 (12bit) = 32bit

 

 

다음과 같은 정보를 이용하여 OS는 가상 주소를 토대로 물리 주소를 찾을 수 있다.

 

1. 페이지 디렉토리의 엔트리에 저장된 페이지 테이블 주소를 읽고 해당 주소에 있는 페이지 테이블로 이동 > 그 후 가상 주소에 존재하는 페이지 테이블 인덱스 값으로 해당 페이지 테이블에서 해당하는 인덱스를 찾아 그 값을 읽고, 페이지 테이블 엔트리는 물리적 주소의 페이지 프레임 주소가 들어 있음 (페이지 프레임으로 이동)

 

2. 가상 주소의 페이지 디렉토리 인덱스 값에서 현재 프로세스의 페이지 디렉토리의 엔트리를 찾고 그 값을 읽음 > 페이지 디렉토리 엔트리에는 페이지 테이블의 주소 정보가 들어 있음 (페이지 테이블로 이동)

 

3. 페이지 디렉토리의 엔트리에 저장된 페이지 테이블 인덱스 값으로 페이지 테이블 엔트리를 찾아 그 값을 읽음 > 페이지 테이블 엔트리에는 물리적 주소의 페이지 프레임 주소가 들어 있음 (페이지 프레임으로 이동)

 

4. 가상 주소 마지막 부분에 있는 바이트 주소 인덱스를 이용 > 실제 찾고자 하는 물리적 메모리의 주소로 이동하고 필요한 만큼 데이터를 읽음

 

 

프로세스마다 페이지 디렉토리를 갖고 있으며, 이거의 물리적 주소는 KPROCESS 구조 안에 저장되어 있다가 Context Switching이 발생하면 CR3 레지스터로 복사된다.

 

실제 프로세스 오브젝트는 가상 메모리에서 보이는 것과는 달리 물리적 메모리에 단편화 되어 저장되는데 흩어져 엤는 프로세스 데이터를 가상 주소를 근거로 찾으려면 반드시 페이지 디렉토리의 물리적 주소가 필요하다.

 

KPROCESS 구조 안에 페이지 디렉토리의 물리적 주소가 아닌 가상 주소가 저장되어 있다면 가상 주소와 물리 주소의 맵핑은 불가능하다.


# Reference

 

http://www.yes24.com/Product/Goods/8511539

[Digital Forensic] Live Response (실시간 대응) (4)

 

실시간 대응


(8) 라우터(Router) 포렌식

  • 라우터는 서로 다른 네트워크망을 연결하는 중요한 네트워크 장비들 중 하나

  • 그러므로 일반 사용자와 공격자는 라우터를 거쳐 목적지에 도달하게끔 되어 있음

  • 따라서 라우터는 조사관에게 많은 정보 제공과 복잡한 사건을 해결하는 실마리 제공 가능

 

8-1. 휘발성 정보

  • 라우터 장비 역시 메모리가 존재하고 메모리에 존재하는 정보들은 휘발성 정보

  • 메모리 용량이 제한적이라 새로운 정보들이 이전 정보들을 삭제할 우려가 있음

  • 라우터 메모리에 존재하는 중요 정보로는 라우팅 테이블, 서비스 등이 있음

 

1) 시스템 시간

  • 시간은 휘발성 정보 수집에서 빠지지 않는 정보

  • 라우터의 사용자 모드 또는 관리자 모드에서 show clock 명령어로 시스템 시간 확인 가능

 

2) 가동 시간

  • 라우터가 마지막 재부팅으로부터 현재까지 얼마만큼 가동되고 있었는지 확인할 필요 있음

  • 재가동 된지 얼마 되지 않은 메모리에 남아 있는 정보는 악의적인 사용자로부터 수정되었을 확률이 오래 가동된 경우보다 적음 (그만큼 메모리에 남아 있는 여러 정보들 또한 양이 적을 것)

  • 가동 시간은 show version 명령어를 통해 확인 가능하며, 라우터의 하드웨어 정보와 소프트웨어 정보도 함께 출력

 

3) 로그인 한 사용자

  • 현재 로그인 한 사용자 목록을 수집하는 것 또한 매우 중요 (악의적인 사용자가 접속해 있을 수도 있기 때문)

  • 확인 명령어는 show user

 

4) ACL 목록 수집

  • 해당 라우터 접근이 어떻게 이루어지는지 파악을 위해 ACL 확인도 중요

  • ACL 목록 수집 명령어로는 show access-lists

 

5) 라우팅 테이블 수집

  • 공격자를 추적하거나 공격자가 어떠한 경로를 통해 접속하였는지 결정하기 위해 필수적으로 확인 필요

  • 공격자가 라우팅 테이블을 수정하여 패킷 흐름을 바꿀 수도 있어 필수적으로 수집해야 하는 정보들 중 하나

  • 라우팅 테이블은 show ip route 명령어

 

6) ARP 테이블 수집

  • 해당 정보는 MAC 주소 스푸핑 흔적이 있는지 파악할 수 있게끔 도와줌

  • ARP 테이블 수집 명령어는 show arp

 

7) 스택 모니터링 정보

  • 어떤 이유로 인해 system crash가 발생하면 프로세서가 상황에 따라 라우터를 재부팅시킴

  • 이 때 재부팅이나 Crash 원인을 스택 모니터링 기능의 장애 정보를 통해 확인 가능

 

8) 여러가지 정보 한꺼번에 얻기

  • CISCO 소프트웨어 11.2 버전 이후부터 show tech-support 명령어 지원

  • 해당 명령어는 여러 명령어들의 출력 결과를 한꺼번에 보여주는 명령어

  • 위 명령어들의 결과도 이 명령어 결과에 포함

 

 

show tech-support 명령어에서 보여주는 결과물들은 다음 명령어들의 출력 결과와 동일하다.

  • show version

  • show running-config

  • show stacks

  • show interface

  • show controller

  • show process cpu

  • show process memory

  • show buffers

 

여러 휘발성 정보 수집 명령어들은 위 내용과 같다.

 

하지만 이 정보들만 가지고는 라우터 분석이 끝난 것이 아니므로, 휘발성 정보에서 얻을 수 없는 정보는 라우터 메모리에서 얻을 수 있다.

 

라우터의 메모리는 일반 컴퓨터를 대상으로 한 메모리 덤프 도구로는 이미징하지 못한다.

 

라우터에서 자체적으로 제공하는 코어 덤프 기능을 이용하여 메모리 덤프를 수행해야 한다.


8-2. 메모리 구조

  • Cisco 라우터 메모리는 DRAM, EPROM, NVRAM, Flash memory 총 4개로 구분 된다.

 

1) DRAM

  • 전원 Off 시 데이터가 날라가는 휘발성 메모리이며, 두 가지의 타입을 가짐

  • primary memory (main memory, process memory) : CPU가 IOS를 실행할 때와 running config, routing table 운용할 때 사용하는 타입

  • shared memory (I/O memory 또는 packet memory) : 라우터 인터페이스를 통해 오고 가는 데이터들의 버퍼를 제공할 때 사용되는 타입

 

2) EPROM

  • ROM이라고도 하며, IOS 이미지가 손상되었거나 문제가 생겼을 시에 사용되는 소프트웨어가 저장된 메모리

  • 당연 비휘발성 메모리로, 이미지가 손상 / 삭제되면 사용될 대체 소프트웨어인 ROM Monitor가 들어 있음

  • 플래시 메모리에서 올바른 IOS 이미지를 찾을 수 없을 때 라우터 부팅을 위해 부트 이미지가 저장되어 있음

 

3) NVRAM

  • EPROM과 마찬가지로 비휘발성 메모리이며 Startup-configuration file이 저장되어 있음

 

4) Flash Memory

  • 라우터의 IOS 이미지를 저장하고 있으며, 일부 라우터에서는 설정 파일과 부트 이미지도 저장하고 있음


8-3. 메모리 덤프 방법

 

1) TFTP

  • TFTP를 이용한 방법은 한 가지 제약 조건이 있음

  • 메모리 덤프 파일 크기 16MB 초과 시, 해당 방법을 사용하는 것은 효율적이지 못한 방법 > 메모리 덤프 파일이 전송되는 도중 손상을 입을 수 있기 때문

  • 다음과 같은 명령어를 수행하면 TFTP 서버에 hostname <라우터 hostname> -core 파일이 생성됨

    • router# exception dump <TFTP IP>

 

2) FTP

  • FTP는 제약 조건이 없음

  • 다음과 같은 명령어를 수행하면 FTP 서버에 메모리 덤프 파일이 생성됨

  • 만약 사용자 ID와 사용자 Password를 입력하지 않으면 익명으로 접속하게 됨

    • router# ip ftp username <사용자 ID>

    • router# ip ftp password <사용자 Password>

    • router# exception protocol ftp

    • router# exception dump <FTP IP>

 

3) RCP

  • 해당 방법을 사용하기 위해서는 먼저 router configuration에서 해당 기능이 활성화 되어야 함

  • 해당 기능은 보안 문제로 default로 비활성화이기 때문

    • router# exception protocol rcp

    • router# exception dump <RCP IP>

 

4) Flash Disk

  • 해당 방법을 사용하기 위해서는 라우터에서 PCMCIA를 지원해야 함

  • partition number 경우 show flash all 명령어 수행 시에 알 수 있음

    • router# exception flash <procmem | iomem | all> <partition number> <erase | no_erase>


8-4. 메모리 분석

  • 라우터 메모리 분석의 경우 지원하는 도구로는 현재 Recurity Lab에서 개발한 'CIR' 도구만 존재

  • 이 도구는 오픈소스로 배포

  • 메모리에서 백도어를 분석해 내고 프로세스, 메모리 예외 처리 등을 분석하여 사용자에게 그 결과를 출력하여 줌


라우터 포렌식에서 메모리 분석 분야는 계속 연구되어야 하는 분야이다.

 

Flash Disk 방식을 사용하여 메모리 덤프를 하는데 옵션은 iomem으로 지정하여 덤프를 시도하고 분석을 수행하면 해당 라우터에 들어오고 나간 패킷 트래픽까지 추출이 가능하다.

 

이 정도로 라우터 메모리 분석은 매우 중요하다.


# Reference

 

http://www.yes24.com/Product/Goods/8511539

[Digital Forensic] Live Response (실시간 대응) (3)

 

실시간 대응


(7) Mac OS X 휘발성 정보 수집

  • Mac OS X는 Apple사에서 개발한 운영체제이며 그 기반으로 Unix를 두고 있음

  • 해당 OS에서의 휘발성 정보들은 다른 OS들의 휘발성 정보와 대부분 동일하며 수집 방법만 조금 다름

  • 버전별로 조사관이 원하는 데이터를 저장하고 있는 파일 위치가 다르기 때문에, 조사관은 데이터 수집 대상의 Mac OS X 버전을 확인, 버전에 따라 수집할 데이터의 위치 파악 필요

  • Unix를 기반으로 두기 때문에 대부분의 Unix 명령어가 동일하게 적용되며, Linux에서도 동일하게 휘발성 정보 수집 가능

 

1) 시스템 시간

  • Windows 경우 datetime 명령어 조합을 이용하여 시스템 현재 시간 정보를 수집하였는데, Mac OS X도 동일하게 date 명령어로 수집 가능

  • 또한 해당 시스템이 얼마나 부팅되어 있었는지도 확인 가능하며 이때 사용하는 명령어는 uptime 명령어

  • 시스템 시간은 어떤 사건의 발생 시점 & 끝난 시점과 같은 기준점이나 범위를 구분지어 주어 굉장히 중요한 정보

 

2) 네트워크 연결 정보

  • 현재 시스템이 연결하고 있는 호스트와 연결했던 호스트 등을 보여줌

  • 시스템 재시작이나 종료되면 해당 정보는 모두 삭제되어 휘발성 정보에 속함

  • Windows에서는 netstat -an 명령어로 수집했었는데 Mac OS X 또한 동일

 

3) 프로세스 목록

  • 어떤 OS에서든지 프로세스 목록 수집은 중요 (루트킷이나 백도어의 프로세스가 실행되고 있을 수 있기 때문)

  • 프로세스 목록은 ps 명령어로 수집 가능하며, 보통 사용 옵션은 -ef 옵션이다.

 

4) 사용자 정보

  • Mac OS X는 유닉스를 기반으로 하고 있으며, 유닉스는 다중 사용자 시스템으로 여러 사용자들이 동시 접속하여 어떤 기능 수행이 가능

  • 그렇기에 현재 접속한 사용자들을 알아볼 수 있으며 이 정보는 시스템 전원이 Off되는 순간 삭제

  • 꼭 현재 접속 기록이 아닌 이전 접속 사용자 기록 또한 볼 수 있으며, 현재 접속 사용자 정보 명령어는 w(who), 현재 원격 & 로컬 사용자 정보는 finger가 있고, 옵션으로는 -lmsp가 있음

  • 이전 접속 사용자 정보에 대한 명령어는 last 명령어가 있음

 

5) 파일 정보

  • 현재 어떤 파일이 어떤 명령으로 인해 열려 있고, 어떤 네트워킹 작업을 하고 있는지 수집할 수 있는 명령어는 lsof가 있으며, 옵션으로는 -i, -P 옵션이 있음

 

6) 시간 정보

  • 포렌식에서 어떤 대상을 분석하던 시간은 정말 중요한 정보이며 사건의 기준이 됨

  • Mac OS X도 다른 OS나 파일 시스템과 동일하게 MAC(Modify, Access, Create) Time이 존재, 여기에 추가로 Change Time이 존재 (HFS+ 파일 시스템에서 시간 정보는 Catalog File의 파일 레코드에 존재)

종류

설명

Modify Time

파일 내용을 수정한 경우(메타데이터 수정 포함) 갱신

Access Time

파일을 읽거나 실행한 경우 갱신

Create Time

파일이 생성된 시간을 의미

Change Time

파일의 메타데이터가 수정된 경우 갱신(Change Time이 갱신될 경우 Modify Time도 같이 갱신)

 

  • stat 명령어로 시간을 확인해보면 Access, Modify, Change, Create Time순으로 출력 됨

  • 사용자가 파일이나 디렉토리에 변경 / 접근 / 어떠한 행위 하게 되면 시간 값들은 업데이트 되어 특정 사건의 특정 행동 기준점을 세울 수 있게 도와줌

 

7) Property List

  • Mac OS X는 다른 OS와 다르게 프로퍼티 리스트(plist)라는 파일들이 존재

  • 해당 파일은 실행되는 어플리케이션 정보들이 저장되는 파일이며, 일반 TEXT와 실행 파일 두 개의 종류로 나뉨

  • Text 파일은 xml 형태로 되어 있으며, 실행 파일은 xml 형태로 되어 있지 않으나 plutil 명령어를 이용하여 xml 형태로 변형시키기 가능

 

 

7-1. Property List (네트워크 정보)

  • 네트워크 정보를 볼 수 있는 plist 파일은 /Library/Preferences/SystemConfiguration 폴더에 존재

  • 포렌식 관점에서 주목해야 할 파일은 preferences.plist와 com.apple.network.identification.plist가 있음

  • preferences.plist 파일은 네트워크 일반 정보(인터페이스 카드 정보, 컴퓨터 이름 등)가 저장되어 있음

  • com.apple.network.identification.plist 파일은 네트워크 정보의 히스토리(이전에 할당 받았던 IP 주소 등)를 저장하고 있음

 

7-2. Property List (사용자 정보)

  • 사용자 정보 또한 plist 파일로 저장되며, /private/var/db/dslocal/nodes/Default/users/ 폴더에 사용자 계정명과 동일하게 저장

  • 사용자 정보 관련 파일들은 /etc/passwd 파일과 동일하게 사용자 쉘, 권한, 홈 디렉토리 등을 저장

  • 해당 파일들은 일반 text 프로퍼티 리스트 파일이 아닌 실행 프로퍼티 파일이라 plutil 명령어로 변환해 주어야 분석 가능

  • xml 파일로 변환 시 -convert xml1 옵션 / 바이너리 파일로 변환 시 -convert binary1 옵션 사용

 

7-3. Property List (그룹 정보)

  • 사용자 정보가 아닌 그룹 정보는 Default/groups 폴더에 존재

  • admin.plist 파일은 root 권한이 어떤 사용자에게 부여되었는지 기록되는 파일

  • 시스템에 마지막 로그인한 사용자 저장 파일은 /Library/Preferences/com.apple.loginwindow.plist 파일

 

7-4. Property List (최근 접근한 어플리케이션)

  • 사용자가 최근 접근한 어플리케이션 정보 저장 plist 파일은 com.apple.recentitems.plist

  • 위치는 /Users/<사용자 이름>/Library/Preferences에 위치하며 파일 서버 접근 정보도 포함

  • 어플리케이션 정보 저장 plist 파일은 접근 시간, 즉 타임 스탬프를 제공해주지 않아 해당 정보만을 가지고 특정 시점에 접근된 파일을 찾기에는 무리가 있음

 

7-5. Property List (디스크 이미지)

  • 해당 시스템에서 사용자가 오픈한 디스크 이미지 전체 경로 포함 plist 파일은 com.apple.DiskUtility.plist이고 위치는 recentitems.plist 파일과 동일

  • FXConnectToLastURL Key : 어플리케이션이 마지막으로 연결하였던 파일 서버의 전체 주소 제공

  • FXDesktopVolumePositions Key : 시스템에서 이전에 마운트되었던 볼륨명과 마운트 포인트명 제공

  • FXRecentFolders Key : 사용자가 최근에 보거나 접근한 디렉토리 정보 제공

 

7-6. Property List (연결 디바이스 정보)

  • 포렌식 수행 과정에서 연결된 디바이스들의 정보 중 가장 관심이 가는 것은 당연 이동식 저장 장치이고, 이 정보는 kernel.log에 저장

  • 또 다른 연결 디바이스 정보들은 com.apple.iPod.plist에 저장

  • kernel.log는 /var/log 디렉토리에 위치하며, 당연히 외부 장치형 디바이스의 연결 정보만 저장하는 것이 아니기에 특정 키워드로 검색해야 함

  • 특정 키워드는 'USBMSC' 이다.

  • 출력 정보에 대한 내용은 날짜 및 시간 / 연결 디바이스 타입 / Serial Number / Vender ID / Product ID / Firmware Version이 있음

  • 해당 파일은 /Users/<사용자 이름>/Library/Preferences 디렉토리에 있으며 해당 파일에는 여러 디바이스 리스트와 연결 시각 등 kernel.log와 거의 유사한 정보들이 목록화 되어 있음

 

 

지금까지 Mac OS X에서 휘발성 정보를 알아보고 수집하는 방법을 알아보았다.

 

Mac OS X나 유닉스, 리눅스 경우 Windows와 다르게 대부분 쉘 명령어를 통해 정보를 수집할수 있다.

 

즉, 스크립트나 자동화 프로그램을 만든다 해도 추가적인 프로그램이 필요 없는 것이다.

 

또 지금까지 알아본 정보들이 Mac OS X의 휘발성 정보의 전부가 아니기 때문에, 로그 정보가 더 있지만 그 부분은 너무 방대하다.

 

앞으로 Mac OS X에 대한 분석은 더 진행되어야 하며, Mac 기반의 스마트폰, 패드 등이 지금보다 더 보급화되고 여러 분야에 응용되어 사용된다면 침해 사고 또한 그 증가 추세가 비례적일 것이다.


# Reference

 

http://www.yes24.com/Product/Goods/8511539

[Digital Forensic] Live Response (실시간 대응) (2)

 

실시간 대응


(6) Windows 휘발성 정보 수집

 

1) 시스템 시간

  • 포렌식에서 중요한 의미를 가짐

  • 윈도우 명령 프롬프트에서 기본적 지원인 date와 time 명령어로 수집 가능

  • 윈도우 하단에 있는 트레이 패얼의 시간 패널 조작 시에 레지스트리에 기록이 남지만 커맨드 명령어로 수정 시 레지스트리 기록이 남지 않음 

 

[그림 1] 시스템 시간 수집 화면

 

2) 네트워크 연결 정보

  • 휘발성 중에 휘발성이라 할 수 있는 정보

  • 개별적 운영 방화벽 / 방화벽 어플리케이션 존재 시에 해당 정보보다 우선적으로 방화벽 로그의 분석 수행 필요 > 해당 정보는 순간 정보로, 방화벽 정보는 장기간 걸친 정보이기 때문

  • 윈도우 명령 프롬프트의 netstat 명령어로 수집 가능

  • 여러 가지 옵션이 있으므로 테스트 해보는 게 좋음

 

[그림 2]netstat 명령어 결과

 

[그림 3] pslist -t 옵션 실행 결과

 

3) 프로세스 목록

  • 프로세스 분석은 기본 중에 기본으로, 어떠한 이유에서 일어났는지에 대한 근거가 될 수 있음

  • 예로 system32 폴더에 없는 시스템 프로세스나, 부모 프로세스가 될 수 없는 프로세스에 자식 프로세스가 있는 등 이상 현상 탐지 가능

  • 윈도우 명령 프롬프트에서 기본적 지원인 tasklist가 있으며, 다른 도구로 pslist.exe가 있음

  • 둘 다 전체 경로는 나오지 않으며, pslist는 -t 옵션을 주면 트리 형식으로 프로세스 확인 가능 > 부모, 자식 프로세스 관계 직관적 파악 가능

  • GUI 도구로 Process Monitor, Process Explorer 존재

  • GUI는 CLI보다 시스템에 영향을 많이 주지만, 프로세스 전체 경로와 DLL, TCP 동작 등 여러 가지 정보 제공

 

[그림 4] tasklist 명령어 결과

 

4) 핸들 정보

  • 프로세스에 기본적으로 여러 개가 있으며, 핸들이 실제로 가리키는 오브젝트는 레지스트리에 기록됨

  • 수집 시 sysinternals.com에서 만든 Handle.exe 도구 주로 사용

 

[그림 5] Handle.exe 실행 결과

 

5) DLL 목록

  • 침해 사고가 일어난 시스템에서 DLL 인젝션으로 인해 일어난 사고라면, 프로세스 목록 만으로 원인 분석 어려움

  • DLL 목록은 sysinternals.com에서 만든 ListDlls.exe라는 도구 사용

 

[그림 6] ListDlls.exe 실행 결과

 

6) 로그온 사용자 정보

  • 사용 방법으로 net session이라는 명령어와 psloggedon, logonsession이라는 도구 사용

  • net session 경우 원격에서 로그온 한 사용자 정보를 보여 줌 

  • psloggedon과 logonsession 도구는 로컬 로그온 사용자와 원격 로그온 사용자 정보를 보여 줌

  • 더 자세한 정보는 해당 사용자가 실행한 프로세스까지 출력해주는 logonsession이 자세함 (/p 옵션)

 

[그림 7] psloggedon.exe 실행 결과

 

7) 파일 핸들

  • 파일 핸들의 정보를 수집하고 분석함으로써 해당 사용자가 어떠한 행동과 목적이 무엇인지 대략적 파악 가능

  • 명령어로는 net file, 도구로는 psfile이 있음

 

8) Open 포트와 프로세스 맵핑 정보

  • 해당 정보를 수집 / 분석하면 어떠한 프로세스가 어떤 포트로 어떤 서버와 연결하여 어떤 작업을 하고 있는지 파악 가능

  • 분석 시 well-known port라고 하여 모두 믿어서는 안되며(설정으로 변경 가능) 하나씩 자세히 살펴보는 게 좋음

  • netstat -b 명령어가 있으며, 간단한 정보 수집으로 편리하지만, 프로세스 전체 경로를 제공하지 않아 추후 또 다른 작업 필요

 

9) 히스토리

  • 매우 중요하면서 간단한 일이며, 어떠한 행동들을 하였는지 직관적으로 파악 가능

  • doskey/history 명령어가 있으며, 어떠한 명령어를 사용하였는지 보여준다.

  • 명령 프롬프트 창을 닫았을 때는 그 전 정보들이 모두 없어지기 때문에 주의 필요

 

[그림 8] doskey/history 명령어 결과

 

10) 윈도우 서비스 정보

  • 서비스들의 정보 수집 / 분석하여 어떠한 악성 프로그램이 서비스에 등록 되어 몰래 실행 되고 있는지를 판단 가능

  • 도구로 psservice라는 도구가 존재

  • 종종 서비스 설명(DISPLAY_NAME)이 없는 서비스가 있는데 그 서비스는 악성 서비스일 수도 있고 아닐 수도 있음 > 그렇다고 설명 있는 서비스가 꼭 정상 서비스는 아님

 

[그림 9] psservice 실행 결과

 

11) 시작 프로그램 목록 정보

  • 시작 프로그램 목록에 등록된 서비스는 시스템이 시작할 때마다 사용자가 따로 실행하지 않아도 OS에 의해 자동으로 시작되는 서비스를 뜻함

  • 악성 프로그램이나 해커는 이 목록에 악성 프로그램을 등록시키기 때문에 이 목록의 프로세스들은 필수적 분석 필요

  • 도구로는 autorunsc.exe 도구가 있음

 

12) 라우팅 테이블 정보 / 네트워크 인터페이스 정보

  • 라우팅 테이블은 라우터만이 아닌, 개인 PC에도 있으며 이 정보는 손 쉽게 조작 가능하여 네트워크의 데이터 흐름 조절 가능

  • 게이트웨이 등이 내부 PC 등으로 설정되어 있으면 중계 컴퓨터 의심 필요

  • 명령어로는 netstat -r이 있음

  • 네트워크 인터페이스 정보 분석 이유는 MAC의 변조 유무 파악을 위해서이며, 분석 시스템 MAC이 다른 시스템 MAC과 동일하다면 sniffer (promiscuous mode) 기능을 하고 있는 것을 의심 필요 (일반 사용자는 일반적으로 MAC 안 바꿈)

  • 네트워크 인터페이스 명령어로 ipconfig /all이 있고, promiscuous mode 유/무를 파악하려면 promiscDetect 도구 사용 > promiscuous mode 발견 시 WARNING 발생

  • netstat -r 결과에 Persistent Routes 부분은 정적 라우팅 정보 부분으로 NIC이 1개인 경우 불필요한 부분

 

[그림 10] netstat -r 실행 결과

 

[그림 11] ipconfig /all 실행 결과

 

13) 클립보드 정보

  • 복사나 붙여넣기 한 정보들의 저장 정보이며, 시스템 종료 전까지 정보가 유지 됨

  • 어떠한 중요 정보가 나올지 모르므로 필수적 수집 필요

  • XP에서는 clipbrd 명령어를 사용하면 되지만, 이후 버전은 따로 도구 사용 필요

 

14) 네트워크 공유 폴더 정보

  • 내부 네트워크 등에서 공유 폴더가 많이 쓰이며, 분석 시스템이 공유 폴더 사용 시에는 분석 범위를 공유하고 있는 컴퓨터에게 까지 넓혀야 한다.

  • 명령어로는 net use가 있으며, net share 명령어와 다른 점은 net use는 원격 컴퓨터 공유 폴더 목록, net share는 로컬 컴퓨터 공유 폴더 목록

 

[그림 12] net use 실행 결과

 

15) NetBios 정보

  • 데이터를 교환할 때 정하는 이름으로 TCP/IP 프로토콜 사용

  • NetBios를 통해 데이터 교환 시에 상대방 IP와 NetBios 이름을 테이블 형태로 저장, 이것을  Cached NetBios Name Table이라 함

  • 테이블 정보는 600초 동안 유지, 600초가 지나면 자동 삭제 됨

  • 테이블에서 찾고자 하는 컴퓨터 정보가 없다면, 네트워크에 브로드캐스팅 트래픽을 발생시켜 찾고자 하는 컴퓨터를 찾음

  • 명령어로 nbtstat -c가 있음

 

[그림 13] nbtstat -c 실행 결과

 

 

※윈도우 2000이후 NetBios 이름과 DNS 이름은 같도록 설정, 구별 방법

 

   1. DNS 이름은 255자, NetBios는 16자

 

   2. NetBios는 접미사가 붙는데 형태는 이름 뒤에 <>가 붙고, 16진수의 숫자가 <> 사이에 들어감

   예) NetBios <21>

 

 

16) 프로세스 메모리

  • 프로세스는 소스코드와 DLL 파일, 실행 전체 경로 등을 가상 메모리에 업로드하여 동작

  • 프로세스 덤프는 프로세스가 사용하는 가상 메모리를 덤프 하는 것이며, 덤프를 분석하여 좀 더 정확하고 중요한 정보 얻는 것이 가능

  • 방법으로는 userdump.exe 도구가 있으며, 일반적으로 OS에 포함되지 않아 별도 설치 필요

  • 도구 사용 시에 프로세스가 정지 상태여야 정확한 덤프 가능 > 동작 중이면 메모리 내용이 덤프 중 변경 되어 정확도 떨어짐


# Reference 

 

http://www.yes24.com/Product/Goods/8511539

[Digital Forensic] Live Response (실시간 대응) (1)

 

실시간 대응


(1) Live Response 정의

  • 구동되고 있는 시스템에서 휘발성 정보를 수집하는 행위 > 컴퓨터 포렌식 조사 과정 중 하나

  • 범위는 구동되고 있는 시스템에서 수집 가능한 모든 정보 수집 / 분석 ~ 이를 바탕으로 한 사고의 처리까지

  • 예전에는 침해사고 시스템 전원 플러그를 뽑고 하드 드라이브 이미지 복사 > 가장 기본적이고 상식적인 절차

  • 근래는 휘발성 정보의 중요성 인식 > 휘발성 정보를 수집하고 분석하는 쪽으로 연구와 방법론 구성


(2) Live Response 중요성

  • 휘발성 저장장치에서만 찾을 수 있는 정보(흔적)가 있기에 수행 여부는 디지털 포렌식 절차에서 중요

  • 수집한 휘발성 정보 우선적 평가 > 시스템 대략적인 상태 파악

  • 설치된 윈도우 버전, 서비스팩 파악 > 해당 시스템 취약점 목록화

  • 휘발성 정보 해당 취약점 연계 > 조사 범위를 좁혀 수사 시간 절약

  • 금융, 게임, 온라인 쇼핑 회사 등 24시간 운영 서버 컴퓨터에서 매우 유용 > 회사 서버 컴퓨터 종료 시 막대한 금전적 손실 >  Live 상태에서 모든 증거 수집 / 분석 (최우선 과제)

 

  1. 현재 동작 중인 프로세스

  2. 열려 있는 파일 목록

  3. 네트워크 연결 정보

  4. 클립보드

  5. 사용자 정보

  6. 비밀번호

  7. 복호화 된 데이터

  8. 기타


(3) Live Response 수행 여부

 

  • 상황에 따라 다름 > 해야 할 상황 정리 매우 힘듦, 반대로 하지 않아야 할 상황도 알아두어야 함

 

[그림 1] 서버 전원 플러그 제거

 

3-1. 해커나 악성코드 등에 의해 시스템 파일이 삭제되는 경우  

  • Live Response 수행보다는 시스템 전원 플러그 제거

  • 삭제되는 파일이 로그파일일 수도 있지만, 조직에 영향을 미치는 중요한 파일일 수도 있기 때문

 

 

3-2. 조사 수행 도구가 검증되지 않은 도구 경우

  • 주로 공개용 도구 해당, 검증되지 않은 도구 사용 시 시스템에 어떤 영향을 끼칠지 모름

  • 개인 PC 경우에는 본체 뒤 전원 플러그 제거해도 상관 없음

  • 서버 PC 경우에는 전원 플러그 제거 시 서버 어플리케이션들은 장애 대비 능력이 없어 시스템에 심각한 손상 위험이 크므로 정상적 종료 필요


(4) Live Response 원칙

  • 로카르드 교환 법칙 적용 (접촉하는 두 물체 사이에는 반드시 교환이 일어남)

  • 범죄자만 적용되는 것이 아닌 수사관에게도 적용되는 법칙조사관들은 Live Response 수행 시 시스템에 미치는 영향 최소화 필요

  • 수행 시 도구 수행 필요 > 도구가 수행되면서 시스템 영향 미침 > 검증되고 포렌식 특화 도구 사용 권장

 

 

※ Live Response 시스템 구성 요소들이 받는 영향

 

1) 메모리

  • 도구 실행 > 프로세스 생성, 메모리 적재 > 프로세스가 메모리 점유하면서 이전 데이터 덮어 씌움

 

2) 네트워크

  • 사용 도구 네트워크 사용 시 시스템은 소켓 열고 통신 시도

  • 위 과정에서 시스템 방화벽 존재 시 로그가 남고 로그 파일이 쌓이면서 사용하지 않던 하드 드라이브 영역 사용

  • 로그 파일 개수가 설정 개수 초과 시 오래된 로그 삭제 > 중요 로그 정보 지워짐

  • 네트워크 연결은 커널 오브젝트에 의해 관리 되어 커널 테이블 갱신

 

3) 프리패치 파일 (Windows 환경)

  • 윈도우에서 새로운 프로그램 실행 시 생성되는 파일로, 조사관이 사용하는 도구 실행 시 프리패치 파일 생성

  • 최소 클러스터 하나 이상의 비할당 영역을 새로 할당받아 사용 > 윈도우는 하드 드라이브 할당 시 클러스터 단위

  • Windows XP 프리패치 파일 최대 120개 > 개수 초과 시 오래된 파일 삭제 > 중요 파일 삭제

 

4) 레지스트리 (Windows 환경)

  • 많은 Live Response 도구는 레지스트리에 접근하여 그 값을 이용

  • 레지스트리에 마지막 접근 시간 갱신

  • 레지스트리에 어떠한 값 설정 > 레지스트리 키에 대한 마지막 쓰기 시간도 갱신

 

5) DLL (Dynamic Link Library/Windows 환경)

  • 동적 컴파일 시 필요한 파일로, 여러 가지 비슷한 함수들의 모임

  • 조사관 도구가 시스템 DLL 사용 > 파일 마지막 접근 시간 갱신

 

6) 로그 파일

  • 조사관 도구 에러 발생 > 기본적으로 에러 로그 남음 > 악성 오류나 실행, 이벤트 등 로그가 밀려 삭제 위험 가능성

  • 어떤 식으로든 조사관, 해커, 악성 프로그램은 시스템에 영향을 미침

 

 

※ 효과적인 방법

  • 도구 프로그래밍부터 여러 경우 고려하여 도구 제작

  • 여러 가지 도구들을 미리 테스트 > 가장 성능이 좋으면서 영향 최소화 도구 선별 / 사용


(5) 휘발성 정보 수집

 

  • 정확히 표준으로 정해진 것이 없으며, 조사관마다 판단에 의해 절차가 정해져 수집이 이루어짐

 

※ 가이드 라인별 비교표 (많은 조사관들에게 길잡이 역할)

RFC 3227

NIST Special Publication 800-86

레지스터, 캐시

네트워크 연결 정보

라우팅 테이블, ARP 캐시, 프로세스 테이블, 커널 사용 정보, 물리적 메모리

로그온 세션

임시 파일

물리적 메모리

디스크

프로세스 정보

원격 로그인 모니터링 정보

열린 파일

물리적 설정, 네트워크 구성

네트워크 설정 정보

기타 저장장치

 
  • 두 가이드 순서를 100% 의존 X > 주관적으로 정한 것

  • 휘발성 정보 수집 > 윈도우 기본 지원 명령어 사용 / 인터넷에서 검증받은 Live Response 도구 사용하여 수집

  • 도구 사용 위해 대상 컴퓨터의 관리자 권한 필요

 

※ 관리자 권한 올바른 예

  • Runas 라는 윈도우 기본 지원 명령어 사용 (일시적 권한)

 

[그림 2] Runas 명령어

 

※ 관리자 권한 올바르지 않은 예

  • 로그오프 후 관리자 로그인 방법 (해당 세션 휘발성 정보 사라짐)

  • BOF (Buffer Over Flow) 해킹

  • 리눅스 su 명령어 같은 해당 세션 유지 관리자 권한 (윈도우 기준 / 불법 프로그램 가능성 큼)


# Reference 

 

http://www.yes24.com/Product/Goods/8511539

[Digital Forensic] 디지털 포렌식 개요

 

디지털 포렌식 개요


(1) 디지털 포렌식 개요

  • 포렌식(Forensic)이란 법의학 등을 이용한 범죄에 관한 과학 수사를 말함

  • 디지털 포렌식(Digital Forensic)은 컴퓨터를 통해 발생한 범죄에 대한 과학 수사를 의미 

 

1-1. 디지털 포렌식 기원

  • 1980년대 중반부터 디지털 증거 보존, 신원 확인, 증거 확보 등에 관한 기술을 다루기 시작

  • 용어는 1991년 미국 포틀랜드에서 열렸던 IACIS에서 처음 사용

 

1-2. 디지털 포렌식 정의

  • 컴퓨터를 매개로 이루어지는 범죄에 대한 법적 증거자료 확보를 위해 컴퓨터 저장매체와 네트워크로부터 자료 수집, 분석 및 보존하여 법정 증거물로써 제출할 수 있도록 하는 일련의 절차와 행위 

 

1-3. 디지털 포렌식 목적

  • 디지털 포렌식은 컴퓨터 범죄 수사를 목적으로 사용

  • 증거를 확보하고, 이를 통해 법적 대응이 가능하도록 해야 함 

 

1-4. 디지털 포렌식 필요성

  • 정보화에 따른 컴퓨터 범죄뿐만 아닌 일반 범죄에서도 중요 증거 및 단서가 컴퓨터를 포함한 전자매체 내에서 보관되어 있는 경우가 급수적으로 증가

  • 디지털 자료는 복사가 쉬울 뿐만 아니라 원본과 사본 구분이 어렵고 조작 및 생성, 전송, 삭제가 매우 용이

  • 범죄 관련 증거가 디지털화 되어감에 따라 증거 수집, 분석을 위한 전문적인 디지털 포렌식 기술 개발이 필요

  • 국가기관에서 컴퓨터 범죄 뿐만 아니라 일반 범죄 수사에서의 활용 빈도가 증가

  • 일반 기업체 및 금융회사 등 민간 분야에서도 디지털 포렌식 기술의 수요 급증 (내부 정보 유출, 회계 감사, 보험사기 등에 활용)


(2) 디지털 포렌식 5대 원칙

 

1) 정당성의 원칙

  • 획득한 증거 자료가 적법 절차를 준수해야 하며, 위법한 방법으로 수집된 증거는 법적 효력 상실

 

2) 신속성의 원칙

  • 시스템 휘발성 정보 수집 여부는 신속한 조치에 의해 결정되므로 모든 과정은 지체 없이 신속하게 진행되어야 함

 

3) 무결성의 원칙

  • 수집한 증거가 위조나 변조되지 않았음을 증명할 수 있어야 함

 

4) 재현성의 원칙

  • 피해 직전과 같은 조건에서 현장 검증을 실시하였다면, 피해 당시와 동일한 결과가 나와야 함

 

5) 연계보관성의 원칙

  • 증거물 획득, 이송, 분석, 보관, 법정 제출의 각 단계에서 담당자 및 책임자를 명확하게 해야 함


(3) 디지털 포렌식 분석 목적

 

1) 사고대응 포렌식 (침해 사고 대응)

  • 해킹 등 침해 시스템의 로그, 파일 등을 조사하여 침입자의 신원, 피해 내용, 침입 경로 등을 파악

  • 네트워크 기술과 서버의 로그 분석 기술, 유닉스, 리눅스, 윈도우 서버 등 운영체제에 대한 기술 등이 필요

  • 증거물을 이미징해도 변화가 이뤄지기 때문에 5대 원칙 적용 불가

 

2) 증거 추출 포렌식

  • 범행 입증에 필요한 증거를 얻기 위하여 디지털 저장매체에 기록되어 있는 데이터 복구 & 검색하여 찾아냄

  • 회계 시스템에서 필요한 계정을 찾아 범행을 입증할 수 있는 수치 데이터 분석 & E-Mail 등의 데이터 복구 및 검색하여 증거를 찾아내는 것이 목적

  • 5대 원칙 매우 중요


(4) 디지털 포렌식 유형

 

1) 디스크 포렌식

  • 디스크라는 저장매체에 들어 있는 모든 아티팩트를 분석

  • 대용량의 비휘발성 저장매체로부터 자료를 획득, 분석, 검색, 삭제된 파일 복구하는 기능 등이 주로 활용

  • 삭제 파일 복구, 파일 분류, 시간 순으로 타임라인 작성, 키워드 작성을 통해 증거물 분석과 추출

  • 증거의 손상이나 훼손을 방지하기 위해 2개의 사본을 만들어 하나는 증거로 보존하고 하나는 분석이 이루어져야 함

 

2) 네트워크 포렌식

  • 네트워크 종단 간에서 일어나는 포렌식

  • 네트워크를 통하여 전송되는 데이터, 암호 등을 특정 도구를 이용하여 가로채거나 서버에 로그 형태로 저장된 것을 접근하여 분석하거나 네트워크 형태 등을 조사하여 단서를 찾아내는 분야

  • 네트워크 포렌식 안에 네트워크 패킷 포렌식이 있으며, 네트워크 패킷 포렌식은 패킷 덤프를 떠서 해당 데이터를 분석하는 분야

 

3) 인터넷 포렌식

  • 인터넷으로 서비스되는 WWW, FTP 등 인터넷 프로토콜을 사용하는 분야

  • 게시판에 불법 정보를 업로드하거나 명예훼손과 관련된 글을 올린 용의자 추적, 전자 메일 발신 추적, 인터넷 서핑 내역 추적 등을 위하여 웹 서버나 메일 서버, WAS 등의 서버를 분석

  • 현재는 인터넷 포렌식이 디스크 포렌식 범위 안에 들어가 있음

 

4) 모바일 포렌식

  • 휴대폰, PDA, 전자수첩, 디지털 카메라, MP3, 캠코더, 휴대용 메모리카드, USB 저장장치 등 휴대용 기기에서 필요한 정보를 입수하여 분석하는 분야

 

5) 데이터베이스 포렌식

  • DB로부터 데이터를 추출 & 분석하여 증거를 획득하는 분야

  • 방대한 양의 데이터로부터 증거 수집 및 분석을 위한 기술, ERP 기반에서 개발된 회계 시스템 등의 대형 시스템을 위한 하드웨어 및 소프트웨어 기술과 다양한 DB 관리 시스템에 대한 제어 기술 등이 필요

 

6) 암호학 포렌식

  • 문서나 시스템에서 암호를 찾아내는 분야

  • 대표적으로 패스워드 크래킹이 있음

  • 암호가 될 수 있는 숫자 & 문자를 고속으로 대입하여 비교하는 크랙 프로그램을 개발하여 무차별 대입 공격 기법이나 사전 대입 공격 기법을 빠른 속도로 실시

 

7) 회계 포렌식

  • 기업의 부정과 관련된 수사를 할 때 저장된 회계 데이터를 추출하고 회계사 등 회계 전문가가 분석할 수 있도록 데이터를 정제하는 분야

  • 회계 시스템에 대한 프로그램을 개발한 경험이 있거나 회계 시스템을 운영해 본 경험이 있는 전문가가 필요

 

8) 메모리 포렌식

  • 메모리에 로드 되는 정보들을 분석할 때 활용하며, 사고 대응 포렌식 분야에서 빠르게 시스템의 정보를 분석할 때 유용하게 활용할 수 있으며, 휘발성 정보(프로세스, 네트워크, 실행했던 명령어, 접속했던 사용자 등)를 한 번에 분석할 수 있음

  • 하지만 증거 추출 포렌식 분야에서는 법정 증거로 채택이 안 되고, 사고 대응 포렌식 분야에서만 활용하고 있음


(5) 디지털 포렌식 절차

 

[그림 1] 디지털 포렌식 절차

 

5-1. 수사 준비

  • 관리적 / 기술적으로 준비를 하는 과정으로 컴퓨터 포렌식에 사용되는 각종 소프트웨어 또는 하드웨어를 준비하고 점검하는 단계

 

1) 전문 인력과 포렌식 도구의 활용 방안 수립

  • 다양한 운영체제 및 파일 시스템, 네트워크, DB, 회계 시스템 등의 기술을 가진 전문가들이 조사관으로 참여하여 각종 전문적인 도구를 이용하여 신속하고 정확하게 증거 수집 

 

2) 보관의 연속성 방안 수립

  • 증거를 가져간 시간, 돌려준 시간, 소지한 이유 등을 정확히 기록하여 증거가 훼손되지 않았음을 보여주고 무결성을 입증하기 위한 구체적 방안 수립

 

3) 데이터 무결성 유지 방안 수립

  • 확보된 데이터의 증거 능력을 확보하고 공판 과정에서 공소 사실을 입증하는 증거로써 가치를 부여하기 위해 무결성을 입증할 수 있는 여러 가지 방법 결정

  • 추가로 압수 수색 영장, 진술서 양식, 자문가 연락처, 관리자 승인, 현장 채증 준비, 증거 분석 도구 등을 준비

 

 

5-2. 증거물 획득

  • 피해 사고 발생 장소 또는 용의자 컴퓨터를 압수하는 현장에서 각종 저장매체와 시스템에 남아 있는 디지털 증거를 획득하는 단계

 

1) 휘발성 정보 수집

  • 시스템을 종료하거나 전원을 차단할 경우 휘발성 데이터가 손실되므로 현재의 상태가 유지되는 상태에서 프로세스, 메모리, 자원 사용 정보 등의 휘발성 정보 수집

 

2) 디스크 이미징

  • 증거 대상 디스크와 정확히 같은 사본을 만드는 과정을 말하며, 압수된 디스크를 조사 & 분석하게 되면 증거가 손상될 우려가 있으므로 이미지를 가지고 조사 & 분석을 진행해야 함

 

3) 증거의 무결성

  • 해쉬 및 검증 알고리즘을 원본 디스크와 디스크 이미지에 적용하여 보관한 뒤, 법정 증거 제출 시 무결성 확보 여부를 주장할 수 있음

 

4) 무결성 보장

  • 무결성을 보장하기 위해 캠코더나 사진으로 현장을 찍거나, 증거물에 대한 라벨지, 분석가에 대한 이름, 서명과 각각에 대한 시리얼 넘버에 대한 정보들을 기록

 

 

5-3. 디지털 증거 수집 단계

  • 피해 사고 발생 장소 또는 용의자 컴퓨터를 압수하는 현장에서 각종 저장매체와 시스템에 남아 있는 디지털 증거를 획득하는 단계

 

1) 휘발성 증거 우선 수집

  • 증거 수집 시 메모리나 프로세스, 화면에 있는 정보 등 소멸 가능성이 많은 증거부터 우선 확보

  • 일반적으로 레지스트리 / 캐시 / 라우팅 테이블 / ARP 캐시 / 프로세스 테이블 / 커널 정보와 모듈 / 메인 메모리 / 임시 파일 / 보조 메모리 / 라우터 설정 순으로 소멸 

 

2) 전원 차단 여부 결정

  • 서버의 경우는 전원을 차단하기 전에 프로세스 정보가 유실되지 않도록 Shutdown

  • 네트워크에 연결되어 있는 경우에는 수시로 원격으로 접속하여 데이터 삭제가 가능하므로 이에 대비하여 사전에 네트워크 단자를 제거

 

3) 전원 차단 방법

[그림 2] 전원 차단 방법

 

Macintosh : 애플 노트북에서 사용

임시 데이터 : 인터넷을 이용함으로써 남는 캐시 데이터, 쿠키 데이터, tmp 등

 

 

4) 증거 수집 대상에 따른 대응

  • 개인용 컴퓨터인 경우 본체를 그대로 증거로 채택하거나 하드디스크를 분리하여 복제하고, 데이터가 대기업 회계 관련 DB 또는 ERP 등 대형 컴퓨터에 저장되는 경우에는 전문가 도움을 받아 상황에 따른 적절한 증거 수집이 수행되어야 함

  • 증거의 위치나 수집 순서가 결정되면 증거 수집 프로그램 및 도구를 사용하여 사건과 관련성 있는 데이터를 중심으로 증거를 수집

  • 수집한 매체의 종류에 따라 PC, 서버, 이동형 저장매체 등의 출처, 사용자, 관련 부서, 연락처 등을 정확히 기재하여 나중에 혼동되는 일이 없도록 해야 하며 라벨을 부착

  • 증거 수집 과정에서 사용한 도구의 이름, 버전, 분석 과정, 시간, 산출 결과 등 전 과정도 기록 

 

 

5-4. 이송 및 보관

  • 디지털 증거의 경우 전자기파(EMP)에 노출되면 저장된 내용이 훼손되기 때문에 수집된 증거물을 안전한 방법으로 분석실 또는 보관소로 옮겨야 함

 

1) 증거 자료는 반드시 이중으로 확보

  • 디스크 이미지 사본 확보로 우발 상황 대비

  • 쓰기 방지 조치 및 봉인, 증거물 담당자 목록 유지

 

2) 증거물 이송

  • Bubble Wrap, 정전기 방지용 팩, 하드 케이스를 이용하여 이송하고 접근 통제가 가능한 공간 확보

 

3) 연계 보관

  • 현장에서 증거가 법정에 제출 될 시점까지 거쳐간 경로, 담당자, 장소 시간을 기록

  • 증거 무결성 증명을 위해 담당자 목록을 통해 최초 수집자로부터 법정 제출까지 담당자가 유지되어야 하며, 인수인계 과정에서 상호 증거를 확인하는 절차 필요

 

 

5-5. 분석 및 조사

  • 증거물 분석 단계는 증거물의 내부를 확인하고 범죄에 관련된 파일 또는 정보를 획득하는 과정으로 조사 / 분석 기술 중 필수적 요소로 데이터 복구, 은닉 정보 검색, 암호 파일 해독 등이 있음

 

1) 데이터 복구 및 증거물 분석

  • 디지털 증거를 추출하기 위해 암호 복구, 데이터 복구, 키워드 검색 및 정보 추출, MAC 타임 분석 등 다양한 포렌식 도구를 사용하여 증거물을 과학적이고 기술적으로 분석

  • 분석 과정이 명확하고, 결과 도출이 논리적으로 이루어져야 함

  • 재현이 가능해야 하며, 증거물 훼손 및 내용 변경이 금지되어야 함

  • 분석 수행함에 있어 버전과 출처 등도 명확하게 기록해서 보고서에 넣어야 함

  • 여기서 재현은 만약 A라는 수사관과 B라는 수사관이 분석할 시에 똑같은 결과가 나와야 한다는 것을 뜻함

 

 

5-6. 보고서 작성

  • 컴퓨터 포렌식 절차 중 마지막 단계로 디지털 증거 수집, 운송 및 보관, 조사 / 분석 단계의 모든 내용을 문서화하여 법정에 제출하는 단계

  • 증거물 획득, 보관, 분석 등의 과정을 6하 원칙에 따라 명백하고 객관성 있게 설명해야 하며, 예상하지 못한 사고로 데이터가 유실되어 변경될 경우 이를 명확히 기재하고 범죄 혐의 입증에 무리가 없음을 논리적으로 설득할 수 있어야 함

  • 누구나 알기 쉬운 형태로 작성

  • 수사 기관에서 조사 분석할 수 없어 외부에 이를 의뢰하였거나, 컴퓨터 포렌식 서비스 또는 전문가에게 상담을 의뢰하였다면, 그 결과를 전문가 소견서 형태로 제출하고 전문가를 법정에 참고인으로 출석할 수 있게 해야 하는 과정도 포함


(6) 디지털 증거물 획득 절차

 

[그림 3] 디지털 증거물 획득 절차

 

6-1. 디지털 증거물 수집 시 주의사항

  • 어떤 시스템을 수집할 것인지를 목록에서 확인 & 신속하고 정확하게 수집

  • 하드 디스크만 수집할 경우 충격이나 자기장 등으로 인해 증거 손상이 가지 않도록 주의

  • 시스템 하드웨어나 네트워크를 파악하고 원본 손상을 방지

  • 시스템 전원 차단 여부를 먼저 파악하고, 전원이 꺼져 있다고 판단되더라도 화면 보호기 작동 여부, HDD 및 모니터 작동 여부를 파악하여 전원 유무를 재확인

  • 전원이 켜져 있는 시스템에서 수집해야 할 휘발성 자료가 있을 때, 시스템에 피해가 가지 않는 한의 최소한의 범위 내에서 작업을 수행

  • 시스템 시간을 확인하는 과정에서 표준 시간 정보와 비교해서 정확하게 기록

  • 전원이 켜져 있을 경우 부주의에 의해 시스템 내의 프로그램을 실행시키지 않도록 주의

  • 기타 장치 종류를 확인하고, 알 수 없는 장치가 있는 경우 사진 촬영 등 자료를 확보하고 전문가와 상의

  • 취급 미숙으로 인해 시스템을 켜는 것만으로도 데이터 변조가 있으므로 각별히 주의

 

 

6-2. 결과 보고서 작성에 따른 주의사항

  • 수사관이 쉽게 이해할 수 있는 용어를 사용하여 정확하고 간결하며 논리를 정연하게 작성

  • 추정을 배제하고, 사실 관계를 중심으로 작성

  • 객관적 사실, 설명 내용, 분석관 의견을 구분하여 작성

  • 증거 발견 방법 및 증거물에 대한 작업 내용은 명확하게 문서화

  • 분석 및 처리 과정을 사진 또는 영상 등으로 기록 유지

  • 분석에 사용된 하드웨어와 소프트웨어의 정보를 반드시 기록

  • 작성이 완료되면 분석담당관의 서명 후 원본 증거물과 함께 의뢰인에게 송부

  • 수정이 불가능한 문서자료 형태로 작성하여, 관련 사건의 재판 종결 시나 공소시효 만료 시까지 증거 보관실에 보관

 

 

6-3. 디지털 포렌식 분석 보고서

 

[그림 4] 디지털 증거 분석 보고서


(7) 디지털 포렌식 도구

 

7-1. 디지털 포렌식 하드웨어 도구

[그림 5] 하드웨어 도구

 

 

7-2. 디지털 포렌식 소프트웨어 도구

[그림 6] 소프트웨어 도구

 

 

7-3. 디지털 포렌식 기타 도구

  • 데이터 복구를 위한 복구 도구 (R-Studio, Recover My File 등)

  • 현장 촬영용 카메라

  • 현장 녹화용 캠코더

  • 연계 보관성을 위한 서류 및 라벨

  • 증거 보관을 위한 케이스

  • 증거 손상을 막기 위한 충격 흡수 봉투 (케이스)

  • 정전기 방지를 위한 정전기 방지 봉투

  • 증거 운송을 위한 충격 완화 증거 운반용 박스 

+ Recent posts