2013년 7월 31일 수요일

정말 이제 시작인 사람들을 위한 디지털 포렌식(Digital Forensics) 서적

올해 상반기에 개인적인 복잡 다단한 가정사가 있다 보니 2월에 읽은 서적의 내용을 이제서야 블로그에 올리게 되는군요.

올해 2월 초에 읽었던 서적은 분량이 많지 않아서 그리 시간 소비가 크지 않게 빠르게 읽을 수 있었던 서적으로 "이제 시작이야! 디지털 포렌식"이 있었습니다. 개인적으로 몇 년전 까지만 하더라 디지털 포렌식에 대해 그렇게 큰 관심을 보이지 않았습니다만, 우연히 인터넷으로 검색을 하다가 "Malware Forensics"이라는 용어를 접하게 되었습니다.

기존에 제가 알고 있던 디지털 포렌식(Digital Forensics)이나 컴퓨터 포렌식(Computer Forensics)은 특정 오프라인 범죄에서 컴퓨터 시스템이나 전자 기기들이 동반되어 범정에서 그 범죄 혐의를 입증 할 수 있는 법적 증거물을 컴퓨터 시스템이나 전자기기들로부터 획득하기 위한 기술적인 방안으로 이해하고 있었습니다.

하지만 멀웨어 포렌식(Malware Forensics)은 기술적인 방법론은 앞서 설명한 컴퓨터 포렌식과 크게 차이가 없지만, 악성코드 감염이 의심되는 시스템이나 침해 사고(Incident Response)가 발생한 것으로 추정되는 네트워크에서 컴퓨터 포렌식의 기술적인 방안들을 이용해 그 여부를 판단하고 대응하기 위한 수단을 이야기 합니다.

이러한 정의에 대한 내용은 VB2008에서 IBM ISS UK의 Martin Overton이 발표한 "Malware Forensics:  Detecting the Unknown"이라는 논문을 참고하시면 이해가 빠르실 것 같습니다.

이러한 관점에서 컴퓨터 포렌식을 접하고 관련 서적들과 논문들을 한편씩 읽다보니, 이제까지 제가 했던 업무들의 일부분이 멀웨어 포렌식으로 정의 될 수 있으며, 그 중에서 라이브 리스판스(Live Response) 방법론이 사용된 것을 알게 되었습니다. 다만 제가 사용하였던 기술들과 방법론들이 일반적으로 컴퓨터 포렌식 분야에서 언급되는 라이브 리스판스와 조금은 다를 뿐이지 큰 맥락에서는 차이가 없다는 것을 알게 되었습니다.

이런 생각에 포렌식과 관련해 조금 더 알아보자는 생각에 가장 처음으로 가볍고 편한 책을 고른 것이 "이제 시작이야! 디지털 포렌식" 입니다. 이 책은 번역서로서 원서의 제목 역시 "The Basics of Digital Forensics: The Primer for Getting Started in Digital Forensics" 입니다.


결론부터 언급을 하자면. 이 책은 디지털 포렌식에 대해 전혀 모르는 일반인이나 엔지니어들이 읽기 딱 맞는 수준의 책입니다. 다만 기술적인 정보나 방법론을 알기 위해 이 책을 접하게 된다면 정말 큰 실망감만 줄 수 있습니다.

책 제목과 같이 디지털 포렌식에 대해 단어만 들어본 사람들이 이게 무엇일까? 어떠한 기술들을 그렇게 부르는 것일까? 에 대해 호기심이 생기는 분들이 읽게 된다면 전반적인 큰 그림을 이해 할 수 있는 수준입니다.

개인적으로는 디저털 포렌식과 컴퓨터 포렌식에 대한 전반적인 이해를 구할 수 있었고, 어떠한 분야들을 기술적으로 접근해야 되는지에 대한 접근론을 정의 할 수 있었던 책으로 생각 됩니다.

그래서, 정리하자면 기술적인 높은 지식 보다는 비교적 쉽게 전반적인 큰 틀과 방향성을 이해하는 차원에서 접근한다면 유용할 서적입니다.

2013년 7월 30일 화요일

2007년 3월 중국 법인 엔지니어들 대상 교육 자료

어느덧 2013년도 절반 이상이 지나가고 7월도 내일이 마지막이네요. 여러가지 사정들 때문에 부지런하게 정리하지 못 했던 이 블로그도 시간이 흘러 1년이라는 시점이 다 되었군요.

이제까지 외부 강연에서 사용하였던 자료들도 2006년도까지 정리 되었고, 드디어 2007년도로 넘어 오게 되었습니다.

2007년도에 처음으로 진행하였던 외부 강연은 3월에 있었던 중국 법인에서 근무하고 있는 현지 엔지니어들을 대상으로 한 교육이었습니다. 교육은 총 5회에 걸쳐서 5일 동안 진행되었는데, 그 덕분에 입사 이래 가장 오랫동안 중국 북경에서 머무르게 되었습니다.

