Top

메모리 덤프로 윈도우 악성코드 분석하기 - 고급 2판 [WinDbg 실습 교재]

  • 원서명Accelerated Windows Malware Analysis with Memory Dumps, Second Edition
  • 지은이드미트리 보스토코프(Dmitry Vostokov)
  • 옮긴이이명수
  • ISBN : 9791161753157
  • 35,000원
  • 2019년 06월 27일 펴냄
  • 페이퍼백 | 388쪽 | 210*280mm
  • 시리즈 : 해킹과 보안

책 소개

요약

저자 드미트리 보스토코프가 직접 운영하는 www.patterndiagnostics.com의 교육 교재로, 악성코드에 감염된 Windows 시스템의 메모리를 WinDbg로 분석하는 방법을 다루는 실전 안내서다. 악성코드에 감염된 시스템에서는 시스템 또는 애플리케이션의 비정상 행위 발생할 수 있는데, 저자가 개발한 패턴 지향 진단 방법을 활용해 악성코드 여부를 파악 하는 방법을 설명한다. 실사례를 기반으로 제작된 실습 예제 파일을 주제별로 제공해 독자가 따라 할 수 있는 형식으로 구성됐으며, 각 주제별로 필요한 지식을 설명한다.

이 책에서 다루는 내용

■ 메모리 덤프 분석을 위한 WinDbg 사용법
■ 프로세스, 커널, 컴플릿, 물리 메모리 등 여러 유형의 메모리 덤프 분석 방법
■ 직접 분석을 따라 할 수 있는 실습 파일 제공
■ 메모리 영역의 구성 및 PE 포맷
■ 모듈 로딩 전 모듈의 헤더와 버전 정보
■ 모듈 로딩 후 주소 맵, 모듈 헤더, 버전 정보, IAT, 임포트 라이브러리 호출, 모듈 무결성 확인
■ 패킹 또는 숨겨진 모듈 및 실행 흔적 검사
■ 피해 프로그램 프로세스의 메모리 덤프에서 악성코드 점검
■ 커널 메모리 영역을 살펴보고, CPU, 프로세스, 스레드 목록화 및 분석
■ CPU, IDT, SSDT, 드라이버, 디스패치 테이블 확인
■ 컴플릿 메모리 덤프에서 프로세스 탐색, 64비트 SSDT 확인, 프로세스와 스레드 토큰 확인, 숨겨진 프로세스 및 드라이버 발견, RIP 스택
■ 악성코드 분석 패턴별 정리

이 책의 대상 독자

이 과정은 Debugging Tools for Windows에 포함된 WinDbg 디버거를 이용해 복잡한 소프트웨어 환경상의 메모리 덤프를 분석해야 하거나, 소프트웨어가 비정상적으로 동작할 경우에 악성코드에 의한 것일지 악성코드의 존재 여부를 확인해야 하는 기술 지원 인력 및 고급 엔지니어를 대상으로 한다.
따라서 이 책은 컴퓨터 메모리 분석을 위해 WinDbg 디버거를 사용해보지 않은 소프트웨어 엔지니어, 품질 보증 및 소프트웨어 관리 엔지니어, 보안 연구원, 악성코드 분석가들에게 매우 유용할 것이다. 뿐만 아니라, 악성코드 탐지 및 분석 개념이 WinDbg 명령에 어떻게 적용되는지도 배우게 될 것이다. 어셈블리어를 읽을 수 있다면 일부분 도움이 되겠지만, 반드시 필요한 것은 아니다.
이 책을 읽는 독자들은 이미 WinDbg에 어느 정도 익숙하다고 가정하고, 독자들이 예제 연습에 집중하도록 구성하고 필요시 개념을 설명하는 방법을 선택했다.

■ WinDbg 디버거를 사용해보지 않은 소프트웨어 엔지니어, 품질 보증 및 소프트웨어 관리 엔지니어, 보안 연구원 및 악성코드 분석가
■ 메모리에서 악성코드 존재 여부를 확인하고자 하는 기술 지원 인력 및 고급 엔지니어

상세 이미지

저자/역자 소개

지은이의 말

