이 책은 미 연방수사국(FBI)의 사이버 범죄 수사팀 요원인 카메론 말린(Cameron H. Malin)이 저술한 책으로, 원서의 제목은 Malware Forensics Field Guide for Windows Systems: Digital Forensics Field Guides이며 2012년에 출판되었다. 이를 한국의 에이콘출판사에서 '디지털 포렌식 시리즈'로 역간하였으며, BoB의 김진국 멘토님이 시리즈 에디터로 활동하신다. 역자는 서만기, 장윤하님께서 수고해주셨다.


이 책은 단순히 이론만 펼쳐놓은 것이 아니라, 말 그대로 실전(Field Guide)이다. 특히 현장 인터뷰 질문이나 주의사항, 도구 등을 소개하는 것이 매우 도움이 된다.

원서(좌)와 한국어판 역서(우)원서(좌)와 한국어판 역서(우)
원서(좌)와 한국어판 역서(우)

또한 포렌식 조사는 결국 법정에서 증거로 사용하기 위한 목적이 큰데 이 책은 각 단원마다 해당 내용을 문서화(Documentation)할 수 있도록 아래와 같은 예시를 보여준다. 실제로 활용할 때 아래의 사항들을 준용하면 좋을듯하다.

1장. 악성코드 대응

1장은 사실상 '침해사고 대응(Incident Response)'에 초점을 맞추어 설명하고 있다. 즉, 조사관이 신고를 받고 출동하여 처음으로 맞딱뜨린 현장에서 어떤 행위를 해야하는지 절차와 방법들을 서술하는 것이다. 가장 먼저 휘발성 데이터를 수집해야 하며 이때 어떤 우선순위(예를들어 RFC 3227)를 고려해야 하는지 언급한다. 윈도우 시스템의 경우 주의깊게 살펴보아야 할 정보들은 다음과 같다.(일부 생략)

  • 프로세스/프로그램 정보
  • 네트워크 포트
  • 프리패치
  • 자동 실행
  • 이벤트 로그(레지스트리)
  • 웹 브라우저 사용 흔적

법정에서 포렌식 전문가로써의 자격은 매우 중요하기 때문에 만약 권한이 없는 사람이 작업한 경우 증거능력을 부정당할 소지가 있다. 때문에 조사관이라면 관련 교육을 통해 반드시 최신 도구나 기법들을 숙지해야만 한다. 자격증 또한 취득하는 것이 좋다. 다루는 도구 역시 신뢰되고 검증된 프로그램이어야 한다. EnCase같은 도구는 상용 라이선스를 사용하며 이미 전세계적으로 법정에서도 인정되고 있다. 그외에 무료로 사용할 수 있는 도구들은 각 분야별로 침해사고 대응(F-Response, Helix3, ProDiscoverIR), 원격수집(Netcat, Cryptcat), 물리 메모리 취득(Forensic Acquistion Utilityes, DD, Fastdump, Memoryze), 대상 시스템 정보 수집(DumpWin), 사용자 식별(Quser), 네트워크 정보(Netstat, ARP, TCPVon), 프로세스 분석(pmon, pulist), 프리패치(Windows File Analyzer) 등이 있다. 자세한 내용은 한국어판 기준으로 115page 부터 146page를 참고하면 된다.


2장. 메모리 포렌식

악성코드의 행위가 활성 시스템에 남아있는 동안에 해당 흔적을 찾아내기 위해서는 메모리 포렌식이 중요하다. 미국에서는 콜럼비아 픽처스 인터스트리와 버넬 사건(Columbia Pictures Industries v. Bunnell)의 판례를 보면 법원은 웹 서버의 RAM에 사건과 관련된 로그 데이터가 포함되어 있을 수 있으므로 사건에서 인정할 수 있는 증거물의 범위에 포함해야 한다고 판결을 내렸다. 

Columbia Pictures Industries v. Bunnell, 2007 U.S. Dist. LEXIS 46364 (C.D. Cal. June 19, 2007).
Based on the amended Fed. R. Civ. P. 34(a), the court found that data that was stored on Defendant's website in its random access memory (RAM) was considered to be "electronically store information" and had to be produced in accordance with discovery requests. Defendant did not incur sanctions for not properly preserving the RAM, as there was no prior precedent set regarding the preservation of RAM. 

