주요 내용으로 건너뛰기

[논문리뷰] 메모리 포렌식, 아직도 가야할 길

Review) Memory forensics: The path forward, Digital Investigation Volume 20

Digital Investigation 저널의 2017년 3월호 [Special Issue on Volatile Memory Analysis] 가 나왔다. 휘발성 메모리 포렌식분석 특집으로 다루고 있다. 개인적으로 메모리 포렌식 관련된 내용을 중점적으로 연구하고 있고 저서도 썼던 만큼, 굉장히 관심있는 주제이므로 해당 논문들을 시간날때마다 하나씩 살펴보려 한다.

우선 첫번째 논문은 Memory Forensics: The path forward이다. 대략 '메모리 포렌식의 발전 방향' 정도로 해석해보겠다. 제목이 너무 논문틱해서, 아직도 가야할 길(The Road Less Traveled, M. Scott Peck)이라는 작품의 제목을 빌려 나름대로 해석해보았다.

원문에 대한 인용정보는 아래를 참고.

Andrew Case, Golden G. Richard III, Memory forensics: The path forward, Digital Investigation, Volume 20, March 2017, Pages 23-33, ISSN 1742-2876, http://dx.doi.org/10.1016/j.diin.2016.12.004.
(http://www.sciencedirect.com/science/article/pii/S1742287616301529)


P.S. 고작 10 페이지 남짓인 분량을 우습게 여기고 첫 삽을 뜬게 4월이었다. 그리고 이 글은 10월이 다되어서야 완성되어 공개포스팅 된다. 나의 게으름탓이지만... 감개무량 ㅠ ㅠ


Abstract :

디지털포렌식은 기본적으로 컴퓨터 시스템, 모바일 폰, 디지털 카메라 등등 전자기기의 저장매체에 포함되어 있는 아티팩트를 분석하는 것에 초점을 맞추고 있다. 그러나, 최근의 연구에 따르면 휘발성 메모리에 대한 분석 기법이 나날이 발전함에 따라 디지털 포렌식의 저변이 넓어지고 있다. 메모리 포렌식이라 함은 단순히 메모리로부터 간단한 문자열(String)을 추출하는 것 뿐만 아니라, 조금 더 심층적이고 구조적인 분석을 수행하는 것까지 다양하다. 이를 위해서는 운영체제별로 저마다 다르게 사용되고 있는 커널 데이터 구조라던지 애플리케이션에 대한 구체적인 분석을 필요로 하기 때문에 심도있는 연구가 필요하다. 본 논문에서는 현재까지의 메모리 포렌식이 이루어낸 예술적 경지(the state of the art)를 살펴보고, 이에 대한 한계를 논하며 비평을 수행한다. 특히 운영체제의 설계 변경이 메모리 포렌식 방법론에 미치는 영향을 중점적으로 설명할 것이며, 향후 연구를 위한 발전 방향을 제시하도록 한다.

Keywords

Memory forensics; Computer forensics; Memory analysis; Incident response; Malware

(이하 본문 내용은 논문 전체에 대한 번역이 아니며, 중요하다고 생각되는 부분에 대한 주관적인 요약임)

1. 서론

통상적으로 디지털포렌식이라 함은 전자적 저장장치에 대한 분석을 통해 삭제된 파일을 복구하고 이를 보존한 뒤 분석함으로써 그 내부에서 유죄 입증을 위한 증거를 추출하는 것에 초점을 맞추고 있다. 포렌식 도구를 사용하면 저장장치의 bit-perfect copy 사본을 추출할 수 있으므로 그곳에 범죄 행위를 추적하는 것이 일반적이다. 그러나 이러한 방식은 죽어있는(dead) 데이터에 대한 분석일 뿐이다. 그러한 의미에서 지난 십년여간의 연구동향에 따르면 시스템의 활성 메모리상에서 포렌식 아티팩트를 추출하여 분석하는 방식의 '메모리 포렌식(Memory forensics)' 기법이 각광받고 있다. 덕분에 포렌식을 수행해야할 대상 자체가 광범위하게 넓어졌고, 사이버범죄가 대상 시스템에서 구체적으로 어떻게 이루어졌는지를 보다 명확히 추적할 수 있게 되었다. 악성코드를 개발하는 사람들도 자신들의 멀웨어가 저장장치에 흔적을 남기지 않도록 만들고 있는 추세이기 때문에 침해사고 대응에서 필수적으로 메모리 분석을 수행해야 하는 상황이라고 볼 수 있다. 단, 이러한 메모리 포렌식을 수행하기 위한 가장 큰 전제조건은 시스템이 활성상태에 있어야만 한다는 것이다. 기존의 디스크 포렌식은 시스템의 전원을 차단하여 종료된 상태에서 수행하지만, 그렇게 되면 휘발성 메모리가 소실되기 때문에 메모리 분석을 할수가 없다. 메모리에는 현재 실행중인 프로세스 목록, 네트워크 연결상태, 메시지, 암호화 키 등의 파편이 남아있을 수 있으며 반드시 활성상태에서만 추출할 수 있다. 

메모리 포렌식은 2004년경 최초로 핵심 기술이 개발된 이후 지금까지 엄청난 진보가 있었으며, 계속해서 다양한 연구가 흥미진진하게 펼쳐지고 있다. 본 논문에서는 지금까지의 다양한 최신 기술에 대한 동향을 살펴보고, 앞으로 나아가야할 방향을 제시할 것이다. 특히, 운영체제 설계가 변경되는 상황에 대응하여 메모리 포렌식 도구를 어떻게 디자인하고 개발할지를 중점적으로 다룰 것이다. 

2. 메모리 추출(Acquistion)

1) 메모리 추출을 위한 기존의 접근법

