표제지
제출문
요약문
SUMMARY
목차
제1장 서론 20
제1절 연구의 목적 및 필요성 20
제2절 연구 내용 및 연구 방법 22
제2장 악성코드의 개요 28
제1절 악성코드의 정의 28
제2절 악성코드의 감염 경로 31
제3절 악성코드의 분류 32
제4절 악성코드의 명명법 37
제5절 악성코드가 사용/변경하는 파일, 레지스트리 39
제3장 분석 방해 기술 42
제1절 실행압축 기법 42
제2절 디버거 탐지 기법 43
제3절 코드 혼란(Obfuscation) 기법 44
제4절 가상머신 탐지 기법 46
제4장 커널 기반 루트킷 50
제1절 개요 50
제2절 특징 51
제3절 동작 방식 52
제5장 기존의 악성코드 자동 분류·분석 방법 56
제1절 정적 코드 분석 56
제2절 동적 행위 분석 59
제6장 Netbot의 특징 분석 62
제1절 개요 62
제2절 Netbot의 공격 기능 63
제3절 Netbot의 행위 분석 환경 구성 67
제4절 Netbot의 특징 69
제5절 Netbot의 공격 트래픽 73
제6절 Netbot의 Code Injection 77
제7장 악성코드 유형에 따른 자동화 분석 방법 86
제1절 자동화 분석 방법 86
제2절 특징 분석 환경 88
제3절 특징 도출 단계 96
제4절 상호작용 단계 117
제5절 자동화 분석 단계 120
제6절 DB의 구성 123
제8장 연구 결과 및 향후 연구 진행 방향 128
제1절 연구 결과 요약 128
제2절 향후 연구 방향 130
부록 132
부록 1. 레지스트리 132
부록 2. 운영체제/시스템에서 사용되는 프로세스 137
부록 3. 악성코드가 사용/변경하는 파일, 레지스트리 139
부록 4. Netbot의 Import Function 비교 159
부록 5. Python 스크립트 163
판권기 172
[표 2-1] 안철수 연구소의 악성코드 분류 방법 33
[표 2-2] 하우리의 악성코드 분류 방법 34
[표 2-3] Kaspersky의 악성코드 분류 방법 35
[표 2-4] 공급업체별 악성코드 명명법 37
[표 2-5] 공급업체별 악성코드 명명 비교 38
[표 3-1] 실행압축 도구 43
[표 3-2] 코드 혼란(Obfuscation) 기법 45
[표 3-3] 가상머신(VMWare) 감지 코드 48
[표 4-1] 루트킷이 가로채는 System Function 51
[표 6-1] Netbot의 공격 기능 63
[표 6-2] Netbot의 분석 환경 구성 68
[표 6-3] Netbot Agent 감염 시의 파일 변경 70
[표 6-4] Netbot Agent 감염 시의 레지스트리 변경(BITS) 71
[표 6-5] Netbot Agent 감염 시의 레지스트리 변경(SVCHOST) 72
[표 6-6] 포트 번호 범위 사용의 패턴 76
[표 6-7] 레지스트리 키 값 변경 82
[표 7-1] 레지스트리 변경 모니터링 90
[표 7-2] 파일 변경 모니터링 91
[표 7-3] 파일 변경 모니터링에 이용 가능한 API 함수 101
[표 7-4] 레지스트리 변경 모니터링에 이용 가능한 API 함수 101
[표 7-5] 프로세스 변경 모니터링에 이용 가능한 API 함수 102
[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 102
[표 7-7] Netbot 에이전트의 Import DLL 105
[표 7-8] USER32.dll의 함수 106
[표 7-9] ADVAPI32.dll의 함수 106
[표 7-10] AVICAP32.dll의 함수 107
[표 7-11] WS2_32.dll의 함수 107
[표 7-12] 넷봇의 코드 유사도 비교 112
[표 7-13] 넷봇과 다른 프로그램의 유사도 비교 113
[표 7-14] 분석 결과 리포트의 예 122
(그림 1-1) 연도별 악성코드의 증가 - 국내 21
(그림 2-1) 악성코드 판별 트리 36
(그림 3-1) 가상머신 환경 46
(그림 3-2) 가상화 하드웨어 47
(그림 4-1) SSDT Hooking 개념도 53
(그림 4-2) SSDT Hooking 53
(그림 5-1) 제안한 방법의 순서도 58
(그림 5-2) 제안한 방법의 5단계 59
(그림 6-1) Netbot의 동작 개념도 67
(그림 6-2) 좀비와 중계 사이트 사이의 통신 73
(그림 6-3) C&C에 대한 좀비의 연결 시도 74
(그림 6-4) C&C와 좀비의 연결 설정 및 정보 전송 74
(그림 6-5) 좀비에 대한 공격 명령 전송 75
(그림 6-6) 공격 패킷 전송 75
(그림 6-7) NetNtEx.dll 파일 확인 불가능 78
(그림 6-8) NetNtEx.dll 파일 존재 확인 78
(그림 6-9) PE Explorer를 통해 분석한 NetNtEx.DLL 파일 79
(그림 6-10) Netbot의 Agent 생성 80
(그림 6-11) 감염 전후의 레지스트리 비교 81
(그림 6-12) 레지스트리 값에 명시된 DLL의 위치 81
(그림 6-13) 감염 후 서비스 목록 82
(그림 6-14) NetNtEx.dll 삽입 확인 83
(그림 7-1) 악성코드 자동화 분석 방법의 개념도 86
(그림 7-2) 악성코드 특징 도출 단계(수동) 88
(그림 7-3) 레지스트리 변경 모니터링 89
(그림 7-4) 악성코드 샘플 90
(그림 7-5) 악성코드 샘플 93
(그림 7-6) 프로세스 변경 모니터링 93
(그림 7-7) 네트워크 모니터링 94
(그림 7-8) 함수에 대한 Bloom Filtering 95
(그림 7-9) 특징 도출 프로세스(자동) 96
(그림 7-10) 행위 기반 분석 97
(그림 7-11) API 후킹 레벨 - 커널 및 사용자 레벨 98
(그림 7-12) 악성코드의 API 구분 103
(그림 7-13) 코드 기반 분석 105
(그림 7-14) Bloom Filter의 동작 108
(그림 7-15) Bloom Filter의 동작(탐색) 109
(그림 7-16) Bloom Filtering의 예1 110
(그림 7-17) Bloom Filtering의 예2 111
(그림 7-18) Netbot Agent(v4.7) 114
(그림 7-19) Netbot Agent(v5.1) 115
(그림 7-20) Netbot Agent(v5.5) 115
(그림 7-21) Notepad 116
(그림 7-22) NateOn 원격제어 116
(그림 7-23) 상호작용 단계 117
(그림 7-24) 화이트리스트 필터 119
(그림 7-25) 자동화 분석 단계 120
(그림 7-26) DB의 구성 123