그러나 아직까지 국내에서는 메모리 포렌식 관련하여 법정에서 증거로 인정된 사례는 없는 것으로 보인다. 하지만 어쨌든 포렌식 조사관은 원활한 조사를 위해서 휘발성 데이터에 대한 수집과 분석 능력을 필수적으로 갖추어야 할 것이다. 메모리 포렌식 상황에서 대표적으로 살펴보아야 할 자료들은 다음과 같다.

  • 프로세스와 스레드
  • 모듈과 라이브러리
  • 열린 파일과 소켓
  • 다양한 데이터 구조체

윈도우즈 시스템에서 메모리 포렌식을 위한 도구로는 Encase EnScripts, FTK, Memoryze, PTFinder, Reponder, Volatility가 있다고 소개하고 있다. 사실상 Encase나 FTK는 범용적인 포렌식 상용도구인 것이고, 메모리 포렌식계의 사실상의 표준은 볼라틸리티가 평정하였다고 볼 수 있다. 

칼리리눅스에 포함된 Volatility Framework 2.5
칼리리눅스에 포함된 Volatility Framework 2.5

볼라틸리티와 관련해서는 제작자가 직접 저술한 The Art of Memory Forensics: Detecting Malware(메모리 포렌식, 혜지원 역간)라는 책이 유명하며 기회가 된다면 추후 리뷰를 남기도록 한다.


3장. 사후 포렌식

이 단원에서는 이미 침해사고를 당한 시스템에 대해 정확한 원인을 규명하는 것을 다룬다. 즉 사람으로 치면 live response는 '수술'이었고, 이번 단원은 Post-Mortem Forenscis으로써 이미 죽은 사람에 대해 사망의 경위를 밝히기 위해 '부검'하는 과정을 말한다. 사람이 죽게되고 그 원인이 불분명하거나 범죄로 의심이 되면 여러가지 상처와 흔적, 사후경직 등을 조사하여 이 사람이 어떤 과정을 겪어 사망에 이르렀는지를 조사하게 된다. 마찬가지로 윈도우 시스템의 경우 악성코드의 영향이 의심될 때 이와 관련된 흔적들을 역추적하고, 대표적으로 레지스트리, 이벤트 로그, 프리패치, 실행 파일, 자동실행, 스케쥴 작업, 사용자 계정, 시스템 로그, 복원지점 등을 조사하여 종합적인 판단을 내리게 된다. 특히 각각의 자료들을 시간(타임스탬프) 순서대로 잘 나열하여 일명 '타임라인(Timeline)'을 그린다면, 조금 더 수월하게 전체적인 그림을 그릴 수 있으며, 각 아티팩트들의 인과관계를 납득할 수 있게 된다. 이는 이후 수사의 방향을 결정하는데에도 큰 도움이 될 수 있다. 


이 장에서 특히 강조되는 부분은 증거의 무결성(Integrity)를 지켜야 한다는 점이다. 그냥 취미로 포렌식 조사를 하는 경우는 논외로 하고, 실제의 포렌식 업무는 대부분 수사와 관련이 있다. 이때 법정에서 증거로 제출되기 위해서는 당해 증거가 원본과 일치하는지, 조사과정에서 훼손이나 손실은 없었는지가 매우 중요하다. 따라서 조사관은 임의대로 조사를 수행해서는 안되고, 메뉴얼에 입각하여 조심스럽게 증거물을 분석해야만 한다. 


결론적으로 이 단원은 감염된 시스템을 분석하고 흔적을 발견하는 방식으로 진행된다. 그 자료들을 종합한다면 악성코드에 대한 시간적, 기능적, 관계적 재구성을 할 수 있다는 것을 설명한다. 이를 도와주는 도구로는 당연히 Encase, FTK가 가장 보편적이고, 오픈소스인 The Sleuthkit, Autopsy 또한 유용하다. 또한, log2timeline 역시 무료 오픈소스 도구로서, 다양한 타입의 로그 파일이나 날짜/시간 스탬프 형태로 존재하는 데이터 소스로부터 정보를 추출하여 해당정보들을 통합해 종합적인 타임라인으로 표현해 준다. 윈도우 시스템만의 특징적 아티팩트인 프리패치를 확인할 때는 WinPrefetchView와 Prefetch Parser가 유용하며, 그밖에 Event Log Explorer, Registry Viewer 등을 추천한다.

AccessData Releases Forensic Toolkit 4
AccessData Releases Forensic Toolkit 4


4장. 법적 고려사항