메모리 포렌식에서는 우선 메모리를 추출하는 것만 성공해도 반이상은 먹고 들어간다. 안정적인 메모리 덤프를 위해서는 운영체제에서 제공하는 방법을 이용하는 것이 좋으며, 리눅스나 macOS는 /dev/mem, 윈도우 \Device\PhysicalMemory  를 통해 제공하고 있으며 보통은 Administrator 권한이 있어야 이러한 기능을 사용할 수 있다. 그러나 최근에는 이러한 기능을 악용한 멀웨어가 사용자의 커널 메모리의 내용을 가로채거나 변조할 위험성이 제기되어 이러한 기능을 폐지하는 분위기이다. 또한 다중 CPU 코어나 멀티프로세싱, 고용량 RAM, 새로운 운영체제 등등 지속해서 발전하는 분야의 특성상 포렌식 기법 역시 난제를 겪고 있다. 본 장에서는 5가지의 핵심 이슈를 살펴보고, 각각의 문제점과 한계점, 그리고 향후 개선해야할 방향을 살펴보도록 한다.

2) 페이징 번짐(page smearing)현상

Harlan Carvey는 시스템에 설치된 RAM의 용량이 커지면, 페이징 테이블과 실제 메모리 페이징의 정보 사이에 불일치(inconsistency)문제가 발생할 수 있다는 점을 지적하였다. 이를 메모리 페이지에 번짐(smearing)이 발생했다고 한다. 경험에 따르면 8GB 이상의 RAM이 설치된 환경에서 다양한 Task를 과중하게 작동하는 경우 자주 일어난다. 알다시피 최근의 경향으로는 개인용 PC라도 8GB는 커녕 최소 16GB에서 서버급은 수백 GB까지 통용되고 있으므로 이는 심각한 문제가 아닐 수 없다. 불행하게도 메모리 포렌식 도구에서는 이러한 현상을 자동으로 감지할 수 있는 묘안이 없다. 때문에 분석가가 직접 smearing 현상을 탐지하고 방지하기 위해 신경을 써야한다. 다행히도 최근의 클라우드 환경에서는 가상화 기술이 도입됨에 따라, 하이퍼바이저 고유 기능을 통해 적절히 통제할 수 있다. 그러나 실제 운용중인 시스템인 경우 이를 일시 중단하는 문제는 생산성에 경제적 타격을 초래할 수 있으므로 쉽게 결정할 수 있는 문제는 아니다.

따라서, 이러한 문제를 근본적으로 해결하기 위해서는 메모리 수집과정 자체에서 포렌식 툴이 smearing 현상을 적절히 처리할 수 있는 방안이 고안되어야 한다. 이와 관련해서는 BodySnatcherBlue Pill를 참고하는 것이 좋다.

