CodeEngn Logo

Book


국내 리버스엔지니어링 관련 서적을 쉬어가기, 초급, 중급, 고급으로 분류 하였습니다.

추가 및 변경 신청은 Contact 메뉴에서 요청 해주세요.



악성코드 분석가의 비법서


정보

저자 : 마이클 할레 라이,스티븐 어드에어 등저/여성구,구형준 공역/이상진 감수
출판사 : 에이콘
출간일 : 2012년 05월 22일
페이지 : 896
ISBN-13 : 9788960773011
ISBN-10 : 8960773018
정가 : 45,000원


책소개

악성코드 분석에 필요한 여러 비법을 소개한 책이다. 악성코드 분석 환경 구축에서 다양한 자동화 분석 도구를 이용한 분석 방법까지 차근히 설명한다. 또한 디버깅과 포렌식 기법까지 상당히 넓은 영역을 난이도 있게 다루므로 악성코드 분석 전문가도 십분 활용할 수 있는 참고 도서다.


저자소개

저자 : 마이클 할레 라이 Michael Hale Ligh

베리사인 아이디펜스(Verisign iDefense)의 악성코드 분석가이며, 악성코드 탐지, 복호화, 조사 도구를 개발하는 전문가다. 과거 수년 동안 리오 데 자네이로, 상하이, 쿠알라룸푸르, 런던, 워싱턴 D.C., 뉴욕에서 악성코드 분석 과정을 가르치고, 수백 명의 학생을 교육했다. 아이디펜스 입사 전에는 국가 건강검진센터에서 모의 해킹 서비스를 제공하는 취약점 연구원으로 일하면서 리버스 엔지니어링과 운영체제 내부에 대한 심도 깊은 지식을 쌓았다. 그 전에는 뉴잉글랜드 전 금융기관의 네트워크를 보호하고 포렌식 조사를 수행했다. 현재는 MNIN Security LLC 특수 프로젝트의 수석으로 일한다.

저자 : 스티븐 어드에어 Steven Adair

섀도우서버 파운데이션(Shadowserver Foundation)의 보안 연구원이자 이터치 페더럴 시스템즈(eTouch Federal Systems)의 수석 아키텍트다. 섀도우서버에서 악성코드 분석과 봇넷 추적뿐 아니라 정보 유출 사고를 포함한 모든 종류의 사이버 공격을 조사한다. 국제 컨퍼런스에서 해당 주제에 대해 종종 발표하고 『Shadows in the Cloud: Investigating Cyber Espionage 2.0』이라는 백서를 공동 집필했다. 페더럴 에이전시(Federal Agency)에서 사전 대책으로 사이버 침입 사전 탐지, 완화, 예방 작업을 수행하는 사이버 위협(Cyber Threat)이라는 업무를 맡고 있다. 새롭고 혁신적인 기술을 이용한 모범 사례와 글로벌 네트워크를 통해 기업에 널리 적용 가능한 안티 악성코드 솔루션을 통합 구현했다. 고객 지원 업무나 섀도우서버에서 자유로운 시간을 보낼 때도 항상 악성코드와 일상을 보낸다.

저자 : 블레이크 할스타인 Blake Hartstein

베리사인 아이디펜스(Verisign iDefense)의 긴급 대응 엔지니어로서, 의심스러운 활동과 악성코드를 분석하고 보고하는 업무를 맡고 있다. 쉬무콘(Shmoocon) 2009와 2010에 발표한 웹 기반 익스플로잇을 자동 분석하고 탐지하는 Jsunpack의 제작자다. 또한 이머징 스릿(Emerging Threat) 프로젝트에서 스노트(Snort) 규칙을 작성해 기여했다.

저자 : 매튜 리차드 Mathew Richard

악성코드를 분석하고 보고하는 책임을 가진 레이씨온(Raytheon) 사의 악성코드 처리 책임자다. 매튜는 아이디펜스에서 긴급 대응 팀의 전 책임자였다. 그 이전 7년간은 130개 은행과 신용카드 조합에서 사용되는 보안 관제 서비스를 만들어 운영했다. 또한 여러 국가나 글로벌 기업들을 대상으로 프리랜서로 포렌식 컨설팅을 수행했다. 현재 CISSP, GCIA, GCFA, GREM 자격증을 보유하고 있다.

역자 : 여성구

현재 넥슨 CERT 팀장이며, 이전에는 다년간 국가기관과 대기업 등 다양한 IT 환경을 대상으로 모의 해킹, 보안 점검, 보안 교육을 수행한 경력과 국내외 보안 취약점, 안전한 웹 보안 코딩 가이드라인을 발표한 경력이 있다. 고려대학교 정보보호대학원에서 디지털 포렌식을 전공했으며, 메모리 포렌식과 웹 로그 분석 등에 대한 연구를 했다. 취미로 공개용 보안 도구(웹 백도어 탐지 도구, 웹 로그 분석기 등)를 제작하고 있다.

역자 : 구형준

수년간 대기업 IT 환경에서 보안 프로세스 개선, 보안 점검, 보안 솔루션 검토, 보안 교육 등 다양한 경험을 쌓았다. 고려대학교 정보보호대학원에서 디지털 포렌식을 전공했으며, 여러 분야 중에서도 특히 내부자 위협, 네트워크 포렌식, 악성코드, 암호학에 관심이 많다. 현재 CISA/CISSP/SIS/GCIH/EnCE/CHFI 자격증을 보유하고 있다.


목차

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 공격 패턴 그래프 작성

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를 이용한 바이너리 비교

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 | 의심스러운 커널 모듈 덤프

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 | 최근에 쓴 타임스탬프순으로 키 정렬
______비법 18-7 | RegRipper와 함께 Volatility 사용

Linode is a privately owned virtual private server provider based in Galloway, New Jerse