이미 소장하고 있다면 판매해 보세요.
|
1부. 소개
1장. 소개 __멀웨어의 종류 ____플랫폼 다양성 ____목표 다양성 __사이버 킬 체인 __멀웨어 공격 수명 주기 ____개발 단계 ____배포 단계: 다양한 전달 시스템 ____감염 단계 ____감염 후 단계 __멀웨어 비즈니스 모델 __멀웨어와의 전쟁 ____멀웨어 대응 관련 조직 ____안티 멀웨어 제품 __전문 용어 __요약 2장. 멀웨어 분석 랩 설정 __호스트 시스템 요구 사항 __네트워크 요구 사항 __멀웨어 분석용 VM 만들기 __분석용 VM 설정 변경 ____확장자 숨기기 비활성화 ____숨겨진 파일 및 폴더 표시 ____ASLR 비활성화 ____윈도우 방화벽 비활성화 ____모든 안티 바이러스 비활성화 ____일반 사용자 시스템 모방 __스냅샷 __멀웨어 분석 도구 ____HashMyFiles 및 기타 해싱 도구 ____APIMiner ____PE 파일 탐색: CFF Explorer 및 PEView ____파일 유형 식별 도구 ____Process Hacker, Process Explorer, CurrProcess ____ProcMon: 프로세스 모니터 ____Autoruns ____Regshot ____FakeNet ____BinText ____YARA ____Wireshark ____마이크로소프트 네트워크 모니터 ____OllyDbg 2.0 ____Notepad++ ____Malzilla ____PEiD ____FTK Imager Lite ____Volatility Standalone ____Ring3 API Hook Scanner ____GMER ____SSDTView ____DriverView ____Strings ____SimpleWMIView ____Registry Viewer ____Bulk Extractor ____Suricata ____Cuckoo Sandbox ____rundll32 ____oledump.py ____OllyDumpEx ____FlexHex ____Fiddler ____IDA Pro ____x64dbg 및 Immunity Debugger __요약 2부. OS 및 시스템 기초 3장. 파일 및 파일 포맷 __파일 시각화를 위한 16진수 형식 __해시: 고유한 파일 특징 __파일 식별 ____파일 확장자 ____파일 형식을 결정하는 파일 포맷 ____파일 포맷의 수동 식별 __요약 4장. 가상 메모리 및 PE 파일 __프로세스 생성 ____프로그램 실행 ____Process Hacker로 프로세스 탐색 __가상 메모리 ____주소 지정 ____메모리 페이지 ____페이징 요청 ____페이지 테이블 ____가상 메모리 주소 공간 분할 ____Process Hacker를 사용해 페이지 검사 ____가상 메모리의 문자열 ____멀웨어 탐지를 위한 가상 메모리 __PE 파일 ____윈도우 실행 파일 ____중요한 PE 헤더 및 필드 ____동적 연결 라이브러리 ____Import Address Table __요약 5장. 윈도우 내부 __Win32 API ____API 로그 획득하기 ____Win32 DLL ____Win32 API 및 MSDN 문서 ____API를 통한 행동 식별 __윈도우 레지스트리 ____레지스트리의 논리적 관찰 ____데이터 저장소 레지스트리 ____레지스트리 추가 ____멀웨어 및 레지스트리의 관계 __윈도우의 주요 디렉터리 ____system32 디렉터리 ____Program Files 디렉터리 ____사용자 문서 및 설정 ____멀웨어 분석 시 확인 사항 __윈도우 프로세스 ____프로세스의 속성 및 멀웨어 이상 징후 탐지 __윈도우 서비스 ____SVCHOST.EXE 환경에서 실행되는 서비스 ____svchost 이용하는 DLL 서비스 ____윈도우 서비스를 활용하는 멀웨어 __시스템 콜 __뮤텍스 __요약 3부. 멀웨어 구성 요소 및 분석 6장. 멀웨어 구성 요소 및 배포 __멀웨어 구성 요소 ____페이로드 ____패커 ____지속성 ____통신 ____전파성 ____방어성 ____은폐성 __배포 메커니즘 ____익스플로잇 ____스팸 ____감염된 저장 장치 ____멀버타이징 ____드라이브 바이 다운로드 ____다운로더 ____취약한 인증을 통한 직접 로그인 ____공유 폴더 __요약 7장. 멀웨어 패커 __암호화 및 압축 __패커 ____패커의 작동 원리 ____크립토와 프로텍터 ____인스톨러 __패킹하기 ____패킹된 샘플과 언패킹된 샘플의 비교 __패킹된 샘플 식별 ____엔트로피 ____문자열 __패커 식별 ____PEiD 도구 ____진입점의 코드 ____섹션 이름 ____맞춤형 패커 __패커에 대한 오해 __요약 8장. 지속성 메커니즘 __지속성에 사용되는 리소스 __분석 도구 ____Autoruns 도구 ____ProcMon 도구 __시작 프로그램 폴더 __RUN 레지스트리 __윈도우 서비스 __파일 감염 __DLL 하이재킹 __Winlogon 프로세스 __작업 스케줄러 __디버거 ____IFEO ____SilentProcessExit __요약 9장. 네트워크 통신 __멀웨어의 네트워크 사용 사례 __멀웨어 네트워크 설정 요소 __CnC 서버 IP 확인 ____고정된 IP 주소 ____고정된 도메인 이름 ____DGA와 Domain Flux __CnC와 데이터 유출 방법 ____HTTP ____IRC ____기타 방법 __내부 확산 ____네트워크 정찰 ____인증 정보 탈취 및 악용 준비 ____접근 권한 획득 ____SMB, PsExec, 기타 __네트워크 통신 감지 ____Network API와 APIMiner 도구의 로그 ____문자열 분석 ____IP 및 도메인 평판 정보 ____IDS 및 방화벽의 정적 시그니처 ____이상 징후 기준선 __요약 10장. 코드 인젝션, 프로세스 할로잉, API 후킹 __코드 인젝션 __코드 인젝션의 목적 ____멀웨어 숨기기 ____프로세스 편승 ____기능 변경 __코드 인젝션의 대상 __주요 코드 인젝션 기법 __코드 인젝션 과정 ____사용자 모드 코드 인젝션 과정 __전통적 DLL 인젝션 __프로세스 할로잉 __전통적인 셸코드 인젝션 __반사 DLL 인젝션 __중요한 API __악성 API가 존재하는 이유 __API 후킹 ____후킹 지점 및 대상 식별 ____사용자 영역에 후크 배치 ____후킹을 사용하는 이유 ____보안 소프트웨어의 후크 적용 ____후크 탐지 도구 ____사례 연구: DeleteFile() 후킹 ____사례 연구: 인터넷 익스플로러 후킹 ____APIMiner 도구 __요약 11장. 은폐와 루트킷 __은폐의 목적 __기본 은폐 기술 ____파일 속성과 권한 ____파일 아이콘 위조 ____파일명 및 확장자 위조 ____시스템 파일명 도용 ____심리언어학적 기법 ____프로세스 창 숨기기 __코드 인젝션 __루트킷 ____사용자 모드 루트킷 ____커널 모드 루트킷 __루트킷 만드는 다른 방법 __요약 4부. 멀웨어 분석 및 분류 12장. 정적 분석 __정적 분석의 필요성 __멀웨어 해시를 통한 정보 공유 ____해시 생성 __인터넷의 분석 보고서 __VirusTotal 및 기타 분석 플랫폼 ____시그니처 업데이트 주기 __파일 형식 파악하기 __전체 감염 콘텍스트 얻기 __파일명과 확장자 위조 __파일 아이콘 위조 __파일 형식 및 확장자의 불일치 __버전 및 세부 정보 __코드 서명자 정보 __정적 문자열 분석 ____악성 문자열 __YARA 도구 ____YARA의 한계 __동적 분석을 위한 정보 수집 __요약 13장. 동적 분석 __VM의 기준 스냅샷 보관 __대략적 분석을 위한 샘플의 첫 번째 실행 ____샘플의 실행 환경 파악 ____관리자 권한으로 실행 ____사례 연구 1 ____사례 연구 2 ____사례 연구 3 __APIMiner의 로그 식별 ____멀웨어 패밀리 분류 __동적 문자열 분석 ____파일 형식 ____버전 및 세부 정보 ____패킹 여부 확인 ____메모리 내 문자열의 동적 관찰 __ProcMon 도구 ____AutoRuns 도구 __코드 인젝션 탐지 ____GMER 및 Ring3 API Hook Scanner __YARA를 통한 동적 분석 __기타 악의적 행위 ____은폐를 위한 시스템 파일명 도용 ____파일명 및 프로세스 이름 속이기 ____실행 파일 삭제하기 ____프로세스 인스턴스 수 ____프로세스 세션 ID __요약 14장. Volatility 도구를 통한 메모리 포렌식 __메모리 포렌식 __다양한 분석 도구가 필요한 이유 __메모리 포렌식 단계 __메모리 수집 ____Sample-14-1.mem ____Sample-14-2.mem ____Sample-14-3.mem __메모리 분석/포렌식 ____Volatility 명령 형식 ____이미지 정보 ____프로세스와 서비스 리스트 ____가상 메모리 검사 ____프로세스 모듈 리스트 ____핸들 리스트 ____레지스트리 검색 ____코드 인젝션 및 API 후킹 식별 ____커널 검사 ____네트워크 통신 __요약 15장. 멀웨어 페이로드 분석 및 분류 __멀웨어 유형, 패밀리, 변종, 클러스터링 __명명 체계 __분류의 중요성 ____멀웨어 사전 감지 ____적절한 치료 방법 ____정보의 축적 ____공격 의도 및 범위 __분류 기준 __키로거 ____키보드 메시지 후킹 ____키보드 상태 가져오기 __인포스틸러 ____동적 이벤트 및 API 로그 ____인포스틸러의 문자열 분석 __뱅킹 멀웨어 ____API 로그 및 후크 스캐너 ____뱅킹 트로이 목마의 문자열 분석 __POS 멀웨어 ____POS 장치 작동 방식 ____POS 멀웨어 작동 방식 ____POS 식별 및 분류 ____POS 멀웨어의 문자열 __ATM 멀웨어 __원격 접속 도구 ____RAT 식별 ____RAT 멀웨어의 문자열 __랜섬웨어 ____랜섬웨어 식별 ____랜섬웨어의 문자열 __크립토마이너 __바이러스 __요약 5부. 멀웨어 리버스 엔지니어링 16장. 디버거 및 어셈블리 언어 __리버스 엔지니어링과 디스어셈블러 __PE 및 기계 코드 __x86 어셈블리 언어 ____명령어 형식 ____레지스터 ____중요한 x86 명령어 ____기타 명령어 및 참조 설명서 __디버거 및 디스어셈블리 ____디버거 기본 ____OllyDbg와 IDA 비교 ____OllyDbg ____IDA 디버거 ____OllyDbg 및 IDA의 표기법 __어셈블리에서 코드 구성 식별 ____스택 프레임 식별 ____함수의 프롤로그와 에필로그 ____지역변수 식별 ____포인터 식별 ____전역변수 식별 ____스택에서 배열 식별 ____스택의 구조체 식별 ____함수의 매개변수 식별 ____조건문 식별 ____반복문 식별 __디스어셈블리를 읽기 쉽게 만들기 ____색상 지정 ____레이블 및 주석 ____변수 추적 __디스어셈블리 분석 가속화 ____컴파일러 스텁 및 라이브러리 코드 건너뛰기 ____대수학으로 명령 축약하기 ____디컴파일러 사용 ____블록 및 순서도 ____참조 __디버거의 고급 사용 ____API 호출 및 매개변수의 관찰 ____Win32 API에 중단점 설정하기 ____디버거 이벤트 ____패치 ____호출 스택 __요약 17장. 멀웨어 언패킹을 위한 디버깅 기술 __언패킹 내부 ____OEP와 페이로드 ____패킹된 바이너리의 실행 __디버거를 사용한 수동 언패킹 ____APIMiner를 사용한 빠른 언패킹 ____유명한 패커를 디버깅하는 요령 ____기타 요령 ____OEP식별을 위한 컴파일러 스텁 ____역추적 ____페이로드 내부 __언패킹 기술의 변형 __요약 18장. 디버깅 코드 인젝션 __API 로그 및 중단점 __IEP __CreateRemoteThread로 IEP 찾기 __스레드 콘텍스트로 IEP 찾기 __EBFE 기법 __요약 19장. 방어 및 회피 기술 __방어 기술 ____안티 정적 분석 ____안티 동적 분석 ____안티 디버깅 ____가비지 코드를 이용한 안티 디스어셈블리 __회피 기술 ____안티 바이러스 회피 ____네트워크 보안 제품 회피 ____샌드박스 회피 __멀웨어의 방어 기술 __방어 기술 탐지를 위한 오픈 소스 __요약 20장. 파일리스, 매크로, 기타 멀웨어 동향 __윈도우 스크립팅 환경 __난독화 ____16진수 난독화 출력 ____분할 및 조인 ____정크 삽입 ____eval 함수를 사용한 평가 기능 ____암호화 알고리듬 __난독화 해제 ____정적 난독화 해제 ____동적 난독화 해제 ____임베디드 스크립트 디버거 __페이로드 ____다운로더 및 드로퍼 ____익스플로잇 __VBScript 멀웨어 __오피스 문서 멀웨어 ____OLE 파일 형식 ____OLE 형식 분석 ____스트림 추출 ____매크로 __파일리스 악성 코드 ____WMI ____파워셸 __요약 6부. 탐지 엔지니어링 21장. 개발 분석 랩 설정 __리눅스 개발 VM ____Suricata 설치 __윈도우 개발 VM ____비주얼 스튜디오 설치 ____Cygwin 설치 ____VS와 Cygwin의 결합 ____기타 도구 __요약 22장. 안티 바이러스 엔진 __안티 바이러스의 주요 구성 요소 __시그니처와 시그니처 모듈 ____시그니처 카테고리 ____주의 사항 ____시그니처 최적화 ____위험 최소화 __파일 스캐너 __언패커 모듈 __메모리 스캐너 __후크 및 루트킷 탐지 모듈 __바이러스 다형성 및 에뮬레이터 __교정 모듈 __차세대 안티 바이러스 __요약 23장. Suricata 규칙 작성 __네트워크 트래픽 흐름 ____종적 트래픽 ____횡적 트래픽 __네트워크 트래픽 분석 __IDPS를 사용한 네트워크 보안 ____IDS 대 IPS ____IDS에 트래픽 제공 ____IPS에 트래픽 제공 ____인라인 장비와 결합한 IDS __IDPS 센서 배포의 고려 사항 __IDPS 구성 요소 ____패킷 캡처 모듈 ____패킷 계층 디코딩 ____TCP 스트림 재조립 모듈 ____응용 계층 파싱 ____탐지 엔진 ____로깅 모듈 ____규칙 언어 __Suricata IDPS ____yaml 설정 ____PCAP 파일 모드에서 Suricata 실행 __Suricata로 규칙 작성하기 ____Suricata의 기본 규칙 ____IP 전용 규칙 ____키워드 ____기타 키워드 __요약 24장. 멀웨어 샌드박스 내부 __멀웨어 샌드박스 개요 __멀웨어 샌드박스를 사용하는 이유 __보안 아키텍처에서의 샌드박스 __샌드박스 설계 ____샘플 분석 흐름 ____게스트 VM ____호스트와 게스트 에이전트 ____모니터링 에이전트 ____디셉션 및 기타 에이전트 ____호스트와 게스트 통신 채널 ____파일과 스트리밍 로깅 기술 비교 __샌드박스 탐지 결과 저장 __샌드박스를 이용한 머신러닝 __요약 25장. 바이너리 계측을 위한 리버싱 자동화 __바이너리 계측의 의미 __DBI의 내부 메커니즘 ____계측 코드 삽입 __멀웨어 분석을 위한 DBI ____DBI의 단점 __DBI를 사용한 도구 작성 ____PIN 설정 ____도구1: 모든 명령어 기록하기 ____도구2: Win32 API 로깅 ____도구3: 코드 수정 및 분기 우회 __요약 |
Abhijit Mohanta
Anoop Saldanha
|
◈ 이 책에서 다루는 내용 ◈
◆ 맞춤형 패커와 컴파일러를 활용해 멀웨어를 효과적으로 분석할 수 있다. ◆ 복잡한 멀웨어를 언패킹하고 주요 구성 요소를 찾아 의도를 파악할 수 있다. ◆ 다양한 정적 및 동적 멀웨어 분석 도구를 사용할 수 있다. ◆ 여러 탐지 엔지니어링 도구를 활용해 멀웨어의 내부 흐름을 변경할 수 있다. ◆ Snort 규칙을 작성하고 Suricata IDS에 규칙을 사용할 수 있다. ◈ 지은이의 말 ◈ 사이버 보안 전문가는 멀웨어에 감염된 조직에서 연락을 받으며 감염을 처리하는 방법과 시스템을 보호하는 방법에 대한 질문을 받는다. 대부분의 이야기가 비슷한 패턴을 보인다. 멀웨어 감염이 발생해 안티 멀웨어 프로그램으로 차단하고 시스템을 격리하고 치료했다. 안티 멀웨어 시그니처를 했지만 다시 감염이 발생해 다른 시스템과 직원에게 영향을 미치고 있다. 추가로 질문하면 몇 가지 중요한 질문에 답하지 못하는 경우가 많다. ● 공격의 진입점을 파악했는지? ● 감염이 얼마나 퍼졌는지 확인했는지? ● 멀웨어 감염의 모든 아티팩트(artifact)(결과물)를 파악했는지? ● 사이버 공격의 배후에 있는 위협 행위자와 목적을 파악했는지? ● 멀웨어 감염으로 인한 피해 사항을 경영진에게 보고했는지? 많은 경우 추가 질문의 답변이 확인되지 않아 분석 과정에서 허점이 생기고 네트워크를 통한 추가 감염이 발생하기도 한다. 공격의 배후와 목적을 파악하지 못하는 것은 실제 피해 사항을 완전히 파악하지 못한다는 것을 의미하며, 경영진은 멀웨어 감염으로 인한 비즈니스와 브랜드의 잠재적 피해에 대비하는 계획을 수립할 수도 있다. 바로 이것이 멀웨어 탐지 및 분석 엔지니어링의 중요성이며, 효과적이며 효율적인 멀웨어 업무 처리가 필요한 이유다. 이 책은 제로데이 이니셔티브와 OpenRCE의 창시자인 페드람 아미니에 의해 ‘괴물!’로 묘사됐다. 실제로 이 책은 포괄적인 내용과 연습 문제로 가득 찬 괴물과 같다. 이 책을 마치면 여러분은 모든 멀웨어에 대처할 수 있을 것이다. ◈ 옮긴이의 말 ◈ 멀웨어 분석과 리버스 엔지니어링은 정보 보안의 핵심 분야로 자리 잡고 있다. 이 두 분야에 대한 깊은 이해와 전문 지식은 사이버 위협에 효과적으로 대응하기 위해 필수적이다. 이 책은 이러한 지식을 습득하고자 하는 독자들에게 귀중한 자원이 될 것이다. 멀웨어는 점점 더 정교해지고 있으며, 이에 대응하기 위해서는 멀웨어의 작동 원리를 정확히 이해하고 분석할 수 있는 능력이 요구된다. 이 책은 멀웨어 분석의 기초부터 고급 기술에 이르기까지 독자들이 필요로 하는 지식과 기술을 체계적으로 제공한다. 리버스 엔지니어링은 소프트웨어의 내부 구조와 작동 원리를 파악하는 과정이다. 이 과정을 통해 분석가들은 소프트웨어의 취약점을 발견하고, 멀웨어의 의도를 분석할 수 있다. 이 책은 이러한 과정을 상세히 설명하며, 실제 사례를 통해 리버스 엔지니어링의 중요성을 강조한다. 사이버 보안 위협은 지속적으로 증가하고 있으며, 이에 대응하기 위한 전문가의 수요도 높아지고 있다. 이 책은 멀웨어 분석과 리버스 엔지니어링에 관심 있는 모든 이에게 꼭 필요한 지식을 제공한다. 독자들은 이 책을 통해 멀웨어 분석의 기본 개념부터 시작해 실제 멀웨어 샘플을 분석하는 고급 기술까지 습득할 수 있을 것이다. 저자들은 멀웨어 분석과 리버스 엔지니어링 분야에서 오랜 경험을 갖고 있다. 그들의 지식과 경험이 페이지마다 녹아 있으며, 독자들에게 실질적인 도움을 줄 것이다. 특히, 다양한 멀웨어 샘플과 실습을 통해 이론적 지식을 실제 상황에 적용하는 방법을 가르친다. 번역서를 출간함으로써 우리는 국내의 정보 보안 전문가들과 이 분야에 관심 있는 모든 이에게 귀중한 자원을 제공하고자 한다. 한국에서 리버스 엔지니어의 부족 현상을 해소하고, 새로운 인재들이 정보 보안 분야에서 활약하는 모습을 보고 싶다는 바람이다. 리버스 엔지니어링 세계에서 활약할 새로운 인재들의 등장을 기대한다. |
|
리버스 엔지니어링(또는 리버싱(reversing))은 매우 흥미로운 주제이며, 나는 항상 이에 매료됐다. 능숙한 리버싱 전문가는 소프트웨어의 취약점을 찾아내고 활용하거나 새로운 멀웨어의 의도를 분석할 수 있다.
리버스 엔지니어링을 시작하고 싶어하는 사람들이 조언을 구할 때 보통 멀웨어 분석부터 시작하라고 추천한다. 멀웨어는 기업용 소프트웨어보다 규모가 작아서 분석하기가 더 쉽다. 코드의 양은 적지만, 멀웨어는 분석가의 작업을 방어하는 다양한 기술을 사용할 수 있다. 이러한 방어 기술을 극복하면 빠르게 기술을 향상시킬 수 있으며, 매일 새로운 멀웨어 샘플을 실습할 수 있다. 요즘 멀웨어 분석 전문가의 필요성이 더욱 커졌다. 인터넷 사용량이 증가함에 따라서 멀웨어도 매년 빠르게 증가하고 있다. 거의 20년 전에 내가 이 업계에 처음 들어왔을 때 매일 수백 개에서 수천 개의 샘플이 새롭게 생겨났다. 최근에는 매일 수백만 개의 새로운 샘플이 생겨나며, 방대한 양의 샘플 분석은 데이터 과학을 필요로 한다. 머신러닝은 방대한 데이터를 자동으로 처리할 수 있지만 수동 분석도 여전히 필수적으로 필요하다. 사이버 보안 위험도는 그 어느 때보다 높아졌다. 2010년에 스턱스넷(Stuxnet)이 처음 발견됐고, 이는 지금까지 본 가장 기술적으로 인상적인 소프트웨어다. 스턱스넷 웜(worm)은 모듈식으로 구성돼 있고, 무려 4개의 제로데이 취약점을 이용해 이란의 핵농축 원심분리기를 공격했다(보고에 따르면 거의 20%를 파괴했다고 한다). 이는 군사와 산업 분야에서 디지털 분야로의 새로운 진출을 보여주는 명확한 신호다. 요즘 큰 예산과 관심이 디지털로 이동하면서 앞으로도 비슷한 충격적인 뉴스를 볼 것으로 예상된다. 저자들은 모든 것을 아우르는 정말 놀라운 작업을 해냈다. 특히 16장은 그 자체로 하나의 책 수준이다. 이렇게 넓은 분야에서 놀라운 길잡이를 만들기 위해 노력하는 2명의 노련한 저자에게 경의를 표한다. 리버스 엔지니어링과 멀웨어 분석에 대해 알아보고자 하는 분들께 드리고 싶은 또 다른 조언은 진정으로 열정을 갖고 시간을 투자할 의지가 있어야 한다는 것이다. 이 책의 내용을 숙지하면 멀웨어에 대한 전 세계적인 대응에 동참할 준비가 될 것이다. - 페드람 아미니(Pedram Amini) (인퀘스트(InQuest) CTO이자 OpenRCE.org 및 제로데이 이니셔티브(Zero Day Initiative)의 설립자) |