3) Non-resident page에 대한 처리

대부분의 운영체제는 RAM을 실제 용량보다 조금 더 크게 사용하기 위해서 가상메모리 방식을 사용하고 있다. 현재 사용되지 않는 메모리 내용을 하드디스크에 파일 형태로 저장해두었다가, 해당 부분이 필요해지면 다시 디스크에서 RAM으로 호출해오는 방식이다. 이러한 과정은 page swapping, demand paging 등으로 설명되곤하는데 이 역시 메모리 포렌식 추출을 난해하게 만드는 요소라고 볼 수 있다. 이러한 문제를 해결하기 위해서는 swap 파일을 read하거나 write하는 핸들러를 모니터링하고 있다가 적절히 후킹할 수 있는 기능을 acquisition 도구에서 지원해야 한다. 여기에는 passive mode와 active mode 로 구분해서 생각할 수 있는데, 자세한 것은 다음 장의 '메모리 분석' 파트에서 다루어보도록 하자.

4) Windows 최대절전모드(hibernation) 관련 파일

하이버네이션(hibernation) 혹은 잠자기 모드는 시스템 전원을 끄기 전에 시스템 메모리에 있는 모든 내용을 하드 디스크에 기록하는 기능이다. 컴퓨터가 다시 켜지면, 하드 디스크에 저장된 내용이 메모리에 다시 적재되면서, 원래 사용하던 상태로 되돌아가며 그 당시 사용하던 프로그램들도 아무 일이 일어나지 않은 것처럼 동작하게 된다. 최대 절전 모드로 들어갔다가 다시 되돌아오는 시간은 시스템을 직접 다시 시작한 시간보다 더 빠르기 때문에 편리성을 위해 사용한다. Windows XP 의 경우 이러한 하이버네이션 파일을 분석함으로써 메모리 내용을 추출하는 것이 가능하다는 것이 Black Hat 2008에서 Suiche에 의해 발표된 바 있다. 그러나 Windows 8 을 기점으로 하여 더이상 이런 방법이 원활하게 작동되지 않는다. 특히 헤더의 내용을 '0'로 패딩하여 초기화시키는 것 때문에 최근의 윈도우에서는 하이버네이션 파일을 분석하기가 상당히 까다롭다. 때문에 윈8 이상의 버전에서는 이러한 파일들을 아예 제외시키는 것이 훨씬 효율적일 것이다. 메모리 추출 도구들은 이러한 점을 인지하고 자동적으로 해당 파일들을 기각시키되 사용자에게 적절한 안내문을 제시함으로써 분석가가 불필요한 분석에 시간을 낭비하지 않도록 도와주는 것이 필요하다.

5) Windows 10

앞서 하이버네이션을 언급했지만, 사실 Windows10이후로는 몇가지 더 중요한 이슈들이 있으며 최소한 현재까지는 관련 연구가 발표되지 않은 미지의 영역들이 있다. 대표적으로Device Guard, Swapfile.sys, Universal and Metro Apps 등이 있다. 이들은 기본적으로 악성코드에 의한 침해상황을 방지하고자 고안한 개념이지만 역으로 포렌식 분석가들에게도 고통을 안겨주고 있다. 곧이어 세련된 기법의 해킹방안이 개발된다면 포렌식 분석가 역시 이러한 장벽을 뛰어넘을 수 있는 인사이트를 얻을 수 있을 것이므로 최근 트렌드를 예의주시하길 바란다.

6) 리눅스 및 안드로이드

