책 소개
요약
이 책은 침해사고 대응 실무자 입장에서 악성코드 분석을 할 때 파이썬 오픈소스 도구를 비롯한 공개 도구들을 활용하는 다양한 방법을 설명한다. 악성코드 분석은 악성코드의 특징을 파악하는 것이 중요하며, 빠르게 원인을 분석해 추가적인 피해가 발생하지 않게 하는 데에 그 의의가 있다. 악성코드 하나하나 대응을 하는 것보다는 온라인, 오프라인 서비스 및 도구를 활용해 우선 방어구축을 해놓는 것이 중요하다. 온라인 서비스의 빠른 분석 데이터의 활용, 비공개적으로 분석을 해야 하는 상황 및 주요 대응 악성코드 데이터베이스화가 필요하다. 이 책에서는 다양한 오픈소스 도구들을 다루면서 실무에서 활용할 수 있는 방안들을 제시한다.
이 책의 특징
■ 악성코드 분석에 필요한 온라인/오프라인 서비스 완벽가이드 제시
■ 파이썬 오픈소스 도구를 통한 악성코드 특징 분석
■ 정적/동석 분석 심화분석 사례를 통한 악성코드 분석 가이드
■ 악성코드 침해사고 대응에 필요한 파이썬 오픈소스 도구 활용 제시
■ 메모리 분석 기법을 활용한 침해사고 대응 기법 제시
이 책의 대상 독자
이 책은 악성코드 분석 업무에 흥미를 느끼는 입문자와 관련 실무자를 대상으로 쓰여졌다. 다음과 같은 독자들에게 이 책을 추천한다.
■ 파이썬 오픈소스 도구를 이해하고 활용하고 싶은 독자
■ 다양한 디바이스에서의 악성코드 분석을 이해하고 싶은 독자
■ IT 보안실무자 입장에서 악성코드 분석 환경을 구축하고 싶은 독자
■ 악성코드로 인한 침해사고 대응 프로세스를 이해하고 싶은 독자
이 책의 구성
1장에서는 오픈소스 도구와 파이썬 개발 환경을 이해하는 데 중점을 둔다. 이 책은 파이썬 오픈소스 도구 중심으로 다루기 때문에 이를 분석하고 개발하기 위한 환경을 먼저 잘 이해해둬야 한다. 깃허브(Github)와 이클립스, 그리고 플러그인 등으로 파이썬 프로그래밍 환경을 구성한다.
2장에서는 윈도우 실행 파일인 PE 포맷을 설명한다. 개인 사용자들이 제일 많이 사용하는 윈도우 운영체제의 파일 실행 포맷인 PE 파일을 이해해야 악성코드 분석에 이용할 수 있는 악성코드 특징들을 파악해본다. peframe 파이썬 오픈소스 도구를 분석하면서 PE 파일을 이해하는 시간을 갖는다.
3장에서는 악성코드 분석 관련 온라인 서비스를 살펴본다. 악성코드를 분석할 때 빠른 대응을 위해 다양한 온라인 서비스를 활용할 수 있다. 파일 분석, 도메인 주소 분석, 평판 시스템 등의 다양한 결과를 통해 내부적으로 위협을 줄 수 있는 사이트들을 검색하고 빠르게 판단하는 데 온라인 서비스가 도움을 줄 수 있다. 대표적으로 사용되는 바이러스토탈 서비스와 이 서비스의 API를 활용한 도구들을 집중적으로 다룬다.
4장에서는 악성코드 오프라인 분석 서비스에 대해 살펴본다. 3장에서 다룬 온라인 서비스에서 기반으로 하고 있는 샌드박스 구축이 주요 내용이다. 내부적으로 분석 환경을 구성하면 오프라인에서도 동일한 기능의 환경을 구성할 수 있다. 대표적으로 쿠쿠 샌드박스를 이용한 환경 구성 방법과 실제 악성코드 샘플을 가지고 도구를 다루는 과정을 상세히 설명한다.
5장에서는 악성코드 상세 분석 단계를 이해하는 데 중점을 둔다. 4장에서 자동 분석 서비스를 통해 다뤘던 샘플을 수동으로 정적/동적 분석하는 과정을 단계별로 설명한다. 자동 분석에서도 어느 정도 악성코드 여부를 판단할 수 있지만, 상세 분석을 통해 명확하게 판단한 뒤에 악성코드 확진을 차단하는 것이 목적이 되어야 한다.
6장에서는 기타 악성코드 분석 도구의 활용 방법에 대해 설명한다. 악성코드 진단 과정에서 추가로 활용할 수 있는 파이썬 기반의 도구를 다룬다. 악성코드를 수집하고 분석한 뒤에 어떻게 관리해서 데이터베이스화할 수 있는지 오픈소스를 토대로 살펴본다. 파일 분석, 네트워크 패킷 분석, PDF 파일 분석 등 다양한 환경에서 분석할 수 있는 도구도 간단히 소개한다.
7장에서는 메모리 포렌식 분석 활용을 다룬다. 메모리 포렌식 기법을 활용하면 악성코드의 휘발성 정보 및 연관성을 신속하게 분석할 수 있다. 침해사고 대응을 할 때 의심되는 악성코드를 빠르게 찾아내서 추가적인 위험이 발생하지 않도록 조치하는 것이 중요하다. 메모리 포렌식 오픈소스 도구로 활용할 수 있는 볼라틸리티(Volatility) 도구와 이를 활용한 다양한 오픈소스 도구의 활용법을 설명한다.
목차
목차
- 1장 오픈소스 개요와 파이썬 환경
- 1.1 오픈소스의 이해
- 1.2 파이썬의 개요
- 1.3 파이썬 환경 구성 및 배포 방법
- 1.3.1 윈도우 환경 구성
- 1.3.2 이클립스에 pydev 환경 구성하기
- 1.3.3 pyinstaller를 이용한 프로그램 배포
- 1.4 깃허브 사이트에서 오픈소스 도구 다운로드하기
- 1.5 파이썬 모듈 설치 방법
- 1.6 정리
- 2장 peframe을 통해 알아보는 실행 파일 구조
- 2.1 PE 파일 포맷 이해
- 2.1.1 DOS Header 구조체
- 2.1.2 DOS Stub 프로그램
- 2.1.3 IMAGENTHEADER 구조체
- 2.2 peframe 살펴보기
- 2.2.1 IMPORT 모듈
- 2.2.2 사전 작업 부분
- 2.2.3 main 함수 부분 분석
- 2.2.4 peframe을 구성하는 함수들
- 2.3 악성코드 특성 인자에 대한 이해
- 2.3.1 안티바이러스 결과
- 2.3.2 해시 값
- 2.3.3 패커
- 2.3.4 섹션명과 엔트로피
- 2.3.5 API
- 2.3.6 문자열
- 2.3.7 PE 메타데이터
- 2.4 정리
- 2.1 PE 파일 포맷 이해
- 3장 악성코드 분석 서비스 이해
- 3.1 분석 환경에 대한 이해
- 3.1.1 자동 분석 서비스 종류
- 3.1.2 악성코드 분석 라이브 CD 소개
- 3.1.3 악성코드 수집은 어디서 하는가
- 3.2 온라인 분석 서비스 이해
- 3.2.1 바이러스토탈 서비스에 대한 소개
- 3.2.2 바이러스토탈 서비스 API 활용 예제
- 3.2.3 URLquery를 이용한 악성코드 감염 사이트 확인
- 3.2.4 hybrid-analysis를 이용한 악성코드 분석
- 3.3 정리
- 3.1 분석 환경에 대한 이해
- 4장 쿠쿠 샌드박스 활용법
- 4.1 쿠쿠 샌드박스란?
- 4.2 쿠쿠 샌드박스의 특징
- 4.3 쿠쿠 샌드박스 설치
- 4.3.1 우분투 14.04 LTS 설치
- 4.3.2 게스트 확장 설치
- 4.3.3 저장소 설정
- 4.3.4 보조 패키지 및 라이브러리 설치
- 4.3.5 필수 패키지 및 라이브러리 설치
- 4.3.6 tcpdump 설정
- 4.4 샌드박스 설정
- 4.4.1 샌드박스 설치
- 4.4.2 게스트 확장 설치
- 4.4.3 파이썬, 파이썬-PIL 설치
- 4.4.4 방화벽 및 자동 업데이트 비활성화
- 4.4.5 네트워크 설정
- 4.4.6 추가 환경 설정
- 4.4.7 Agent.py 설치
- 4.4.8 가상 머신 상태 설정
- 4.4.9 샌드박스 추가 생성
- 4.5 쿠쿠 샌드박스 설정
- 4.5.1 cuckoo.conf 설정
- 4.5.2 processing.conf 설정
- 4.5.3 reporting.conf 설정
- 4.5.4 virtualbox.conf 설정
- 4.5.5 auxiliary.conf 설정
- 4.5.6 memory.conf 설정
- 4.6 쿠쿠 샌드박스 엔진 운영
- 4.6.1 Community.py
- 4.6.2 최신 웹 인터페이스 사용
- 4.6.3 분석 파일 업로드
- 4.6.4 디버깅 모드 활용
- 4.6.5 고전 웹 인터페이스 사용
- 4.7 쿠쿠 샌드박스 리포트
- 4.7.1 JSONdump 리포트
- 4.7.2 HTML 리포트
- 4.7.3 MMDef 리포트
- 4.7.4 MAEC 리포트
- 4.8 Api.py 분석
- 4.9 쿠쿠 샌드박스 유틸리티
- 4.10 분석 결과
- 4.10.1 Quick Overview
- 4.10.2 Static Analysis
- 4.10.3 Behavioral Analysis
- 4.10.4 Network Analysis
- 4.10.5 Dropped Files
- 4.11 볼라틸리티를 이용한 메모리 분석 결과
- 4.12 관리자 기능
- 4.13 비교 기능
- 4.14 정리
- 5장 악성코드 상세 분석 단계
- 5.1 쿠쿠 샌드박스 결과 확인
- 5.2 상세 분석 대상 악성코드 개요
- 5.3 상세 분석 내용
- 5.4 정리
- 6장 기타 분석 도구 활용
- 6.1 바이퍼를 이용한 바이너리 파일 분석 및 관리
- 6.1.1 바이퍼 설치 과정
- 6.1.2 바이퍼 사용 방법
- 6.1.3 바이퍼 명령어 설명
- 6.1.4 모듈
- 6.2 ClamAV를 이용한 악성코드 1차 분류
- 6.3 pyew를 이용한 악성코드 관리 및 분석
- 6.3.1 도움말 확인하기
- 6.3.2 임포트 테이블 검사 기능
- 6.3.3 바이러스토탈 서비스 검사 기능
- 6.3.4 URL 정보 확인 기능
- 6.3.5 PDF 파일 포맷 진단 기능
- 6.4 pescanner를 활용한 악성코드 여부 확인
- 6.5 PEStudio를 이용한 의심되는 파일 분석
- 6.6 네트워크 패킷 분석
- 6.6.1 captipper를 이용한 네트워크 패킷 분석
- 6.6.2 pcap-analyzer를 이용한 네트워크 패킷 분석
- 6.6.3 net-creds를 이용한 중요 정보 획득
- 6.7 오픈소스를 이용한 분석 예제
- 6.8 도커 컨테이너 활용
- 6.8.1 도커란 무엇인가
- 6.8.2 도커 허브에 대해
- 6.8.3 Remnux 도커 이미지 활용
- 6.9 정리
- 6.1 바이퍼를 이용한 바이너리 파일 분석 및 관리
- 7장 메모리 분석을 활용한 침해사고 대응
- 7.1 볼라틸리티 개요 및 환경 구성
- 7.2 볼라틸리티를 활용한 악성코드 분석
- 7.3 오픈소스 도구: TotalRecall
- 7.4 Redline을 이용한 메모리 분석
- 7.5 볼라틸리티 플러그인 활용 및 추천
- 7.6 Rekall을 활용한 메모리 포렌식 분석
- 7.7 VolDiff를 활용한 메모리 분석 결과 비교
- 7.8 DAMM을 활용한 메모리 분석 결과 비교
- 7.9 악성코드 사례로 살펴보는 메모리 분석
- 7.10 공격 시나리오를 통해 알아보는 메모리 덤프 활용
- 7.11 정리