악성코드 분석가의 비법서 [Malware Analysis Cookbook and DVD]
- 원서명Malware Analyst's Cookbook and DVD: Tools and Techniques for Fighting Malicious Code (ISBN 9780470613030)
- 지은이마이클 할레 라이, 스티븐 어드에어, 블레이크 할스타인, 매튜 리차드
- 옮긴이여성구, 구형준
- 감수자이상진
- ISBN : 9788960773011
- 45,000원
- 2012년 05월 22일 펴냄 (절판)
- 페이퍼백 | 896쪽 | 188*250mm
- 시리즈 : 해킹과 보안
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
[DVD 1 (포렌식 파일, 소스코드, 원본 프로그램, 비디오 수록)]
[ 요약 ]
악성코드 분석에 필요한 여러 비법을 소개한 책이다. 악성코드 분석 환경 구축에서 다양한 자동화 분석 도구를 이용한 분석 방법까지 차근히 설명한다. 또한 디버깅과 포렌식 기법까지 상당히 넓은 영역을 난이도 있게 다루므로 악성코드 분석 전문가도 십분 활용할 수 있는 참고 도서다.
[ 소개 ]
올해 읽은 책 중에서 가장 유용한 보안 기술 서적이다. 악성코드로부터 시스템을 보호하려는 모든 이의 필독서다.
- 레니 젤스터(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장. 네트워크와 레지스트리
악성코드 샘플의 네트워크 활동으로 인해 시스템에 생성된 잔여 데이터를 탐색하는 방법을 다룬다. 활성화된 연결, 대기하고 있는 소켓, 원시 소켓 사용과 무작위 모드 네트워크 카드를 탐지하는 방법, 메모리에서 활성 레지스트리 키와 값을 추출하는 방법 등을 알아본다.
[ 요약 ]
악성코드 분석에 필요한 여러 비법을 소개한 책이다. 악성코드 분석 환경 구축에서 다양한 자동화 분석 도구를 이용한 분석 방법까지 차근히 설명한다. 또한 디버깅과 포렌식 기법까지 상당히 넓은 영역을 난이도 있게 다루므로 악성코드 분석 전문가도 십분 활용할 수 있는 참고 도서다.
[ 소개 ]
올해 읽은 책 중에서 가장 유용한 보안 기술 서적이다. 악성코드로부터 시스템을 보호하려는 모든 이의 필독서다.
- 레니 젤스터(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장. 네트워크와 레지스트리
악성코드 샘플의 네트워크 활동으로 인해 시스템에 생성된 잔여 데이터를 탐색하는 방법을 다룬다. 활성화된 연결, 대기하고 있는 소켓, 원시 소켓 사용과 무작위 모드 네트워크 카드를 탐지하는 방법, 메모리에서 활성 레지스트리 키와 값을 추출하는 방법 등을 알아본다.
목차
목차
- 1 행동 익명화
- 오니온 라우터(토르)
- 비법 1-1 | 토르를 이용한 익명 브라우징
- 토르를 이용한 악성코드 연구
- 비법 1-2 | wget과 네트워크 클라이언트에 Torsocks 이용
- 비법 1-3 | 파이썬으로 작성한 멀티플랫폼에서 토르 활성 다운로더
- 토르의 단점
- 프록시 서버와 프로토콜
- 비법 1-4 | 무료 프록시를 통한 트래픽 포워딩
- 비법 1-5 | 프록시 연결에 SSH 터널 사용
- 비법 1-6 | Privoxy로 향상된 프라이버시를 지원하는 웹브라우징
- 웹 기반 익명기
- 비법 1-7 | Anonymouse.org 사이트를 이용한 익명 브라우징
- 익명성을 보장받는 대안
- 무선 전화 인터넷 연결
- 비법 1-8 | 무선 전화 네트워크를 통한 인터넷 접속
- 가상 사설망
- 비법 1-9 | Anonymizer Universal을 통한 VPN 사용
- 접속 식별과 흔적 남기지 않기
- 오니온 라우터(토르)
- 2 허니팟
- nepenthes 허니팟
- 비법 2-1 | nepenthes를 이용한 악성코드 샘플 수집
- 비법 2-2 | IRC 로깅을 통한 실시간 공격 감시
- 비법 2-3 | 파이썬으로 HTTP를 통한 nepenthes 전송 수용
- Dionaea 허니팟으로 작업
- 비법 2-4 | dionaea을 통한 악성코드 샘플 수집
- 비법 2-5 | 파이썬을 이용한 HTTP 전송
- 비법 2-6 | XMPP를 통한 실시간 이벤트 통지와 바이너리 공유
- 비법 2-7 | dionea로 로깅한 공격 분석과 재현
- 비법 2-8 | p0f를 이용한 원격 시스템 수동 식별
- 비법 2-9 | sqlite와 gnuplot로 dionaea 공격 패턴 그래프 작성
- nepenthes 허니팟
- 3 악성코드 분류
- ClamAV를 활용한 분류
- 비법 3-1 | 기존 ClamAV 시그니처 검사
- 비법 3-2 | 개별 ClamAV 데이터베이스 생성
- YARA를 통한 분류
- 비법 3-3 | ClamAV 시그니처를 YARA로 변환하는 방법
- 비법 3-4 | YARA와 PEiD를 사용한 패커 식별법
- 비법 3-5 | YARA를 이용한 악성코드 탐지
- 도구 전체 통합
- 비법 3-6 | 파이썬을 이용한 파일 타입 식별과 해시
- 비법 3-7 | 파이썬으로 다중 AV 스캐너 사용
- 비법 3-8 | 파이썬을 이용한 악성 PE 파일 탐지
- 비법 3-9 | ssdeep을 이용한 유사 악성코드 검색
- 비법 3-10 | ssdeep을 이용한 자가 변환 코드 탐지
- 비법 3-11 | IDA와 BinDiff를 이용한 바이너리 비교
- ClamAV를 활용한 분류
- 4 샌드박스와 다중 AV 스캐너
- 공개 안티바이러스 스캐너
- 비법 4-1 | VirusTotal을 이용한 파일 스캔
- 비법 4-2 | Jotti를 이용한 파일 스캔
- 비법 4-3 | NoVirusThanks를 이용한 파일 스캔
- 비법 4-4 | 파이썬을 이용한 데이터베이스 지원 Multi-AV 업로더
- 다중 안티바이러스 스캐너 비교
- 공개 샌드박스를 이용한 분석
- 비법 4-5 | ThreatExpert를 이용한 악성코드 분석
- 비법 4-6 | CWsandbox를 이용한 악성코드 분석
- 비법 4-7 | Anubis를 이용한 악성코드 분석
- 비법 4-8 | Joebox용 AutoIT 스크립트 작성
- 비법 4-9 | Joebox를 이용한 경로 기반 악성코드 정복
- 비법 4-10 | Joebox를 이용한 프로세스 기반 악성코드 정복
- 비법 4-11 | Joebox를 이용한 액티브 HTTP 프록시 설정
- 비법 4-12 | 샌드박스 결과를 이용한 감염 흔적 스캐닝
- 공개 안티바이러스 스캐너
- 5 도메인과 IP 주소 조사
- 의심스러운 도메인 조사
- 비법 5-1 | WHOIS를 이용해 도메인 조사
- 비법 5-2 | DNS 호스트명 풀이
- IP 주소 조사
- 비법 5-3 | IP WHOIS 레코드 얻기
- Passive DNS와 기타 도구로 조사
- 비법 5-4 | BFK에서 Passive DNS 질의
- 비법 5-5 | Robtex를 이용해 DNS 레코드 점검
- 비법 5-6 | DomainTools를 이용한 IP 역검색 수행
- 비법 5-7 | dig을 이용한 존 트랜스퍼 수행
- 비법 5-8 | DNSMAP을 이용한 하위 도메인 무차별 대입
- 비법 5-9 | 섀도우서버를 이용해 IP 주소로 ASN 매핑
- 비법 5-10 | RBLs를 이용한 IP 평판 점검
- 패스트 플럭스 도메인
- 비법 5-11 | Passive DNS와 TTL을 이용한 패스트 플럭스 탐지
- 비법 5-12 | 패스트 플럭스 도메인 추적
- 지리 정보 매핑 IP 주소
- 비법 5-13 | MaxMind, Matplotlib, Pygeoip를 이용한 고정 지도
- 비법 5-14 | 구글 Charts API를 이용한 동적 맵
- 의심스러운 도메인 조사
- 6 문서, 셸코드, URL
- 자바스크립트 분석
- 비법 6-1 | SpiderMonkey로 자바스크립트 분석
- 비법 6-2 | Jsunpack을 이용한 자바스크립트 디코딩 자동화
- 비법 6-3 | 스피드와 완벽성을 위한 Jsunpack-n 디코딩 최적화
- 비법 6-4 | 브라우저 DOM 요소를 에뮬레이션한 익스플로잇 실행
- PDF 문서 분석
- 비법 6-5 | pdf.py를 이용해 pdf 파일에서 자바스크립트 추출
- 비법 6-6 | PDF 소프트웨어 버전을 속여 익스플로잇 실행
- 비법 6-7 | Didier Stevens의 PDF 도구 사용
- 비법 6-8 | PDF가 어떤 취약점을 사용하는지 찾기
- 비법 6-9 | DiStorm을 이용한 셸코드 디스어셈블링
- 비법 6-10 | libemu를 이용한 셸코드 에뮬레이팅
- 악의적인 오피스 문서 분석
- 비법 6-11 | OfficeMalScanner로 마이크로소프트 파일 분석
- 비법 6-12 | DisVew와 MalHost-Setup으로 오피스 셸코드 디버깅
- 네트워크 트래픽 분석
- 비법 6-13 | Jsunpack으로 패킷 캡처에서 HTTP 파일 추출
- 비법 6-14 | Jsunpack을 이용한 URI 관계 그래프 작성
- 자바스크립트 분석
- 7 악성코드 연구실
- 네트워킹
- 비법 7-1 | 연구실에서 TCP/IP 연결 라우팅
- 비법 7-2 | 네트워크 트래픽 캡처와 분석
- 비법 7-3 | INetSim을 이용한 인터넷 시뮬레이션
- 비법 7-4 | Burp Suite을 이용한 HTTP/HTTPS 조작
- 물리 표적
- 비법 7-5 | 조 스테워트의 Truman 사용
- 비법 7-6 | Deep Freeze를 이용해 물리 시스템 유지
- 비법 7-7 | FOG를 이용한 디스크 복제와 이미징
- 비법 7-8 | MySQL 데이터베이스를 이용해 FOG 작업 자동화
- 네트워킹
- 8 자동화
- 분석 사이클
- 파이썬을 이용한 자동화
- 비법 8-1 | VirtualBox를 이용한 자동화된 악성코드 분석
- 비법 8-2 | VirtualBox 디스크와 메모리 이미지 다루기
- 비법 8-3 | VMware를 이용한 자동화된 악성코드 분석
- 분석 모듈 추가
- 비법 8-4 | 파이썬에서 TShark을 이용해 패킷 캡처
- 비법 8-5 | 파이썬에서 INetSim을 이용해 네트워크 로그 수집
- 비법 8-6 | Volatility를 이용한 메모리 덤프 분석
- 비법 8-7 | 모든 샌드박스 조각을 함께 모으기
- 기타 시스템
- 비법 8-8 | ZeroWine과 QEMU를 이용한 자동화된 분석
- 비법 8-9 | Sandboxie와 Buster를 이용한 자동화된 분석
- 9 동적 분석
- 비법 9-1 | Process Monitor를 이용한 API 호출 로깅
- 비법 9-2 | Regshot으로 변화 탐지
- 비법 9-3 | 파일 시스템 변화 알림
- 비법 9-4 | 레지스트리 변화 알림
- 비법 9-5 | 테이블 디핑
- 비법 9-6 | HandleDiff를 이용한 코드 인젝션
- 비법 9-7 | 윈도우 파일 보호 기능을 해제하는 Bankpatch.C
- API 감시/후킹
- 비법 9-8 | 마이크로소프트 Detours로 API 모니터 빌드
- 비법 9-9 | API 모니터를 이용한 자식 프로세스 따라가기
- 비법 9-10 | 프로세스, 스레드, 이미지 로드 이벤트 캡처
- 데이터 보존
- 비법 9-11 | 프로세스의 종료 방지
- 비법 9-12 | 악성코드의 파일 삭제 차단
- 비법 9-13 | 드라이버 로딩 차단
- 비법 9-14 | 데이터 보존 모듈 사용
- 비법 9-15 | ReactOS로 사용자 정의 커맨드 셸 생성
- 10 악성코드 포렌식
- 슬루스 킷
- 비법 10-1 | TSK를 이용한 변경 데이터 조사
- 비법 10-2 | TSK를 사용해 은닉 파일과 디렉터리 탐지
- 비법 10-3 | 마이크로소프트 오프라인 API를 이용한 은닉 레지스트리 데이터 찾기
- 포렌식/사고 대응 수집 기법
- 비법 10-4 | Poison Ivy의 잠금 파일 우회
- 비법 10-5 | Conficker의 파일 시스템 ACL 제한 우회
- 비법 10-6 | GMER를 이용한 rootkits 스캐닝
- 비법 10-7 | IE의 DOM을 점검해 HTML 인젝션 공격 탐지
- 레지스트리 분석
- 비법 10-8 | RegRipper 플러그인을 이용한 레지스트리 포렌식
- 비법 10-9 | 가짜 PKI 인증서 설치 탐지
- 비법 10-10 | 레지스트리 내 악성코드 데이터 흔적 조사
- 슬루스 킷
- 11 악성코드 디버깅
- 디버거를 이용한 작업
- 비법 11-1 | 프로세스 열기와 연결
- 비법 11-2 | 셸코드 분석용 JIT 디버거 설정
- 비법 11-3 | 디버거 GUI에 익숙해지기
- 비법 11-4 | 프로세스 메모리와 자원 탐색
- 비법 11-5 | 프로그램 실행 제어
- 비법 11-6 | 중단점 설정과 중단점 잡기
- 비법 11-7 | 조건부 로그 중단점 이용
- Immunity 디버거의 파이썬 API
- 비법 11-8 | 파이썬 스크립트와 PyCommands를 이용한 디버깅
- 비법 11-9 | 바이너리 파일에서 셸코드 탐지
- 비법 11-10 | SILENTBANKER’S API 후킹 조사
- WinAppDbg 파이썬 디버거
- 비법 11-11 | WinAppDbg 도구를 이용한 프로세스 메모리 조작
- 비법 11-12 | WINAPPDBG를 이용한 파이썬 API 모니터 설계
- 디버거를 이용한 작업
- 12 역난독화
- 공통 알고리즘 디코딩
- 비법 12-1 | 파이썬을 이용한 XOR 알고리즘 리버스 엔지니어링
- 비법 12-2 | yaratize를 이용해 XOR로 인코딩된 데이터 탐지
- 비법 12-3 | 특수 문자를 이용한 base64 디코딩
- 복호화
- 비법 12-4 | 캡처된 패킷에서 암호화된 데이터 격리
- 비법 12-5 | SnD 리버싱 도구, FindCrypt, Kanal로 암호 검색
- 비법 12-6 | Zynamics BinDiff를 이용한 OpenSSL 심볼 포팅
- 비법 12-7 | PyCrypto를 이용한 파이썬 데이터 복호화
- 악성코드 언패킹
- 비법 12-8 | 패킹된 악성코드에서 OEP 찾기
- 비법 12-9 | LordPE를 이용한 프로세스 메모리 덤프
- 비법 12-10 | ImpREC를 이용한 임포트 테이블 리빌드
- 언패킹 리소스
- 디버거 스크립트
- 비법 12-11 | 도메인 생성 알고리즘 크래킹
- 비법 12-12 | 파이썬과 x86emu를 이용한 문자열 디코딩
- 공통 알고리즘 디코딩
- 13 DLL을 이용한 작업
- 비법 13-1 | DLL 익스포트 목록화
- 비법 13-2 | rundll32.exe를 이용한 DLL 실행
- 비법 13-3 | 호스트 프로세스 제한 우회
- 비법 13-4 | rundl32ex를 이용한 원격 DLL 익스포트 호출
- 비법 13-5 | LOADDLL.EXE를 이용한 DLL 디버깅
- 비법 13-6 | DLL 진입점에 중단점 지정
- 비법 13-7 | 윈도우 서비스로 DLL 실행
- 비법 13-8 | DLL을 독립 실행 파일로 변환
- 14 커널 디버깅
- 원격 커널 디버깅
- 로컬 커널 디버깅
- 소프트웨어 요구 사항
- 비법 14-1 | LiveKd를 이용한 로컬 디버깅
- 비법 14-2 | 커널 디버그 부트 스위치 활성화
- 비법 14-3 | 게스트 워크스테이션 디버깅(윈도우 환경)
- 비법 14-4 | Parallels 게스트 디버깅(맥 OS X 환경)
- 비법 14-5 | WINDBG 명령과 제어 개요
- 비법 14-6 | 프로세스와 프로세스 컨텍스트 탐색
- 비법 14-7 | 커널 메모리 탐색
- 비법 14-8 | 드라이버 로드에 중단점 지정
- 비법 14-9 | OEP로 드라이버 언패킹
- 비법 14-10 | 드라이버 덤프와 리빌드
- 비법 14-11 | WinDbg 스크립트를 이용한 루트킷 탐지
- 비법 14-12 | IDA Pro를 이용한 커널 디버깅
- 15 Volatility에 의한 메모리 포렌식
- 메모리 수집
- 비법 15-1 | MoonSols 윈도우 메모리 툴킷을 이용한 메모리 덤프
- 비법 15-2 | F-Response를 이용한 원격, 읽기전용 메모리 수집
- 비법 15-3 | 가상 머신 메모리 파일에 접근
- 비법 15-4 | Nutshell의 Volatility
- 비법 15-5 | 메모리 덤프의 프로세스 조사
- 비법 15-6 | psscan을 이용해 DKOM 탐지
- 비법 15-7 | csrss.exe의 대체 프로세스 목록 탐색
- 비법 15-8 | 프로세스 컨텍스트 속임수 인지
- 메모리 수집
- 16 메모리 포렌식: 코드 인젝션과 추출
- DLL 조사
- 비법 16-1 | 로드된 의심스러운 DLL 찾기
- 비법 16-2 | ldr Modules을 이용해 언링크된 DLL 탐지
- 코드 인젝션과 VAD
- 비법 16-3 | 가상 주소 설명자 탐색
- 비법 16-4 | 페이지 보호 해석
- 비법 16-5 | 프로세스 메모리에 있는 증거 찾기
- 비법 16-6 | malfind와 YARA를 이용해 인젝션된 코드 확인
- 바이너리 재구성
- 비법 16-7 | 메모리에서 실행 이미지 리빌드
- 비법 16-8 | impscan을 이용해 임포트된 함수를 스캐닝
- 비법 16-9 | 의심스러운 커널 모듈 덤프
- DLL 조사
- 17 메모리 포렌식: 루트킷
- 비법 17-1 | IAT 후킹 탐지
- 비법 17-2 | EAT 후킹 탐지
- 비법 17-3 | 인라인 API 후킹 탐지
- 비법 17-4 | IDT 후킹 탐지
- 비법 17-5 | 드라이버 IRP 후킹 탐지
- 비법 17-6 | SSDT 후킹 탐지
- 비법 17-7 | ssdt ex를 이용한 대부분의 작업 자동화
- 비법 17-8 | 커널 스레드에서 분리된 루트킷 탐지
- 비법 17-9 | 시스템 전역 알림 루틴 확인
- 비법 17-10 | SVSCAN을 이용해 악성 서비스 프로세스 찾기
- 비법 17-11 | mutantscan을 이용한 뮤텍스 객체 스캐닝
- 18 메모리 포렌식: 네트워크와 레지스트리
- 비법 18-1 | 소켓과 연결 객체 조사
- 비법 18-2 | Zeus가 남긴 네트워크 데이터 분석
- 비법 18-3 | 은폐된 TCP /IP 활동 시도 탐지
- 비법 18-4 | 원시 소켓과 무작위 NIC 탐지
- 레지스트리 분석
- 비법 18-5 | 메모리 레지스트리 도구를 이용한 레지스트리 잔여 데이터 분석
- 비법 18-6 | 최근에 쓴 타임스탬프순으로 키 정렬