리눅스나 안드로이드 시스템의 경우 macOS나 윈도우 시스템에 비해 메모리 추출이 상당히 까다롭다. 특히 Ubuntu, Debian, RedHat, CentOS, 및 OpenSuSe 등의 유명 브랜드들이 다양하며 각각의 경우에 따른 커널 모듈이 상이하고, 버전별로도 조금씩 차이가 있다. 이러한 프로파일 정보를 관리하기 위한 데이터베이스가 구축되어야 한다고 보는데 아직까지는 관련 오픈소스는 없으며 상업용 버젼으로만 몇몇 곳에서 서비스하고 있다. (참고: Threat Protection for Linux) 그러나, 이처럼 DB를 구축해놓는다하더라도 실제 침해사고 대응 상황에서는 무용지물이 될 가능성이 크다. 특히 디지털 증거의 무결성 확보를 위해서 인터넷 접근을 차단시켜놓고 추출을 해야하는 상황이 많은데, 외부의 DB에 접속하여 커널모듈을 확인하는 것은 상당히 어려우며 이것을 늘 off-line 백업을 받아서 CD에 휴대하고 다니자니 커널 모듈의 업데이트 속도가 너무 빠르기 때문에 따라잡을 수가 없다. 또한 custom compiled kernels 의 경우에는 지원되지 않을 가능성이 크기 때문에 특히나 알려지지 않은 종류의 리눅스를 사용하는 시스템이라면 더더욱 어렵게 된다. 현재로써는 이러한 문제를 가장 잘 해결하고 있는 것이 LiME 프로젝트이다. 이는 대부분의 리눅스 시스템에서 호환을 지원하고 있다. 물론 아직까지 해결되지 못한 많은 단점이 있기는하나, 현재로써는 리눅스 환경에서의 메모리 추출을 가장 잘 지원하고 있다. (참고 : 504ensicsLabs/LiME Github) 향후에는 반드시 광범위한 리눅스 커널 정보를 데이터베이스에 저장하고 조사관들이 공유할 수 있는 채널이 마련되어 활발하게 최신버전으로 업데이트 되는 일들이 많이 벌어지길 바라며, 그것이 리눅스 플랫폼에서 최선의 해결책이라고 본다.

안드로이드 모바일의 경우에도 사실상 리눅스 커널과 비슷한 상황으로 보아도 무난하다. LiME이 안드로이드 또한 지원하고 있는데, 다만 이러한 일련의 추출행위를 수행하기 위해서는 스크린락을 해제해야 하고, 루트권한이나 기타 여러 설정에 자유자재로 접근할 수 있어야만 하는데, 이는 기기 소유자만 가능한 행위이고 만약 이것을 피의자가 임의로 제출할 수 있도록 한다면 증거인멸을 할 우려가 있으므로 조사관 입장에서는 아무래도 불리할 수밖에 없다. 


3. 메모리 분석(Analysis)

1) 메모리 분석시 사용하던 기존의 접근법

2000년대 초반, 실행중인 시스템에서 휘발성 메모리를 추출하여 그 내부를 분석하면 루트킷 등 다양한 것들을 파악해낼 수 있다는 점을 깨닫기 시작했다. 그러나 당시에는 별다른 분석 도구 없이 그저 Hex에디터나 String, grep 같은 커맨드라인 도구를 통해 모든 데이터를 살펴보는 방법밖에 없었다. 이를 구조화되지 않은 분석(Unstructured Analysis)라고 한다. 그러다가 2005년 DFRWS 컨퍼런스에서 WIndows memory sample을 분석하는 경연대회가 개최되었고, 이를 계기로 KntTools, MoonSols, FATKit, VolaTools, Volatility등의 프로젝트들이 생겨나기 시작했고, 그와 관련된 다양한 오픈소스 프레임워크와 학술논문들이 발표되었다. 본 장에서는 메모리 포렌식 분석작업에 있어서 그간의 행보를 살펴보고 향후 지향점에 대해 논의해보도록 한다.

2) 사용자의 플랫폼에 따른 개별 상황 분석

루트킷에 대한 위협은 나날이 증가하고 있지만, 라이브 시스템에서 루트킷을 탐지하는 적절한 대응방안의 부재로, 메모리 포렌식 연구자들은 커널 메모리 상의 비정상 행위를 분석하는 방식에 상당한 시간을 할애하며 온갖 노력을 쏟고 있다. 이와 동시에, 운영체제의 제조사들도 커널 루트킷에 대응하기 위한 방안을 마련하여 자사 제품에 적용하기 시작했다. Microsoft와 Apple은 모든 Kernel Driver는 무조건 디지털 서명을 필수적으로 요구하기 시작하였다. 악성코드 제작자들이 드라이버를 임의로 로드할 수 있으려면 인증기관으로부터 합법적인 서명 인증서를 훔쳐내야만 한다. 실제로 이러한 무모한 시도(?)를 수행했던 전례가 다소 있긴 하지만 그들은 국가소속의 거물급 해킹요원 또는 범죄집단으로 추정되며, 일반적인 수준의 배경지식으로는 엄두조차 낼 수 없을 정도로 어려운 일이다. Microsoft는 또한 Apple보다 한 걸음 더 나아가서 Patch Guard (Kernel Patch Protection, 2016)라고하는 Kernel Patch 보호기법을 구현했다. 이 메커니즘은 커널에서 작동하며, 커널코드가 임의로 수정되는 것을 보호하고, 중요 데이터 구조(프로세스 목록, Handler Callback, 드라이버 객체 등)가 변조되는 것을 방지한다.