5일 동안의 출장 시간 동안 주중에는 교육을 하고, 야간에는 중국 현지 보안 업체 엔지니어 친구들과 저녁 식사를 하거나 학부시절 같이 공부 했던 선배, 후배와 친구들을 만나서 즐거운 시간들을 보낼 수가 있었습니다.

오늘 공개하는 자료는 앞서 언급한 바와 같이 총 5회에 걸쳐서 진행되었는 교육이었지만 4회와 5회는 대외비 자료(V3 엔진 구조와 진단법 관련)들이 포함되어 있어 이 것들 제외한 나머지 3회 분량만 공개하게 되었습니다.

1회에서는 악성코드의 최신 동향과 그에 따른 악성코드들의 최신 기법들을 다루고 있습니다. 이는 2006년도와 그 이전에 하였던 내용들에서 크게 다른 내용들은 포함되어 있지 않습니다.

1) 악성코드 정의와 분류
2) 악성코드 유형별 동향
3) 악성코드 기술적 동향
4) 주요 악성코드 감염 기법



2회에서는 악성코드 분석 방법론과 그에 맞추어서 사용되는 다양한 공개용 도구들을 소개하고 마지막에는 실제 악성코드 분석 사례를 예시로 들어서 설명하고 있습니다.

1) 악성코드 분석 프로세스
2) 악성코드 분석 유틸리티
3) 악성코드 분석 사례



3회에서는 악성코드 감염이 의심되는 시스템의 흔적들(컴퓨터 포렌식 분야에서는 아티팩트라고 언급되는 부분들)을 안레포트(AhnReport)를 이용해 추적하는 방법들을 설명하고 있습니다.

1) 악성코드 특성
2) AhnReport의 이해
3) AhnReport의 사용법
4) AhnReport 로그 분석



2013년 7월 23일 화요일

2006년 12월 악성코드 최신 동향과 기법

이래 저래 일들이 많다보니, 블로그 관리가 점점 소흘해지는 것 같네요. 다시 부지런히 글들을 정리 해봐야 할 것 같습니다.

오늘 공개하는 자료는 2006년 12월 H 기업 임직원들을 대상으로 진행되었던 보안 강연입니다. 이 시기에 워낙 비슷한 강연들을 많이 하다 보니 자료 역시 비슷한 내용들이 많이 포함되어 있습니다.

대략적인 목차는 아래와 같습니다.

1. 악성코드 유형별 최근 동향
2. 악성코드 기술적 동향
3. 주요 악성코드 감염 기법



이로서 2006년도 강연 자료들 정리가 모두 끝이 났습니다. 올해가 2013년이니 아직도 많은 강연자료들을 공개하지 못하고 있습니다. 시간 날 때마다 틈틈히 열심히 정리 해야 겠습니다. ^^

이런 강연자료들을 만들 때마다 강의를 많이 해보신 분들은 아시겠지만, 만드는 본인이 더 많이 배우게 됩니다. 기존에 읽었던 자료와 연구 했던 자료들도 다시 뒤져보고 요점 정리하면서 다시 생각도 해보게 되구요.

그리고 특히 작성 했던 자료들을 볼 때마다 저 자신의 지식의 깊이와 넓이가 커지고 있다는 점에서 뿌듯하다고 해야 할까요? 예전 자료들을 보다 보니 이런 저런 생각들이 많이 듭니다.

2013년 7월 4일 목요일

윈도우 시스템 포렌식을 위한 모듬 세트 NirLauncher

윈도우 시스템 포렌식(Windows System Forensic)에 관심이 있거나, 해보신 분들은 아마도 NirSoft라는 소프트 웨어 개발 업체에 대해 한 번 즈음은 들어 보셨거나 해당 업체에서 개발한 툴을  써보셨을 것 같습니다.

NirSoft에서는 GUI(Graphic User Interface) 기반으로 윈도우 시스템에서 간편하게 실행 할 수 있는 다양한 윈도우 시스템 분석 툴들을 무료로 공개하고 있습니다. 무료로 공개되는 툴들 중에는 인터넷 익스플로러(Internet Explorer) 및 파이어폭스(FireFox)와 같은 웹 브라우저의 암호를 복구 할 수 있는 툴에서부터 윈도우 시스템과 네트워크를 분석 할 수 있는 다양한 툴들까지 공개 중이라 여러가지 면에서 유용하게 사용 할 수 있습니다.

저의 경우에는 악성코드 감염으로 추정되는 시스템 분석을 위해 챙겨가는 여러 가지 도구들 중에서 꼭 빠지지 않는 것들 중 하나가 NirSoft에서 개발한 툴들을 모두 복사한 USB나 CD 였습니다. 하지만, 이러한 툴들을 모두 복사해서 폴더 별로 정리하고, 버전 별로 업데이트 하기가 여러가지 번거롭지 않았습니다.