이 단원에서는 포렌식 수사와 관련된 법적인 사항들이 언급된다. 이 책은 미국에서 출판되었으므로 대한민국의 법률상황과는 다르다. 공통적인 것은 디지털 수사를 위한 압수수색 영장 집행, 피해자의 권리 보장과 관련한 내용이다. 미국은 사생활 보호법(ECPA, Electronics Communications Privacy Act)에 대한 인식이 뚜렷한 국가이기 때문에 사법당국이라 할지라도 함부로 그 권리를 침해할 수 없다. 다만 매우 특수한 경우 연방 및 주 법령에 의해 사법당국이 악성코드 포렌식 조사를 할 수 있는 권한을부여받을 수 있다. 국내에서의 판례에서도 디지털 포렌식 수사에서 피해자의 참여권을 보장하지 않았다는 이유로 증거능력이 훼손된 판례가 있다.

또한 미국의 경우 약 45개의 주에서 민간 조사관에 대한 자격면허증(license)를 언급하고 있다. 도구나 방법의 잘못된 사용으로인한 데이터의 기밀성/보안성/무결성 침해에 대한 우려 때문이며, 따라서 올바르게 교육되지 않은 사람이 수집한 증거물은 수사에서 제외되고, 의뢰인으로부터 계약 해지 또는 서비스 비용지불 거절 등의 패널티가 부과될 수 있다. 조사관은 자신이 획득한 증거들의 증거능력을 향상시키기 위해서 문서화, 보존절차, 연계보관(chain of custody)를 준수해야 한다.


사이버 수사는 물리적 장소에 제약을 받지 않으므로 초국경성을 갖는다. 따라서 필요에 따라 해외 등 국경을 벗어나는 범위에 있는 데이터를 발견하고 보존해야 할 경우도 많다. 이 경우 해당 국가의 법령에 저촉되어 원활한 수사가 어렵게 되고 당국의 수사공조를 요청해야 한다. 


5장. 파일 식별과 프로파일링

개인적으로 이번 단원이 이 책의 핵심이며, 중심주제 역할을 감당한다고 평가한다. 지금까지 앞 단원에서 했던 이야기들이 서론이자 준비운동에 해당했으며 본 단원에서는 본격적으로 전력질주를 시작한다. 나에게도 가장 큰 인사이트를 준 부분이다.(물론 6단원을 아직 안읽어서..ㅋㅋ) 여기에서는 윈도우 환경에서 의심스러운 파일을 발견하고 그것을 분석하는 과정을 다룬다. 이를 일명 프로파일링(profiling)이라 한다.


의심스러운(suspicious)의 정의가 참 애매하다. 어떤 기준으로 무엇이 얼마나 특이하면 의심스러운 것인가? 이 책은 다음과 같은 기준을 제시한다.(한국어판 308~309p)

  • 출처를 알 수 없음
  • 익숙하지 않음
  • 겉보기에는 익숙하나, 시스템에서 자주 사용하지 않는 위치에 이상한 이름을 가짐
  • 알려졌거나 익숙한것과 유사하게 위장(camouflaging)
  • 코드 난독화로 파일이 숨겨져 있음
  • 네트워크와 커넥션을 맺거나, 변칙적인 행위를 함.

이러한 의심스러운 파일들이 추출되었다면, 그들의 목적과 기능을 정확히 파악하는 것이 바람직하다. 이를 파일 프로파일링(file profiling)이라 부른다. 이 과정에서는 파일의 형식, 원래의 의도된 기능, 시스템에 끼치는 영향이나 감염 정도를 통해 유추해 본 공격자의 수준, 피해 수준 및 복구 방안 등을 파악한다. 특히, 의심스러운 코드를 내포한 파일의 경우 정적 분석(Static program analysis)을 수행한다.

바이러스 토탈을 이용한 파일분석
바이러스 토탈을 이용한 파일분석

프로파일링과 관련하여 대표적으로 암호학적 해시함수를 사용한다. 이 책에서는 "MD5는 악성 실행 파일을 식별하기 위한 해시 값을 생성하는 데 있어서 사실상 표준으로 여겨져 왔다."(314p)라고 언급하고 있다. 그러나 나는 이 의견에 동의하지 않는다. (더이상의 MD5의 사용은 중단되어야 된다고 믿고있으며, 이와 관련해서는 추후에 논문을 발표할 예정이다) 어쨌든, 디지털 포렌식에서 증거의 무결성 여부가 법정에서 제출가능하느냐 마느냐의 중요한 문제를 결정짓기 때문에 해시값을 사용한다. 그런데 해시함수의 특성상 입력이 단 1비트만 바뀌어도 출력이 어마어마하게 변경되기 때문에 실수로라도 훼손하면 끝장난다. 물론 이러한 성질 덕분에 해쉬함수를 통해 무결성 입증을 하면 상당히 신빙성이 높다. 하지만 악의적인 인간이 의도적으로 약간의 나쁜짓(?)만 해도 나머지 전체가 증거로 사용되지 못하는 점은 정말 아쉬운 것이다. 난 이 경우 방법이 없는줄 알았는데, 이 책 덕분에 ssdeep 라는 것을 알게되었다.(317p 참고) 이는 파일의 유사도를 인덱싱하는 기법을 사용해서 해당 파일이 원본과 얼마나(%) 차이가 나는지, 만약 1바이트만 수정되었다면 해시값은 변경되었겠지만, 실제로는 99%이상 일치한다는 것을 확인해준다.