이처럼 커널 영역에 접근하는 루트킷 구현이 어려워졌기 때문에, 악성코드 제작자들은 유저영역을 주요 활동무대로 변경하기 시작했다. 실행중인 프로세스의 메모리에 악성코드를 삽입하는 것은 비교적 작성하기 쉬우면서 전자서명을 거칠 필요도 없지만 커널 루트킷과 유사한 수준으로 작동시킬 수 있다는 것이 최대의 장점이다. 굳이 커널 권한으로 접근하지 않더라도 Userland Malware는 사용자의 행위를 몰래 엿보고, 키로깅을 수행한다거나 웹캠/카메라를 도청할 수 있으며 인터넷 사용기록, 연락처, 채팅대화 내용 등 다양한 정보를 네트워크를 통해 몰래 반출시킬 수 있다. 이러한 사용자 멀웨어는 활성 상태의 시스템으로부터 합법적으로 API 후킹을 수행할 수 있는 권한을 가지고 있기 때문에, 이들이 악성임을 탐지하는 것은 굉장히 어렵다. 그러므로 메모리 포렌식 프레임워크에서 이러한 userland malware의 행위를 탐지할 수 있는 기능이 강력히 요구되는 상황이다. 현행 도구들은 전통적인 userland malware의 코드인젝션, 코드 수정(API Hooks), runtime loader(윈도우의 IAT/EAT 패치 또는 리눅스의 GOT/PLT 패치) 등을 나름 훌륭하게 탐지할 수 있기는 하다.


그러나 여전히 가야 할 길은 멀다. 각 운영체제마다 다르게 구현된 userland runtime platform을 심층적이고 정교하게 분석하기 어려우며, 각각에 대한 표준화 작업이 되어 있지 않아 개발 자체가 난해한 실정이다.

각 운영체제별로 풀어야할 숙제는 대략 다음과 같이 꼽아볼 수 있다.

  • 윈도우 : Powershell을 이용한 악성행위를 분석하는 것, .NET Framework를 이용한 Malware
  • macOS : Objective-C 로 구현된 악성 프로그램에 대한 분석 방안. 대체언어인 Swift 역시 마찬가지
  • 리눅스 : XOrg 그래픽 런타임 라이브러리
  • 안드로이드 : 기존 Dalvik 방식 대신 새롭게 전환된 ART(Android Runtime) 환경에서의 분석

이와 같은 사항들에 대해 포렌식 분석가들은 현재의 Userland Malware의 급격한 확산과 위력을 예의주시해야 한다. 운영체제 전반에 걸쳐 구현되는 런타임 플랫폼은 악성코드가 자라기 적합할만큼 비옥한 환경을 조성하고 있다. 이들은 해당 플랫폼에 대한 완벽한 통제권을 가지고 있는데다가 이를 적절하게 점검할 수 있는 도구가 전무한 상황이다. 이런 연구를 수행하기 위해서는 다양한 OS에 따라서, 또한 각각의 환경에서 발생한 추가적인 변종 등을 세세히 검토하고 분석하는 노력이 많이 필요하다. 이 과정은 시간이 많이 필요하며 결코 쉬운 작업이 아니다. 특히 오픈소스가 아닌 (비공개의) 상용 운영체제 환경이라면 해당 환경에 친숙한 소속 전문가의 리버스 엔지니어링 기술 지원을 많이 필요로 한다.

3) 특정 응용프로그램에 대한 분석