이 훈련의 주요 목표는 고급 악성코드 메모리 덤프 분석 기법을 배우는 것이다. 이 훈련에서는 프로세스, 커널, 컴플릿(Complete) 또는 물리 메모리 같은 여러 유형의 메모리 덤프를 분석하는 방법을 학습한다. 다만 커널 미니 덤프는 여기서 다루지 않을 것이다. 커널 미니 덤프는 커널 메모리 덤프와 유사하지만, 분석할 만한 정보가 훨씬 적어 미니 덤프에서 악성코드의 흔적을 찾으려면 매우 운이 좋아야 하기 때문이다. 또한 이 훈련은 메모리 덤프 수집에 대한 방법, 트릭, 팁 등이 아닌 메모리 분석에 초점을 맞추고 있다. 대신 메모리 수집에 대한 레퍼런스를 제공한다.
이 훈련은 두 개의 영역으로 나뉘는데, 사용자 영역 프로세스 메모리 분석, 커널과 물리 영역 메모리 분석이다.
이 훈련은 엔지니어를 지원하기 위한 것이기 때문에 엔지니어 입장에서 악성코드 존재 여부를 확인해야 하는 다음과 같은 전형적인 시나리오를 생각해 볼 수 있다. 첫 번째는 크래시, 행, CPU 튐, 메모리 누수 등과 같은 비정상 소프트웨어 행위들이 발생하는 상황을 들 수 있다. 이는 의도되지 않은 소프트웨어 결함이나 컴포넌트의 복잡한 상호작용에 의해 발생할 수도 있지만, 악성코드의 실수나 의도적인 프로세스나 시스템 종료(서비스 거부 공격과 같은)에 의해서도 발생될 수 있기 때문이다. 두 번째 시나리오는 사전 대응 관점에서 메모리 덤프 분석을 수행하거나, 소프트웨어 흔적이나 로그에 대한 보완적인 아티팩트로 메모리 덤프를 사용하는 경우다. 다만 악성코드는 분석 대상 소프트웨어의 동작과 완전히 독립적일 수 있기 때문에 악성코드가 존재하지 않는 것처럼 보일 수도 있다는 사실에 주의해야 한다.

여기서는 이 과정의 주요 독자를 대상으로 접근 방식을 개괄적으로 설명한다. 악성코드가 주로 어떻게 제작되는지 알아보고, WinDbg 디버거를 이용해 실전 사례의 메모리 덤프상에서 이를 어떻게 확인해 볼 수 있는지 살펴 본다. WinDbg 디버거는 컴퓨터 메모리 분석을 지원하기 위해 윈도우 소프트웨어 지원 팀에서 제공하는 주요 도구다.

지은이 소개

드미트리 보스토코프(Dmitry Vostokov)

국제적으로 인정받는 전문가, 강연자, 교육자, 과학자이자 저술가다. 패턴지향 소프트웨어 진단, 포렌식, 사전 훈련, 그리고 소프트웨어 진단 교육기관(DA+TA: DumpAnalysis.org + TraceAnlaysis.org)의 창립자다.
소프트웨어 진단, 포렌식, 문제 해결, 메모리 덤프 분석, 디버깅, 소프트웨어 추적 및 로그 분석, 역공학, 악성코드 분석 분야에서 30권 이상의 책을 저술했다. 리더십, 테크놀로지, 인력 관리를 포함한 산업군에서 소프트웨어 아키텍처, 디자인, 개발, 유지 보수에 있어 20년 이상의 경험이 있다. 또한 DiaThings, Logtellect, OpenTask Iterative and Incremental Publishing(OpenTask.com), Software Diagnostics Services(전 Memory Dump Analysis Services), PatternDiagnostics.com, Software Prognostics 등을 설립했다.
여가 시간에는 Debugging.TV에서 다양한 주제에 대해 강연을 하거나, 그가 개척한 소프트웨어 서술학(Software Narratology) 및 소프트웨어 스토리에 관한 응용 과학 분야를 연구하며, 더 나아가 사물 서술학(Narratology of Things)과 사물 진단(DoT, Diagnostics of Things) 분야로 발전시켜 나가고 있다.
현재 이론적 소프트웨어 진단 및 이와 관련한 수학적 기반 지식에 관심을 갖고 있다.

옮긴이의 말

