올해 읽은 책 중에서 가장 유용한 보안 기술 서적이다. 악성코드로부터 시스템을 보호하려는 모든 이의 필독서다.
- 레니 젤스터(Lenney Zeltser), 새비스(Savvis) 보안 실무 책임자이자 SANS 상급 구성원
악성코드 분석에 관심 있는 모두에게 최선의 가이드다.
- 라이언 올슨(Ryan Olson), 베리사인(VeriSign)의 아이디팬스(iDefense) 긴급 대응 팀 책임자
이 책은 실용적인 악성코드 지식, 창의적인 생각, 그리고 유용한 도구로 가득 차있다. 황금과도 같은 가치를 지닌다.
- 아론 월터스(AAron Walters), 볼래틸리티(Volatility)의 개발 총괄이자 테레마크(Terremark)의 보안 R&D 부사장
다양한 보안 위협에 대응할 수 있는 강력한 단계별 해설서
이 책을 비법서라고 부르는 이유는 각 '비법'이 특정한 위협을 연구하고 문제를 해결하기 위해 거쳐야 하는 단계와 내용을 포함하기 때문이다. 부록 DVD에 추가 예제 파일과 원본 프로그램을 수록했다. 저자가 작성한 도구와 공개적으로 알려진 수백 가지 도구를 활용해 악성코드 분석법을 배울 수 있다. 사고 대응, 컴퓨터 포렌식, 시스템 보안, 백신 연구와 관련된 업무에 종사하는 사람이라면 이 책은 대단히 유용할 것이다.
★ 이 책에서 다루는 내용 ★
■ 신분을 노출하지 않고 온라인 조사를 수행하는 법
■ 허니팟을 이용해 봇과 웜이 배포하는 악성코드 수집
■ 의심스러운 내용을 포함한 자바스크립트, PDF, 오피스 문서 분석
■ 가상 머신이나 일체형 하드웨어를 이용해 저렴한 악성코드 연구 환경 구축
■ 일반적인 인코딩과 암호 알고리즘을 리버스 엔지니어링
■ 악성코드 분석을 위한 고급 메모리 포렌식 플랫폼 구성
■ 제우스(Zeus), 사일런트뱅커(Silent Banker), 코어플러드(CoreFlood), 콘플리커(Conficker), 바이러트(Virut), 클램피(Clampi), 뱅크패치(Bankpatch), 블랙에너지(BlackEnergy) 등과 같은 널리 퍼진 악성코드 조사
★ 부록 DVD 소개 ★
DVD에 있는 파일을 활용해 각 비법의 내용을 따라하거나 직접 조사와 분석을 수행한다. DVD에는 다음과 같은 내용이 들어있다.
■ 포렌식 증거 파일
■ 주석을 추가한 비디오
■ 소스 코드
■ 윈도우와 리눅스 도구
■ 파이썬, C/C++, 펄로 작성한 50개 이상의 원본 프로그램
★ 이 책의 대상 독자 ★
악성코드를 학습하려면 이 책을 읽어야 한다. 포렌식 분석가, 사고 대응가, 시스템 관리자, 보안 엔지니어, 모의 해킹 수행자, 악성코드 분석가, 취약점 연구가, 보안에 관심을 가진 모든 이가 대상이다. 다음과 같은 상황에 있는 독자라면 반드시 읽어야 한다.
■ 사고 대응을 다루는 기관이나 포렌식 팀의 구성원이고, 악성코드를 다루는 새로운 도구이나 기술을 배우고자 한다.
■ 시스템, 보안, 네트워크 관리 업무를 하고 있으며, 엔드 유저를 효과적으로 보호하는 방법을 알고자 한다.
■ 국가 컴퓨터 비상 대응 팀(CERT) 구성원이고, 악성코드 침입 여부를 탐지 조사한다.
■ 백신이나 컴퓨터 연구 관련 업무를 하고 있으며, 최신 악성코드 사례를 분석하고 보고한다.
■ 대학에서 가르치지 않는 기술을 적극적으로 배우고자 하는 학생이다.
■ IT 현장에서 근무하며, 따분함을 느끼고 기술 지식을 다루는 새로운 전문 분야를 찾고 있다.
★ 이 책의 구성 ★
이 책은 특정 문제를 해결하고 새로운 도구를 소개하거나 흥미 있는 악성코드 탐지와 분석 방법을 설명하는 비법을 모아 놓았다. 일부 비법은 독립형으로 문제 제기, 설명, 해결책을 모두 제시한다. 다른 비법은 상호 연결돼 좀 더 큰 문제를 해결할 수 있게 순차적인 방법을 설명한다. 이 책의 주제는 큰 줄기에 따라 구성했으며, 뒷장으로 갈수록 심층적이고 전문화된 내용이 수록돼 있다. 각 장에 대한 내용을 정리하면 다음과 같다.
1장. 행동 익명화
신분을 노출하지 않고 온라인 조사를 수행하는 방법을 다룬다. 이 지식을 이용해 예제 따라 하기와 추후 연구를 안전하게 수행할 수 있다.
2장. 허니팟
봇과 웜이 배포하는 악성코드를 수집하기 위해 허니팟을 사용하는 방법을 다룬다. 이 기법을 사용해 현장에서 새로운 악성코드 변종을 수집해 실시간으로 다른 연구자와 공유하고, 공격 패턴과 악성코드 샘플을 자동으로 분석할 수 있다.
3장. 악성코드 분류
악성코드를 식별해 분류하고 구성하는 방법을 다룬다. 사용자 정의 시그니처를 이용해 악의적인 파일을 탐지하고 샘플 간의 관계를 구분해 공격자가 새로운 변종에 어떤 기능을 추가했는지 정확히 파악할 수 있다.
4장. 샌드박스와 다중 AV 스캐너
온라인 바이러스 스캐너와 공개 샌드박스를 잘 활용할 수 있는 방법을 설명한다. 대상 샌드박스에서 샘플 행위를 제어할 수 있는 스크립트를 사용하는 방법, 파이썬 스크립트를 이용해 커맨드라인에서 샘플을 등록하는 방법, 데이터베이스에 결과를 저장하는 방법, 그리고 샌드박스 결과를 바탕으로 악성코드의 잔여 데이터를 스캔하는 방법을 알아본다.
5장. 도메인과 IP 주소 연구
도메인, 호스트명, IP 주소와 관련된 정보를 식별하고 관련성을 확인하는 방법을 다룬다. 패스트 플럭스 도메인(Fast Flux Domain)을 추적하는 방법, 의심스러운 도메인 소유주를 구별하는 방법, 공격자와 동일한 그룹이 소유한 다른 시스템의 위치를 파악하는 방법, IP 주소의 지리적 위치를 기반으로 정적 맵이나 동적 맵을 생성하는 방법을 알아본다.
6장. 문서, 셸코드, URL
악의적인 행위의 징후를 파악하기 위해 자바스크립트, PDF, 오피스 문서, 패킷 캡처를 분석하는 방법을 다룬다. 익스플로잇에서 셸코드를 추출하고 디버거나 에뮬레이션 환경에서 분석하는 방법을 설명한다.
7장. 악성코드 연구실
악성코드를 실행하고 모니터링할 수 있는 연구실을 안전하고 유연하면서도 저비용으로 구축할 수 있는 방법을 알아본다. 가상 머신이나 물리 머신을 포함해 실제 또는 시뮬레이션된 인터넷을 사용하는 해결 방안을 소개한다.
8장. 자동화
VMware나 VirutalBox 가상 머신에서 악성코드의 실행을 자동화하는 방법을 다룬다. 악성코드의 행위, 네트워크 트래픽 로그, 물리 메모리의 잔여 데이터에 대한 맞춤형 보고서를 만드는 몇 가지 파이썬 스크립트를 소개한다.
9장. 동적 분석
악성코드 행위를 이해하는 최선의 방법은 직접 실행해 살펴보는 것이다. 직접 API 모니터를 만드는 방법, 임의의 증거가 훼손되지 않게 보호하는 방법, 후킹하지 않고 실시간으로 파일 시스템과 레지스트리를 로깅하는 방법, 프로세스 핸들 테이블의 변화를 비교하는 방법, 공격자가 백도어를 이용해 보낸 명령어를 로깅하는 방법 등을 알아본다.
10장 악성코드 포렌식
포렌식 도구를 이용해 루트킷과 은닉 악성코드를 탐지하는 방법에 초점을 맞춘다. 파일 시스템과 레지스트리를 스캔해 은닉 데이터를 탐색하는 방법, 잠금 파일 제한을 우회하고 다루기 힘든 악성코드를 제거하는 방법, HTML 인젝션을 탐지하는 방법과 새로운 형태인 레지스트리 '슬랙' 공간을 조사하는 방법을 알아본다.
11장. 악성코드 디버깅
디버거를 사용해 악성코드 샘플 행위를 분석, 통제, 조작하는 방법을 다룬다. 파이썬을 이용해 디버깅 세션을 스크립팅하는 방법과 API 호출을 모니터링하고 HTML 행위 보고서를 제작하는 방법, 자동적으로 의심스러운 행위를 강조하는 디버거 플러그인을 제작하는 방법 등을 알아본다.
12장. 역난독화
공격자가 의도적으로 은닉하려는 데이터를 디코딩, 복호화, 언패킹하는 방법을 다룬다. 네트워크 트래픽을 암호화하는 악성코드 샘플을 리버스 엔지니어링해 유출된 데이터를 복원하는 과정을 설명한다. 도메인 생성 알고리즘을 크랙하는 기술도 알아본다.
13장. DLL을 이용한 작업
동적 링크 라이브러리(DLL)로 분산된 악성코드를 분석하는 방법을 설명한다. DLL의 익스포트된 함수를 목록화하고 시험하는 방법, 선택한 프로세스에서 DLL을 실행(그리고 호스트 프로세스 제한을 우회)하는 방법, 윈도우 서비스로서 DLL을 실행하는 방법, DLL을 독립 실행 파일로 변환하는 방법 등을 배울 수 있다.
14장. 커널 디버깅
악명 높은 악성코드 중 일부는 커널 모드에서만 동작한다. 하위 수준의 기능을 이해할 수 있게 악성코드에 감염된 가상 머신의 커널을 디버깅하는 방법을 다룬다. WinDbg를 위한 스크립트 제작, 커널 드라이버 언패킹, IDA Pro 디버거 플러그인을 잘 활용할 수 있는 방법을 알아본다.
15장. Volatility를 이용한 메모리 포렌식
실제 장비와 가상 머신에서 메모리 샘플을 채취하는 방법, Volatility 고급 메모리 포렌식 플랫폼과 관련 플러그인을 설치하는 방법, 프로세스 컨텍스트 속임수와 DKOM 공격을 탐지하기 위한 분석을 시작하는 방법을 알아본다.
16장. 메모리 포렌식: 코드 인젝션과 추출
프로세스 메모리에 은닉된 코드(언링크된 DLL, 셸코드 등)를 탐지하고 추출하는 방법을 설명한다. 메모리 샘플에서 사용자 모드 프로그램과 커널 드라이버를 포함하는 바이너리를 재구성하는 방법, 메모리 덤프에 있는 정보를 바탕으로 패킹된 악성코드의 임포트 주소 테이블(IAT)을 재구성하는 방법을 알아본다.
17장. 메모리 포렌식: 루트킷
시스템에서 IAT, EAT, 인라인, 드라이버 IRP, IDT, SSDT 후킹 여부를 포함해 다양한 형태의 루트킷 활동을 탐지하는 방법을 다룬다. 드라이버 로딩 없이 커널 메모리에 은닉된 악성코드를 식별하는 방법, 시스템 전역 알림 루틴을 확인하는 방법, 윈도우 서비스 실행 시 은닉 시도를 탐지하는 방법 등을 알아본다.
18장. 네트워크와 레지스트리
악성코드 샘플의 네트워크 활동으로 인해 시스템에 생성된 잔여 데이터를 탐색하는 방법을 다룬다. 활성화된 연결, 대기하고 있는 소켓, 원시 소켓 사용과 무작위 모드 네트워크 카드를 탐지하는 방법, 메모리에서 활성 레지스트리 키와 값을 추출는 방법 등을 알아본다.