디지털 포렌식은 보통 사이버범죄 사건에서만 주로 많이 다루어졌었는데, 최근에는 일반 민사 사건에서도 회계부정이나 기타 여러 보안규정 위반 행위를 적발하는 일에도 널리 사용되고 있다. 메모리 포렌식 기법은 디스크 포렌식에서 구할 수 없는 휘발성 정보들을 더 많이 얻어낼 수 있다. 채팅 프로그램, 웹 브라우저 등에서 네트워크 소켓에 대한 정보를 추출하고 그 내부에 암호화되지 않은 평문 데이터를 뽑아낼 수도 있다. 그러나 안타깝게도 아직까지 Notepad, Pidgin(메신저), Calendar 등의 응용프로그램 아티팩트를 분석하기에 최적화된 플러그인은 별로 개발되지 않았다. 웹 브라우져, 문서작성(Office) 프로그램, 웹 서버, 데이터베이스 서버 등은 저마다 독특한 포렌식적 특징을 가지고 있을 것인데 현재로써는 이것을 자동화한 플러그인에 대한 연구가 없는 실정이다. 그래서 strings를 수동으로 grep하는 노가다 방식이 많이 사용되는데, 이러한 노하우를 잘 정립하여 확장성이 있는 결과물을 얻을 수 있다면 좋겠다.

4) 압축된 in-memory swap

메모리 포렌식에서 swap 데이터에 대한 통합적 분석이 중요하다는 점은 본 논문에서 계속해서 강조하였다. 그러나 지금까지 언급했던 맥락은 모두 디스크에 swap된 통합파일들에 초점을 맞추어 설명한 것이다. 하지만 최신 운영체제들은 메모리상의 swap을 잘게 쪼개어 저장하는 방식을 채택하고 있다. 페이지를 디스크에 직접 기록하는 방식보다 Swap 페이지를 in-memory에 내장하여 고압축하는 방식은 상당한 성능 향상을 일으켜준다. 이와 관련하여 포렌식 관점으로 압축된 in-memory swap을 분석한 Case와 Richard의 연구 "In lieu of swap: Analyzing compressed RAM in Mac OS X and Linux."(DFRWS 2014 USA)가 최초로 제안된 바 있다. 

앞서 언급한 것처럼, 조각난 페이지 파일들을 수집하는 기존의 방식은 쉽지 않았는데, 차라리 메모리 내부의 Swap 페이지 방식은 수집하는 과정이 비교적 수월하다는 장점이 있다. 하지만 또 다른 측면에서의 커다란 난제를 안겨준다. 우선은 고강도로 압축되어 있기 때문에, 분석가가 strings나 grep, Yara 스캐닝 등의 방법으로 내용을 추출하여 파악하는 것이 불가능하다. 이는 포렌식 분석에서 상당히 많이 사용되고 있는 방법이기 때문에 이 작업을 진행할 수 없다는 것은 상당히 막막한 느낌을 준다. 현재까지는 이러한 압축 swap page를 원활하게 처리할 수 있는 메모리 포렌식 프레임워크가 전무하다. 위에서 언급한 DFRWS 참고문헌에서는 단지 Linux와 Mac 환경에서 극히 일부의 기능만을 수행할 수 있는 플러그인 형태로만 아직 개발되어 있다. 추후 Volatility 3 프로젝트를 추진하는데 있어서도 이러한 점을 고려하고 있지만 아직 가야할 길이 멀다. 분명하게, 아직까지는 compressed store된 페이지 정보들을 메모리 포렌식 관점에서 해결할 수 있는 알고리즘이나 공식 연구논문이 전무하다. 때문에 가장 적절한 대응 방안은, macOS, Linux, Windows 등 각 운영체제가 채택한 페이지 전환 알고리즘을 잘 분석해서, 그동안 디스크로부터 페이지 파일을 읽고 써왔듯이 동일하게 메모리 영역의 압축된 페이지에 대해서도 적절하게 압축을 해제하고 필요한 정보를 추출해낼 수 있도록 하는 메모리포렌식 프레임워크가 지원되어야 할 것이다. 압축만 잘 해제할 수 있어도 기존의 모든 포렌식 기능을 적용할 수 있으므로 압축해제 방안을 마련하는 것에 최선을 다하길 바란다.

5) Windows 10