이러한 번거로움을 한 번에 해결해주는 툴이 NirSoft에서 공개되었는데, 그것이 오늘 이야기 할 NirSoft Launcher 입니다.

NirSoft Launcher는 말 그래도 NirSoft에서 공개한 모든 툴을 하나로 모아서 그 것들을 하나의 런처를 이용해서 실행하고 리포트를 작성 할 수 있도록 만든 툴입니다.

우선 NirSoft Launcher를 해당 웹 사이트에서는 ZIP으로 압축된 파일인 nirsoft_package_1.18.04.zip(16,858,042 바이트)로 공개하고 있습니다. 해당 압축 파일을 풀면 아래 이미지와 같은 파일들과 폴더들이 생성 됩니다.


생성된 파일들 중 autorun.inf 파일이 포함되어 있어 USB에 모두 복사 했을 경우에는 해당 USB를 시스템에 연결 하는 것만으로도(물론, 윈도우 레지스트리(Registry)에서 자동 실행 옵션이 활성화 되어 있을 경우에만 해당 됩니다.) 자동으로 NirSoft Launcher의 메인 파일인 NirLauncher가 자동 실행 됩니다.


위 이미지에서 보는 것과 같이 NirSoft에서 제공하늠 모든 소프트웨어들이 Portable 형태로 연결되어 있어, 필요한 분류의 탭만 누르면 관련 툴들이 설명과 함께 나열 됩니다.

하나의 예로 프리페치(Prefetch) 파일들을 확인 할 수 있는 WinPrefetchView를 보면, 아래 이미지와 같이 설명이 되어 있습니다.


이를 더블 클릭하게 되면 아래 이미지와 같이 별도의 WinPrefetchView 툴이 실행 되면서 현재 사용하고 있는 시스템에서 최근에 실행되었던 파일들에 대한 정보들이 모두  나타나게 됩니다.


특히 악성코드 감염이 의심되는 시스템을 분석하기 위해 이래 저래 많은 툴들을 별도로 가지고 다닐 필요 없이 NirSoft Launcher만을 잘 활용해도 도움이 됩니다.

NirSoft Launcher에 포함되어 있는 툴들 중에서도 악성코드 감염으로 의심되는 윈도우 시스템의 다양한 핑거프린트(Fingerprint)와 아티팩트(Artifact)를 타임라인(Timeline)에 따라 추적하기에는 특히 아래 툴들이 많은 도움이 됩니다.

1) AlternateStreamView 
Find all hidden alternate streams stored in the file system.

2) CurrProcess
Displays the list of all processes currently running on your system.

3) FolderChangesView
Monitor folder/drive changes.

4) IECacheView
List all files currently stored in the cache

5) IECookiesView
Displays the cookies that Internet Explorer stores on your computer

6) IEHistoryView
Displays the list of Web sites that you visited with IE Web browser

7) LastActivityView
View the latest computer activity

8) MUICacheView
Edit/delete MUICache items in your system

9) MyEventViewer
MyEventViewer is a simple alternative to the standard event viewer of Winodws

10) OpenedFileView
Displays the list of all opened files on your system

11) ProcessActivityView
Show the file activity  selected process

12) RecentFilesView
Display the list of recently opened files

13) RegFileExport
Export offline Registry files to .reg file

14) UserAssistView
This utility decrypt and displays the list of all UserAssist entries

15) WhatsInStartup
Disable/enable/delete programs that are loaded at Windows startup

16) WinPrefetchView
View the Prefetch files (.pf) stored in your system

2013년 6월 20일 목요일

CrowdStrike에서 무료 배포하는 시스템 분석툴 CrowdInspect

아마도 이 블로그 글을 보시는 분들 중에서는 CrowdStrike 라는 업체가 생소하실 겁니다. CrowdStrike는 2012년에 사업을 시작한 미국의 신생 보안 업체로서, 스타트업이라고 하기에는 해당 업체의 핵심적인 경영진들의 면모가 범상치 않은 업체입니다.

CrowdStrike의 출발은 FoundStone(이후 McAfee에 인수됩니다.)이라는 침해사고 대응 전문 업체의 창업자이자 CEO인 George Kurtz(국내에서는 Hacking Exposed 시리즈의 저자로 더 유명할 것 같네요)와 인텔(Intel)에 인수 된 맥아피(McAfee)의 CTO인 Dmitri Alperovitch에 의해 시작 되었습니다.

개인적으로 Dmitri Alperovitch와 친분이 있어, 2012년 초에 안랩과 협력을 했으면 좋겠다는 연락을 받는 과정에서 그가 맥아피를 그만두고 창업을 하였다는 것을 알게 되었습니다.

