악성코드 분석 시작하기
도서+교보Only(교보배송)을 함께 15,000원 이상 구매 시 무료배송
15,000원 미만 시 2,500원 배송비 부과
20,000원 미만 시 2,500원 배송비 부과
15,000원 미만 시 2,500원 배송비 부과
1Box 기준 : 도서 10권
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
작가정보
저자(글) 몬나파 K A
Monnappa K A
시스코 시스템(Cisco Systems)에서 위협 인텔리전스와 고급 사이버 공격 조사에 초점을 둔 정보보안 조사자로 일하고 있다. 블랙 햇(Black Hat) 검토 위원회의 회원, Limon 리눅스 샌드박스의 제작자, Volatility 플러그인 콘테스트 2016의 우승자, 시스인포(Cysinfo) 사이버 보안 연구 커뮤니티의 공동 창립자다. 블랙 햇, FIRST, OPCDE, DSCI를 포함한 다양한 보안 콘퍼런스에서 발표와 교육 세션을 수행했다. 미국, 아시아, 유럽의 블랙 햇 보안 콘퍼런스에서 정기적으로 교육을 진행한다.
번역 여성구
다년간의 보안 컨설턴트 활동 이후 게임사 CERT 팀장, IS 감사역, 보안 시스템 개발 팀장 등을 거쳐 서비스 보안을 총괄하는 실장으로 업무를 수행하고 있다. 다년간 국가기관과 대기업, 통신사 등 다양한 IT 환경을 대상으로 모의해킹, 보안 점검 및 교육, 침해사고 대응을 실시했으며, 게임사의 보안, IS 감사, 인트라넷 및 인프라 시스템 개발과 운영, 보안 플랫폼 개발 관리 업무를 담당했다. 국내외에 보안 취약점 및 공개용 보안 도구 발표와 악성코드 분석 관련 도서를 번역했으며, 고려대학교 정보보호대학원에서 디지털 포렌식을 전공했다.
작가의 말
컴퓨터와 인터넷 기술의 발전은 우리의 삶을 변화시켰고, 조직이 비즈니스를 수행하는 방식을 혁신시켰다. 하지만 기술 진화와 디지털화는 사이버 범죄 활동을 증가시켰다. 중요 인프라스트럭처, 데이터 센터, 개인/공공, 국방, 에너지, 정부, 금융 부분에 대한 사이버 공격 위협의 증가는 개인에서 대기업에 이르기까지 모두에게 고유한 과제가 됐다. 이러한 사이버 공격은 금융 절도, 스파이 활동, 방해 공작(sabotage), 지적 재산권 절도, 정치적 동기에 따라 악의적인 소프트웨어(악성코드)를 사용한다.
공격자가 정교한 지능형 악성코드(malware) 공격을 수행함에 따라 침입을 탐지하고 대응하는 것은 사이버 보안 전문자에게 중요하다. 악성코드 분석은 고급 악성코드와 표적 공격과 싸우는 데 필수적인 기술이 됐다. 악성코드를 분석하려면 다양한 기술과 주제에 대한 균형 잡힌 지식이 필요하다. 즉, 악성코드 분석을 배우려면 시간과 인내심이 필요하다.
이 책은 악성코드 분석을 사용해 윈도우 악성코드의 행위와 특징을 이해할 수 있는 개념, 도구, 기술을 가르친다. 먼저 악성코드 분석의 기본 개념을 소개하고 고급 코드 분석과 메모리 포렌식 개념을 설명한다. 개념을 더 잘 이해할 수 있도록 돕고자 다양한 실제 악성코드 샘플, 감염된 메모리 이미지, 시각적인 다이어그램을 책 전반의 예제로 사용했다. 이 외에도 필요한 개념의 이해를 도울 수 있는 충분한 정보가 제공되며, 가능한 경우 추가 자료에 대한 참고를 제공한다.
악성코드 분석에 익숙하지 않다면 이 책은 악성코드 분석을 시작하는 데 도움을 줄 것이고, 이 분야에 경험이 있다면 지식을 더욱 향상시키는 데 도움을 줄 것이다. 포렌식 조사를 수행하고자, 사고 대응을 하고자, 또는 단순 재미로 악성코드 분석을 배우고 있다고 하더라도 이 책은 목표를 달성하는 데 도움을 줄 것이다.
목차
- 1장. 악성 코드 분석 소개
__1. 악성 코드란 무엇인가?
__2. 악성 코드 분석이란 무엇인가?
__3. 악성 코드 분석을 왜 하는가?
__4. 악성 코드 분석의 종류
__5. 랩 환경 설정
____5.1 랩 요구사항
____5.2 랩 아키텍처의 개요
____5.3 리눅스 VM 설치와 설정
____5.4 윈도우 VM 설치와 설정
__6. 악성 코드 출처
요약
2장. 정적 분석
__1. 파일 유형 파악
____1.1 수작업을 통한 파일 유형 식별
____1.2 도구를 이용한 파일 유형 식별
____1.3 파이썬을 이용한 파일 유형 구분
__2. 악성 코드 식별
____2.1 도구를 이용한 암호 해시 생성
____2.2 파이썬에서 암호 해시 파악
__3. 다중 백신 스캐닝
____3.1 바이러스토털을 이용한 의심 바이너리 스캐닝
____3.2 바이러스토털 공개 API를 이용한 해시 값 질의
__4. 문자열 추출
____4.1 도구를 이용한 문자열 추출
____4.2 FLOSS를 이용한 난독화된 문자열 디코딩
__5. 파일 난독화 파악
____5.1 패커와 크립터
____5.2 Exeinfo PE를 이용한 파일 난독화 탐지
__6. PE 헤더 정보 조사
____6.1 파일 의존성과 임포트 조사
____6.2 익스포트 조사
____6.3 PE 섹션 테이블과 섹션 조사
____6.4 컴파일 타임스탬프 조사
____6.5 PE 리소스 조사
__7. 악성 코드 비교와 분류
____7.1 퍼지 해싱을 이용한 악성 코드 분류
____7.2 임포트 해시를 이용한 악성 코드 분류
____7.3 섹션 해시를 이용한 악성 코드 분류
____7.4 YARA를 이용한 악성 코드 분류
요약
3장. 동적 분석
__1. 랩 환경 개요
__2. 시스템과 네트워크 모니터링
__3. 동적 분석(모니터링) 도구
____3.1 프로세스 해커를 이용한 프로세스 조사
____3.2 프로세스 모니터를 이용한 시스템 상호작용 조사
____3.3 노리벤을 이용한 시스템 활동 로깅
____3.4 와이어샤크를 이용한 네트워크 트래픽 캡처
____3.5 INetSim을 이용한 서비스 시뮬레이션
__4. 동적 분석 단계
__5. 종합 분석: 악성 코드 실행 파일 분석
____5.1 샘플의 정적 분석
____5.2 샘플 동적 분석
__6. 동적 링크 라이브러리 분석
____6.1 공격자가 DLL을 사용하는 이유
____6.2 rundll32.exe를 이용한 DLL 분석
____6.3 프로세스 체크를 이용한 DLL 분석
요약
4장. 어셈블리 언어와 디어셈블리 기초
__1. 컴퓨터 기초
__1.2 CPU
____1.3 프로그램 기초
__2. CPU 레지스터
____2.1 범용 레지스터
____2.2 명령 포인터(EIP)
____2.3 EFLAGS 레지스터
__3. 데이터 전송 명령어
____3.1 상수를 레지스터로 이동
____3.2 레지스터에서 레지스터로 값 이동
____3.3 메모리의 값을 레지스터로 이동
____3.4 레지스터에서 메모리로 값 이동
____3.5 디스어셈블리 챌린지
____3.6 디스어셈블리 해답
__4. 산술 연산
____4.1 디스어셈블리 챌린지
____4.2 디스어셈블리 해답
__5. 비트 연산
__6. 분기와 조건문
____6.1 무조건 분기
____6.2 조건 분기
____6.3 IF 문
____6.4 If-Else 문
____6.5 If-Elseif-Else 문
____6.6 디스어셈블리 챌린지
____6.7 디스에셈블리 솔루션
__7. 반복
____7.1 디스어셈블리 챌린지
____7.2 디스어셈블리 솔루션
__8. 함수
____8.1 스택
____8.2 함수 호출하기
____8.3 함수에서 복귀하기
____8.4 함수 매개변수와 반환 값
__9. 배열과 문자열
____9.1 디스어셈블리 챌린지
____9.2 디스어셈블리 솔루션
____9.3 문자열
__10. 구조체
__11. x64 아키텍처
____11.1 64비트 윈도우에서의 32비트 실행 파일 분석
__12. 추가 정보
요약
5장. IDA를 이용한 디스어셈블리
__1. 코드 분석 도구
__2. IDA를 이용한 정적 코드 분석
____2.1 IDA에 바이너리 로드
____2.2 IDA 디스플레이 탐색
____2.3 IDA를 이용한 디스어셈블리 개선
__3. 윈도우 API 디스어셈블
____3.1 윈도우 API 이해
____3.2 윈도우 API 32비트와 64비트 비교
__4. IDA를 이용한 바이너리 패치
____4.1 프로그램 바이트 패치
____4.2 명령어 패치
__5. IDA 스크립팅과 플러그인
____5.1 IDA 스크립트 실행
____5.2 IDAPython
____5.3 IDA 플러그인
요약
6장. 악성 바이너리 디버깅
__1. 일반적인 디버깅 개념
____1.1 프로세스 실행과 연결
____1.2 프로세스 실행 제어
____1.3 브레이크포인트로 프로그램 중지
____1.4 프로그램 실행 추적
__2. x64dbg를 이용한 바이너리 디버깅
____2.1 x64dbg에서 새로운 프로세스 실행
____2.2 x64dbg를 이용한 실행 프로세스 연결
____2.3 x64dbg 디버거 인터페이스
____2.4 x64dbg를 이용한 프로세스 실행 제어
____2.5 x64dbg에서 브레이크포인트 설정
____2.6 32비트 악성 코드 디버깅
____2.7 64비트 악성 코드 디버깅
____2.8 x64dbg를 이용한 악성 DLL 디버깅
____2.9 x64dbg에서의 실행 추적
____2.10 x64dbg에서의 패치 〈$Scr_Ps::1〉
__3. IDA를 이용한 바이너리 디버깅
____3.1 IDA에서의 새로운 프로세스 실행
____3.2 IDA를 이용한 기존 프로세스 연결
____3.3 IDA 디버거 인터페이스
____3.4 IDA를 이용한 프로세스 실행 제어
____3.5 IDA에서의 브레이크포인트 설정
____3.6 악성 코드 실행 파일 디버깅
____3.7 IDA를 이용한 악성 DLL 디버깅
____3.8 IDA를 이용한 실행 추적
____3.9 IDAPython을 이용한 디버거 스크립팅
요약
7장. 악성 코드 기능과 지속성
__1. 악성 코드 기능
____1.1 다운로더
____1.2 드로퍼
____1.3 키로거
____1.4 이동식 미디어를 통한 악성 코드 복제
____1.5 악성 코드 명령 및 제어
____1.6 파워셸 기반 실행
__2. 악성 코드 지속 방법
____2.1 레지스트리 키 실행
____2.2 스케줄 작업
____2.3 시작 폴더
____2.4 Winlogon 레지스트리 항목
____2.5 이미지 파일 실행 옵션
____2.6 접근성 프로그램
____2.7 AppInit_DLLs
____2.8 DLL 검색 순서 하이재킹
____2.9 COM 하이재킹
____2.10 서비스
요약
8장. 코드 인젝션과 후킹
__1. 가상 메모리
____1.1 프로세스 메모리 컴포넌트
____1.2 커널 메모리 내용
__2. 유저 모드와 커널 모드
____2.1 윈도우 API 호출 흐름
__3. 코드 인젝션 기술
____3.1 원격 DLL 인젝션
____3.2 APC를 이용한 DLL 인젝션
____3.3 SetWindowsHookEX()을 이용한 DLL 인젝션
____3.4 애플리케이션 호환성 Shim을 이용한 DLL 인젝션
____3.5 원격 실행 파일/셸코드 인젝션
____3.6 할로우 프로세스 인젝션
__4. 후킹 기술
____4.1 IAT 후킹
____4.2 인라인 후킹
____4.3 Shim을 이용한 인-메모리 패칭
__5. 추가 정보
요약
9장. 악성 코드 난독화 기술
__1. 심플 인코딩
____1.1 시저 암호
____1.2 Base64 인코딩
____1.3 XOR 인코딩
__2. 악성 코드 암호화
____2.1 Signsrch를 이용한 암호화 시그니처 식별
____2.2 FindCrypt2를 이용해 암호화 상수 탐색
____2.3 YARA를 이용한 암호화 시그니처 탐색
____2.4 파이썬에서의 복호화
__3. 사용자 정의 인코딩/암호화
__4. 악성 코드 언패킹
____4.1 수작업 언패킹
____4.2 자동화된 언패킹
요약
10장. 메모리 포렌식을 이용한 악성 코드 헌팅
__1. 메모리 포렌식 단계
__2. 메모리 수집
____2.1 DumpIt을 이용한 메모리 수집
__3. Volatility 개요
____3.1 Volatility 설치
____3.2 Volatility 사용
__4. 프로세스 나열
____4.1 프로세스 개요
____4.2 pssan을 이용한 프로세스 나열
____4.3 프로세스 관계 파악
____4.4 psxview를 이용한 프로세스 목록화
__5. 프로세스 핸들 나열
__6. DLL 나열
____6.1 ldrmodules를 이용한 숨겨진 DLL 탐색
__7. 실행 파일과 DLL 덤프
__8. 네트워크 연결과 소켓 나열
__9. 레지스터 조사
__10. 서비스 조사
__11. 명령어 히스토리 추출
요약
11장. 메모리 포렌식을 이용한 고급 악성 코드 탐지
__1. 코드 인젝션 탐지
____1.1 VAD 정보 획득
____1.2 VAD를 사용해 인젝션된 코드 탐지
____1.3 프로세스 메모리 영역 덤프
____1.4 malfind를 이용한 인젝션 코드 탐지
__2. 할로우 프로세스 인젝션 조사
____2.1 할로우 프로세스 인젝션 단계
____2.2 할로우 프로세스 인젝션 탐지
____2.3 할로우 프로세스 인젝션 변형
__3. API 후킹 탐지
__4. 커널 모드 루트킷
__5. 커널 모듈 나열
____5.1 driverscan을 이용한 커널 모듈 나열
__6. I/O 프로세싱
____6.1 장치 드라이버의 역할
____6.2 I/O 관리자의 역할
____6.3 장치 드라이버와의 통신
____6.4 계층 드라이버에 I/O 요청
__7. 장치 트리 표시
__8. 커널 공간 후킹 탐지
____8.1 SSDT 후킹 탐지
____8.2 IDT 후킹 탐지
____8.3 인라인 커널 후킹 식별
____8.4 IRP 함수 후킹 탐지
__9. 커널 콜백과 타이머
요약
책 속으로
★ 옮긴이의 말 ★
악성코드는 사람의 악의가 사라지지 않는 한 사라지지 않고 계속 존재할 것이고, 컴퓨터 기술이 발전할 수 있도록 더욱 교묘해지고 발전할 것이다. 이 책에서 악의적인 코드 또는 악성 코드로 표현했지만, 사실 코드에는 어떤 마음이나 선악이 존재하지 않는다. 악성코드 제작자가 가진 의도대로 수행되는 명령이 존재할 뿐이다. 악성코드 분석은 이런 측면에서 제작자의 심리를 읽을 수도 있고 비록 나쁜 행위이긴 하지만, 그의 재치를 알아가는 작업이기도 하다. 보안 모듈을 우회하고 몰래 숨는 응용력에 감탄하기도 하고, 부처님 손바닥 안에서 노는 손오공 같은 제작자의 우매함에 실소가 나오기도 한다.
앞서 번역한 『악성코드 분석가의 비법서』(2012)는 악성코드를 분석할 때 즉시 참고할 수 있는 실전 참고서이고, 『실전 악성코드와 멀웨어 분석』(2013)은 분석 방법, 악성코드의 기능, 안티리버싱을 다루고 있어 이 책과 유사한 점이 있으나 상세한 내용은 다르다. 이 책의 장점은 앞의 책들보다 이후에 출간돼 좀 더 새로운 내용을 담고 있다는 점, 다른 관점의 설명으로 이해의 수준을 높인다는 점, 저자의 경험과 지식이 잘 묻어난다는 점이다. 이 책은 악성코드 분석을 정의하고 두 가지 분석 방법으로 구분한 후 악성코드 분석에 기초가 되는 디스어셈블리 기초와 IDA 사용법, 디버깅을 설명한다. 그리고 악성코드가 가진 다양한 기능과 그 정체성(인젝션과 후킹), 은닉 기술, 은닉 기술을 탐지하는 메모리 포렌식을 다룬다.
출판사 서평
★ 이 책에서 다루는 내용 ★
■ 악성코드 분석을 위한 안전하고 격리된 랩 만들기
■ 악성코드와 관련된 메타데이터 추출
■ 시스템과 악성코드의 상호 작용 파악
■ IDA Pro와 x64dbg를 이용한 코드 분석
■ 리버스 엔지니어링을 이용한 다양한 악성코드 기능
■ 일반적인 인코딩/암호화 알고리즘을 리버스 엔지니어링하고 디코딩하기
■ 다양한 코드 인젝션과 후킹 기술
■ 메모리 포렌식을 이용한 악성코드 조사 및 헌팅
★ 이 책의 대상 독자 ★
사고 대응자, 사이버 보안 조사자, 시스템 관리자, 악성코드 분석가, 포렌식 실무자, 학생 또는 악성코드 분석 기술을 배우거나 향상시키는 데 관심이 있는 보안 전문가를 위한 책이다.
★ 이 책의 구성 ★
1장, ‘악성코드 분석 소개’에서는 악성코드 분석의 개념, 악성코드 분석의 유형, 격리된 악성코드 분석 연구실 환경의 설정을 소개한다.
2장, ‘정적 분석’에서는 악의적인 바이너리에서 메타데이터 정보를 추출하는 도구와 기술을 설명한다. 악성코드 샘플을 비교하고 분류하는 방법을 보여 준다. 바이너리를 실행하지 않고 바이너리의 다양한 측면을 파악하는 방법을 배울 수 있다.
3장, ‘동적 분석’에서는 악성코드의 동작과 시스템과의 상호 작용을 파악할 수 있는 도구와 기술을 설명한다. 악성코드와 관련된 네트워크, 호스트 기반 식별자의 획득 방법을 배울 수 있다.
4장, ‘어셈블리 언어와 디스어셈블리’에서는 기초 어셈블리 언어의 기본 이해와 코드 분석에 필요한 기술을 설명한다.
5장, ‘IDA를 이용한 디스어셈블리’에서는 IDA Pro 디스어셈블러의 기능을 설명하고, 정적 코드 분석(디스어셈블리)를 수행하고자 IDA Pro를 사용하는 방법을 다룬다.
6장, ‘악의적인 바이너리 디버깅’에서는 x64dbg와 IDA Pro 디버거를 이용해 바이너리를 디버깅하는 기술을 설명한다. 디버거를 이용해 프로그램의 실행을 제어하고 프로그램의 동작을 조작하는 방법을 배울 수 있다.
7장, ‘악성코드 기능과 지속’에서는 리버스 엔지니어링을 이용해 악성코드의 다양한 기능을 설명한다. 악의적인 프로그램이 사용하는 다양한 지속(persistence) 방법도 설명한다.
8장, ‘코드 인젝션과 후킹’에서는 악의적인 프로그램이 정상 프로세스의 콘텍스트(context)에서 악의적인 코드를 실행하고자 사용하는 일반적인 코드 인젝션 기술을 설명한다. 악성코드가 API의 결과를 모니터링, 차단, 또는 필터링하고자 악의적인 코드로 제어를 리다이렉트할 때 사용하는 후킹 기술도 설명한다. 코드 인젝션과 후킹 기술을 사용하는 악의적인 프로그램을 분석하는 방법을 배울 수 있다.
9장, ‘악성코드 난독화 기술’에서는 악의적인 프로그램이 정보를 은닉하고 숨기고자 사용하는 인코딩, 암호화, 패킹 기술을 설명한다. 데이터를 디코딩/복호화하고 악의적인 바이너리를 언패킹하는 다양한 전략을 설명한다.
10장, ‘메모리 포렌식을 이용한 악성코드 헌팅’에서는 메모리 포렌식을 이용해 악의적인 컴포넌트를 탐지하는 기술을 설명한다. 메모리에서 포렌식 아티팩트를 탐지하고 식별할 수 있는 다양한 Volatility 플러그인을 배울 수 있다.
11장, ‘메모리 포렌식을 이용한 고급 악성코드 탐지’에서는 고급 악성코드가 포렌식 도구에 탐지되지 않고자 사용하는 은닉 기술을 설명한다. 유저 모드와 커널 모드 루트킷 컴포넌트를 조사하고 탐지하는 방법을 배울 수 있다.
기본정보
ISBN | 9791161754581 | ||
---|---|---|---|
발행(출시)일자 | 2020년 09월 29일 | ||
쪽수 | 572쪽 | ||
크기 |
189 * 234
* 32
mm
/ 1066 g
|
||
총권수 | 1권 | ||
시리즈명 |
해킹과 보안
|
||
원서명/저자명 | Learning Malware Analysis/K. a., Monnappa |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립