윈도우 10은 메모리 추출 뿐만 아니라 분석 단계에서도 상당히 골칫거리이다. 특히, Native Linux가 내장되는 것과 지나치게 잦은 커널 업데이트 패치가 진행되는 것이 난제이다. 내장 리눅스와 관련해서는 저명한 리버스 엔지니어인 Alex Lonescu의 연구가 진행중이며, 커널 업데이트에 대한 대응으로는 Rekall이나 Volatility 같은 도구들의 새 버전에서 이들을 원활하게 지원할 수 있는 패치가 단행되어야 할 것이다.


4. 메모리 포렌식의 미해결 과제

앞서 안드로이드를 언급했지만, Apple의 iOS 운영체제를 논하지 않을 수 없다. 이는 아이폰과 아이패드를 위한 전용 OS이며, 세계에서 가장 큰 시장 점유율을 확보하고 있다. 정치인, 기업인, 고위층 인사, 외교관 등 민감정보를 다루는 사람들 역시 선호하는 이유에는 아무래도 그 보안성이 신뢰되기 때문일 것이다. 물론 iOS를 대상으로 하는 Malware 사례도 있다. (참고: Lookout, theiphonewiki) 현재까지 알려진바로는 iOS 장치에 대해 물리 메모리를 추출할 수 있는 공식적인 기법은 알려져있지 않다. 안드로이드는 이러한 것이 가능한 것과는 대조적이며, 심지어 탈옥(jailbreak)하더라도 운영체제로부터 커널 모듈을 로드하는 방안이 없기 때문에 LiME 등의 메모리 추출 도구를 사용할 수 없다. 실제로 유명한 아이폰 전문 해커 Stefan Essar는 iPhone용 하드웨어 커널 디버거를 개발한 적이 있으나, 이는 구형 버젼에 한해서만 가능한 부분이다. 어쨌든 이러한 방법을 통해 커널에 접근하여 모듈을 추출한다면 메모리 포렌식이 가능할지도 모르겠으나, 어쨌거나 이러기 위해서는 탈옥 및 커널 취약점 Exploit이 가능하다는 것을 전제해야 하며 재부팅 없이 이러한 작업이 가능하다고 가정하는 것은 상당히 어렵다.(알다시피 재부팅을 하면 휘발성 메모리가 날아가버리므로 이렇게 되면 의미가 없다.) 그리고 Apple 역시 이러한 취약점 발표에 대해 민감하게 대응하고 있으므로 새로운 패치가 발표된다면 해당 방법이 가로막히고 말 것이다.

기타 Chromebooks과 사물인터넷(IoT) 장비에 대한 메모리 포렌식도 남겨진 해결 과제이다. 크롬북은 파일 시스템이나 메모리에 대한 접근 자체가 불가능한 형태인 점이 문제이고, IoT 디바이스들은 대부분 임베디드 리눅스의 버전을 활용하는데 플랫폼이 제각각이어서 이를 적절히 커버할 수 있는 일반적인 메모리 추출 및 분석 방법론이 아직 마련되지 않았다. 이러한 장비들을 대상으로 강제적인 메모리 추출을 하려면 어쨌든 해당 시스템에 불법적인 접근을 가능케하는 취약점을 찾아서 악용해야 한다는 것인데, 이것 자체가 법적으로 정당하지 않기 때문에 증거수집 절차상의 문제를 야기하게 된다. 또한, iOS의 경우와 마찬가지로 해당 제조사들은 가능한 빠르게 취약점을 패치하는 방향으로 대처할 것이므로 이 부분은 정말로 난제가 아닐 수 없다.

5. 결론

결론적으로 메모리 포렌식은 컴퓨터 시스템을 분석하는 최고의 방법중 하나라고 볼 수 있으며, 특히 침해사고 상황이나 악성코드 등의 행위에 대응하여 선제적인 보안조치를 수행할 수 있도록 하는 원동력이 되어왔다. 본 논문에서는 메모리 포렌식의 지금까지의 변천사를 살펴봄으로써 그 위상을 확인하였고, 향후에도 메모리포렌식이 최전선의 방어책이 될 수 있기를 고대하며 앞으로 수행되어야 할 개선사항에 대해 논하였다.

정보보안에 관심이 많은 대학원생, 소프트웨어 엔지니어/서버관리자

CPUU 님의 창작활동을 응원하고 싶으세요?

댓글

SNS 계정으로 간편하게 로그인하고 댓글을 남겨주세요.