여기까지가 CrowdStrike에 대한 이야기이고, 오늘 이야기 할 주제는 해당 업체에서 개발하여 무료로 배포 중에 있는 CrowdInspect라는 침해 사고가 발생 한 것으로 추정되는 시스템을 분석하기 위한 툴입니다.

CrowdInspect는 올해 2월부터 무료 배포되기 시작하였으며, 툴은 간단하게 EXE 파일(522,376 바이트) 1개입니다. 그리고 32비트와 64비트 윈도우 운영체제를 모두 지원합니다.

최초 해당 파일을 실행하게 되면, 사용에 대한 간략한 설명을 하고 동의를 구하게 됩니다. 동의를 클릭하고 난 다음에는 아래 이미지와 같은 사용자 인터페이스가 실행됩니다. 이러한 인터페이스는 기존의 프로세스 익스플로러나 다음 툴들과 큰 차이가 없어 조작과 적응이 쉬운 편입니다.


기본적으로 CrowdInspect는 Live 모드와 History 모드로 동작하게 됩니다. Live 모드는 말 그대로 현재 실행 중인 모든 프로세스 정보, 오픈든 TCP/UDP 정보들을 보여주며, History 모드는 CrowdInspect가 실행 된 그 시각 이후로 있었던 변화들을 순차적으로 Timeline에 맞추어 표기 해줍니다.

그리고 드라이버(.sys) 파일이 하나 정도 생성해서 이를 이용해 프로세스와 포트 검사를 할 것으로 생각 했는데, 순수하게 유저 모드(User Mode) 에서만 동작하도록 제작되었습니다.

여기까지만 보면 CrowdInspect가 다른 프로세스 익스플로러 형태의 시스템 관리 툴과 큰 차이가 없어 보입니다만, 개인적으로 생각되는 차별화 부분은 3가지로 볼 수가 있습니다.

1) 실행 중 또는 타임라인 상의 특정 파일에 대한 바이러스토탈(VirusTotal) 검사 기능
이 기능은 파일의 HASH인 SHA256을 구하여 단순하게 VirusTotal에 조회를 하도록 VirusTotal의 API를 이용한 것입니다.


2) Team Cymru에서 제공하는 Malware Hash Registry 검사 기능
이 역시 1번과 동일하게 Team Cymru의 DB에 HASH를 조회하여 결과를 리턴하는 것으로 보여집니다.

3) Web of Trust의 DB를 이용한 IP 검사 기능
이 역시 1번과 2번 과 같이 오픈된 포트에서 접속되어 있는 IP를 DB에 조회하는 기능이며, 실제 패킷 덤프에서도 해당 업체의 시스템으로 접속을 한 것을 확인 하였습니다.

이러한 장점을 가지고 있지만은 단점도 몇 가지가 분명히 존재합니다.

1) Timeline 기반의 포렌식 분석 기능 부족
타임라인 기능이라고 하여 다른 포렌식 툴에서 처럼 CrowdInspect가 실행 전의 상황들을 참고 할 수 있는 로그를 보여주리라 기대 했습니다만, CrowdInspect 실행 이후의 로그들만 보여주고 있습니다.

2) 프로세스 리스트 기능의 오류
실제 악성코드 샘플을 이용해 시스템이 악성코드에 감염되었다는 가정하에 테스트를 해보았습니다. 악성코드 감염 이후에 CrowdInspect를 실행 할 경우, 프로세스 익스플로러와 같은 프로세스 뷰어에서는 악성코드의 프로세스가 정상적으로 리스트가 되는 반면 CrowdInspect에서만 정상적으로 리스트화 되지 못하였습니다. 이 부분은 기능상 또는 구현상의 오류로 보여집니다.

3) 보안 위협의 트렌드를 반영하지 못한 기능 설계
현재 악성코드로 인한 보안 위협 트렌드로 보았을 때 CrowdInspect의 위치는 모호한 부분이 많습니다. 포렌식 분석을 위한 툴이라고 하기에는 부족하고, 악성코드 검출을 위한 아티팩트 분석 툴이라고 하기에도 기능들이 부족합니다.

여기까지가 CrowdInspect를 테스트하면서 생각해본 점들이며, 장점보다는 아직은 단점이 많아 보입니다. 하지만, 기존의 다른 침해 사고 시스템 분석 툴들과 다르게 DB 조회(클라우드거나 아니거나 상관 없이) 기능을 추가하여 활용하고 있다는 점은 분명한 장점으로 볼 수 있습니다.

마지막으로 패킷 덤프 분석 과정에서 알아낸 것 중 하나가, CrowdInspect가 실행이 되면 CrowdStrike로 GeoTag 정보가 전송이 되더군요. 아마도 내부적으로 어느 국가에서 많이 실행되는지 데이터 관리를 하는게 아닌가 생각 되네요...