헝가리의 수학자인 폰 노이만은 제어 장치, 산술 논리 장치, 메모리, 입출력 장치로 구성된 컴퓨터 구조를 확립했으며, 이후 현대의 대부분 컴퓨터는 폰 노이만의 설계 구조를 따르고 있다. 따라서 컴퓨터에서 데이터를 처리하려면 우선 데이터가 메모리에 로딩돼야 한다. 예컨대 파일을 실행하기 위해서는 실행 코드가 메모리에 로딩돼야 하고, 파일을 암호화하거나 복호화하기 위해서도 메모리에 데이터가 로딩돼야 한다. 즉, 모든 데이터는 메모리라는 작업 공간에서 처리된다. 메모리에 저장된 데이터를 확보하고 해석할 수 있다면 이론적으로는 컴퓨터의 거의 모든 동작을 파악할 수 있게 되는 셈이다.
2004년부터는 메모리 포렌식 분야가 태동하기 시작했다. 메모리는 RAM을 사용하므로 휘발성이 매우 높은 매체다. 전원이 인가되지 않은 경우 메모리에 저장된 데이터는 모두 사라진다. 이를 극복하고자 다양한 방법으로 활성 시스템의 메모리 데이터를 확보하기 위한 연구가 진행돼 왔다. 또한 메모리 덤프에서 정보를 얻는 방법도 초기에는 strings를 이용한 검색 수준이었지만, 현재는 OS 내부 구조체, 메모리 관리 방식 등에 대해 많은 연구가 진행돼 윈도우, 리눅스, 맥OS X등의 운영체제에서 메모리 덤프만으로도 OS의 내부 상태, 애플리케이션의 프로세스, 악성코드 탐지, 루트킷 탐지 등 많은 정보를 추출할 수 있게 됐다. 예를 들어 volatility 같은 도구를 이용하면 분석가가 메모리의 구조나 동작 방식을 잘 모르더라도 한두 줄의 명령어를 입력하는 것만으로도 메모리에서 프로세스 목록을 추출하거나, 악성코드를 찾는 등 수백 가지의 플러그인을 활용해 메모리 덤프에서 다양한 정보를 추출해 낼 수 있다.
단순히 volatility 도구를 사용하는 것 이상의 정보를 얻기 위해 메모리를 직접 분석하기를 희망하는 엔지니어나 보안 분석가들은 이 책에서 소개하는 방법들을 이용해 윈도우 시스템의 메모리를 추적하거나 분석해볼 수 있을 것이다. 이 책은 악성코드 감염 여부를 식별하기 위해 마이크로소프트 사에서 무료로 제공하는 WinDbg 디버거를 이용해 프로세스 메모리 덤프나 컴플릿 메모리를 직접 분석하는 방법을 설명하며, 저자의 경험이 녹아있는 다양한 탐지 패턴을 소개하고 이를 실습할 수 있도록 구성돼 있다. 시스템 크래시, 행, CPU 튐, 메모리 누수와 같은 비정상인 증상이 발생된 시스템에서 증상의 원인을 파악하거나, 사전 대응 관점에서 메모리를 분석하고, 소프트웨어 흔적이나 로그에 대한 보완적 아티팩트로 활용하는 데 도움이 될 것이다. 메모리 분석 경험이 있는 독자라면 제공되는 메모리 덤프 파일을 먼저 분석한 후 저자의 분석 기법을 살펴보는 것도 좋은 접근 방식일 것이다.
이 책은 엔지니어를 지원하기 위한 교육 과정의 교재로 써진 책이다. 아쉽게도 아직까지 국내에 많이 소개되지는 않았지만, 저자인 드미트리 보스토코프는 이 분야에서 20년 이상의 경험이 있고, 30권 이상의 책을 저술한 전문가다. 이 책은 그중 일부에 불과하다 이 책 이외에도 많은 교육 과정과 저서에 대해서는 http://patterndiagnostics.com을 참고하길 바란다. 마지막으로 포렌식 분야를 시작하면서 항상 마음에 새기고 있는 문구를 소개하며 마친다. “As you can see as much as you know(아는 만큼 보인다).”

옮긴이 소개

이명수

1999년, 군에서 개발 업무를 하면서 IT 분야의 일을 시작했으며, 2006년부터 보안 교육센터와 군경 및 공공기관, 민간기업 등을 대상으로 리버스 엔지니어링, 익스플로잇 개발/패치 분석, 웹 해킹, 네트워크 해킹, 포렌식, 리눅스 프로그래밍 등의 보안 관련 강의 및 보안 프로젝트 등을 수행했다. 2011년 안랩에 입사해 A-FIRST(AhnLab Forensics & Incident Response Service Team)에서 현재까지 침해 사고 분석가로 근무 중이다. 고려대학교 정보보호대학원에서 정보보호학 석사 학위를 받았다.
취미로 악기 연주를 즐기며 최근 몇 년간 바이올린 연주에 푹 빠져있다. 언젠간 강연 오프닝 때 바이올린 연주를 하는 것을 목표로 하고 있다.

목차

목차
  • 소개

  • 실전 연습
    • 연습 0: WinDbg 다운로드, 설치 및 확인
    • 연습 M1A
    • 연습 M2
    • 연습 M3
    • 연습 M4

  • 주요 질문/답변

  • 부록
    • 악성코드 분석 패턴
      • 비정상 모듈
      • 비정상 토큰
      • 드라이버 장치 모음
      • 실행 흔적
      • 가짜 모듈
      • 숨겨진 모듈
      • 숨겨진 프로세스
      • 훅스웨어
      • 네임스페이스
      • 심볼이 없는 컴포넌트
      • 모듈 외부의 포인터
      • 패킹된 코드
      • 패치된 코드
      • 사전 난독화 흔적
      • 원시 포인터
      • RIP 스택 트레이스
      • 자가 진단(커널 모드)
      • 스택 트레이스 모음
      • 스택 트레이스 모음(I/O 요청)
      • 문자열 힌트
      • 알려지지 않은 모듈
    • 모든 스레드의 원시 스택 덤프(커널 영역)
    • 64비트 시스템에서의 컴플릿 스택 트레이스

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안