앞서 언급했듯이 이 단원은 매우 다양한 내용을 담고 있으며 모두 파일을 분석할 때 점검해야 할 사항들(형식, 메타데이터, 시그니처, 문자열 정보, 난독화, 패킹, 윈도우 PE파일 구조, 문서 파일 프로파일링 등)이 많아서 일일이 열거할 수가 없다. 책 본문을 다시한번 참고하기 바라며, 이와 관련한 도구들(418~445p)를 잘 메모해두었다가 CTF 대회 등에서 유용하게 활용할 수 있을 것 같다.


6. 악성코드 표본 분석

이 책의 마지막 단원이다. 여기에서는 앞장에서 설명한 파일 프로파일링 이후에, 실질적으로 해당 바이너리의 동적 분석과 정적 분석을 바탕으로 보다 정확한 행위분석을 수행하는 지침을 제공한다. 이 내용은 Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software(실전 악성코드와 멀웨어 분석, 에이콘출판 역간)에서 더 자세히 다루어진다.


우선 분석환경을 구축할 때에는 VMware나 버추어박스 등의 가상환경을 이용한다. 해당 소프트웨의 '스냅샷'기능을 활용하여, 정상인 상태의 표본을 기준점으로 설정하고 특정한 악성코드를 실행하였을 때 어떠한 변화가 일어나는지, 구체적으로 프로세스, 파일 시스템, 네트워크, 레지스트리, API 호출 등을 관찰(모니터링)하는 것이다. 참고로 이러한 역할을 수행해주는 오픈소스 '쿠쿠 샌드박스'가 있다. (책에서는 Buseter Sandbox Analyzerer, ZeroWine, Minibis, TRUMAN 등도 소개)


프랑스의 셜록홈즈라고도 불리는 Dr. Edmond Locard는 그 유명한 '로카르드의 교환법칙'을 주장하였다. "모든 접촉은 흔적을 남긴다."는 것이다. 이는 법과학(포렌식)에서 적용되는 이론이지만, 디지털 포렌식에서도 마찬가지로 통용된다. 악성코드 포렌식 관점에서 디지털 흔적 증거는 의심스러온 악성코드의 실행으로 인해 피해 시스템의 메모리나 파일, 그리고 레지스트리에 자국을 남긴다. 이를 보통 아티팩트(Artifact)라고 부른다. 이번 장에서는 악성코드가 남긴 아티팩트들을 분석하는 방법을 제시하는 것이다. 특히 동적분석의 경우 OllyDbg, IDA Pro를 사용하는 방법을 다룬다. 결국에는 리버스 엔지니어링의 영역이며 어셈블리 언어의 숙달이 요구된다.


느낀점.

이 책의 가치에 대해서는 이미 위에서 주야장천 설명하였으므로 더 논할 필요가 없다. 윈도우 환경에서의 악성코드 분석에 대한 전체적인 맥락을 이해할 수 있도록 돕는다. 다만 '실전'이라는 용어가 주는 느낌보다는, 여전히 '개론'적 느낌에 '실전에서 활용할 수 있는 도구'를 제공하는 정도인 점은 아쉽다. 예를들어, 실제 악성코드 샘플을 가지고서 분석을 수행하는 내용은 포함되어있지 않다. 그런 내용을 원하는 독자라면 위에서 언급한 Practical Malware Analysis(실전 악성코드와 멀웨어 분석)을 보는 것이 나을 것이다.


이 책은 2012년 중순에 출간되었으며, 동일한 저자진 3인방은 2014년에 'Malware Forensics Field Guide for Linux Systems'라는 제목으로 리눅스 시스템에 대한 책을 다시 저술했다. 한국어 판은 이번에도 역시 에이콘출판에서 (디지털 포렌식 전문가를 위한) 실전 리눅스 악성코드 포렌식 이라는 제목으로 2015년에 역간하였다. 목차만 확인하였을 때는 이 책과 대동소이한데, 시간이 된다면 리눅스 책도 도전해봐야겠다.





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