172
최종연구보고서 KISA-WP-2009-0020 악성코드 유형에 따른 자동화 분석 방법론 연구 Automated Malware Analysis Mechanism 수탁기관: 한양대학교 산학협력단 2009. 06.

Automated Malware Analysis Mechanism

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Automated Malware Analysis Mechanism

최종연구보고서 KISA-WP-2009-0020

악성코드 유형에 따른 자동화 분석

방법론 연구Automated Malware Analysis Mechanism

수탁기 한양 학교 산학 력단

2009 06

- 1 -

제 출 문

한국정보보호진흥원 원장 귀하

본 보고서를 ldquo악성코드 유형에 따른 자동화 분석 방법론 연구rdquo

의 최종연구보고서로 제출합니다

2009 년 6 월 15 일

수탁 기 한양 학교 산학 력단

연구책임자 교 수 임 을 규 (한양 학교 정보통신 학)

참여연구원 연 구 원 강 부 (한양 학교 정보통신 학)

연 구 원 한 경 수 (한양 학교 정보통신 학)

연 구 원 한 동 석 (한양 학교 정보통신 학)

연 구 원 임 (한양 학교 정보통신 학)

연 구 원 유 성 훈 (한양 학교 정보통신 학)

연 구 원 김 인 경 (한양 학교 정보통신 학)

연 구 원 김 혜 선 (한양 학교 정보통신 학)

- 3 -

요 약 문

1 제목 악성코드 유형에 따른 자동화 분석 방법론 연구

2 연구개발의 목 요성

1) 연구개발의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

- 4 -

2) 연구개발의 요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

악성코드 수와 종류의 지속 인 증가는 소 트웨어 개발 기술

발 에도 불구하고 시스템의 취약 을 찾는 기술이 차 정교해지고

다양해지고 있으며 DDoS 공격 도구인 넷 (Netbot) 외에도 각종

악성코드의 자동 제작 도구 기술의 보편화로 인해 손쉽게 신변종

악성코드를 작성하는 것이 가능하기 때문이라고 할 수 있다 그러나

악성코드에 한 응 방법은 아직까지는 부분 수동으로 악성코드를

탐지분석하여 응하기 때문에 악성코드 유포 속도에 크게 뒤처지고

있어 악성코드에 의한 직 인 피해 2차 인 피해는 속도로

확산되고 있는 실정이다

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

- 5 -

3 연구개발의 내용 범

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

- 6 -

4 연구결과

재까지의 연구 결과 내용은 다음과 같다

o 간연구보고서

간연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론

연구를 한 선행 단계로써 악성코드의 정의 분류 방법과 유형별

특징을 분석하고 기존의 악성코드 자동 분류 방법에 하여

조사하 으며 DDoS 공격 도구인 넷 (Netbot)의 동작방식과

악성행 의 특징을 분석하 다 한 악성코드 에서 트로이목마가

사용하거나 변경하는 일 지스트리를 조사하여 부록에 첨부하 다

o 최종연구보고서

최종연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동화 분석 단계를

포함한다 특징 도출 단계에 해서는 넷 의 PE 일을 분석함으로써

넷 이 사용하는 API를 분류하 고 Bloom Filter를 이용하여 함수

사용에 따른 Bit Array를 추출하 다 상호작용 단계에서는 도출된

특징을 DB에 장하기 해 분석가와의 상호작용을 제시하 다 한

자동화 분석 단계에서는 Bloom Filter의 결과로 추출한 Bit Array를

이용하여 넷 간의 코드 유사도 넷 과 다른 로그램과의 코드

유사도를 계산하 다

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 2: Automated Malware Analysis Mechanism

- 1 -

제 출 문

한국정보보호진흥원 원장 귀하

본 보고서를 ldquo악성코드 유형에 따른 자동화 분석 방법론 연구rdquo

의 최종연구보고서로 제출합니다

2009 년 6 월 15 일

수탁 기 한양 학교 산학 력단

연구책임자 교 수 임 을 규 (한양 학교 정보통신 학)

참여연구원 연 구 원 강 부 (한양 학교 정보통신 학)

연 구 원 한 경 수 (한양 학교 정보통신 학)

연 구 원 한 동 석 (한양 학교 정보통신 학)

연 구 원 임 (한양 학교 정보통신 학)

연 구 원 유 성 훈 (한양 학교 정보통신 학)

연 구 원 김 인 경 (한양 학교 정보통신 학)

연 구 원 김 혜 선 (한양 학교 정보통신 학)

- 3 -

요 약 문

1 제목 악성코드 유형에 따른 자동화 분석 방법론 연구

2 연구개발의 목 요성

1) 연구개발의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

- 4 -

2) 연구개발의 요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

악성코드 수와 종류의 지속 인 증가는 소 트웨어 개발 기술

발 에도 불구하고 시스템의 취약 을 찾는 기술이 차 정교해지고

다양해지고 있으며 DDoS 공격 도구인 넷 (Netbot) 외에도 각종

악성코드의 자동 제작 도구 기술의 보편화로 인해 손쉽게 신변종

악성코드를 작성하는 것이 가능하기 때문이라고 할 수 있다 그러나

악성코드에 한 응 방법은 아직까지는 부분 수동으로 악성코드를

탐지분석하여 응하기 때문에 악성코드 유포 속도에 크게 뒤처지고

있어 악성코드에 의한 직 인 피해 2차 인 피해는 속도로

확산되고 있는 실정이다

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

- 5 -

3 연구개발의 내용 범

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

- 6 -

4 연구결과

재까지의 연구 결과 내용은 다음과 같다

o 간연구보고서

간연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론

연구를 한 선행 단계로써 악성코드의 정의 분류 방법과 유형별

특징을 분석하고 기존의 악성코드 자동 분류 방법에 하여

조사하 으며 DDoS 공격 도구인 넷 (Netbot)의 동작방식과

악성행 의 특징을 분석하 다 한 악성코드 에서 트로이목마가

사용하거나 변경하는 일 지스트리를 조사하여 부록에 첨부하 다

o 최종연구보고서

최종연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동화 분석 단계를

포함한다 특징 도출 단계에 해서는 넷 의 PE 일을 분석함으로써

넷 이 사용하는 API를 분류하 고 Bloom Filter를 이용하여 함수

사용에 따른 Bit Array를 추출하 다 상호작용 단계에서는 도출된

특징을 DB에 장하기 해 분석가와의 상호작용을 제시하 다 한

자동화 분석 단계에서는 Bloom Filter의 결과로 추출한 Bit Array를

이용하여 넷 간의 코드 유사도 넷 과 다른 로그램과의 코드

유사도를 계산하 다

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 3: Automated Malware Analysis Mechanism

- 3 -

요 약 문

1 제목 악성코드 유형에 따른 자동화 분석 방법론 연구

2 연구개발의 목 요성

1) 연구개발의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

- 4 -

2) 연구개발의 요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

악성코드 수와 종류의 지속 인 증가는 소 트웨어 개발 기술

발 에도 불구하고 시스템의 취약 을 찾는 기술이 차 정교해지고

다양해지고 있으며 DDoS 공격 도구인 넷 (Netbot) 외에도 각종

악성코드의 자동 제작 도구 기술의 보편화로 인해 손쉽게 신변종

악성코드를 작성하는 것이 가능하기 때문이라고 할 수 있다 그러나

악성코드에 한 응 방법은 아직까지는 부분 수동으로 악성코드를

탐지분석하여 응하기 때문에 악성코드 유포 속도에 크게 뒤처지고

있어 악성코드에 의한 직 인 피해 2차 인 피해는 속도로

확산되고 있는 실정이다

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

- 5 -

3 연구개발의 내용 범

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

- 6 -

4 연구결과

재까지의 연구 결과 내용은 다음과 같다

o 간연구보고서

간연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론

연구를 한 선행 단계로써 악성코드의 정의 분류 방법과 유형별

특징을 분석하고 기존의 악성코드 자동 분류 방법에 하여

조사하 으며 DDoS 공격 도구인 넷 (Netbot)의 동작방식과

악성행 의 특징을 분석하 다 한 악성코드 에서 트로이목마가

사용하거나 변경하는 일 지스트리를 조사하여 부록에 첨부하 다

o 최종연구보고서

최종연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동화 분석 단계를

포함한다 특징 도출 단계에 해서는 넷 의 PE 일을 분석함으로써

넷 이 사용하는 API를 분류하 고 Bloom Filter를 이용하여 함수

사용에 따른 Bit Array를 추출하 다 상호작용 단계에서는 도출된

특징을 DB에 장하기 해 분석가와의 상호작용을 제시하 다 한

자동화 분석 단계에서는 Bloom Filter의 결과로 추출한 Bit Array를

이용하여 넷 간의 코드 유사도 넷 과 다른 로그램과의 코드

유사도를 계산하 다

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 4: Automated Malware Analysis Mechanism

- 4 -

2) 연구개발의 요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

악성코드 수와 종류의 지속 인 증가는 소 트웨어 개발 기술

발 에도 불구하고 시스템의 취약 을 찾는 기술이 차 정교해지고

다양해지고 있으며 DDoS 공격 도구인 넷 (Netbot) 외에도 각종

악성코드의 자동 제작 도구 기술의 보편화로 인해 손쉽게 신변종

악성코드를 작성하는 것이 가능하기 때문이라고 할 수 있다 그러나

악성코드에 한 응 방법은 아직까지는 부분 수동으로 악성코드를

탐지분석하여 응하기 때문에 악성코드 유포 속도에 크게 뒤처지고

있어 악성코드에 의한 직 인 피해 2차 인 피해는 속도로

확산되고 있는 실정이다

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

- 5 -

3 연구개발의 내용 범

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

- 6 -

4 연구결과

재까지의 연구 결과 내용은 다음과 같다

o 간연구보고서

간연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론

연구를 한 선행 단계로써 악성코드의 정의 분류 방법과 유형별

특징을 분석하고 기존의 악성코드 자동 분류 방법에 하여

조사하 으며 DDoS 공격 도구인 넷 (Netbot)의 동작방식과

악성행 의 특징을 분석하 다 한 악성코드 에서 트로이목마가

사용하거나 변경하는 일 지스트리를 조사하여 부록에 첨부하 다

o 최종연구보고서

최종연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동화 분석 단계를

포함한다 특징 도출 단계에 해서는 넷 의 PE 일을 분석함으로써

넷 이 사용하는 API를 분류하 고 Bloom Filter를 이용하여 함수

사용에 따른 Bit Array를 추출하 다 상호작용 단계에서는 도출된

특징을 DB에 장하기 해 분석가와의 상호작용을 제시하 다 한

자동화 분석 단계에서는 Bloom Filter의 결과로 추출한 Bit Array를

이용하여 넷 간의 코드 유사도 넷 과 다른 로그램과의 코드

유사도를 계산하 다

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 5: Automated Malware Analysis Mechanism

- 5 -

3 연구개발의 내용 범

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

- 6 -

4 연구결과

재까지의 연구 결과 내용은 다음과 같다

o 간연구보고서

간연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론

연구를 한 선행 단계로써 악성코드의 정의 분류 방법과 유형별

특징을 분석하고 기존의 악성코드 자동 분류 방법에 하여

조사하 으며 DDoS 공격 도구인 넷 (Netbot)의 동작방식과

악성행 의 특징을 분석하 다 한 악성코드 에서 트로이목마가

사용하거나 변경하는 일 지스트리를 조사하여 부록에 첨부하 다

o 최종연구보고서

최종연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동화 분석 단계를

포함한다 특징 도출 단계에 해서는 넷 의 PE 일을 분석함으로써

넷 이 사용하는 API를 분류하 고 Bloom Filter를 이용하여 함수

사용에 따른 Bit Array를 추출하 다 상호작용 단계에서는 도출된

특징을 DB에 장하기 해 분석가와의 상호작용을 제시하 다 한

자동화 분석 단계에서는 Bloom Filter의 결과로 추출한 Bit Array를

이용하여 넷 간의 코드 유사도 넷 과 다른 로그램과의 코드

유사도를 계산하 다

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 6: Automated Malware Analysis Mechanism

- 6 -

4 연구결과

재까지의 연구 결과 내용은 다음과 같다

o 간연구보고서

간연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론

연구를 한 선행 단계로써 악성코드의 정의 분류 방법과 유형별

특징을 분석하고 기존의 악성코드 자동 분류 방법에 하여

조사하 으며 DDoS 공격 도구인 넷 (Netbot)의 동작방식과

악성행 의 특징을 분석하 다 한 악성코드 에서 트로이목마가

사용하거나 변경하는 일 지스트리를 조사하여 부록에 첨부하 다

o 최종연구보고서

최종연구보고서에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동화 분석 단계를

포함한다 특징 도출 단계에 해서는 넷 의 PE 일을 분석함으로써

넷 이 사용하는 API를 분류하 고 Bloom Filter를 이용하여 함수

사용에 따른 Bit Array를 추출하 다 상호작용 단계에서는 도출된

특징을 DB에 장하기 해 분석가와의 상호작용을 제시하 다 한

자동화 분석 단계에서는 Bloom Filter의 결과로 추출한 Bit Array를

이용하여 넷 간의 코드 유사도 넷 과 다른 로그램과의 코드

유사도를 계산하 다

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 7: Automated Malware Analysis Mechanism

- 7 -

5 활용에 한 건의

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 다음과

같이 활용될 수 있다

o 자동 분석을 통해 넷 이나 다른 악성코드에 하여 일치할 가능성

변종 악성코드의 가능성에 한 확인

o 실제 악성코드 자동 분석을 통해 신속한 응 피해 확산 최소화

6 기 효과

본 연구과제에서 도출되는 악성코드의 자동화 분석 방법론은 격히

증가하고 있는 악성코드에 하여 보다 효율 인 분석 방법을 제공할

것이다 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드로 인한 사회 경제

효과를 완화시킬 수 있을 것으로 기 된다

아울러 본 연구과제를 통하여 배출되는 인력들은 향후 국내 정보보호

업계에 진출하여 정보보호 산업 발 에 크게 기여할 수 있을 것으로

기 된다

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 8: Automated Malware Analysis Mechanism

- 8 -

SUMMARY

1 Title Automated Malware Analysis Mechanism

2 Purpose and importance of the study

1) Purpose

Nowadays the attackers are trying to find new vulnerabilities of

applications and making variance of malwares using automated tools

which can make a malware Therefore the number of malwares is

increasing day after day the number of compromised hosts is also

increasing So that for mitigating infection rate rapid malware

analysis method is needed

The existing methods for collecting and analyzing malware are

progressed manually Therefore they cannot rapid response to

malware outbreaks Also Users are into confusion because the name

of malwares which produced by anti-virus and anti-spywares are

differ from each other on the same malware

In the research we will propose a method which cans rapid

response against newly malwares using automated malware analysis

mechanism The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot mechanism

The mechanism extracts features and malware behaviors

automatically Even this system is built based on NetBot which is

one of the most harmful malwares our research goal is extending

- 9 -

the system to apply to other malwares too

2) Importance

The well constructed infrastructure of wide open communication

network and popularization of computer make user share

information and do e-commercial on the Internet such as internet

banking e-bay etc But as these growths The information network

threats(Information forgery Information leakage and Spreading

malwares) also are increased From those increase The number of

the computer users who are suffered from Distributed Denial of

Service(DDoS) attack sending spam mails hacking servers and

personal information leakage are increasing These attacks are

occurred from a computer which is compromised by malware A

malware infects a vulnerable computer to attack other computers

with hiding attackers identity Nowadays the compromised

computers cooperate with each other for attacking computers such as

DDoS sending spam etc This cooperated system is called Botnet -

a network of computers with compromised computer

Even the software development technology has been evolving the

number of malwares and its types also are increasing because the

exploit code is automatically made by tools But the response

methods are still progressed manually Therefore the response

methods cannot reach propagation speed of malwares

The automated malware analysis mechanism which we propose

will be applied to analyze malware so that the analyze process will

be efficient It can reduce the time of analyzing malware we can

minimize the damage from the malware

- 10 -

3 Contents and scope of the study

In this research We will perform following acts for making

automated malware analysis mechanism

o Analyze definition and classification of malware extracting

features of malware by its type

- Survey of definition of malware and classification method

- Analyze the features of malware by its type

- Survey and Analyze the exisiting automated malware

classification method

o Analyze features and behaviors of Netbot

- Analyze attack patterns and behaviors of Netbot

- Extract the features of Netbot using statistic analysis

o Survey Anti-analysis technique(anti-debugging and analysis

bypassing)

- Research anti-debugging technique

- Survey virtual machine detecting and analysis bypassing

techniques

o Analyze classification of rootkit and kernel malware

- Survey classification and mechanism of rookit

- Derive efficient rootkit analysis method

o Derive automated malware analysis mechanism

- Analyse files and registries which are used by malware

- Monitor storage medium

- Analyse internet domain which are used by malware

- Analyse code injection

- 11 -

- Automate the malware analysis process

4 Results of the study

The following are the results of this project so far

o Mid-term report

In midterm report we carried out a pre-stage for searching

automated malware analysis mechanism The stage is consisted of

defining concepts and classes of malware surveying the existing

automated analysis systems and extracting behaviors and features of

Netbot Also we researched modified files and registries which are

used by Torjan Horse one of the malware

o Final report

In final report we proposed automated malware analysis

methodology It includes the feature extraction phase analyst

interaction phase automated analysis phase In feature extraction

phase we analized Netbots PE file and classified API which are

used in Netbot In addition we extracted the Bit Array by using

Bloom Filter and calculated code similarity between Netbot and

other programs using the result of Bloom Filtering

5 Suggestion about practical use of the project

The result of the research will be applicable to below factors

o Derive similarity and variance of malware

o Rapid response to outbreak malware and Mitigate spreading of

- 12 -

malwar

6 Expected Effects

The automated malware analysis mechanism which is proposed in

this research will offer efficient malware analyzing method The time

which spend to analyze malwares will be decreased Also the

unnecessary malware analyzing will be removed Therefore we

expect that the damage of social economic from the malware will be

mitigated

Human resources who work in this project will contribute the

information security industry of Korea

- 13 -

목 차

제 1 장 서론 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 1 연구의 목 필요성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot19

제 2 연구 내용 연구 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot21

제 2 장 악성코드의 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 1 악성코드의 정의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot27

제 2 악성코드의 감염 경로 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot30

제 3 악성코드의 분류 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot31

제 4 악성코드의 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

제 5 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot38

제 3 장 분석 방해 기술 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 1 실행압축 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot41

제 2 디버거 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

제 3 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot43

제 4 가상머신 탐지 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

제 4 장 커 기반 루트킷 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot49

제 2 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

제 3 동작 방식 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot51

제 5 장 기존의 악성코드 자동 분류분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 1 정 코드 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot55

제 2 동 행 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

- 14 -

제 6 장 Netbot의 특징 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 1 개요 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot61

제 2 Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

제 3 Netbot의 행 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

제 4 Netbot의 특징 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot68

제 5 Netbot의 공격 트래픽 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

제 6 Netbot의 Code Injection middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot76

제 7 장 악성코드 유형에 따른 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 1 자동화 분석 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

제 2 특징 분석 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

제 3 특징 도출 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

제 4 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

제 5 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

제 6 DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

제 8 장 연구 결과 향후 연구 진행 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 1 연구 결과 요약 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot127

제 2 향후 연구 방향 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot129

부록

부록 1 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot131

부록 2 운 체제시스템에서 사용되는 로세스 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot136

부록 3 악성코드가 사용변경하는 일 지스트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot138

부록 4 Netbot의 Import Function 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot158

부록 5 Python 스크립트 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot162

- 15 -

그림 목차

(그림 1-1) 연도별 악성코드의 증가 - 국내 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot20

(그림 2-1) 악성코드 별 트리 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot35

(그림 3-1) 가상머신 환경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot45

(그림 3-2) 가상화 하드웨어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot46

(그림 4-1) SSDT Hooking 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 4-2) SSDT Hooking middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot52

(그림 5-1) 제안한 방법의 순서도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot57

(그림 5-2) 제안한 방법의 5단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot58

(그림 6-1) Netbot의 동작 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot66

(그림 6-2) 좀비와 계 사이트 사이의 통신 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot72

(그림 6-3) CampC에 한 좀비의 연결 시도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-4) CampC와 좀비의 연결 설정 정보 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot73

(그림 6-5) 좀비에 한 공격 명령 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-6) 공격 패킷 송 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot74

(그림 6-7) NetNtExdll 일 확인 불가능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-8) NetNtExdll 일 존재 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot77

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot78

(그림 6-10) Netbot의 Agent 생성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot79

(그림 6-11) 감염 후의 지스트리 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-12) 지스트리 값에 명시된 DLL의 치 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot80

(그림 6-13) 감염 후 서비스 목록 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

(그림 6-14) NetNtExdll 삽입 확인 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot82

(그림 7-1) 악성코드 자동화 분석 방법의 개념도 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot85

(그림 7-2) 악성코드 특징 도출 단계(수동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot87

(그림 7-3) 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot88

(그림 7-4) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

- 16 -

(그림 7-5) 악성코드 샘 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-6) 로세스 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot92

(그림 7-7) 네트워크 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot93

(그림 7-8) 함수에 한 Bloom Filtering middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot94

(그림 7-9) 특징 도출 로세스(자동) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot95

(그림 7-10) 행 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot96

(그림 7-11) API 후킹 벨 - 커 사용자 벨 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot97

(그림 7-12) 악성코드의 API 구분 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot102

(그림 7-13) 코드 기반 분석 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

(그림 7-14) Bloom Filter의 동작 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot107

(그림 7-15) Bloom Filter의 동작(탐색) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot108

(그림 7-16) Bloom Filtering의 1 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot109

(그림 7-17) Bloom Filtering의 2 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot110

(그림 7-18) Netbot Agent(v47) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot113

(그림 7-19) Netbot Agent(v51) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-20) Netbot Agent(v55) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot114

(그림 7-21) Notepad middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-22) NateOn 원격제어 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot115

(그림 7-23) 상호작용 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot116

(그림 7-24) 화이트리스트 필터 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot118

(그림 7-25) 자동화 분석 단계 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot119

(그림 7-26) DB의 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot122

- 17 -

표 목차

[표 2-1] 안철수 연구소의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot32

[표 2-2] 하우리의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot33

[표 2-3] Kaspersky의 악성코드 분류 방법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot34

[표 2-4] 공 업체별 악성코드 명명법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot36

[표 2-5] 공 업체별 악성코드 명명 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot37

[표 3-1] 실행압축 도구 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot42

[표 3-2] 코드 혼란(Obfuscation) 기법 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot44

[표 3-3] 가상머신(VMWare) 감지 코드 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot47

[표 4-1] 루트킷이 가로채는 System Function middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot50

[표 6-1] Netbot의 공격 기능 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot62

[표 6-2] Netbot의 분석 환경 구성 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot67

[표 6-3] Netbot Agent 감염 시의 일 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot69

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot70

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST) middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot71

[표 6-6] 포트 번호 범 사용의 패턴 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot75

[표 6-7] 지스트리 키 값 변경 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot81

[표 7-1] 지스트리 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot89

[표 7-2] 일 변경 모니터링 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot90

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot100

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot101

[표 7-7] Netbot 에이 트의 Import DLL middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot104

[표 7-8] USER32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-9] ADVAPI32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot105

[표 7-10] AVICAP32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

- 18 -

[표 7-11] WS2_32dll의 함수 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot106

[표 7-12] 넷 의 코드 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot111

[표 7-13] 넷 과 다른 로그램의 유사도 비교 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot112

[표 7-14] 분석 결과 리포트의 middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot121

- 19 -

제 1 장 서론

제 1 연구의 목 필요성

1 연구의 목

매일 새로이 발견되는 악성코드의 수와 종류는 지속 으로 증가하고

있는데 그 이유는 인 이득을 목 으로 공격자가 취약 을

계속해서 찾아내고 기존의 악성코드와 자동 제작 도구를 이용하여

신변종을 만들어내기 때문이다 한 악성코드의 감염에 의한 사용자

피해 역시 속도로 증가하고 있어서 악성코드에 한 더욱 신속한

응이 실히 요구되고 있다

기존의 응 기술들은 악성코드를 수집하고 분석하는 과정에

수동 인 작업을 필요로 하는 부분이 많기 때문에 신속한 응을

어렵게 하고 있다 한 안티바이러스 안티스 이웨어 등의 제품

공 자들마다 진단을 다르게 하여 사용자들이 혼란을 겪기도 한다

본 연구 과제에서는 좀 더 신속하게 응할 수 있도록

넷 (Netbot)의 악성행 특징을 분석하여 자동화 분석 방법을

제시하고 웜 바이러스 트로이목마 애드웨어 등 각각의 악성코드별

특징 분석을 확장 용하여 악성코드 유형에 따른 효과 인 자동화

분석 방법에 한 연구를 목표로 한다

2 연구의 필요성

최근 컴퓨터 인터넷의 보 이 크게 확산됨에 따라 범 한 정보

통신망 구축이 가능해졌으며 각종 정보 공유 자상거래 등이

가능하게 되었다 그러나 이와 더불어 정보 조 변조 정보 유출

웜이나 바이러스 등과 같이 정보 네트워크에서의 보안 침해

부작용도 꾸 히 증가하고 있다 그 에서도 분산서비스거부(DDoS)

- 20 -

공격 스팸 발송 해킹 개인정보 유출 등으로 인한 사용자들의 피해가

증하고 있다 이러한 공격들은 부분 사용자 컴퓨터에 감염된

악성코드에 의해 이루어진다 악성코드는 보안이 허술한 일반 사용자

컴퓨터에 침투하여 공격자를 노출시키지 않고 다른 공격들을 수행하는

간 노드 역할을 한다 최근에는 이러한 악성코드에 감염된

컴퓨터들이 거 한 넷(Botnet - 악성코드에 감염된 여러 컴퓨터들이

연결된 네트워크)을 형성하여 더 범 한 사이버 범죄에 악용되고

있다

(그림 1-1) 연도별 악성코드의 증가 - 국내

그림 1-1은 국내에서 보고된 연도별 웜바이러스 등의 악성코드

수를 나타낸 것이다 악성코드 수와 종류의 지속 인 증가는

소 트웨어 개발 기술 발 에도 불구하고 시스템의 취약 을 찾는

기술이 차 정교해지고 다양해지고 있으며 DDoS 공격 도구인 넷

(Netbot) 외에도 각종 악성코드의 자동 제작 도구 기술의 보편화로

인해 손쉽게 신변종 악성코드를 작성하는 것이 가능하기 때문이라고

할 수 있다 그러나 악성코드에 한 응 방법은 아직까지는 부분

수동으로 악성코드를 탐지분석하여 응하기 때문에 악성코드 유포

속도에 크게 뒤처지고 있어 악성코드에 의한 직 인 피해 2차 인

피해는 속도로 확산되고 있는 실정이다

- 21 -

따라서 본 연구를 통해서 개발되는 악성코드의 자동화 분석 방법은

다양한 악성코드에 용되어 보다 효율 인 분석이 이루어질 수

있으며 이를 통해 신속하게 응함으로써 악성코드에 따른 피해

확산을 최소화시킬 수 있을 것으로 단된다

제 2 연구 내용 연구 방법

1 연구 내용

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법을

마련하기 하여 다음과 같은 연구 내용을 수행한다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 악

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 악성코드의 자동화 분석 방법론 도출

- 22 -

- 악성코드가 사용하거나 변경하는 일 지스트리 분석

- 장 매체 사용의 모니터링

- 악성코드의 도메인 속 분석

- 코드 인젝션 분석

- 악성코드 분석 로세스에 한 자동화

2 연구 방법

o 악성코드의 정의 분류 방법 유형별 특징 분석

악성코드 종류에 한 정확한 정의의 부재는 새로운 악성코드가

발견되었을 때 해당 악성코드의 명명에 혼란을 야기한다 한

악성코드 탐지 치료 로그램이나 서비스를 제공하는 각

공 자들마다 악성코드를 분류하는 기 과 명명 기 이 다르기

때문에 같은 악성코드에 한 진단명의 차이를 래하고 있다 이로

인해 공 자들 사이의 정보 공유를 방해하여 신속한 응을

방해하게 된다 증하는 악성코드의 변종을 분류하고 불필요한

분석을 이기 하여 자동화 분석 방법에 한 연구가 시 하다

이를 한 선행 단계로써 다음의 연구 내용을 수행한다

- 악성코드의 유형별 정의와 분류 방법 조사 웜 바이러스

트로이목마 애드웨어 등 각 악성코드의 종류별 정의와 일반 인

분류 방법을 조사한다

- 악성코드의 유형별 특징 분석 각 악성코드의 유형별 악성행

방법에 한 특징들을 분석한다

- 기존의 악성코드 자동 분류 방법 조사 분석 기존의 악성코드

자동 분류에 한 학술연구 기술을 조사하고 그 한계 을

악하여 보완 방법을 모색한다

o 넷 의 악성행 특징 분석

넷 (Netbot)은 최근 국내에서 발생한 주요 DDoS 공격에

사용되었던 도구이다 한 넷 은 악성코드를 하여 취약한

컴퓨터들을 감염시켜서 좀비로 만들고 수많은 좀비들이 네트워크로

- 23 -

연결되어 공격자가 CampC(Command and Control) 서버를 통해 이를

조종할 수 있는 넷(Botnet)의 한 종류이다 악성코드의 자동 분석

방법을 연구하기 해 넷 에 하여 다음의 사항들을 수행한다

- 넷 을 이용한 공격 악성행 분석 넷 을 이용한 공격

시나리오를 작성하고 VMware와 같은 가상머신과 실제 컴퓨터

등을 이용하여 공격을 수행한다 이때 일 지스트리

로세스 트래픽 등을 모니터링하여 넷 의 악성행 를

분석한다

- 정 분석을 통한 넷 의 특징 악 넷 의 행 분석을 통하여

발견할 수 없는 특징들에 해서는 IDA Pro와 같은 도구를

사용하여 정 분석을 수행한다

o 분석 방해 기술(안티디버깅 분석 회피 방법) 조사

악성코드 제작자들은 분석을 방해하기 하여 다양한 방법을

사용한다 최근의 공통 인 방법 의 하나는 다형성 용을 통한

다양한 변종의 생성이다 이는 부분 도우즈 랫폼에서

이루어지며 그 방법은 실행압축 기법 암호화 기법 명령어 치환

기법이 있다 다형성 방법 외에도 Windows API를 이용하여

로세스의 디버깅 여부를 단하는 방법 디버깅 시 에서 CPU의

특성을 이용한 하드웨어 디버깅 탐지 방법 특정 디버거의 버그를

이용하여 디버깅을 강제로 종료하는 방법 로그램에 아무런

향을 미치지 않는 코드를 삽입하여 분석자의 분석을 방해하는

방법 등이 있다 이러한 악성코드의 분석을 방해하도록 용된

기술들에 하여 다음의 사항들을 수행한다

- 안티디버깅 기술의 유형 동작방식 조사 악성코드의 분석을

방해하는 안티디버깅 기술의 유형과 동작방식을 조사한다

바이 리 형태의 악성코드에 한 정 분석을 하여 IDA Pro와

같은 디스어셈블러 도구를 이용하여 악성코드를 어셈블리어

로그램으로 변환하고 이를 동 분석 결과와 종합한다

- 가상머신 탐지 기술 조사 악성코드 분석 환경으로 사용되는

가상머신을 악성코드가 탐지해서 악성행 를 수행하지 않도록

- 24 -

하는 기술에 하여 조사한다

o 루트킷 커 악성코드 유형 분석

루트킷이나 커 악성코드는 스스로를 숨기기 해 커 패치와

같은 로우 벨의 조작을 수행한다 루트킷은 자신을 숨기기 해

API 후킹 등을 통한 로세스 스 드 은닉 일 지스트리

은닉 메모리 은닉 등의 행 를 한다 이를 통해 해당 루트킷은

작업 리자 로세스 목록에서도 자신을 숨기며 탐색기와 같은

일 리 도구에서도 해당 루트킷과 련된 일의 목록조차 찾을

수 없다 이는 루트킷의 탐지를 더욱 어렵게 만들며 감염 여부조차

확인할 수 없도록 한다 그러나 이러한 은닉을 한 행 들은

루트킷으로 단하는 특성이기 때문에 공통 인 특징을 발견할 수

있을 것으로 단된다 한 국내에서 발견되는 부분의 루트킷은

국이나 유럽 등에서 발표된 루트킷 그 자체이거나 그 소스 코드를

사용한 변종이라는 에서 탐지에 한 가능성을 다시 한 번 확인할

수 있을 것으로 상된다 따라서 이러한 루트킷이나 커

악성코드를 분석하기 해 다음의 사항들을 수행한다

- 루트킷 커 악성코드의 유형 동작방식 조사 먼 제시한

분류 방법을 통해 루트킷이나 커 악성코드를 유형별로 나 고

이에 따라 각각의 동작 방식을 조사한다

o 악성코드의 자동화 분석 방법론 도출

악성코드의 분류 기 과 유형별 특징 분석 넷 의 악성행 와

특징 분석 안티디버깅 가상머신 탐지기술 분석 루트킷 커

악성코드 분석 등을 통해 각 악성코드의 유형별 자동 분석이 가능한

방법론을 도출한다

- 악성코드 분석 로세스에 한 자동화 이 단계의 악성코드

특징 분석 연구를 통한 특징 결과들을 명세화하여 자동화 분류에

사용될 수 있는 lsquo악성코드 분석이 가능한 특징rsquo을 도출한다 이

특징을 도출하는 과정은 각각의 특징에 하여 다음과 같은 서

로세스를 이용한다

- 25 -

악성코드가 사용하거나 변경하는 일 지스트리 분석

장 매체 사용의 모니터링

악성코드의 도메인 속 분석

코드 인젝션 분석

한 서 로세스에는 악성코드를 수동으로 분석하여

악성코드의 새로운 특징을 도출하는 로세스가 추가된다 이

과정은 악성코드 특징 도출 단계이다 악성코드의 특징을 도출한

후 악성코드 자동 분석을 하여 도출된 특징들을 조합하고 자동

분석 방법을 용하여 악성코드 분석 자동화의 가능성을

실험한다 한 이 과정에서 발생되는 결과값을 로그로 기록하여

정 오류(False Positive)를 조사하고 발생 요인을 분석하여

실험에 사용한 자동 분석 방법의 개선 을 도출함으로써 악성코드

분석 자동화에 한 가능성을 조사하며 그 정확도를 높인다 이

단계는 악성코드 자동 분석 검증 도출 단계이다

- 27 -

제 2 장 악성코드의 개요

제 1 악성코드의 정의

악성코드(Malicious Code)는 악성코드는 정보유출 이익 등

악의 인 목 으로 작성되어 컴퓨터 사용자의 승인 없이 컴퓨터에

침투하거나 설치되어 악성행 를 하는 로그램이며 말웨어(Malware

Malicious Software)라고도 한다 한 악성코드는 웜 바이러스

트로이목마 스 이웨어 애드웨어 루트킷 등으로 분류할 수 있으며

해롭고 불필요한 소 트웨어도 포함한다

1 웜

웜(Worm)은 자기복제성을 가지고 숙주 로그램이나 일이 없어도

독자 으로 실행되어 로그램 안에서 스스로 자신을 복제하거나

로그램과 로그램 사이 는 컴퓨터와 컴퓨터 사이를 이동하여

시키며 기억장소에 코드 형태 혹은 실행 일로 존재하는 로그램

조각이다 웜은 자기 자신을 복제하는 행 사용자가 인지하지 못한

방법으로 이메일을 송하는 행 해당 로그램 혹은 개발사에서

배포하지 않은 정상 인 일에 새로운 코드를 삽입하는 등의

악성행 를 수행한다 최근에는 같은 기능을 하면서도 형태가 각각

다른 다형성 웜(Polymorphic Worm)이 등장하여 웜의 탐지 분석을

더욱 어렵게 하고 있다

2 바이러스

바이러스(Virus)는 컴퓨터 시스템에 몰래 침투해 숙주 로그램이나

실행 가능한 일에 자기 자신이나 변형된 자신을 복제하여 다른

상을 감염시킴으로써 컴퓨터 시스템과 일을 괴하는 코드 혹은

- 28 -

로그램이다

바이러스는 컴퓨터 비정상 인 동작 유발 데이터 삭제 컴퓨터 성능

하 인터넷 속도 하 등의 악성행 를 수행한다

바이러스와 웜은 모두 자기복제가 가능하다는 에서 공통 을

가지지만 방법에 한 차이 이 존재한다 바이러스는 일 등에

삽입되어 되지만 웜은 일과는 독립 으로 그 자체만으로도

네트워크를 통해 된다

3 트로이목마

트로이목마(Trojan Horse)는 겉보기에는 정상 인 로그램으로

보이지만 실행시켰을 경우 악성코드를 실행하는 악성 루틴이 숨어 있는

로그램이다 트로이목마는 다른 로그램 내에 사용자가 알 수

없도록 포함되며 스스로 복제하지 못한다 공격자가 고의로 삽입시키기

때문에 로그램의 버그와는 다르며 스스로 복제를 못하기 때문에

웜이나 바이러스와 다른 특징을 지닌다

트로이목마는 백도어 설치 DDoS 공격 키로거를 통한 ID

패스워드 수집 등의 악성행 를 수행한다

트로이목마와 바이러스를 비교해보면 트로이목마는 자기복제가

불가능하고 다른 일을 감염시키지 못하며 사용자가 실행시키도록

하여 스스로 피해를 유발한다 그러나 바이러스는 정상 인 부트 역

일 등을 감염시키면서 된다는 에서 차이가 있다

4 스 이웨어

스 이웨어(Spyware Spy Software)는 주로 인터넷 등에서 무료로

배포되는 SW에 포함된 형태로 사용자의 동의 없이 감염된 컴퓨터나

네트워크 내에서 개인 기업에 한 정보를 수집하여 공격자에게

송하도록 제작된 로그램이다

스 이웨어는 개인정보나 융정보 계정정보를 비롯하여 각종 정보

데이터를 수집하는 등의 악성행 에 이용된다

- 29 -

5 애드웨어

애드웨어(Adware Advertising-supported Software)는 사용자가

웹서핑을 할 때 혹은 특정 소 트웨어를 실행할 때 설치되어 팝업 창

등을 통하여 고를 노출시키는 로그램이다

애드웨어는 팝업 노출 인터넷 익스 로러의 시작페이지 변경 는

고정하는 등의 악성행 를 수행한다

6 루트킷

루트킷(Rootkit)은 공격자가 설치한 악성코드를 탐지되지 않고

컴퓨터에 존재할 수 있도록 하여 리자 계정의 권한을 획득하는 데

사용되는 로그램 는 이러한 소 트웨어들로 이루어진 도구이다

루트킷은 펌웨어 소 트웨어에 침투하여 해당 시스템의 리자

행세를 하는 악성행 원래 운 체제를 가상화하는 악성행 일

내용을 바꾸는 악성행 등을 수행한다

7 백도어

백도어(Backdoor)는 시스템 근에 하여 사용자 인증 등 정상 인

차를 거치지 않고 응용 로그램이나 시스템에 근하도록 도와주는

도구이다 즉 공격자가 시스템이 한번 침입을 한 후 자신이 원할 때

재침입하거나 권한을 쉽게 획득하기 해 만들어 놓은 통로이다

8 키로거

키로거(Keylogger)는 키보드로부터의 입력을 감시하고 기록하여

공격자에게 송하는 상주형 소 트웨어 는 해킹 도구이다

키로거는 온라인 상에서 감염된 컴퓨터의 사용자가 키보드를 통해

입력하는 ID 패스워드 주민등록번호 계좌번호 신용카드번호 등의

모든 데이터를 훔쳐볼 수 있는 악성행 를 수행한다

- 30 -

제 2 악성코드의 감염 경로

사용자의 컴퓨터는 다양한 경로를 통해 악성코드에 감염된다

표 인 악성코드의 감염 경로는 스팸 메일 이동식 장매체 메신

P2P 로그램 등이 있다

1 스팸 메일

악의 인 공격자가 악성코드를 첨부하거나 링크를 포함한 스팸

메일을 발송함으로써 사용자가 이를 클릭하여 감염되도록 한다

공격자는 사용자가 스팸 메일에 포함된 웹페이지 링크 주소를 클릭하여

악성코드 실행하도록 직간 으로 유도한다 최근에는 스팸 메일이

다양한 사회공학 기법을 이용하여 꾸 히 유포되고 있으며

크리스마스 오바마 미국 통령 새해 인사 등 사회 인 이슈와 다양한

심 유발을 통해서 사용자들을 혹하고 있다

2 이동식 장매체

사용자가 이미 감염된 컴퓨터에서 USB 등을 이용한 장매체를

사용할 경우 사용자 몰래 감염된 일이 실행되도록 USB 장매체에

autoruninf(자동실행 스크립트)가 설치된다 감염 시 추가 악성코드를

다운로드하거나 안티바이러스 어 리 이션을 종료시키며 시스템을

재부 한 후에도 지속 으로 동작할 수 있도록 지스트리를 변경한다

3 악성코드를 포함한 웹페이지에 속

웹페이지를 통한 악성코드 방법은 매우 다양하다 를 들어

공격자들은 SQL Injection 취약 을 이용하여 데이터베이스 내에

악성코드를 삽입한다 이를 통하여 웹페이지에 정 (Static)으로

악성코드를 은닉시키는 것이 아니라 데이터베이스 내에 악성코드

- 31 -

링크를 삽입하여 해당 데이터베이스와 연동된 게시 이나 련 정보

웹페이지에 악성코드가 동 (Dynamic)으로 삽입되도록 한다 이 게

악성코드를 포함한 웹페이지에 속하는 사용자는 자신도 모르게

악성코드를 실행시키거나 다운로드하여 컴퓨터가 감염되고 개인정보

융정보 계정 ID와 패스워드 등의 정보가 유출되기도 한다

4 메신

메신 를 이용한 악성코드 감염은 사용자 부주의나 메신 자체

취약 을 통해 발생한다 사용자 부주의란 자신의 메신 에 등록된

사용자가 악성코드를 포함하는 웹페이지의 URL이 담긴 메시지나

악성코드를 포함한 일을 송하 을 때 이를 아무런 의심 없이

클릭하여 실행함으로써 감염된다 공격자는 이를 통하여 주로 감염된

컴퓨터 내에서 정보를 수집하거나 피싱 사이트 속을 유도하여

사용자의 정보를 수집하게 된다

5 P2P 로그램

공격자는 P2P 로그램을 통해 악성코드 일을 일반 일로

장하여 공유하고 송하며 사용자가 악성코드 일을 실행시켰을

경우에 감염된다

제 3 악성코드의 분류

국내외 안티바이러스 공 업체들이 악성코드를 분류하는 기 에는

악성코드의 정의 방법 감염시키는 일의 종류 수행하는

악성행 증상 공격 상의 환경(운 체제) 등이 있으며 각

공 업체별 분류 기 에는 약간의 차이가 존재한다

- 32 -

1 안철수 연구소

안철수 연구소에서는 악성코드의 정의 운 체제 증상 감염 역

감염 경로에 따라 분류한다

분류 요 소

정의 바이러스 웜 트로이목마( 는 백도어) 가짜(Hoax) 조크(Joke)

운 체제 DOS Window Linux Palm Unix FreeBSD

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

공유폴더 내 일 감염(복사)

특이 증상 화면 특정음 메시지 상자(문자열) 출력

감염 역

바이러스감염 일 실행으로 감염

부트

바이러스

감염되지 않은 주부트 역 도스 부트 역에

감염

부트 일

바이러스부트 역 일 동시 감염

매크로

바이러스MS 오피스의 기능을 이용하여 문서 일 감염

스크립트

바이러스

자바스크립트 비주얼 베이직 스크립트로

작성된 웜 는 바이러스

감염 경로 일 실행 다운로드 네트워크 공유 폴더 보안 취약성 이메일

[표 2-1] 안철수 연구소의 악성코드 분류 방법

- 33 -

2 하우리

하우리에서는 악성코드의 증상 형태 일 종류 감염 경로에 따라

분류한다 형태에 따른 분류와 일 종류에 따른 분류는 각각 안철수

연구소의 정의에 따른 분류 감염 역에 따른 분류와 비슷하며

이하 분류 방법도 부분 동일하다

분류 요 소

형태 웜 바이러스 트로이목마 가짜(Hoax) 조크(Joke) 기타

증상

하드디스크 하드디스크 포맷 부트섹터 괴

일 일 생성 삭제 감염 손상

시스템

시스템 정보 변경 FAT 괴 CMOS 정보 손상

괴 시스템 비정상 작동 기본 메모리 감소

시스템 속도 하 지스트리 변경 로세스

종료 도우 종료 재부 부 불가

네트워크

이메일 발송 정보 유출 네트워크 속도 하

메시지 송 특정 포트 오 홈페이지 변경

특정 홈페이지 속

특이 증상 화면 특정음 메시지 상자(문자열) 출력

일 종류

도우 일 WIN16 WIN32 WIN95 WIN2K

도스 일 도스 형태의 일로 바이러스

부트 부트 역에 바이러스 감염

부트 일 부트 역 일 동시 감염

스크립트 VBS CSC JS PHP HTML SWF ABAP

매크로 ACCESS WORD EXCEL OFFICE ACAD

감염 경로 일 실행 다운로드 네트워크 보안 취약성 이메일

[표 2-2] 하우리의 악성코드 분류 방법

- 34 -

3 Kaspersky

Kaspersky에서는 방법으로 악성코드를 분류한다

분류 방법

이메일 메신 일공유(P2P) IRC 채 LAN WAN 등의

다양한 네트워킹 시스템을 사용하여 일 형태로 된다

(이메일 첨부 일 IRC 메시지 감염된 웹사이트나 FTP

서버에 장된 일로의 링크 네트워크로 근 가능한

일들 등)

바이러스 방법으로 네트워크를 사용하지 않고 감염된 객체에

코드를 보내 복제하여 다른 컴퓨터로 한다

트로이목마

감염시킨 컴퓨터에서 수행하는 악성행 에 따라 다음과 같이

분류한다

백도어 LAN이나 인터넷을 경유해 컴퓨터를 감염시켜

리한다

루트킷 시스템 일 는 라이 러리를 바꾸거나 커

모듈을 설치하는 악성행 를 수행한다

[표 2-3] Kaspersky의 악성코드 분류 방법

4 Symantec

Sysmantec은 악성코드의 종류에 따라 Crimeware 스 이웨어

말웨어 등으로 분류한다

o Crimeware 사이버 범죄에 사용되는 소 트웨어로 (Bot) 키로거

스 이웨어 백도어 트로이목마가 있다고 정의한다 공격 방법에

따라 스 이웨어 말웨어 취약 스팸 피싱으로 분류한다

o 스 이웨어 사용자가 웹사이트 이메일 인스턴트 메시지 일을

다운로드 함으로써 공격을 한다

o 말웨어 악성코드(웜 바이러스 트로이목마)의 한 카테고리이다

- 35 -

- 웜은 자우편과 인스턴트 메시지를 통해 된다

- 트로이 목마는 자우편 웹사이트로 된다

- 바이러스는 P2P로부터 일을 다운로드 함으로써 된다

5 Microsoft

Microsoft에서는 그림 2-1에 나타낸 악성코드 별트리와 같이

자기복제 능력에 따라 악성코드를 분류하며 스 이웨어 애드웨어는

악성코드로 분류하지 않는다

o 웜 매개체 없이 자기복제 능력을 갖는다

o 바이러스 매개체를 통해 자기복제 능력을 갖는다

o 트로이목마 자기복제 능력을 갖지 않는다

(그림 2-1) 악성코드 별 트리

- 36 -

제 4 악성코드의 명명법

악성코드의 이름은 이를 최 로 발견한 사람에게 그 권한이 있다

그러나 명명법이 통일되지 않아 혼란스러운 상태이며 악성코드가

비슷한 시기에 여러 장소에서 발견된 경우 발견자들이 각각 이름을

지어 같은 악성코드에 여러 개의 이름이 통용되기 때문에 동일한

악성코드라도 구분이 힘들다는 문제 이 존재한다 최근에는 악성코드

내부의 문자열 특징 인 증상 발견지 등을 주요 원칙으로 하면서 각

안티바이러스 공 업체마다 분류안을 제정하여 운 하고 있다

공 자 명명법

안철수 연구소 랫폼-형태이름사이즈변형정도

하우리 형태 랫폼이름사이즈변형정도

Symantec 랫폼이름변형정도

Kaspersky 형태(행 ) 랫폼이름변형정도

[표 2-4] 공 업체별 악성코드 명명법

o 랫폼 악성코드가 동작하는 운 체제 MS 오피스 로그램

JAVA HTML 비쥬얼베이직 등

o 형태 웜 바이러스 트로이목마 등 악성코드의 분류

o 이름 악성코드의 이름은 다음과 같은 사항에 따라 결정

- 최 로 분석한 분석가의 이름

- 악성코드 내부의 문자열

- 악성코드의 동작 형태

- 발견자나 제작자의 이름

- 기타

o 사이즈 악성코드의 사이즈

o 변형정도 동일한 악성코드가 발견된 순서 변형정도

- 37 -

공 업체 Sample 1 Sample 2

안철수 연구소 Win32FunLove4099 Win32Nimda

하우리 Win32FunLove4099 Win32NimdaD

Symantec W32FunLove4099 W32NimdaAmm

Kaspersky VirusWin32FunLove4099 Net-WormWin32Nimda

[표 2-5] 공 업체별 악성코드 명명 비교

- 38 -

제 5 악성코드가 사용변경하는 일 지스트리

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다 이러한 변화를 분석할 수 있다면

악성코드를 탐지하고 분석하는데 유용하다

이를 해서 우선 지스트리에 한 정보와 악성코드 에서

트로이목마가 사용하거나 변경하는 일 지스트리에 하여

조사하여 부록에 첨부하 다

- 39 -

참고문헌

[1] 안철수 연구소 (httphomeahnlabcom)

[2] 하우리 (httpwwwhauricokr)

[3] Symantec (httpwwwsymanteccom)

[4] Kaspersky (httpwwwkasperskycom)

[5] Wikipedia (httpwwwwikipediaorg)

[6] 최 호 외 ldquo악성코드 분류 명명법에 한 연구rdquo 정보과학회지

제 20권 제11호 2002 11

[7] 박병익 이강석 공 ldquo리버스엔지니어링 역분석 구조와 원리rdquo 지

앤선 2008

[8] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[9] 왕성 역 ldquo악성 모바일 코드 도우 바이러스 작동원리와 퇴

치rdquo 한빛미디어 2001

[10] William Stallings Lawrie Brown ldquoComputer Security Principles

and Practicerdquo Pearson Education 2008

- 41 -

제 3 장 분석 방해 기술

안티 디버깅(Anti-Debugging)이란 로그램의 내부 알고리즘이나

데이터들을 분석하지 못하도록 일에 Packing을 하는 등의 디버깅을

방지하고 분석을 하지 못하도록 하는데 큰 목 이 있다 악성코드

제작자는 분석가의 분석을 방해하기 하여 다양한 방법을 사용한다

최근의 공통 인 방법 의 하나는 다형성 용을 통한 다양한 변종의

생성이다 이는 부분 도우즈 랫폼에서 이루어지며 그 방법은

실행압축 기법 암호화 기법 명령어 치환 기법이 있다 다형성 방법

외에도 Windows API를 이용하여 로세스의 디버깅 여부를 단하는

방법 디버깅 시 에서 CPU의 특성을 이용한 하드웨어 디버깅 탐지

방법 특정 디버거의 버그를 이용하여 디버깅을 강제로 종료하는 방법

로그램에 아무런 향을 미치지 않는 코드를 삽입하여 분석자의

분석을 방해하는 방법 등이 있다

제 1 실행압축 기법

실행압축이란 데이터를 하나로 묶어놓는 일반 압축과는 달리 실행

가능한 일을 압축한 것으로 실행압축된 일은 압축을 푸는 과정

없이 바로 로그램을 실행할 수 있다 이러한 압축을 사용할 경우

ZIP과 같은 범용 데이터 압축보다는 실행압축 방식을 사용하는 쪽이

더 용량이 게 사용된다 악성코드 역시 이 을 이용하여 단시간에

리 되도록 실행압축을 사용되고 있으며 시그니처 기반의

악성코드 탐지 기법을 회피하고 악성코드 분석가들이 악성코드를

분석하기 어렵도록 하는데 사용된다 실행압축 도구로는 표 3-1과 같이

다양하다 이는 기존 일의 확장자를 그 로 유지하면서 일의

실행도 과 같이 이루어질 수 있게 해 다

실행압축 로그램(Packer)는 로그램의 실제 코드 데이터를

- 42 -

로그램 상의 다른 곳에 압축하여 장해두고 Entry Point를

실행압축 해제 루틴을 가리키게 함으로써 실행압축 루틴(Unpacking)이

먼 실행되어 압축 장한 부분들을 해제한 다음 시작하는 방법으로

동작한다

실행압축 도구

ASPack(Alexey Solodovnikov Pack) UPX ASprotect NeoLite Armadillo

Exeshield Pecompect PEncrypt CryptFF DBPE tElock Stxe

PE_PatchAvSpoof Bat2ExeBDTmp Batlite ExeStealth JDPack PECRC

PE_PatchElka Pex Pingvin Mmpo Embedded CAB Morphine Eagle

PE-CryptNegn Bat2Exe PCPEC FlySFX Exe2Dll Teso PE-CryptUC

Polyene PE-CryptUC PEBundle CryptFF DBPE BitArtsFusion

PE_PatchAklay TapTrap CryptZ PE-CryptMoo PE-Pack RarSFX XCR

ZipSFX DoomPack NDrop PECrc32 DebugScript PE_PatchArdurik

PE-CryptWonk PE_PatchUpolyx MEW PE_PatchZiPack ZiPack

CryptFFb MEW Yoda Crypter 등

[표 3-1] 실행압축 도구

제 2 디버거 탐지 기법

IsDebuggerPresent()는 Kernel32dll에서 Export되는 함수로 해당

로세스가 디버깅이 진행 인지 여부를 PEB 구조체의 디버깅

상태값을 확인하고 디버깅이 진행 이라면 1을 그 지 않으면 0을

리턴한다 그러나 이 함수로는 커 벨 디버거는 탐지하지 못하며

유 모드 디버거만 탐지할 수 있다

CheckRemoteDebuggerPresent()는 디버거가 로세스를 Attach하는

것을 알 수 있다 이 함수는 2개의 라미터를 받아들이는데 첫 번째

라미터는 로세스 핸들이며 두 번째 라미터는 Bool 변수의

포인터이다 만약 로세스가 디버그 일 경우 이 변수가 TRUE 값을

- 43 -

갖게 된다 이 API에서 NtQueryInformationProcess()을 내부 으로

불러낼 때 ProcessInformationClass의 라미터는 ProcessDebugPort(7)

이 된다

NtQueryInformationProcess()는 커 구조체인 EPROCESS의 Debug

Port의 Flag를 체크한다 이 함수는 5개의 라미터를 가지는데

디버거를 탐지하기 하여 ProcessInformationClass는 ProcessDebug

Port(7)을 설정한다 즉 유 모드의 디버거가 로세스를 디버깅 일

때는 DebugPort 필드에 0이 아닌 값이 나타난다 이 경우에

ProcessInformation의 값은 0xFFFFFFFF이 되고 그 지 않은 경우에는

0이 된다

OllyDbg Guard Pages 검사는 올리 디버거를 체크하는 기술이다 이는

올리 디버거가 메모리에 on-accesswrite를 하여 이크 포인트를

설정할 수 있다는 특성을 이용한다 이러한 종류의 이크는 Guard

Page를 통해 수행된다 즉 Guard Page는 응용 로그램의 어느 한

메모리 부분에 근 할 때 이러한 경로를 얻을 수 있도록 해 다

Guard Page는 PAGE_GUARD의 Page Protection Modifier를 통해

설정된다 근한 메모리 주소가 Guard Page의 주소이면

STATUS_GUARD_PAGE_VIOLATION(0x80000001) 외를 일으킨다

그러나 올리 디버거로 디버깅하여 Guard Page에 근하게 되면

외는 발생하지 않게 된다 이러한 근은 메모리 이크로

처리하게 된다

제 3 코드 혼란(Obfuscation) 기법

코드 혼란(Obfuscation) 기법은 소스코드를 분석하려는 분석가에게

혼란을 주도록 소스 코드를 변화시키는 과정을 말한다 이는 완 히

분석이 불가능하게 하는 것이 아니라 코드를 분석하는데 드는 Cost를

증가시킴으로써 분석을 어렵게 하는 것이다

Obfuscation 방법은 그 상으로 하는 정보들에 따라 표 3-2와 같이

- 44 -

분류할 수 있다

구분 설명

Layout

Obfuscation

소스 코드의 포맷이나 변수 이름 comments와 같은 응용의

layout을 상으로 하는 방법

Data

Obfuscation

로그램이 사용하는 데이터 구조를 상으로 하는 방법

Storage메모리에 데이터가 장되는 방법을 변경

) 지역 변수를 역 변수로 변경

Encoding 장된 데이터가 해석되는 방법을 변경

) 변수 i를 c1i + c2로 변경

Aggregation 데이터의 그룹을 변경

) 하나의 배열을 여러 개의 하 배열들로 분할

Ordering

데이터의 순서를 변경

) 배열을 reordering 하는 것 i번째 값이 특정한

함수 f에 의해서 f(i)번째로 변경

Control

Obfuscation

로그램의 제어 순서를 상으로 하는 방법

Aggregation

문장들의 그룹을 변경하는 방법

) Inlining의 경우 함수 콜을 함수 코드 자체로

변경

Ordering 문장들의 실행 순서를 변경

) 루 의 진행 순서를 반 로 변경

Computation

로그램의 제어 흐름을 변경

) 실행되지 않는 코드를 추가하거나 불필요한

코드를 추가

Preventive

Transformation

deobfuscator들이 코드 자체를 break하기 어렵게 함

Targeted 자동 deobfuscation 기술 용을 어렵게 함

Inherent deobfuscator들의 약 을 이용

[표 3-2] 코드 혼란(Obfuscation) 기법

- 45 -

제 4 가상머신 탐지 기법

VMware VirtualPC Xen BOCHS User-Mode Linux와 같은

가상머신 환경(Virtual Machine Environment VME)은 사용자 는

리자가 하나 이상의 Guest OS를 호스트 OS 상에 설치하는 것으로

그림 3-1과 같이 에뮬 이션 환경 하에 실행되며 가상머신

환경으로부터 Virtual과 Real 하드웨어 모두 재하여 속할 수

있도록 제공된다

(그림 3-1) 가상머신 환경

악성코드를 분석하기 해 보안 계자 분석가들은 가상머신

환경을 이용한다 그리고 악성코드 제작자들은 분석가들의 가상머신

사용을 악하고 분석을 방해하기 해 가상머신 탐지 기술을

용한다 만약 악성코드가 실행된 환경이 가상머신 환경이라면

분석가에 의해 악성코드 분석을 한 실행으로 단하여 활동을

지하고 더 나아가서는 악성코드 자신을 괴시킨다

재 사용되고 있는 가상머신 환경을 탐지 방법은 4가지가 존재하며

가장 많이 사용되는 VMWare를 로 하여 기술한다

- 46 -

1 로세스 일시스템 지스트리 요소

가상머신 환경은 쉽게 발견될 수 있는 로세스 서비스 일

디 토리 지스트리 등을 포함한다 VMWare의 경우 일시스템에서

VMWare와 련된 300여개의 지스트리가 참조된다 한 실제로

가상머신 환경에 설치된 Windows가 작업 리자에서 VMwareUserexe

VMwareServiceexe와 같은 로세스를 확인할 수 있다 악성코드

제작자는 이러한 범 에서 선택 으로 가상머신을 탐지하는 코드를

삽입할 수 있다

2 메모리 요소

가상머신 탐지를 한 두 번째 방법은 메모리에서의 외를 사용하는

것이다 Guest 시스템의 메모리 맵은 호스트 시스템의 메모리 맵과는

차이를 지닌다 다른 차이는 Interrupt Descriptor Table(IDT)의

치이다 호스트 시스템에서는 IDT가 일반 으로 메모리의 낮은

벨에 치하지만 Guest 시스템에서는 메모리의 높은 벨에

치한다 로세서는 IDT를 가리키는 지스터 포인터(IDTR)를

가지므로 치가 같을 수 없기 때문에 이 기술은 서로 다른 가상머신

환경 상에서도 유용하다

3 가상 하드웨어

가상머신 탐지를 한 두 번째 방법은 NIC(Network Interface

Card)나 USB 컨트롤러 오디오 어 터 SCSI와 같이 가상화된 특정

하드웨어가 포함되어 있는지 살펴보는 것이다

(그림 3-2) 가상화 하드웨어

- 47 -

4 특정 로세서 Instruction과 Capabilities

마지막 방법은 로세서가 VM의 행동 특징을 가지고 있는 지

분석하는 것이다 특정 가상머신 환경에서 non-standard x86

Instruction은 Guest와 호스트 간의 통신을 발생시킨다 이와 같은

로세서의 외 처리를 이용하여 가상머신 환경을 탐지한다

표 3-3은 악성코드가 실행된 환경이 가상머신(VMWare)인지를

감지하는 코드이다

bool IsVMWare() bool rc = true

__try __asm push edx push ecx push ebx

mov eax VMXh mov ebx 0 mov ecx 10 any value but not MAGIC VALUE mov edx VX port number

in eax dx read port on return EAX returns the VERSION cmp ebx VMXh is it a reply from VMWare setz [rc] set return value

pop ebx pop ecx pop edx __except(EXCEPTION_EXECUTE_HANDLER) rc = false

return rc

[표 3-3] 가상머신(VMWare) 감지 코드

- 48 -

참고문헌

[1] 박병익 이강석 공 리버스엔지니어링 역분석 구조와 원리 지

앤선 2008

[2] 김성우 ldquo해킹 괴의 학(개정 )rdquo 와이미디어 2006

[3] 마이크로소 트웨어 2009년 4월호 마소인터 티 2009

[4] Mark Vincent Yason Mark Vincent Yason

httpswwwblackhatcompresentationsbh-usa-07YasonWhite

paperbh-usa-07-yason-WPpdf

[5]

- 49 -

제 4 장 커 기반 루트킷

제 1 개요

1 루트킷의 정의

루트킷은 컴퓨터 시스템 상에서 자신의 존재를 은닉하고 공격자가

컴퓨터의 리자 계정인 루트(Root) 계정의 권한을 획득하는 데

유용하게 사용되는 백도어트로이목마 등의 작은 로그램들로

이루어진 킷(Kit)이다 체 으로 루트킷 자체는 악성 기능이 없지만

다른 유형의 악성 로그램이 시스템 내에서 자신들의 활동을 숨기는

데 루트킷을 이용한다

2 루트킷의 기능

최근의 Windows 루트킷은 단순히 루트의 권한을 획득하기 한

것이 아니라 시스템 이미지 변경과 악성코드에 한 보호로 이어지고

있다 즉 이러한 루트킷은 부분 악성코드에 한 로세스

은닉이라고 할 수 있으며 다음과 같은 특징들을 가진다

o 루트킷을 이용하는 악성코드의 증가

o Windows 커 SSDT(System Service Descriptor Table)를 후킹하여

악성코드의 로세스 일 보호

o 루트킷 소스 공개에 따른 변종 증가

o 스 이웨어에서의 루트킷 사용

- 50 -

제 2 특징

해킹 공격 기술이 일반화되고 발 함에 따라 이에 응하는 보안

기술의 수 도 높아져 사용자 모드에서 실행되는 일반 인

백도어트로이목마 로그램은 리자들이 쉽게 탐지할 수 있게

되었다 따라서 공격자는 자신의 흔 을 보다 완벽히 감추기 해서

커 기반의 루트킷을 사용하게 되었고 재는 이러한 커 기반

루트킷이 공격자들에게 일반 인 도구로 사용되고 있다 가장 최근에

개발되어 발표된 공격 기법의 하나로는 재 실행되고 있는 커 에

공격자가 만든 커 모듈을 삽입함으로써 시스템 함수의 정상 인

실행을 바꾸는 방법을 사용하며 한 드라이버로써 구 되기도 한다

커 모드의 루트킷은 크게 은닉과 원격제어 소 트웨어 모니터링

등의 기능을 가지며 다음과 같이 분류할 수 있다

o 로세스 쓰 드 은닉

o 폴더 일 지스트리 은닉

o 메모리 은닉을 통해 디버거루트킷 Detector로부터 데이터 은닉

o 로세스의 보안 설정 변경 제거

o TDI TCPIP 드라이버 후킹을 통해 소켓패킷 데이터 스니핑

o 키로깅을 통한 키 입력 데이터 스니핑

상기 나열된 은닉 행 를 해서는 표 4-1과 같은 System Function

(Native API)들을 가로챈다

System Function (Native API)

NtCreateThread NtDelayExecution NtDuplicateObject NtOpenThread

NtProtectVirtualMemory NtQuerySystemInformation NtResumeThread

NtReadVirtualMemory NtTerminateProcess NtTerminateThread

NtWriteVirtualMemory

[표 4-1] 루트킷이 가로채는 System Function

- 51 -

제 3 동작 방식

커 기반 루트킷은 부분 커 벨에서의 후킹을 통해 자신을

은닉하고 다른 악성코드도 은닉한다 그 에서도 SSDT(System Service

Dispatch Table) 후킹은 최근 악성코드에서 사용되는 루트킷의

80~90가 사용하는 기법이다

1 SSDT(System Service Descriptor Table)

Windows는 수많은 테이블들의 집합이라고 할 수 있다 Windows는

인터럽트가 발생했을 때 어떠한 시스템 서비스가 호출되어야 하는지에

한 단을 해서 테이블을 참조한다 즉 CPU는 해당 시스템

서비스들이 치한 메모리 상의 주소를 알아야 하지만 모든 주소를

내부 으로 장할 수 없기 때문에 테이블이라는 자료구조를 사용하고

Windows는 이를 이용하는 것이다 CPU가 참조하는 이러한

테이블에는 GDT(Global Descriptor Table) LDT(Local Descriptor

Table) IDT(Interrupt Descriptor Table)이 존재하며 이를 통칭하여

SSDT(System Service Descriptor Table)라 부른다

한 Windows가 자신만의 테이블을 만들어 참조하는 방법이

사용되는데 SSDT(System Service Dispatch Table) 테이블은

Windows에서 구 된 테이블 의 하나이다 이 테이블은 시스템에서

이용 가능한 모든 시스템 서비스들의 주소를 가지고 있으며 인터럽트

발생시 Windows는 이 테이블을 참고하여 결과값을 반환한다 따라서

SSDT 테이블을 조작하거나 변경하여 시스템의 서비스를 다룰 수 있기

때문에 커 루트킷 뿐만 아니라 안티 바이러스에서도 사용된다 커

기반 루트킷의 경우 폴더 일 로세스 은닉 등을 해 사용된다

- 52 -

2 SSDT Hooking

SSDT 후킹은 그림 4-1과 같이 인터럽트 발생에 하여 시스템

서비스를 제공하기 에 Rootkit이 삽입되는 것이다

(그림 4-1) SSDT Hooking 개념도

(그림 4-2) SSDT Hooking

- 53 -

System Service Dispatcher 즉 KiSystemService()는 SSDT(System

Service Dispatch Table)을 참고하여 한 System Service를 실행하게

된다 KiSystemService()에서 하는 가장 요한 작업은 SSDT의 주소

값을 얻어오고 어 리 이션에서 호출한 API에 맞는 Native API의

주소를 찾아내서 호출하는 것이다 KiSystemService() 함수에서는 먼

SSDT를 찾기 해 KeServiceDescriptorTable에 근하며 구성요소는

4가지로 이루어져 있다 첫 번째 요소는 SSDT(KiServiceTable)의 주소를

담고 있고 세 번째 요소인 NumberOfService는 서비스의 개수이다

그리고 해당 서비스는 Native API를 지칭하기 때문에 결국 세 번째

요소는 Native API의 총 개수가 된다 네 번째 요소는

KiArgumentTable의 주소 값을 담고 있다 KiArgumentTable은

SSPT(System Service Parameter Table)라고도 불리는데 이들 각각은

SSDT의 Native API와 11로 응한다 이것들은 응되는 Native API

함수의 라미터 총 크기를 바이트단 로써 나타낸다

Native API를 찾기 해서는 Ntdlldll에서 EAX 지스터에

인덱스의 형태로 값을 장한다 그리고 이것과 SSDT 주소 값을

이용하여 Native API 함수의 엔트리 주소 값을 얻어오게 된다 SSDT

주소(KiServiceTable)+[EAX인덱스4]를 한다면 간단하게 Native API

함수 주소를 얻어올 수 있는데 이것은 실제로 KiSystemService()가

하는 코드와 같다 이어서 Native API 함수로 진입하게 된다 를

들어 만약 어 리 이션에서 CreateFile()함수로 일을 생성하면

시스템 게이트를 거쳐 커 의 NtCreateFile() 함수로 진입한다

NtCreateFile() 함수에서는 커 의 구성요소인 IO Manager를 통해

디스크 드라이버를 거치면서 일련의 작업을 진행한다

- 54 -

참고문헌

[1] 그 호 런드 제임스 버틀러 윤근용 역 ldquo루트킷 - 도우 커

조작의 미학rdquo 에이콘 2007

[2] 고흥환 ldquo루트킷을 이용하는 악성코드rdquo 국가사이버안 센터 -

원간 사이버시큐리티 November 2005

[3] 김용 역 ldquoAPI로 배우는 Windows 구조와 원리rdquo 한빛미디어

2004

[4] Chris Ries ldquoInside Windows Rootkitsrdquo 2006

[4] httpwwwrootkitcom

- 55 -

제 5 장 기존의 악성코드 자동 분류분석 방법

악성코드의 자동 분석 방법은 두 가지 경우로 나 수 있다 첫 번째

방법은 정 인 코드 분석이고 두 번째 방법은 동 인 행 분석이다

정 코드 분석은 디버거(Debugger)와 디스어셈블러(Disassembler)를

이용하여 실제 로그램의 코드나 바이 리를 다른 바이 리 코드와

비교하여 결론을 도출하는 방법으로 악성코드의 동작 흐름에 하여

가장 정확한 분석이 가능하나 비교하는 알고리즘이나 비교 기 등에서

수치 인 부분이 없으므로 그 방법이 어렵다 그러나 동 분석에 비해

악성코드를 더 자세히 분석할 수 있다

동 행 분석은 악성코드가 실행하는 내용을 분석하는 방법으로

악성코드가 일이나 지스트리 생성 수정 등의 행 를 찰하여

분석이 가능하다

이 장에서는 논문을 통해 제안된 기존의 악성코드 자동 분류 분석

방법에 한 내용을 기술한다

제 1 정 코드 분석

1 Digital Genome Mapping - Advanced Binary Malware Analysis

Digital Genome Mapping 방법은 2004년 F-secure사 안티바이러스

연구 에서 제안되었다 이는 그래 의 유사도를 이용하여 바이 리

코드의 유사성을 도출하는 방법으로 악성코드 변종 간의 유사성

차이 을 찾아내는 것이다 바이 리의 차이를 알아내기 하여 두

바이 리에서 공통된 이름을 가진 함수를 찾아내는데 이러한 함수로는

라이 러리나 운 체제에서 사용되는 함수들이 해당된다

공통된 이름의 함수를 기 으로 인 행렬을 도출하고 각각의

함수는 공통된 부분과 공통되지 않는 부분으로 나 게 된다 이를

- 56 -

해서는 Call-tree signature라는 방식을 사용하며 함수마다 그 특징을

나타내는 시그니처를 생성한다 한 시그니처 생성 방법은 로그램을

구성하는 일종의 블록인 Atomic function을 이용하는데 N개의 Atomic

function들 가운데 함수에서 사용하는 Atomic function의 index 번호를

1로 셋(Set)하고 그 지 않은 경우는 0으로 리셋(ㄲeset)하여 생성한다

따라서 일련의 과정을 통해 두 바이 리의 공통된 함수 목록을 얻을

수 있으며 이 함수의 유사도를 별하기 해서는 다음과 같은 수식을

사용한다

cup

즉 A와 B 각 함수 개수의 곱을 A와 B 합집합의 제곱으로 나 며

산출된 값의 범 는 le le이다 산출된 값이 0에 가까우면

유사도가 낮은 것을 의미하며 1에 가까우면 유사도가 높은 것이다

결국 제안된 방법에서의 유사도는 악성코드 자체의 유사도가 아니라

함수 사용의 유사도를 기반으로 분석하여 악성코드의 변종이라는

사실을 빠르게 단하는 방법이라고 할 수 있다

2 An Automated Virus Classification System

이 논문에서 기술된 방법은 2005년 Microsoft사의 보안 비즈니스

기술 부문(Security Business and Technology Unit)에서 제안되었으며

그림 5-1과 같다 이는 악성코드가 Static인 경우와 Parasitic인 경우에

하여 분석하는 방법이 다르다 Static의 경우는 악성코드가 하나의

로그램인 경우를 말하며 악성코드의 내용을 따로 추출해낼 필요가

없기 때문에 그 자체로 분석한다 Parasitic은 악성코드가 정상 인

로그램에 삽입된 형태이며 일반 으로는 바이러스에서 볼 수 있다

따라서 Parasitic의 경우 체의 코드 에서 악성코드만 따로

추출해야하기 때문에 Emulation Tracing 과정이 필요하다 이러한

단계를 통해 악성코드의 흐름을 도식화 한 Control Flow Graph

(CFG)를 도출하고 정확도를 높이기 해서는 Basic Block(BB)으로

구분하고 새로운 실행코드와 비교된다

- 57 -

(그림 5-1) 제안한 방법의 순서도

Basic Block 간의 거리를 구하는 알고리즘으로는 Edit distance

Inverted Index Bloom filters의 총 3가지 방법을 제시하 다

Edit Distance는 일반 으로 Unix 시스템에서 사용되는 Diff와

유사하며 코드가 삽입 삭제 교환되었는지를 단한다 그러나 각

코드의 크기가 m과 n 때 그 속도가 O(mn)과 같다는 단 이 있다

Inverted Index는 Edit Distance의 속도를 개선하기 한 방법이며

검색엔진에서 사용되는 것처럼 각각의 문자에 한 배열의 인덱스를

두어 검색 결과를 빠르게 한다 그러나 미리 인덱스를 만들어야 하기

때문에 장 용량을 많이 요구하게 된다

Bloom Filter는 몇 개의 Hash Function을 이용하여 코드의 특징을

나타낸다 도출된 특징(Hash Function의 값)은 Bloom Filter의 비트(Bit)

하나를 Set하고 이 게 생성된 Bloom Filter는 일정한 크기로 Basic

Block을 나타내게 된다 결과 으로는 작은 양의 정보로 축소되기

때문에 그만큼 손실이 발생하며 False Positive가 발생한다

- 58 -

제 2 동 행 분석

1 Automated Classification and Analysis of Internet Malware

이 논문에서 기술된 방법은 미시간 학교의 Michael Bailey에 의하여

2007년에 제안되었다 제안한 임워크는 결과 으로 악성코드의

변종을 입력 값으로 주었을 때 이와 가장 유사한 악성코드의 분류를

제시하는 것이다 이를 해서는 Consistency(일 성) Completeness

(완 성) Conciseness(간결성)과 같은 총 3개의 자동 분류 속성을

제안하 다

제안한 방법은 기존의 시스템 콜 수 에서의 행 도출이 아니라

시스템에서 발생한 변화를 특징으로 사용한다 즉 하 벨의 시스템

콜보다 좀 더 상 벨인 로세스의 개수 일 지스트리 사용

그리고 네트워크의 행 를 탐지하여 코드의 특징으로 나타내는 것이다

다음으로는 Learning 단계를 통해 특징 간의 거리를 계산해야 하며

정보 내용의 근사값을 제공하는 방법인 Normalized Compression

Distance(NCD)를 사용한다 이 게 계산된 거리는 Threshold를

이용하여 클러스터링되고 악성코드 간의 계를 구성하여 악성코드

분류에 사용된다

2 Learning and Classification of Malware Behavior

이 논문에서 기술된 방법은 독일 라운호퍼 연구소의 Konrad

Rieck에 의하여 2008년에 제안되었다 제안한 방법은 총 5단계로

이루어져 있으며 각 단계는 그림 5-2와 같다

(그림 5-2) 제안한 방법의 5단계

- 59 -

o Data acquisition 데이터를 수집하는 단계이다 이는 Honeypot이나

spam-trap과 같은 방식을 통하여 악성코드를 수집할 수 있다

o Behavior Monitoring 악성코드의 행 를 수집하게 되며 일

지스트리의 변경 실행 로세스 감염 여부 뮤텍스 생성 요구

네트워크 사용 정보 도우 서비스 실행 지에 한 항목들을

수집한다

o Feature Extraction 의 단계에서 생성된 일의 경우 그 형태가

문자열 등의 로그 일이다 따라서 이것은 계산하기 쉬운 형태로

변환하는 과정이다 도출된 결과를 벡터로 변환하는 과정이

포함된다

o Learning and Classification 벡터로 만들어진 악성코드의 특징을

클러스터링하는 단계이다 이 단계에서는 벡터의 내 으로 두

벡터간의 거리를 계산한다 한 이 게 생성된 모델로 새로운

악성코드의 종류(Family)를 단한다

o Explanation 이 단계에서는 에서 도출된 결과에 한 이유를

설명한다 제안한 방법은 각 악성코드에 한 공통 을 추출하여 그

연 이 가장 높은 것들을 추론해 내는 것이다

- 60 -

참고문헌

[1] E Carrera et al ldquoDigital Genome Mapping Advanced Binary

Malware Analysisrdquo Proceedings of 15th Virus Bulletin

International Conference (VB 2004) pp187-197 2004

[2] Marius Gheorghescu ldquoAn Automated Virus Classification

Systemrdquo Proceedings of 16th Virus Bulletin International

Conference (VB 2005) pp294-300 2005

[3] Michael Bailey et al ldquoAutomated Classification and Analysis of

Internet Malwarerdquo Proceedings of the 10th International

Symposium on Recent Advances in Intrusion Detection

(RAID07) LNCS 4637 pp178-197 2007

[4] Konrad Rieck et al ldquoLearning and Classification of Malware

Behaviorrdquo Proceedings of the Conference on Detection of

Intrusions and Malware and Vulnerability Assessment(DIMVA

2008) LNCS 5137 pp108-125 2008

- 61 -

제 6 장 Netbot의 특징 분석

이 장에서는 악성코드의 유형에 따른 자동화 분석 방법을 도출하기

한 선행단계로 Netbot의 특징을 분석하고 분석 결과는 다른 여러

가지 악성코드에 한 자동화 분석 방법에도 확장 용시키고자

하 다

제 1 개요

DDoS 공격 도구인 Netbot은 기존의 웜이나 바이러스처럼 컴퓨터를

감염시킬 뿐만 아니라 계속해서 명령을 주고받으며 시스템까지 제어할

수 있는 악성 로그램이다 Netbot은 주요 기능으로 DDoS공격과 원격

제어와 같은 백도어 기능도 제공한다 감염 시 온라인 게임의 계정

유출 특정 서버나 웹사이트 공격 스팸메일 발송 등의 악성행 에

악용되고 있으며 컴퓨터가 느려지는 증상도 나타난다

2007년부터 국내 아이템 거래 사이트뿐만 아니라 포털 사이트가

Netbot을 이용한 DDoS 공격을 받아 속이 불가능하거나 지연되는

등의 장애가 발생하 다

최근에는 공격자가 문 인 지식을 가지고 있지 않더라도 Netbot과

같이 자동화된 DDoS 공격 도구를 사용하고 있으며 이를 악용하여

품을 요구하는 박을 하는 등 사이버범죄가 증가하고 있다

- 62 -

제 2 Netbot의 공격 기능

Netbot에는 총 18가지 공격 유형이 있으며 표 6-1과 같이 Common

Attack WEB Attack Special Attack Combine Attack Attack For

Korean으로 구분된다

공격 모드 공격 유형

Common AttackSYN Flood ICMP Flood UDP Flood

UDP Small Size TCP Flood TCP Multi-Connect

Web AttackNoCache Get Flood CC Attack

HTTP GET Nothing

Special AttackCQ Game Attack Route Attack

Smart Auto Attack

Combine AttackSYN+UDP Flood ICMP+TCP Flood

UDP+TCP Flood

Attack for KoreanFin_Wait1 Attack Fin_Wait2 Attack

Established Attack

[표 6-1] Netbot의 공격 기능

1 SYN Flood

SYN Flood 공격은 TCPIP의 취약성을 이용한 DoS 공격 방식의

하나로 네트워크와 시스템의 자원을 공격 상으로 한다

SYN Flood 공격은 TCP의 연결 과정인 3-Way Handshake를 악용한

것이다 공격자는 Source IP 주소를 스푸핑(Spoofing)하고 량의 SYN

패킷을 공격 상의 특정 포트로 송함으로써 해당 포트의 기

큐(Backlog Queue)를 가득 채워 해당 포트에 한 연결 요청을 큐가

빌 때까지 거부하도록 하는 방법이다 한 Source IP 주소에 들어갈

임의의 호스트는 근이 불가능한(Unreachable) 호스트이다

- 63 -

2 ICMP Flood

ICMP Flood 공격은 Ping Flood로도 알려져 있으며 량의 ICMP

패킷(PING 리퀘스트 패킷)을 공격 상에게 송하고 TCPIP

리퀘스트에 한 응답을 할 수 없게 한다 이는 ICMP가 유일하게

활성화된 서비스나 포트가 필요하지 않은 로토콜이라는 특징을

이용한 것이다

ICMP Flood 공격의 변종으로 Smurf 공격이 있다 이는 공격자가

Source IP 주소를 공격 상의 IP 주소로 스푸핑한 후 로드캐스트

주소로 ICMP Echo Request 패킷을 송하면 그 하 모든 시스템들이

ICMP Echo Reply 패킷을 공격 상으로 송하여 량의 패킷들이

집 됨으로써 네트워크 부하를 높이게 된다

3 UDP Flood

UDP Flood 공격은 공격자가 공격 상에 임의의 포트로 량의

UDP 패킷을 송함으로써 이루어지는 공격이다

UDP Flood 공격은 UDP의 특징인 비연결성 비신뢰성 때문에

공격이 용이하다 UDP는 Source IP 주소와 포트번호를 스푸핑하기

쉬운 취약 을 가지고 있으며 이 취약 을 이용해 과다한 트래픽을

공격 상에 송함으로써 스푸핑된 공격 상 사이의 네트워크를

마비시킨다 만약 공격자가 Source IP 주소를 공격 상 A의 IP 주소로

스푸핑하여 공격 상 B에게 량의 UDP 패킷을 송할 경우 A와

B는 계속해서 서로 패킷을 주고받게 되어 두 시스템 사이의

네트워크에 과부하가 래된다

4 UDP Small Size

UDP Small Size 공격은 UDP Flood 공격보다 송하는 UDP 패킷의

사이즈가 작은 것을 말한다 UDP Flood 공격에서의 UDP 사이즈가

4008 byte인 것에 비해 UDP Small Size 공격에서는 512 byte의 UDP

- 64 -

패킷을 량으로 송한다

5 TCP Flood

TCP Flood 공격은 서버가 정상 인 서비스를 할 수 없도록 지연 는

불능 상태로 만들기 해 사용된다 이는 클라이언트가 서버에

설정하는 TCP 헤더의 Flags에 따라 TCP SYN Flooding TCP NULL

Flooding TCP FIN Flooding TCP ACK Flooding TCP PUSH

Flooding TCP RESET Flooding TCP URG Flooding TCP XMAS

Flooding으로 구분된다 클라이언트가 서버에 Flag를 설정하여 량의

패킷을 보내면 서버는 이를 처리하기 해서 부분의 자원을

소모하게 되고 정상 인 서비스를 하지 못하는 상이 발생한다

6 TCP Multi-Connect

TCP Multi-Connect 공격은 량의 TCP 연결을 시도하는 공격이다

IP를 변조하지 않고 다량의 SYN 패킷을 공격 상 서버로 송한다

공격을 받은 서버는 다수의 ESTABLISHED 세션 상태가 발생하게

되고 서버의 CPU 연결 자원이 고갈된다

7 웹 부하 공격

Netbot에 포함된 공격 모드 Web Attack은 서버에 하여 량의

요청을 송하는 웹 부하 공격이다 서버는 웹 부하 공격을 받을 경우

메모리와 CPU의 유율이 90 이상이 되어 웹페이지에 속이

불가능하거나 지연되는 등의 장애가 발생한다 Netbot의 Web Attack

모드에서는 NoCache Get Flood CC Attack HTTP GET Nothing의

기능이 있으며 NoCache Get Flood HTTP GET Nothing은 HTTP

Get Flood 공격의 일종으로 단된다

- 65 -

가 CC Attack

CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control

값을 비정상 으로 조작하여 공격 상의 URL을 직 호출하는

방법을 이용한다

Cache-Control은 웹페이지의 캐싱을 해 정의되는 값으로 서버가

클라이언트에게 웹페이지를 제공할 때 캐싱을 요청하기 해 사용되며

클라이언트가 서버에게 페이지를 요청할 때에는 일반 으로 사용되지

않는 값이다 그러나 RFC 문서에서는 클라이언트와 서버 측 모두

사용되어 있도록 정의되어있다 클라이언트가 서버에게 페이지를

요청할 때 캐싱을 요청하지 않으면 해당 서버는 비정상 으로

동작하여 서비스 불능 상태에 빠질 수 있다

사용자가 일반 으로 웹서버에 속해 이미지 혹은 HTML을 호출할

때 변경된 사항이 존재하지 않으면 304 NOT MODIFY 코드를

Response로 송하여 로컬 컴퓨터의 Temp 폴더를 살펴보게 한다

이는 속 시마다 이미지를 표시할 때 서버의 부하를 이기 한

것이다 CC Attack은 이와 같은 원리를 이용한 것으로 Temp 폴더가

Empty 상태인 것처럼 가장하여 웹서버에 이미지 HTML을 요청하게

한다 일반 인 DoSDDoS 공격이 같은 페이지를 여러 사용자가

동시에 속해 서버에 부하를 주는 것이라면 CC Attack은 페이지

요청 시 서버를 이용하므로 서버에 더욱 더 부하를 주는 방법이라고 할

수 있다

나 HTTP GET Flood

HTTP GET Flood 공격은 특정 페이지에 한 요청이 TCP 3-Way

Handshake 후 정상 인 과정을 통해 HTTP GET을 반복 이고

량으로 요청하여 서버에 부하를 유발시킴으로써 서비스 장애를

발생시키는 공격이다

HTTP GET Flood 공격은 단일 TCP 연결에서의 반복 HTTP GET

요청과 다 TCP 연결을 통한 HTTP GET 요청의 2가지 유형으로

분류할 수 있다

NoCache Get Flood 공격의 경우 cache-control를 no-cache로

- 66 -

설정해서 ldquoGet rdquo 이라는 HTTP 명령을 연속 으로 송한다 HTTP

GET Nothing 공격의 경우는 요청에 한 명확한 상을 지정하지

않고 HTTP GET 명령어를 연속 으로 송하는 것으로 단된다

제 3 Netbot의 행 분석 환경 구성

이 에서는 Netbot을 분석하기 한 환경 구성에 하여 기술한다

다양한 공격을 해 공격자가 사용하는 도구는 Netbot Attacker이며

Netbot Attacker에서 사용자들의 컴퓨터를 감염시키기 한 Agent를

생성하여 이메일이나 게시 등을 통해 유포시킨다 Netbot의 Agent에

감염된 수많은 사용자의 컴퓨터들은 공격자가 원격 제어를 할 수

있으며 주로 DDoS 공격에 이용된다

따라서 Netbot을 분석하기 한 환경을 구축하고 Netbot의 공격

경로 특징 등을 분석한다

(그림 6-1) Netbot의 동작 개념도

- 67 -

그림 6-1은 Netbot의 동작 개념도이다 이에 따라 표 6-2와 같이 분석

환경을 구성한다

Roll Machine Tools

공격자 Computer-1 Netbot Attacker 51

좀비Computer-2

(VMware)

Netbot Agent

Wireshark Process Monitor

TCPview

계사이트 웹서버 -

공격 상 Computer-3 Wireshark

[표 6-2] Netbot의 분석 환경 구성

o 공격자 공격자 역할을 하는 컴퓨터(Computer-1)에서 Netbot

Attacker를 통해 Agent를 생성한다

o 좀비 Netbot Attacker를 통해 생성한 Agent를 감염시킨다 분석

도구로 설치한 Process Monitor를 통해 일 지스트리 변경을

기록하고 TCPview를 통해 연결된 로토콜과 IP 주소

포트번호를 확인하며 Wireshark를 통해 들어오고 나가는 트래픽을

장한다

o 계사이트 좀비가 CampC에 속하기 한 공격자 컴퓨터의 IP

주소를 포함한 txt 일을 장한다

o 공격 상 공격자가 좀비를 이용하여 공격을 하는 상이며

Wireshark를 통해 트래픽을 장한다

- 68 -

제 4 Netbot의 특징

Netbot Attacker를 통해 Agent를 생성할 때 2가지의 옵션을 선택할

수 있다 첫 번째는 정상 서비스인 ldquoBITS(Background Intelligent

Transfer Service)rdquo를 변경하는 것이고 두 번째는 ldquosvchostexerdquo를 새로

생성하고 서비스에 등록하는 것이다 이는 좀비 컴퓨터가 감염되었을

때 지스트리의 변경과 서비스 등록에 향을 주게 된다

이 게 생성된 Netbot의 Agent 실행 일( agentexe)을 실행시킬

경우 시스템 시작 시 실행될 수 있는 로세스들을 등록하여 원치

않는 동작이 자동으로 수행될 수 있고 일을 수정하거나 괴할 수

있다 한 실행되는 동안 로세스가 생성될 수 있으며 지스트리 키

생성 지스트리 값이 수정될 수 있다

이 에서는 Netbot의 Agent 일인 agentexe를 좀비 컴퓨터에서

실행시켰을 때 일과 지스트리의의 생성 변경 과정을 나타낸다

1 BITS 옵션 선택

선택하는 옵션에서의 BITS는 소 트웨어 업데이트를 조 씩

다운로드할 수 있도록 하는 기술인 Background Intelligent Transfer

Service의 약자이며 Windows에서 서비스로서 동작한다 Netbot의

Agent 일 생성시 이 옵션을 선택함으로써 서비스를 변조하여 은닉에

사용할 수 있다

가 일 변경

Netbot Attacker에서 BITS 옵션을 선택하여 생성된 Agent 실행

일이 일반 사용자의 컴퓨터에서 실행되고 감염이 되면 1955984_res

tmp와 같은 임시 일이 생성되고 이때 앞의 7자리 숫자는 랜덤하게

생성된다 이 임시 일은 NetNtExdll로 일 이름이 변경되어

Windows의 system32 폴더로 이동된다 NetNtExdll 일은 Netbot

Agent의 실체이며 servicesexe에 dll 형태로 인젝션되어 서비스 형태로

- 69 -

등록되어서 동작하게 된다 한 Netbot의 Agent는 beepsys 일을

수정하는데 이는 SSDT 테이블을 수정함으로써 분석도구를 이용한

모니터링을 방해하는 루트킷이다 NetNtExdll beepsys 일의

생성과 수정이 완료되면 Netbot Agent의 최 실행 일은 삭제되고

SysEventEvt 일을 수정하여 이러한 일 변경에 한 이벤트 로그를

삭제한다

표 6-3은 이러한 과정을 나타낸 것이다

순서 내 용

1 agentexe 실행

2CDocuments and SettingsUserLocal SettingsTemp 폴더 내에

1955984_restmp 일을 생성 (이때 7자리 숫자는 랜덤)

3 1955984_restmp가 NetNtExdll로 변경

4 CWINDOWSsystem32 폴더로 NetNtExdll 일 이동

5CWINDOWSsystem32drivers 폴더의 beepsys를 수정

(루트킷 설치)

6 agentexe 삭제

7 CWINDOWSsystem32configSysEventEvt 수정

[표 6-3] Netbot Agent 감염 시의 일 변경

나 지스트리 변경

앞서 설명하 듯이 Netbot Attacker를 통해 Agent를 생성할 때

어떠한 옵션을 선택하 는가에 따라 감염된 컴퓨터에서 지스트리의

변경과 서비스 등록에 향을 주게 된다 표 6-4는 BITS 옵션을

선택하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 수정되는 HKLMSYSTEMCurrentCo

ntrolSetServicesBITSParameters의 ServiceDll 지스트리 키는

인젝션된 NetNtExdll 일의 치를 기록한다 servicesexe에 의해

생성 수정되는 지스트리 키들은 Netbot의 기능들을 동

서비스로써 컨트롤하기 한 것으로 단된다

- 70 -

순서 내 용

1agentexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetServicesBITSParameters

2

serviceexe에 의한 지스트리 키 생성

HKLM1)SYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

3

serviceexe에 의한 지스트리 키 수정

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_BITS0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_TAPISRV0000

Control

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_RASMAN0000

Control

HKLMSYSTEMCurrentControlSetServicesBITS

[표 6-4] Netbot Agent 감염 시의 지스트리 변경(BITS)

2 SVCHOST 옵션 선택

가 일 변경

Agent를 생성시킬 때 SVCHOST 옵션을 선택하더라도 표 6-3과 같이

일의 생성 변경은 동일한 패턴을 나타낸다

1) HKLM HKEY_LOCAL_MACHINE

컴퓨터에 설치된 하드웨어와 소 트웨어의 모든 설정사항이 장되어 있으며

특히 하드웨어 하드웨어를 구동시키는 데 필요한 드라이버와 설정사항이

장되어 있다

- 71 -

나 지스트리 변경

표 6-5는 SVCHOST 옵션을 선택하고 설명에는 ldquoMediaCenterrdquo를

입력하여 생성한 Agent를 실행시켰을 때 변경되는 지스트리를

나타낸 것이다 agentexe에 의해 서비스에 등록될 수 있도록 Svchost의

krnlsrvc의 값을 수정하고 ServiceDll 지스트리 키는 인젝션된

NetNtExdll 일의 치를 기록한다 한 Windows가 부 될 때 자동

시작하도록 서비스를 등록한다

순서 내 용

1agentexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

2

agentexe에 의한 지스트리 값 수정

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterParameters

3

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

4

serviceexe에 의한 지스트리 키 생성

HKLMSYSTEMCurrentControlSetEnumRootLEGACY_MediaCenter

0000Control

HKLMSYSTEMCurrentControlSetServicesMediaCenter

HKLMSYSTEMCurrentControlSetServicesMediaCenterSecurity

[표 6-5] Netbot Agent 감염 시의 지스트리 변경 (SVCHOST)

- 72 -

제 5 Netbot의 공격 트래픽

이 에서는 Netbot의 분석 환경 내에서 제3 의 그림 6-1과 같이

Netbot의 동작 개념도에 따라 실제로 Netbot Attacker를 이용한 공격을

수행하고 이에 한 트래픽 분석을 기술한다

1 공격자 컴퓨터(CampC)와 좀비의 연결

먼 좀비 컴퓨터가 Netbot의 Agent에 감염되면 그림 6-2와 같이

계 사이트에 속하여 공격자 컴퓨터(CampC)의 IP 주소와 포트 번호

정보를 얻는다

(그림 6-2) 좀비와 계 사이트 사이의 통신

다음으로 그림 6-3과 같이 좀비는 CampC의 IP 주소와 포트 번호

(80HTTP)에 SYN 패킷을 보내면서 CampC에 지속 인 연결을 시도한다

- 73 -

(그림 6-4) CampC와 좀비의 연결 설정 정보 송

(그림 6-3) CampC에 한 좀비의 연결 시도

공격자의 컴퓨터에서 Netbot Attacker를 실행할 경우 그림 6-4와

같이 공격자 컴퓨터와 좀비의 연결이 이루어진다 한 연결이

이루어진 직후 좀비는 HTTP 로토콜을 통해 CampC에 패킷을

송하는데 이는 좀비의 운 체제 CPU 메모리 등 컴퓨터 사양과

련된 정보를 송하는 것으로 단된다 실제로 공격자 컴퓨터에서

실행한 Netbot Attacker에서 Netbot의 Agent에 감염된 좀비

컴퓨터들의 사양을 확인할 수 있다

- 74 -

2 Netbot을 이용한 공격

CampC와 좀비의 연결이 설정된 후 Netbot Attacker를 통해 실제로

SYN Flood 공격을 수행하 다 이때 CampC에서 좀비로 송한 공격

명령 패킷은 그림 6-5와 같다

(그림 6-5) 좀비에 한 공격 명령 송

wwwtargetcom은 공격 상이며 좀비는 공격 명령 패킷을 수신한

직후 그림 6-6과 같이 공격 상에게 공격 패킷(SYN)을 지속 으로

송한다 공격 상에게 다량의 공격 패킷을 송할 때 사용되는 포트

번호의 범 는 1037~1056(20개)이고 각각의 포트 번호를 통해 패킷을

하나씩 송하게 된다

(그림 6-6) 공격 패킷 송

- 75 -

그러나 시간이 지날수록 공격에 사용되는 포트 번호의 범 가

변경되는 것을 확인할 수 있었으며 범 에 속한 포트 번호의 개수는

총 20개 다 즉 처음 20개의 포트 번호를 사용하여 총 3번을 한

사이클로 공격 패킷을 송하고 다음 20개의 포트 번호를 사용한 공격

패킷 송을 반복하는 것이다 표 6-6은 이러한 패턴을 나타낸 것이다

Cycle 사용되는 포트 번호의 범

1

1

1037~10562

3

2

1

1057~10762

3

3

1

1077~10962

3

hellip hellip hellip

[표 6-6] 포트 번호 범 사용의 패턴

- 76 -

제 6 Netbot의 Code Injection

일반 인 응용 로그램은 사용자의 필요에 의해 실행된다 그러나

Netbot과 같은 악성코드는 악성행 를 하기 해 항상 실행되어야

하며 언제나 사용자에 의해 실행이 된다는 보장이 없으므로 감염

당시에 이러한 사항을 고려하여 미리 자신을 자동 으로 실행되도록

시스템을 조작한다 즉 Netbot은 자신의 기능이 담긴 바이 리 코드를

도우 시스템에 삽입(Injection)해야 한다

이 에는 Netbot에서 사용하는 코드 삽입(Code Injection)에 하여

기술한다

1 코드 생성

Netbot의 Agent는 실행이 가능한 EXE 일로 구성되어 있다

사용자에 의해 일이 실행되는 순간 Netbot의 주된 악성행 를

담당하는 DLL 일과 루트킷을 담당하는 SYS 일로 나 어지게 되고

EXE 일은 삭제된다 DLL의 경우 NetNtExdll nbjsdll BITSExdll

등의 일명을 가지며 SYS 일의 경우 Beepsys의 일명을 가진다

Netbot에 감염되었다는 것은 생성된 DLL 일이 컴퓨터에 삽입

(Injection)되었다는 것을 의미한다 Netbot의 Agent는 감염된 컴퓨터의

CWindowsSystem32 폴더에 DLL 일을 생성한다 그러나 이

일은 탐색기에서 확인이 불가능하며 이는 같이 설치되는 RootKit

때문인 것으로 단된다 그림 6-7은 CWindowssystem32 폴더를

이름순으로 정렬한 결과이나 해당 DLL(NetNtExdll) 일이 나타나지

않는다 따라서 그림 6-8과 같이 ldquo시작 gt 실행(R)rdquo을 통해 직 해당

DLL 일의 존재 여부를 확인하고 그림 6-9와 같이 PE Explorer

도구로 직 근하 다

- 77 -

(그림 6-7) NetNtExdll 일 확인 불가능

(그림 6-8) NetNtExdll 일 존재 확인

- 78 -

(그림 6-9) PE Explorer를 통해 분석한 NetNtExDLL 일

이와 같이 해당 DLL 일은 탐색기 등을 통해서는 찾아볼 수 없으나

실제로는 존재하는 일임을 확인할 수 있다

2 Registry 생성

단계에서 생성된 DLL 일을 도우가 실행될 때 자동 으로

시스템에 삽입하기 하여 Netbot은 해당 악성코드를 도우의

서비스로 장하며 이러한 과정에서 지스트리를 변경하게 된다

Netbot Attacker에서 Agent를 생성할 때 그림 6-10과 같이 서비스

명칭 서비스 설명과 같은 항목을 지정한다 이 항목들은 감염된

시스템의 지스트리 제어 의 서비스 리에 사용된다

- 79 -

(그림 6-10) Netbot의 Agent 생성

그림 6-11은 Netbot에 감염되기 과 후의 지스트리를 비교한

것이며 지스트리의 HKLMSYSTEMCurrentControlSetServices에

새로운 키를 생성한다 감염 후를 나타낸 부분에서 Agent를 생성할 때

사용한 ldquoMediaCenterrdquo라는 이름의 키가 새로 생성된 것을 확인할 수

있다 한 ldquoMediaCenterrdquo의 지스트리 키 에서 ldquoParametersrdquo에는

악성행 를 한 악성코드의 치가 명시되어 있다 ldquoParametersrdquo

지스트리 키의 값 에서 ServiceDll이라는 이름의 문자열 값은

서비스의 DLL 일을 나타내며 CWINDOWSsystem32NetNtExdll

인 것을 확인할 수 있다(그림 6-12) 해당 DLL은 도우의 서비스로

등록되어 시스템이 시작할 때 시스템의 메모리에 로드된다

- 80 -

(그림 6-11) 감염 후의 지스트리 비교

(그림 6-12) 지스트리 값에 명시된 DLL의 치

- 81 -

한 표 6-7과 같이 지스트리 키의 값들을 변경한다

HKLMSYSTEMCurrentControlSetServicesMediaCenter

DisplayName MS Media Control Center

ErrorControl 0

ImagePath SystemRootSystem32svchostexe -k krnlsrvc

ObjectName LocalSystem

Start 2

Type 16

[표 6-7] 지스트리 키 값 변경

그림 6-13은 지스트리에 등록되어 생성된 도우 서비스의 목록2)을

나타낸 것이다

(그림 6-13) 감염 후 서비스 목록

2) 도우 서비스 목록

도우의 서비스 목록은 Windows XP를 기 으로 했을 때 ldquo제어 gt 리

도구 gt 서비스rdquo에서 확인할 수 있다

- 82 -

서비스 목록에서 사용하는 이름과 설명에 표시되는 내용은 Netbot

Attacker에서 Agent를 생성할 때 사용한 2번째와 3번째 항목의 값이

된다 서비스 목록에서 ldquoMS Media Control Centerrdquo 항목이 존재하는

것을 확인할 수 있다 이는 Netbot의 Agent에 의해 도우에 새로운

서비스가 등록된 것이다

실제로 해당 DLL이 메모리에 로드된 것을 확인하기 하여 Process

Explorer 도구를 사용하여 DLL을 검색하 다

그림 6-14는 로세스의 목록 에서 NetNtExdll을 찾은 것이다 그

결과 NetNtExdll이 도우 시스템에서 서비스를 리하는 svchostexe

에 삽입된 것을 확인할 수 있었다 즉 Netbot의 악성행 를 한

코드가 시스템에 삽입(Injection)된 것이다

(그림 6-14) NetNtExdll 삽입 확인

- 83 -

3 RootKit

Netbot의 Agent가 감염될 때 Beepsys 일을 수정하여 루트킷이

설치된다 이는 자신을 은닉하기 하여 디바이스 드라이 를 설치하고

커 벨에 후킹된다 그 결과 일이나 지스트리의 변화를

모니터링할 수 없도록 한다 즉 탐색기에서 일의 변화를 찰할 경우

루트킷이 일의 생성 내용을 감추기 때문에 NetNtExdll의 생성

기록이 남지 않고 일의 존재 여부도 확인하기 어렵다 한 Process

Monitor의 RegMon과 같은 모니터링 도구를 통해 지스트리의 변화를

찰할 경우 루트킷이 SSDT 테이블에서의 변화 기록을 삭제하여

지스트리에 변화가 없는 것처럼 조작한다

- 84 -

참고문헌

[1] 보안뉴스 (httpwwwboannewscom)

[2] 디지털타임스 (httpwwwdtcokr)

[3] 보호나라 (httpwwwbohoorkr)

[4] Anubis Analyzing Unknown Binaries (httpanubisiseclaborg)

[5] Wire Shark (httpwwwwiresharkcom)

[6] 한국정보보호진흥원 ldquo분산서비스거부 공격도구 Netbot 분석 보고

서rdquo 2008

- 85 -

제 7 장 악성코드 유형에 따른 자동화 분석 방법

제 1 자동화 분석 방법

본 연구에서 제안하는 악성코드 유형에 따른 자동화 분석 방법은

그림 7-1과 같은 과정으로 이루어진다

(그림 7-1) 악성코드 자동화 분석 방법의 개념도

- 86 -

특징 도출 단계에서는 특징 분석 환경 내에서 특징 도출 로세스를

통해 일 분석 지스트리 분석 로세스 분석 네트워크 분석 API

추출 Bloom Filter를 이용한 Bit Array 추출 코드 유사도 계산 등

악성코드의 행 코드에 한 선행 분석을 수행하고 이를

명세화하여 자동화 분석 단계에 사용할 수 있는 각각의 악성행

코드 특징을 도출한다 그리고 도출된 특징은 특징 DB에 장하게

된다 그림 7-1에 나타낸 특징 도출 로세스는 자동으로 동작하며

자동 분석 단계에서도 악성코드 의심 일을 자동으로 분석하기 해

사용된다 한 악성코드가 아닌 일반 로그램의 일을 분석하여 그

결과를 화이트리스트 DB에 장하기 해서도 특징 도출 로세스를

사용한다

상호작용 단계에서는 이 단계에서 특징 도출 로세스에 의해

도출된 악성코드의 특징이 화이트리스트 DB와 연동된 화이트리스트

필터를 통과한다 화이트리스트 필터링을 통해 도출된 악성코드의

특징들에 하여 분석가가 확인하는 상호작용 과정을 거쳐 특징 DB에

장된다 이러한 특징 DB는 분석을 해 입력된 악성코드의 특징과

비교분석하는 도구가 된다 한 일반 로그램의 일을 분석하여

도출된 특징들은 분석가의 확인을 거쳐 화이트리스트 DB에 장되기도

하는 단계이다

자동화 분석 단계에서는 악성코드로 의심되는 일이 입력으로

주어지면 특징 도출 단계에서 사용되었던 특징 도출 로세스가

재사용된다 즉 자동으로 행 기반 분석과 코드 기반 분석을 수행하여

특징들을 추출하고 이 특징들을 비교분석 모듈이 특징 DB에 장된

것과 비교한다 그 결과 수행하는 악성행 코드 특징 악성코드의

분류 결과 등을 도출하여 리포트한다

제 2 에서는 본 연구에서 특징 분석 환경을 통해 수동으로

악성코드의 특징을 도출하는 방법을 기술하고 이어서 각 단계에 한

세부 인 방법론을 기술한다

- 87 -

제 2 특징 분석 환경

악성코드의 특징을 도출하기 해서는 악성코드를 분석하기 한

특별한 환경이 필요하다 그 이유는 악성코드의 분석 과정에서 실제

네트워크나 시스템이 악성코드로부터 향을 받지 않아야 하기

때문이다 이와 동시에 악성코드가 수행하는 악성행 모니터링

코드 분석 등에 필요한 도구들 역시 마련되어 있어야 한다 이러한

분석 환경에는 가상머신(Virtual Machine)이나 허니팟(Honeypot)

샌드박스(Sandbox) 등이 존재한다 가상머신은 환경 구성 모니터링

등이 용이하고 실제 시스템과 논리 으로 분리되어 있으며 악성코드를

실행하여 감염시키기 의 정상 인 상태로 빠른 복구가 가능하다는

장 이 있다

본 연구에서는 악성코드의 분석을 통한 특징 도출 실험을 해

가상머신 환경을 선택하여 사용하 으며 샌드박스의 경우 본 연구의

진행에 있어서 악성코드 실행 분석에 한 제약이 다수 존재하여

배제하 다 한 검증을 해 그림 7-2와 같이 동 분석의 범 인

지스트리 일 로세스 네트워크 그리고 정 분석의 범 인 코드

분석에 하여 각각 다양한 도구를 이용한 수동 분석을 수행하 다

수동 분석에서는 다양한 도구를 사용하 으나 이후 제시하는 자동

분석에서는 각각의 수동 분석 도구를 체할 수 있는 통합 자동 분석

도구가 필요하다

(그림 7-2) 악성코드 특징 도출 단계(수동)

- 88 -

1 지스트리 모니터링

지스트리는 Windows 운 체제에서 시스템의 모든 설정을

모아두는 앙 장소라고 할 수 있다 이는 Windows의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 모든 작업이

지스트리에 기록된 정보를 바탕으로 진행된다 만약 시스템이

악성코드에 감염된다면 지스트리의 변조 등의 변화가 발생한다

악성코드는 Windows가 시작될 때 자동으로 실행 는 로딩되도록

하거나 백신 개인 방화벽에 의한 탐지 차단을 회피하기 하여

지스트리를 조작한다 따라서 악성코드에 의해 주로 사용되는

지스트리가 무엇인지 악하고 이를 분석하여 악성코드의 유형에

따라 각각 생성 수정하여 사용되는 지스트리를 분류

정리함으로써 악성코드 자동 분석에 이용할 수 있도록 한다

악성코드에 의한 지스트리 변경 모니터링을 해서는 RegMon

RegShot WinAlysis 등과 같은 도구를 사용한다 이러한 도구들을

이용함으로써 그림 7-3과 같이 악성코드가 감염되기 과 감염된 후의

지스트리 변화를 정리할 수 있으며 악성코드의 유형 그 종류에

따라 주요 지스트리의 변화를 특징 DB의 지스트리 테이블에

장한다

(그림 7-3) 지스트리 변경 모니터링

- 89 -

표 7-1은 지스트리 모니터링 도구인 RegMon을 이용하여

악성코드의 주요 지스트리 변경에 한 모니터링 결과이다 사용된

악성코드 샘 은 AhnLab V3 안티바이러스 제품에서 Win-TrojanInjec

t58368으로 진단된 것이다

(그림 7-4) 악성코드 샘

구분 내 용

키 생성

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

HKLMSystemCurrentControlSetServiceswer32

HKLMSystemCurrentControlSetServiceswer32Security

값 수정

지스트리 키

값 이름 데이터

HKLMSystemCurrentControlSetEnumRootLEGACY_RASMAN0000Control

ActiveService RasMan

HKLMSystemCurrentControlSetEnumRootLEGACY_TAPISRV0000Control

ActiveService TapiSrv

HKLMSystemCurrentControlSetServiceswer32

ErrorControl

ImagePath

Start

Type

0

CWINDOWSsystem32jkghjedll

1

1

HKLMSystemCurrentControlSetServiceswer32Security

Security0x01001480900000009c000000140000003300000000200

1c00010000000280

[표 7-1] 지스트리 변경 모니터링

- 90 -

2 일 모니터링

사용자의 필요에 의하여 응용 로그램을 설치할 때 새로운 일들이

생성된다 뿐만 아니라 시스템이 악성코드에 감염되었을 경우에도

일이 생성되거나 변경된다 악성코드는 실제로 존재하던 일과

유사한 이름의 일을 생성하여 장하거나 완 히 다른 이름의

일을 생성한 후 일의 존재를 숨기기도 한다 한 몇몇의 루트킷과

같은 악성코드는 자신을 은닉하기 하여 디바이스 드라이버를

설치하여 커 벨에서의 후킹을 시도한다 즉 이는 하드디스크에

새로운 일을 생성하는 과정인 것이다 이러한 일 변화의 특징을

이용하여 로세스의 장매체 사용 모니터링 의심되는 일의

생성을 모니터링한다 한 악성코드에 의하여 일이 생성되거나

변경되는 것을 모니터링하기 해서는 FileMon WinAlysis 등과 같은

도구를 사용하고 악성코드의 유형 그 종류에 따라 일의 생성

변경을 모니터링하여 이를 특징 DB의 일 테이블에 장한다

표 7-2는 일 모니터링 도구인 FileMon을 이용하여 악성코드의

주요 일 변경에 한 모니터링 분석 결과이다 사용된 악성코드

샘 은 지스트리 모니터링에서 사용한 Win-TrojanInject58368이다

구분 내 용

일 생성

경로 CWINDOWSsystem32

일명 jkghjedll

MD5 b33933c516bae37817bf287627d5d8c3

SHA-1 7fce8545fc72b893341f6b0c24ea11227a81f72f

[표 7-2] 일 변경 모니터링

- 91 -

3 로세스 모니터링

로세스는 컴퓨터 내에서 실행 인 로그램의 인스턴스이다

로그램은 하드디스크와 같은 보조기억장치로부터 메모리로 로드되어

작업을 수행 에 있을 때 하나의 로세스가 된다 따라서 Windows

에서 하나의 로그램이 실행되면 이와 련된 로세스들이 실행된다

한 악성코드가 실행되는 경우에도 로세스가 생성된다 이에

악성코드가 실행됨에 따라 변화하는 로세스를 모니터링한다 그리고

이러한 로세스들을 모니터링하는데 사용되는 도구로는 표 으로

Process Monitor IceSword Process Explorer 등이 존재하며 Process

Explorer는 분석자들이 가장 많이 사용하는 도구로 알려져 있다

Process Explorer는 Windows의 작업 리자와 비슷하지만 로세스의

세부 인 정보를 확인할 수 있고 새로 생성되거나 제거되는 로세스도

모니터링할 수 있다 한 특정 로세스에서 사용되고 있는 DLL

모듈의 리스트를 확인할 수 있으며 이는 악성코드를 분석할 때

로세스와 련된 DLL 일들을 찾아내는 데 유용하다 최근의

악성코드는 Windows에 포함된 작업 리자에서 로세스가 표시되지

않도록 숨기는 기능도 있으나 이러한 로세스 모니터링 도구를 통해

숨겨진 로세스 역시 확인한다

따라서 로세스 모니터링이 가능한 도구를 사용하여 악성코드에

의한 로세스 변화에 하여 악해야 하며 특히 로세스를 숨기는

행 는 일반 인 응용 로그램에서 거의 수행되지 않는 부분이기

때문에 악성코드에 의한 로세스로 간주하여 해당 악성코드의

특징으로 정의할 수 있다 그리고 모니터링된 로세스는 악성코드의

유형 종류에 따라 특징 DB의 로세스 테이블에 장한다

그림 7-6은 일 모니터링 도구인 Process Explorer를 이용하여

악성코드에 의한 로세스 변경에 한 모니터링 결과이다 악성코드

샘 은 AhnLab V3 안티바이러스 제품에서 Win32Zhelratinworm118

784MP으로 진단된 것으로 Storm 의 일종이다 그림 7-6은

악성코드가 생성하는 로세스를 나타낸 것이다

- 92 -

(그림 7-5) 악성코드 샘

(그림 7-6) 로세스 변경 모니터링

4 네트워크 모니터링

최근의 악성코드 부분은 사용자의 컴퓨터를 감염시킨 후 인터넷을

통해 해커나 공격자에게 연결하는 기능을 갖는다 즉 시스템이

악성코드에 감염되었을 경우 사용자의 컴퓨터를 모니터링하거나

컴퓨터에 장된 데이터를 유출시키는 기능을 가진 백도어 트로이목마

등의 악성코드라면 특정 도메인 IP 주소 포트번호에 한 속을

시도하게 된다 이를 통해 해커나 공격자는 사용자들의 다양한 정보와

데이터를 획득할 수 있으며 해당 악성코드에 감염된 컴퓨터들을

조종하여 각종 공격에 이용할 수도 있다

따라서 악성코드가 네트워크에서 어떤 행 를 하는지 모니터링해야

할 필요가 있으며 모니터링 결과 도출된 속 도메인 IP 주소

포트번호에 하여 특징 DB의 네트워크 테이블에 장한다 한 당

- 93 -

발생하는 트래픽량에 한 임계치(Threshold)를 정의하고 이를

과하는 경우 악성코드에 의한 것으로 의심할 수 있다

네트워크 모니터링을 하여 TCPView TDIMon 등의 도구를 사용할

수 있으며 이를 통해 재 속 인 도메인 IP 주소 포트번호를

모니터링한다 한 Wireshark 등과 같은 도구로도 기록된 패킷들을

분석하여 악성코드가 속하려는 도메인을 찾아내고 해당 악성코드의

유형에 따라 특징 DB에 장한다

그림 7-7은 네트워크 모니터링 도구인 TCPView를 이용하여

악성코드의 속 IP 주소와 포트번호에 한 모니터링 결과이다

사용된 악성코드 샘 은 지스트리 일 모니터링에서 사용한

Win-TrojanInject58368이다 그림 7-7은 속하는 IP 주소와

포트번호를 나타낸 것으로 IP 주소 2087216954와 포트번호 80번에

하여 주기 으로 통신을 시도한다

(그림 7-7) 네트워크 모니터링

5 코드 분석

악성코드가 어떤 동작을 하는지 분석하기 해서 악성코드를 직

실행하여 악성코드가 수행하는 행 들을 모니터링하는 방법 외에도

실행코드의 세세한 부분을 살펴 으로써 직 실행을 통해 도출할 수

없었던 기능을 악하고 코드의 어느 부분이 어떤 악성행 에

사용되는 코드인지 분석한다 이는 악성코드의 모든 실행에 하여

- 94 -

철 히 분석할 수 있어 직 실행에 따른 피해가 없다는 장 이 있으나

많은 시간이 요구되는 단 도 있다

악성코드가 Windows에서 실행되기 해서는 실행 가능한 일

포맷인 PE(Portable Executable) 형식을 가지고 있기 때문에 PE

Explorer PEView Bintext와 같이 PE 일을 분석하는 도구를

사용하여 악성코드에서 사용하는 문자열 삽입된 DLL 함수 호출 등을

추출하여 악성코드의 유형 종류에 따라 특징 DB에 장한다 한

IDA Pro나 Ollydbg와 같은 코드 분석 도구를 사용하여 악성코드를

기능 단 의 모듈로 분할(partitioning)하고 각각의 기능 모듈 에

하여 Bloom Filter를 통해 Bit Marking하여 Bit Array를 도출하여

유사도 계산에 사용한다 한 Bit Marking 결과를 특징 DB에

장한다

(그림 7-8) 함수에 한 Bloom Filtering

- 95 -

제 3 특징 도출 단계

특징 도출 단계는 특징 도출 로세스의 행 기반 분석과 코드 기반

분석을 통해 특징을 자동으로 도출한다 Input은 특징 도출의 상으로

화이트리스트 DB에 장하기 한 일반 로그램과 악성코드 특징

DB에 장하기 한 악성코드 2가지가 가능하다 그리고 화이트리스트

DB와 특징 DB에 장하기 한 Output은 행 코드 기반 분석의

결과이다 이를 정리하면 다음과 같다

(그림 7-9) 특징 도출 로세스(자동)

o Input

- 분석 상 일반 로그램 는 악성코드

o Output

- 행 기반 주요 일 지스트리 로세스 변경 항목

네트워크 연결 행

- 코드 기반 API 리스트 Bloom Filter 결과값(코드 유사도)

- 96 -

1 행 기반 분석

Input으로 주어지는 악성코드에 하여 특징 도출 로세스에서 API

후킹을 통해 행 기반 분석을 수행한다 한 일반 로그램을

상으로 분석이 가능하다 즉 API 후킹을 함으로써 악성코드가

실행됨에 따라 호출되는 함수들에 의한 일의 변화 지스트리의

변화 로세스의 변화 등을 모니터링 하고 특징을 추출한다

(그림 7-10) 행 기반 분석

가 API Hooking

Windows는 기본 으로 3개의 DLL(kernel32dll user32dll gdi32dll)에

부분의 API를 구 하여 제공하고 응용 로그램은 실행 시 자신의

로세스 주소 공간으로 이들 DLL을 맵핑한 후 사용한다 한 API

후킹은 어떤 로그램에서 API 호출을 가로채고 분석가가 작성한

로그램의 함수가 처리할 수 있도록 하는 메커니즘이며 로그램이

어떠한 언어로 개발되었는지에 계없이 용될 수 있기 때문에

디버깅이나 역추 모니터링 등에도 사용할 수 있다 간단한 를 들면

자동 단어 인식을 이용한 자사 로그램의 경우 마우스 커서가

가리키는 단어를 인식하도록 Windows 메시지 후킹 API

- 97 -

후킹(TextOutAW)을 이용한 것이다

후킹이 용되는 벨의 측면에서 보면 API 후킹은 커 벨과

사용자 벨의 2가지 메커니즘으로 구분된다 그림 7-11은 각 후킹의

치를 나타낸 것으로 Windows에서 모듈간의 계와 의존성을

나타낸다 이 2가지의 요한 차이 은 커 벨 후킹의 Interception

엔진은 커 모드 드라이버로 포장되지만 사용자 벨 후킹은

일반 으로 사용자 벨 DLL을 사용한다는 것이다

(그림 7-11) API 후킹 벨 - 커 사용자 벨

따라서 본 연구에서 제시하는 API 후킹을 이용한 행 기반 분석

방법은 API 함수 호출을 제어할 수 있는 기능을 통해 API 호출시

발생되어 보이지 않는 특정 행 도 추 할 수 있다는 특징을 이용한다

- 98 -

(1) 사용자 벨 후킹

o IAT(Import Address Table) Hooking 일반 인 로그램에서

API를 호출할 때 IAT(Import Address Table)을 사용한다 이 IAT의

필드 값을 새로운 함수의 주소로 체함으로써 후킹이 가능하다

o EAT(Export Address Table) Hooking GetProcAddress()라는

Windows API는 특정 모듈의 함수 주소를 반환한다 이는 IAT

다음으로 많이 사용되는 호출 방법으로 GetProcAddress()를 사용해

함수 포인터를 취득한 후 호출하는 방법이다 그러나 이 함수는

EAT를 사용하기 때문에 이를 조작하면 함수의 결과값 역시 조작이

가능하다

o Detour-Style Hooking 후킹 상 함수의 첫 부분에 원하는 함수로

이동하는 Jump 명령을 삽입한 후 손상된 부분은 트렘펄린

(Trampoline)이라 불리는 역에 보 한다 이 트렘펄린은 후킹

함수 내에서 원래 함수를 호출하여 정상 으로 처리될 수 있도록

호출된다

o Debugging 디버거를 연결함으로써 후킹과 비슷한 작업을 할 수

있다 를 들면 해당 API의 코드 첫 부분에 INT3 Breakpoint를

통해 단 을 삽입하거나 외를 발생시킬만한 코드를 삽입한다

o Native API Hooking Native API(Zw Nt)를 후킹할 때 주로

사용되는 방법 하나이다 Native API를 호출하는 Zw 함수들은

MOV EAX XXXXXXXX(SSDT Idx) 형태로 시작하는데 이 SSDT

Idx에 새로 만든 SSDT Entry를 추가하고 그 아이디를 넣어서

후킹한다

- 99 -

(2) 커 벨 후킹

o SSDT(System Service Descriptor Table) Hooking Windows NT

계열에서는 Native API 주소들을 보 하는 테이블(SSDT)이 있다

이 테이블 내의 함수 주소를 바꾸거나 혹은 테이블 자체를

로그램 내부 메모리로 redirect 함으로써 후킹이 가능하다

o IATEAT Hooking 사용자 벨과 비슷한 방법으로 구 이

가능하며 EAT Hooking은 MmGetSystemRoutineAddress()등의

결과값을 조작하기 해 이용할 수 있다

o Debug Register Hook 디버그 지스터를 이용함으로써 후킹이

가능하며 그 에 INT1 interrupt를 가로채야 한다

o IDT(Interrupt Descriptor Table) Hooking SIDT 명령어를

사용하면 IDT 테이블 주소를 구할 수 있고 이 IDT 테이블 내의

인터럽트 처리 주소를 바꿈으로써 특정 인터럽트를 후킹할 수 있다

주로 INT1이나 INT3을 후킹하기 해 사용된다

o IRP Hooking 특정 드라이버의 IRP를 후킹할 수 있다

o Detour Hooking 사용자 벨 후킹과 동일하다

o SYSENTER 주소 변경 IA32_SYSENTER_EIP MSR 값을 변경하여

후킹이 가능하다

o SIngle Byte Patching INT(0xCD) 명령을 이용한 후킹으로 를

들어 binary가 E9 37 같이 시작하면 E9를 CD로 체하여 INT

0x37이란 명령으로 바꾼 후 INT 0x37 IDT entry를 후킹하는

방법이다

나 일 련 API 함수 라미터

표 7-3은 일 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 후킹을 했을 때 각 함수의 라미터들을

통해 생성되는 일명을 악함으로써 일 변화에 한 특징을

도출한다 일 변화와 련된 표 인 API 함수로 CreateFile()

CopyFile() GetModuleFileName()이 사용될 수 있다

- 100 -

API 함수 라미터 설명

CreateFile() lpFileName 생성하고자 하는 일 이름

CopyFile()lpExistingFileName

lpNewFileName

복사하려는 원본 일 이름

복사하여 생성될 일 이름

GetModuleFile

Name()lpFilename 일의 경로

[표 7-3] 일 변경 모니터링에 이용 가능한 API 함수

다 지스트리 련 API 함수 라미터

표 7-4는 지스트리 변경 모니터링을 해 사용될 수 있는 API

함수 라미터를 나타낸 것이다 로그램이나 악성코드는

지스트리에 데이터를 추가시키기 에 지스트리 키를 생성하거나

열어야 한다 이와 련된 표 인 API 함수로는 RegCreateKey()

RegOpenKey() RegSetValue()가 사용될 수 있다 각 라미터를 통해

지스트리 변화를 도출한다

API 함수 라미터 설명

RegCreateKeyEx()

RegCreateKey()hKey lpSubKey

지스트리 키 생성을 해 사용

되는 표 키와 경로

RegOpenKeyEx()

RegOpenKey()hKey lpSubKey

지스트리 키 오 을 해 사용

되는 키와 경로

RegSetValueEx()

RegSetValue()

hKey lpValueName

lpData

해당 지스트리 키에 값 데이

터 지정

[표 7-4] 지스트리 변경 모니터링에 이용 가능한 API 함수

라 로세스 련 API 함수 라미터

표 7-5는 로세스 변경 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이와 련된 API 함수로는

CreateProcess() TerminateProcess() WinExec()가 사용될 수 있다 각

라미터를 통해 실행한 로세스명을 도출한다

- 101 -

API 함수 라미터 설명

CreateProcess()lpApplicationName

lpCommandLine

생성할 로세스의 실행 일명

생성할 로세스의 라미터 문자열

TerminateProcess() hProcess해당 로세스가 종료되도록 하

는 핸들

WinExec() lpCmdLine

특정 Application을 실행

( 일 이름 옵션 라미터를

포함한 커맨드 라인 실행)

[표 7-5] 로세스 변경 모니터링에 이용 가능한 API 함수

마 네트워크 련 API 함수 라미터

표 7-6은 네트워크 모니터링을 해 사용될 수 있는 API 함수

라미터를 나타낸 것이다 이는 소켓 API를 이용한다 각 함수

라미터를 이용하여 네트워크 련 행 를 도출한다 한 sendrecv

함수의 경우 라미터 에서 송되는 데이터량을 이용하여 다음과

같이 당 패킷량을 계산한다

패킷수혹은수

API 함수 라미터 설명

send()recv() len 송 데이터의 길이

inet_ntoa() in IP 주소

connect() name 연결되는 호스트

gethostbyname() name 호스트 이름으로 호스트 정보 검색

[표 7-6] 네트워크 모니터링에 이용 가능한 소켓 API 함수

- 102 -

2 코드 기반 분석

악성코드의 유형별 자동화 분석에서 코드 기반 분석 방법으로 PE

일 분석을 통해 악성코드에서 이용되는 API를 추출하고 코드

유사도를 도출하는 방법을 제시한다 이 방법은 악성코드에서 사용된

API 함수들을 바탕으로 하며 자동화 분석 방법에서 하나의 모듈이

된다 한 행 기반 분석의 결과 도출된 특징들과 함께 특징 DB에

장된 항목들과 비교분석의 상이 된다

이를 해서는 그림 7-12와 같이 악성코드에 사용된 API를 구분하는

것이 무엇보다 요하다 따라서 Windows에서 사용되는 실행 일

형식인 PE 일의 분석을 통해 악성코드에 사용된 API와 함수를

도출해야 한다

(그림 7-12) 악성코드의 API 구분

가 PE 일

PE(Portable Executable) 일은 Windows 운 체제에서 사용되는

실행 일 객체 코드(Object Code) DLL에 한 일 구조이며 실행을

하기 한 일련의 규칙들을 가지고 있다 한 Portable이라는 용어는

운 체제 구조의 다양한 환경에서 포맷에 하여 융통성이 있음을

의미한다 즉 PE 구조로 된 일들은 랫폼에 계없이 각 버 별

Windows 운 체제가 구동되는 시스템이면 어디에서나 동일한

형식으로 사용될 수 있다 PE 일 포맷은 Windows 운 체제 로더가

실행 코드를 리하는데 필요한 정보를 캡슐화한 데이터 구조이다

이는 링크를 한 동 라이 러리 참조와 API Export Import

- 103 -

테이블 리소스 리 데이터 쓰 드 로컬 장 데이터를 포함한다

일반 으로 EXE 일을 실행하게 되면 Windows 운 체제 로더가

일의 구조를 분석하고 메모리에 로드하여 로그램의 진입 으로

들어가게 하며 로드하는 동안 일 내부의 Import 정보를 통해 필요한

DLL도 찾아 메모리에 로드한다

따라서 자동화 분석을 한 코드 기반 분석에서는 이러한 PE 일의

정보를 분석하여 악성코드에서 사용된 API나 함수들을 도출해야 한다

나 PE 분석을 통한 자동 코드 기반 분석 방법

악성코드의 유형별 자동화 분석 방법에서 특징 도출 로세스는 PE

일 분석을 이용한 API 기반의 코드 분석 방법을 포함한다 PE

일의 정보 분석을 수행함으로써 IAT(Import Address Table)를 찾고

IAT에서 Import Function들을 추출하여 리스트를 작성한다 이 Import

Function 리스트는 특징 DB에 장된 악성코드별 사용 API들을

상으로 비교되어야 한다

악성코드의 유형별 자동화 분석 방법을 한 코드 기반 분석 역시

선행되는 특징 도출 로세스를 통해 특징 DB에 장이 되어야 하며

이후 미확인(unknown) 일 는 악성코드로 의심되는 일을

분석하기 해 사용되는 분석 로세스 도구는 같다 그러나 특징 도출

단계에서 도출된 특징은 자동 분석과 분석가의 상호작용이 함께

이루어져야 한다는 에서 차이가 있다 이는 일반 인 로그램에서

자주 사용되지 않는 악성코드만의 API와 함수를 찾아내는 작업이다

재 PE 일 분석을 한 도구로는 PE Explorer PE View Import

RE Constructor 등이 존재한다 본 방법론을 제시하기 해서 이러한

도구들을 사용하 다 표 으로 PE Explorer는 EXE DLL SYS

OCX SCR 등 다양한 실행 일의 정보를 보여주는 로그램이다

따라서 PE Explorer와 같은 기능을 하는 모듈이 악성코드 통합 분석

도구에 포함되어야 한다 그리고 해당 도구를 통해 IAT(Import

Address Table)에 나타는 API 함수들로부터 특정 유형의 악성코드에서

공통 으로 사용된 항목들을 도출한다 도출된 결과는 특징 DB의 한

가지 요소로서 장하고 자동화 분석 단계에서 악성코드로 의심되는

- 104 -

미확인(unknown) 일을 입력으로 주었을 때 이러한 특징 DB의

데이터를 반 하여 악성코드를 분석하는데 이용된다

(그림 7-13) 코드 기반 분석

다 Netbot에 사용된 API 함수

본 연구에서는 API 코드 기반 분석 방법 제시를 하여 Netbot에서

사용된 API 함수들을 추출하 다 한 그림 7-12에 나타낸 악성코드

고유의 부분에 한 분류를 하기 하여 FTP 로그램(ALFTP) 인터넷

라우 (IE7) 메모장 원격제어 로그램의 실행 일 등에서도 API

함수들을 추출하 다 Netbot 에이 트의 각 버 (475155)에

공통 으로 Import되는 DLL은 표 7-7과 같다 한 다른 일반

로그램과의 Import Function 비교를 부록에 첨부한다

Import DLL

KERNEL32dll USER32dll GDI32dll

ADVAPI32dll SHELL32dll WS2_32dll

AVICAP32dll MSVCRTdll

[표 7-7] Netbot 에이 트의 Import DLL

- 105 -

USER32dll에서는 악성행 를 하여 표 7-8과 같이 표 인

함수들을 Import한다 이는 Windows에서 감염된 컴퓨터에 장된

데이터를 조회하기 해 사용되는 것으로 분석된다 그러나 이러한

함수들만으로는 Netbot의 특징으로 단정 짓기 어렵다

Import DLL 함 수

USER32dll

CloseDesktop CloseWindow

CloseWindowStation GetProcessWindowStation

OpenDesktopA OpenWindowStationA

[표 7-8] USER32dll의 함수

ADVAPI32dll에서는 표 7-9와 같이 Windows 서비스 등록 삭제

등 서비스 제어 련 함수들을 사용한다 이는 Netbot 에이 트를

서비스에 등록함으로써 Windows가 시작될 때 자동으로 실행되도록

하기 해 사용된 것으로 분석된다

Import DLL 함 수

ADVAPI32dll

ChangeServiceConfigA CloseServiceHandle

ControlService CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

RegisterServiceCtrlHandlerA SetServiceStatus

StartServiceA

[표 7-9] ADVAPI32dll의 함수

AVICAP32dll에서는 표 7-10과 같은 함수를 사용한다 이 함수들은

일반 으로 웹캠이나 다른 비디오 하드웨어로부터 AVI movie 혹은

video를 장하는데 사용되지만 Netbot에서는 감염된 사용자 컴퓨터의

화면을 캡처할 때 사용되는 것으로 분석된다

- 106 -

Import DLL 함 수

AVICAP32dllcapCreateCaptureWindowA

capGetDriverDescriptionA

[표 7-10] AVICAP32dll의 함수

WS2_32dll에서는 표 7-11과 같은 함수를 사용한다 이는 공격자가

감염된 컴퓨터와 연결하여 통신을 하기 해 사용된 소켓 함수로

분석된다 한 일반 인 로그램에서 WSOCK32dll이 주로 Import

되는 반면 Netbot에서는 WS2_32dll이 Import 되었다

Import DLL 함 수

WS2_32dll WSASocketA

[표 7-11] WS2_32dll의 함수

라 Bloom Filter를 이용한 코드 유사도 추출

(1) Bloom Filter

Bloom Filter는 통계 특성을 가지는 자료구조이다 Bloom Filter를

이용하면 많은 양의 데이터를 정해진 크기의 공간에 효율 으로 장할

수 있으며 빠른 검색이 가능하다 2m

비트의 공간을 사용하는 Bit

Array가 존재할 경우 데이터를 장하기 해 해쉬 함수 H를 통하여

치에 한 정수값을 계산하고 Bit Array 에서 해당 치를 1로

Set한다

- 107 -

(그림 7-14) Bloom Filter의 동작

그림 7-14는 0으로 모두 clear가 된 Bit Array에 n1이라는 값을

장하기 하여 해쉬 함수 H(n1)의 결과값인 1 2 2 -1 번째 Bit를

1로 Set하여 기록한다 그 후 다음 입력값인 n2를 기록하기 하여

H(n2)의 결과값에 해당하는 0 2 2m-1 번째 Bit를 1로 Set한다

이와 반 로 장된 Bit Array에 N이라는 값이 존재하는지 확인하기

해서는 동일한 해쉬 함수를 사용한다 즉 그림 7-15에서 해쉬 함수

H를 통하여 N의 값을 계산한 후 N에 한 값만을 가지고 있는 Bit

Array 설정값를 생성하여 기존의 장된 Bit Array와 AND 연산을

통하여 해당 결과값 R이 H(N)과 같은 경우에는 N은 Bit Array에

포함된 것이며 그 지 않은 경우에는 N은 Bit Array에 포함 되어있지

않다는 것을 의미한다

- 108 -

(그림 7-15) Bloom Filter의 동작(탐색)

이와 같이 Bloom Filter는 해쉬 함수를 통하여 입력값의 크기에

상 없이 모두 동일한 크기의 Bit Array로 데이터를 생성할 수 있으며

문자열 매칭이나 여타 방법에 비해 비교 쉽게 포함 여부를 확인 할

수 있다 그러나 해쉬 함수가 잘 정의되어있지 않은 경우에는 충돌이

잦아지고 False Positive가 발생할 수 있는 반면 False Negative는

발생하지 않는다

(2) 코드 유사성 도출 련 연구

코드 유사성을 도출하기 한 기존의 방법으로 Carrera et al(2004)과

Gheorghescu(2005)가 악성코드의 유사성을 도출하기 한 방법을

제안하 다

Carrera et al은 Atomic Function의 Signature를 생성하여 비교하는

방법을 제안하 다 여기서 Atomic Function이란 Windows API

라이 러리와 같이 다른 실행 코드도 포함할 수 있는 함수를 제외한

나머지 함수를 호출하지 않는 함수를 의미한다 즉 자신이 함수 호출

계에 있어 최하 함수인 것이다 이러한 Atomic Function의

리스트를 Lα라 할 때 Function의 Signature는 해당 Function이

호출하는 Atomic Function의 치를 1로 설정하고 그 지 않은 경우

0으로 설정하며 이러한 리스트는 Function의 Signature가 되어

Function을 표하게 된다

Gheorghescu는 함수를 Basic Block 단 로 나 어 각각을 비교하는

방식을 제안하 다 여기서 Basic Block이란 하나의 진입 (Entry

- 109 -

Point)과 하나의 종료 (Exit Point)를 포한한 연속하는 명령어의 집합을

의미한다 즉 Basic Block은 코드의 의미를 나타내는 작은 단 가 되는

것이다 이 게 추출한 Basic Block을 Edit Distance Inverted Index

Bloom Filter 등의 비교를 한 자료구조 알고리즘으로 Basic Block

간의 유사도를 계산하 다

(3) 제시하는 코드 유사도 도출 방법

본 연구에서는 코드 유사도에 한 기존의 연구와 Bloom Filter를

목하여 악성코드 유형에 따른 자동화 분석 방법의 코드 기반 분석에

용하 다 두 코드의 유사도를 도출하기 해서는 코드를 비교하여야

한다 그러나 코드를 직 비교하는 것은 많은 계산량을 필요로 하며

코드의 특징을 장하기 해 많은 공간이 필요하다 한 코드의

순서나 코드의 특징을 변하지 못하는 명령어가 비교 상으로

사용되기 때문에 합하지 않다 따라서 본 연구에서는 코드를

의미단 (함수)로 분할하 으며 함수의 Signature는 그 함수가

사용하는 Windows API 라이 러리 이름의 해쉬값을 Bit Array로

장하여 사용하 다

를 들어 함수 A에서 CreateFile 함수를 사용하고 Bloom Filter가

8-Bit를 사용하여 H(ldquoCreateFilerdquo) = 1 4 5라는 Bit Array 설정값이

나온다면 함수 A의 Signature는 그림 7-16과 같다 한 함수 C가 함수

A와 B를 호출할 경우 그림 7-17과 같이 함수 C는 자신이 호출하는

라이 러리의 해쉬값과 함수 A와 B의 Signature를 OR 연산한 값을

사용한다

(그림 7-16) Bloom Filtering의 1

- 110 -

(그림 7-17) Bloom Filtering의 2

Bloom Filter를 이용하여 도출한 Bit Array 결과값은 Function을

표한다 하나의 로그램에는 수많은 Function이 존재하며 각

Function마다 Bloom Filter 값이 할당된다 따라서 이러한 Function을

모두 비교하여 두 로그램 간의 유사도를 수치로 도출하는

알고리즘이 필요하다 이에 본 연구에서의 유사도 계산 방법은 Carrera

et al이 제안한 방법을 사용하 다 두 로그램에 한 Bloom Filter

결과값의 집합을 각각 A와 B로 정의할 때 두 로그램의 유사도를

나타내는 함수 는 다음과 같이 정의된다

cup ∙

|A|는 집합 A의 원소 개수를 나타낸다 함수를 이용하여 A와

B의 유사도를 계산할 수 있다 한 는 lele를

만족하며 그 결과값이 0에 가깝다면 유사도가 낮은 것이고 1에

가깝다면 유사도가 높다는 것을 의미한다

제시한 방법에 한 효율성을 확인하기 몇 개의 개체에 한 실험을

진행하 으며 다음과 같은 환경에서 실험하 다

o IDAPro (Disassembler)

- IDAPro는 Disassemble은 물론 함수간의 계 등을 도식화하여

나타내주는 툴이다

- 111 -

o IDAPython (Tracing Script)

- IDAPython은 IDA API와 Python을 결합한 IDAPro 러그인의

한 종류이다 즉 기존의 C 언어나 IDC를 통하여 작성해야 했던

IDAPro의 러그인을 간단하지만 강력한 Python의 문법을 통해

구 할 수 있다 한 Python의 공개된 모듈을 사용하여

함수간의 계를 쉽게 도식화 할 수 있다는 장 이 있다 Tracing

Script는 코드의 모든 함수를 스캔하고 함수에 한 Bloom

Filtering을 하여 출력한다 한 로그램에 존재하는 함수에

하여 Bloom Filtering을 수행하도록 작성한 Python 스크립트는

부록에 첨부한다

o Python (Comparing Script)

- Comparing Script는 Tracing Script에서 도출한 두 개의

로그램에 한 유사도를 계산하여 결과를 출력한다 이를 해

Python을 통해 간단한 스크립트를 작성하 다 Comparing

Script는 Tracing Script의 결과로 출력된 txt 간의 유사도를

비교하는 것이다 한 작성한 Python 스크립트는 부록에

첨부한다

제시한 방법을 검증하기 하여 NetBot 47 51 55 버 과 다른

일반 인 응용 로그램을 비교하 다 사용된 함수 하나의 Signature에

한 Bit Array의 크기는 1024 Bit이다

v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

버 v 47 v 51 v 55

[표 7-12] 넷 의 코드 유사도 비교

- 112 -

표 7-12에 나타낸 결과로 알 수 있듯이 NetBot은 다른 버 별로

비교했을 때 05에서 06 사이의 유사도 값을 보인다 한 수치가

어느 정도의 유사도를 나타내는지에 하여 다른 로그램과의

유사도를 측정하여 비교할 필요가 있다

본 실험에서는 NetBot과 노트패드 원격 제어 로그램 Torrent 등의

로그램간의 유사도를 비교한다 로그램의 선택 기 은 NetBot의

행 와 유사한 행 여부로 선정하 다 노트패드의 경우 NetBot과

유사한 행 가 거의 없으며 원격 제어 로그램의 NetBot의 그것과

동일하다 마지막으로 Torrent는 소켓 통신 등의 행 를 하기 때문에

비교 상으로 선정하 다

넷v 47 1000

v 51 0562 1000

v 55 0568 0591 1000

노트패드 0263 0261 0265 1000

원격제어 0270 0277 0274 0262 1000

uTorrent 0080 0096 0088 0083 0112 1000

로그램v 47 v 51 v55

노트패드 원격제어 uTorrent넷

[표 7-13] 넷 과 다른 로그램의 유사도 비교

표 7-13에서 확인할 수 있듯이 NetBot과 다른 응용 로그램은

008에서 ~ 027 내외의 유사도를 나타낸다 즉 본 연구에서 제안한

방법으로 코드의 유사도를 비교할 수 있다

그림 7-18부터 그림 7-22까지는 각 로그램별 코드 호출 계도를

나타낸 것이다

- 113 -

(그림 7-18) Netbot Agent(v47)

- 114 -

(그림 7-19) Netbot Agent(v51)

(그림 7-20) Netbot Agent(v55)

- 115 -

(그림 7-21) Notepad

(그림 7-22) NateOn 원격제어

- 116 -

제 4 상호작용 단계

상호작용 단계에서는 특징 도출 단계에서 도출된 악성코드 일반

로그램의 특징을 분석가의 확인을 거쳐 악성코드 특징 DB 는

화이트리스트 DB에 장한다 이때 분석가의 확인을 거치는 특징들에

한 정보는 다음과 같다

o 일 변경 항목

o 지스트리 변경 항목

o 로세스 변경 항목

o 네트워크 행

o API 함수 Bit Array(Bloom Filter 결과값)

(그림 7-23) 상호작용 단계

- 117 -

o Input

- 일반 로그램 악성코드의 주요 일 지스트리 로세스

변경 항목 네트워크 연결 행 API 함수 Bit Array

o Output

- 화이트리스트 DB 완 무결한 일반 로그램에 한 특징

- 악성코드 특징 DB 악성코드의 특징

1 화이트리스트 DB

화이트리스트 DB는 악성코드가 아닌 기존의 일반 인 로그램에

하여 특징 도출 로세스를 용하고 그 결과 도출된 특징들을

장하는 DB이다 이는 악성코드를 분석하기 에 선행되어야 하는

과정이라고 할 수 있다

이 의 특징 도출 단계에서 일반 로그램을 Input으로 주었을 때

각각 도출되는 일 지스트리 로세스 변경 항목과 네트워크 연결

행 API 함수 Bit Array는 분석가의 검토를 거친 후 각 항목들에

하여 화이트리스트 DB의 각 테이블에 장한다 화이트리스트 DB와

악성코드 특징 DB는 형식은 같으나 그 내용과 그 성격이 다르다

DB의 구성 형식은 제 6 에서 설명한다

2 화이트리스트 필터

화이트리스트 필터는 특징 도출 단계에서 분석된 일

지스트리의 변화 로세스의 변화 네트워크 행 Bit Array와 같이

다양한 악성코드의 특징을 악성코드의 특징 DB에 장하기 에

화이트리스트 DB와 연동된 화이트리스트 필터를 통과함으로써

악성코드에서만 사용되는 특징이 특징 DB에 장되도록 해주는 역할을

한다

- 118 -

(그림 7-24) 화이트리스트 필터

화이트리스트 필터에는 각각의 비교 모듈을 두며 화이트리스트

DB의 각 테이블을 참조하여 단계에서 도출된 특징들을 비교하여

필터링을 한다 필터링된 각각의 특징들은 악성코드 특징 DB의 각

테이블에 장한다

3 분석가와의 상호작용

화이트리스트 DB 는 악성코드 특징 DB에 장을 하기

시스템은 분석가와의 상호작용을 한다 도출된 각각의 특징들을

분석가에게 보여주고 분석가는 검토를 통해 DB에 장되지 않도록

제외시킬 항목에 하여 단한다

- 119 -

제 5 자동화 분석 단계

선행 단계로써 수행된 특징 도출 단계 상호작용 단계를 거쳐

악성코드의 특징 DB가 마련된 후 자동화 분석 단계에서 악성코드로

의심되는 일이 Input으로 주어지면 특징 도출 로세스가 해당

일을 분석한다 따라서 악성코드 특징 DB에 장된 데이터와 특징

도출 로세스에서 도출된 결과들은 비교분석기에 의해 비교가

이루어짐으로써 악성코드 의심 일에 하여 분석 결과 악성코드의

유형을 리포트한다

(그림 7-25) 자동화 분석 단계

o Input

- 악성코드 의심 일

o Output

- 악성코드 의심 일의 분석 결과

- 악성코드의 유형 특징 DB에서의 일치 항목

- 120 -

1 특징 도출 로세스

자동화 분석 단계에서의 특징 도출 로세스는 악성코드로 의심되는

일을 Input으로 받아 분석하며 그 과정은 악성코드의 특징 DB를

구성하기 한 선행단계인 특징 도출 단계에서의 로세스와 같다 즉

특징 도출 단계에서 사용된 특징 도출 로세스가 자동화 분석

단계에서 재사용되며 일 지스트리 로세스 변경 항목 네트워크

행 API 함수 Bloom Filter 결과인 Bit Array를 도출한다 도출된

특징들은 비교분석기의 각 모듈로 달된다

2 비교분석기

비교분석기에는 각각의 항목들을 비교하는 모듈을 포함된다 특징 도

출 로세스에서 도출된 악성코드 의심 일의 각 특징들은 비교분석기

의 각 항목 비교 모듈들에 달된 후 악성코드 특징 DB의 데이터를

참조하여 비교분석이 이루어진다 즉 특징 도출 로세스에서 도출되는

일 지스트리 로세스 변경 항목 네트워크 행 API 함수 Bit

Array에 하여 각각의 모듈들이 악성코드 특징 DB의 각 테이블을 검

색하고 비교한다

3 분석 결과 리포트

비교분석기가 각 항목들을 특징 DB의 각 테이블과 비교한 후 표

7-14와 같은 형태로 결과를 종합하여 리포트한다

- 121 -

특징 분석 결과

항목 특징 내용 DB 일치

일 일 생성 Y Y

일명 NetNtExdll Y

경로 CWindowssystem32 N

해쉬값 faa50d8e76e411dc00940bd89a390d3c N

지스트리 키 생성 Y Y

생성 키 경로

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_BITS0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_TAPISRV0000Control

HKLMSYSTEMCurrentControlSetEnum

RootLEGACY_RASMAN0000Control

Y

수정 키 값의

경로

HKLMSYSTEMCurrentControlSetServices

BITSParametersY

값 이름 ServiceDll Y

값 데이터 CWindowssystem32 Y

로세스 로세스 생성 N Y

로세스명 - Y

네트워크 연결 발생 Y Y

속 IP 주소 21124811046 Y

속 포트번호 80 N

코드 API 함수

ChangeServiceConfigA

CloseServiceHandle ControlService

CreateServiceA DeleteService

OpenServiceA QueryServiceStatus

SetServiceStatus StartServiceA

capCreateCaptureWindowA

capGetDriverDescriptionA

Y

Bit Array010001011101000000101001hellip(2

m)

010010111100011001010101hellip(2m)N

종합 결과

sampleexe 백도어 DDoS 공격 도구

Windows 시작시 서비스 등록

원격 모니터링 제어 가능

코드 유사도

with Netbot 47 with Netbot 51 with Netbot 55

0562 1000 0591

[표 7-14] 분석 결과 리포트의

- 122 -

제 6 DB의 구성

본 연구에서 제시하는 DB는 악성코드에 한 특징 DB와 일반

로그램에 한 화이트리스트 DB 2가지이다 그리고 이러한 DB들은

선행 구축 단계가 필요하다 화이트리스트 DB는 특징 도출 단계에서

완 무결한 일반 로그램의 특징을 도출하여 장한다 악성코드 특징

DB는 분석 환경에서 다양한 악성코드를 분석하여 도출된 특징들을

악성코드의 유형에 따라 장한다 이러한 DB는 여러 개의 테이블로

나 어 구성된다 특징 도출 로세스에서 도출한 특징들인

일 지스트리 로세스 변화 항목 네트워크 활동 코드의 API 함수

Bloom Filtering 결과(Bit Array)가 DB의 각 테이블에 장된다

화이트리스트 DB와 악성코드 특징 DB는 형식은 같으나 사용되는

목 이 다르므로 그 내용과 성격은 다르다

(그림 7-26) DB의 구성

1 유형

특징 DB에 악성코드의 특징을 장하기 해서는 악성코드의

유형별로 분류가 되어야 한다 따라서 유형 항목은 특징 DB의 각

테이블의 첫 번째 필드가 된다 필드명은 MAL_TYPE으로 정의할 수

있으며 악성코드의 유형과 련된다 기본 으로 DDoS 공격 도구

백도어 루트킷 키로거 웜 바이러스 트로이목마 스 이웨어

애드웨어 등 여러 가지 악성코드에 하여 분류한다

- 123 -

2 File 테이블

File 테이블은 일의 생성 수정과 련된다 이에 앞서서 행

기반 분석의 방법으로 API 후킹을 제시하 다 API 후킹을 통해 File

변경에 한 모니터링이 가능하며 API 함수에 포함되는 라미터를

통해 일명 일의 경로에 한 정보를 얻을 수 있다 즉 API 후킹을

통해 CreateFile() 함수 GetModuleFileName() 함수의 호출을 가로채고

각 함수의 라미터인 lpFileName을 통해 일의 이름과 경로를 알 수

있다 이러한 결과로 다음과 같은 특징들을 장한다

일 생성

(C_)

FIELD 설명

C_FILE 일의 생성 여부 YN 는 10

C_FILE_PATH 생성 일의 경로 CWINDOWSsystem32

C_FILE_NAME 생성 일의 이름 NetNtExdll

C_FILE_MD5 일의 해쉬값 faa50d8e76e411dc00940bd89a390d3c

일 수정

(M_)

FIELD 설명

M_FILE 일의 수정 여부 YN 는 10

M_FILE_PATH 수정 일의 경로 CWINDOWSsystem32drivers

M_FILE_NAME 수정 일의 이름 beepsys

3 Registry 테이블

Registry 테이블은 지스트리의 생성 수정과 련된다 API

후킹을 통해 지스트리 변경에 한 모니터링 함으로써 API 함수

라미터를 통해 지스트리 키의 생성과 값의 변화를 특징으로

장한다 RegCreateKey() RegOpenKey() 함수의 라미터를 통해

지스트리를 생성 는 수정하기 한 키와 경로에 한 정보를 얻고

RegSetValue() 함수의 라미터를 통해 해당 지스트리 키에 장하는

값과 데이터에 한 정보를 얻는다

- 124 -

o RKEY - 지스트리 키

o RVALUE - 지스트리 값

지스트리

키 생성

FIELD 설명

RKEY_CREATE지스트리 키의 생성

여부YN 는 10

RKEY_PATH생성 지스트리 키의

경로

HKLMSYSTEMCurrentContr

olSetServicesMediaCenter

지스트리

값 수정

(M_)

FIELD 설명

RVALUE_MODIFY지스트리 값의 수정

여부YN 는 10

RVALUE_PATH수정 지스트리 값의

경로

HKLMSYSTEMCurrentContr

olSetEnumRootLEGACY_BI

TS0000Control

RVALUE_NAME 지스트리 값의 이름 ServiceDll

RVALUE_DATA 지스트리 값의 데이터CWINDOWSsystem32Net

NtExdll

4 Process 테이블

Process 테이블은 로세스의 생성 숨김과 련된다 API 후킹을

통해 로세스 변경을 모니터링하며 API 함수의 라미터를 통해 얻는

생성 종료 로세스 정보를 장한다 표 으로 CreateProcess()

함수의 lpApplicationName 라미터나 WinExec() 함수의 lpCmdLine

라미터를 통해 생성되는 로세스에 하여 알 수 있다

로세스

FIELD 설명

PROCESS_CREATE 로세스 생성 여부 YN 는 10

PROCESS_HIDE 로세스 숨김 여부 YN 는 10

PROCESS_NAME 로세스 이름 svch0stexe

- 125 -

5 Network 테이블

Network 테이블은 네트워크의 활동과 련된다 앞에서 제시한

방법과 마찬가지로 API 후킹을 통해 네트워크 연결에 하여

모니터링하고 API 함수의 라미터를 통해 네트워크 연결 발생 IP

주소와 포트번호 트래픽량에 한 정보를 얻는다

네트워크

FIELD 설명

CONNECTION 네트워크 연결 발생 여부 YN 는 10

DES_HOST 목 지 호스트 wwwxxspycom

DES_IP 목 지 IP 주소 211248144xxx

DES_PORT 목 지 포트번호 80

TRAFFIC_BPS 트래픽의 양 (bps) 5000

6 Code 테이블

Code 테이블은 PE 일에서 악성행 에 하여 사용되는 API

함수와 추출된 함수들의 이름으로 Bloom Filter를 용한 결과값 Bit

Array를 장한다

Code

FIELD 설명

API_LIST특정 악성행 와 련된

API

capCreateCaptureWindowA

capGetDriverDescriptionA

BF_VALUE함수 이름에 한

Bloom Filter 용 결과00100111000010010011helliphellip (2n)

- 127 -

제 8 장 연구 결과 향후 연구 진행 방향

제 1 연구 결과 요약

기존에는 악성코드를 탐지 수집하고 분석하여 응함에 있어서

거의 부분이 수동으로 이루어졌다 그러나 악성코드의 수와 종류가

계속해서 증가하고 있기 때문에 이에 한 신속한 응이 어려워지고

있다 이러한 문제 들을 해결하기 해서는 악성코드의 분석에 한

자동화된 방법과 이를 뒷받침해 수 있는 도구가 필요하다 따라서 본

연구에서는 악성코드의 유형에 따라 자동화된 분석 방법을 제시하고자

다음과 같은 연구를 진행하 다 기본 으로는 Netbot의 악성행

특징을 분석하고 이를 다양한 유형의 악성코드에 한 특징 분석이

가능하도록 확장하 다

o 악성코드의 정의 분류 방법 유형별 특징 분석

- 악성코드의 유형별 정의와 분류 방법 조사

- 악성코드의 유형별 특징 분석

- 기존의 악성코드 자동 분류 방법 조사 분석

- 지스트리 분석

- 악성코드가 사용변경하는 일 지스트리 조사

o 분석 방해 기술(안티디버깅 분석 우회 방법) 조사

- 안티디버깅 기술의 유형 동작방식 조사

- 가상머신 탐지 기술 조사

o 루트킷 커 악성코드 유형 분석

- 루트킷 커 악성코드의 유형 동작방식 조사

o 기존의 악성코드 자동 분류 방법 조사

- 128 -

o 넷 의 악성행 특징 분석

- 넷 을 이용한 공격 악성행 분석

- 정 분석을 통한 넷 의 특징 분석

o 악성코드의 자동화 분석 방법론 제시

- 특징 도출 로세스

행 기반 분석 일 지스트리 로세스 변화

네트워크 행

코드 기반 분석 API 추출 코드 유사도 계산

- 화이트리스트 DB 악성코드 특징 DB

- 비교분석기를 이용한 자동 분석 방법

제시한 악성코드의 유형에 따른 자동화 분석 방법론은 3가지 단계로

이루어진다 특징 도출 단계에서 일 분석 지스트리 분석 로세스

분석 네트워크 행 분석 API 추출 Bloom Filtering을 통해 행

코드 특징을 추출한다 상호작용 단계에서 이러한 특징들을 DB에

장하기 해 분석가와의 상호작용을 한다 그리고 선행된 악성코드

특징 분석 DB 구축을 바탕으로 자동화 분석 단계에서 악성코드

의심 일이 Input으로 주어졌을 때 특징 도출 단계에서 사용된 특징

도출 로세스를 재사용하여 분석하고 비교분석기가 특징 DB와

비교분석하여 그 결과를 리포 한다

특징 도출 단계 자동화 분석 단계에 포함된 특징 도출

로세스에서는 행 기반 분석 코드 기반 분석이 이루어진다 행

기반 분석에서는 다양한 도구들을 사용하여 자동화 분석을 한 각

모듈에 한 방향을 제시하 고 코드 기반 분석에서는 PE 일 분석을

통한 API 추출 각 함수명에 한 Bloom Filtering을 통해 코드

유사도를 계산하는 방법을 제시하여 실험하 다

- 129 -

제 2 향후 연구 방향

본 연구과제에서는 악성코드 유형에 따른 자동화 분석 방법론을

제시하 다 이는 특징 도출 단계 상호작용 단계 자동 분석 단계의

3가지 단계로 나뉘며 각 단계에 한 방법론 제시 실험을 하 다

이는 악성코드의 분석에 소모되던 시간을 크게 이고 유사

악성코드에 한 불필요한 분석을 제거하여 새로운 악성코드에 응할

수 있는 시간을 단축함으로써 악성코드에 한 보다 효율 인 분석이

가능할 것으로 기 된다

그러나 제시한 방법론은 효율성을 고려하여 개선되어야 한다 즉 각

단계에서의 분석 모듈들은 서로 긴 하게 연결되고 분석된 특징들을

주고받을 수 있는 인터페이스를 통해 정확한 달이 이루어져야 한다

한 분석 결과에 한 정확도 향상 등에 한 향후 연구가 필요하다

- 131 -

부 록

부록 1 지스트리

지스트리란 도우에서 하나 이상의 사용자 응용 로그램

하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 장하는

앙 계층형 데이터베이스이다 즉 지스트리는 시스템의 모든 설정

데이터를 모아두는 앙 장소라고 할 수 있으며 도우의 부

과정에서부터 로그인 응용 로그램의 실행에 이르기까지 도우에서

행해지는 모든 작업은 지스트리에 기록된 정보를 바탕으로 진행된다

시스템이 악성코드에 감염되었을 경우 일 생성 혹은 지스트리

변경 등의 변화가 발생한다

첫째 시스템 재부 시 악성코드를 실행시키기 해 지스트리를

변조하게 된다

둘재 일의 각 확장자에 따라 어떤 로그램이 연결될지를

결정하는 HKEY_CLASSES_ROOT 치의 값들은 공격자가 임의로

조작하여 특정 확장자 실행 시 원하는 악성코드를 실행시킬 수 있다

셋째 도우 구동 시 여러 가지 운 모드가 있다 특히 안 모드는

시스템에 필요한 기본 인 로그램만 실행된다 그러나 이러한

안 모드에서도 Winlogonexe 이벤트 핸들러를 이용하여 악성코드를

실행시킬 수 있다

따라서 이러한 변화를 분석할 수 있다면 악성코드를 탐지하고

분석하는데 유용하다

도우 지스트리의 종류 역할은 다음과 같다

- 132 -

1 HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT에는 도우에서 사용하는 로그램과 각

로그램에 연결된 확장자에 한 정보 OLE 데이터 일과 단축키

DragampDrop 로그램간의 연결에 한 정보가 장된다 해당 정보는

확장자들이 서 트리(Sub Tree)로 구성되어 있으며 각 확장자는 일

타입과 연결되어 있어 어떤 로그램과 연결되는지 알 수 있기 때문에

Windows 탐색기를 사용하여 일을 열 때 올바른 로그램이

열리도록 해 다

한 HKEY_LOCAL_MACHINESoftwareClasses 키에 동일한

내용이 장되어 있다

2 HKEY_CURRENT_USER (HKCU)

HKEY_CURRENT_USER에는 사용자가 설정한 컴퓨터 환경 정보가

장되어 있으며 사용자의 폴더 화면 색상 제어 설정이 여기에

장된다 한 다수의 사용자가 사용할 경우 각 사용자의 로필이

장되어 있다 이 지스트리 키는 다음과 같은 서 트리를 포함한다

하 키 내 용

AppEvents 도우에서 일어나는 이벤트와 이벤트에 해당하는 효과음

Console 제어 련 내용 (주로 시각 인 설정 내용)

Control Panel 제어 련 내용

Environment 시스템등록정보 화상자의 고 탭에 장된 환경변수

EUDC 사용자 정의 문자와 련된 정의 정보

Identities 아웃룩 익스 스와 메신 를 사용하는 개인 설정

Software도우에 설치된 응용 로그램에 한 정보와 각

로그램이 사용하는 설정 내용

Vilatile

Environment

재 로그온한 사용자의 정보가 장된 폴더 경로와

로그온 서버와 련된 정보

- 133 -

하 키 내 용

Hardware

시스템에 장착된 하드웨어에 한 정보가 각 하 키에

장되어 있다 시스템을 부 할 때마다 하드웨어

인식기인 Ntdetectcom이 하드웨어를 인식해 여기에

새로운 정보를 장한다 그러나 이 키에서는 시스템에

어떤 하드웨어가 장착되어 있는지만 확인할 수 있을 뿐

안에 담긴 내용을 수정할 수 없다

ACPI(Advanced Configuration and Power Interface)

컴퓨터에 연결된 모든 주변기기의 소비 력을 시스템이

조 할 수 있도록 하는 차세 장치 규격

DESCRIPTION 시스템 부 시 하드웨어 인식기인

Ntdetectcom을 이용해 시스템에 실제로 설치되어 있는

물리 인 하드웨어를 검사하여 하드웨어 목록을 장

DEVICEMAP 하드웨어 장치들과 장치 드라이버를 서로

연결

RESORCEMAP 장치드라이버를 DMA채 과 IRQ 같은

물리 인 컴퓨터 자원과 연결

SAM

보안계정 리자의 임말로 네트워크 시스템의 경우 이

키에 네트워크 시스템(도메인 개체 등)과 보안에 한

요사항이 장된다

Security

보안계정 리자와 련된 정보가 장된다 도우 XP는

컴퓨터 한 를 여러 사용자가 함께 사용할 수 있도록

설계되어 있는데 사용자 개개인의 lt시작gt 메뉴에 표시될

3 HKEY_LOCAL_MACHINE (HKLM)

HKEY_LOCAL_MACHINE에는 컴퓨터에 설치된 하드웨어와

소 트웨어의 모든 설정 내용이 장된다 특히 하드웨어와 하드웨어를

구동시키는 데 필요한 드라이버의 설정 사항이 장되기 때문에 매우

요한 키라고 할 수 있다 이 지스트리 키는 다음과 같은 서

트리를 포함한다

- 134 -

항목과 사용자 인터페이스에 련된 정보가 기록되어

있다

Software도우에 설치된 소 트웨어와 디바이스 드라이버에 한

반 인 정보

Classes 도우에 설치된 응용 로그램들과 각 응용

로그램의 일 형식 등에 한 정보

HKEY_CLASSES_ROOT키의 내용과 동일

Client 마이크로소 트 아웃룩 아웃룩 익스 스 등

자우편 리 로그램과 인터넷 익스 로러 등의

웹 라우 련 정보

Microsoft 컴퓨터에 설치된 마이크로소 트사 제품의

특성값과 설정값

System시스템과 련된 드라이버 일 시스템 도우 커

등에 한 정보

ControlSet001hellip 도우가 부 할 때 사용하는 컨트롤

집합

CurrentControlSet 컴퓨터 부 시 사용한 컨트롤 집합

부 에 사용된 컨트롤 집합이 자동으로 여기에 복사됨

MountedDevice 물리 논리 디스크 티션 정보

4 HKEY_USERS

재 로그온되어 있는 사용자에 한 구성 정보의 루트가 포함된다

사용자의 폴더 화면 색상 제어 설정 네트워크 연결등의 정보가

장되며 이 정보는 사용자 로필과 련된다

다 사용자를 지원하는 시스템에서 각 사용자에 한 키 항목이

생성되어 해당 환경에 한 정보가 장된 곳으로 이 에 로그인했던

사용자들을 해 기화 일을 보 한다

- 135 -

5 HKEY_CURRENT_CONFIG

HKEY_CURRENT_CONFIG는 지스트리 에서 가장 단순한

부분으로 HKEY_LOCAL_MACHINE 키의 하 키인 Config 키의

내용을 담고 있다 즉 디스 이에 한 설정 폰트 종류 린터에

한 설정 내용 등이 장된다

- 136 -

Process File 내 용

svchostexe

Service Host Process

Windows에서 동 링크 일(DLL)로 작성된 백그라운드

서비스를 실행해주고 리해주는 호스트 로그램이다

DLL 일은 혼자서 실행이 불가능하기 때문에 OS와 DLL

일의 다리 역할을 하는 svchostexe의 도움을 받는다 하

나의 svchostexe는 다수의 DLL을 실행시킬 수 있다

algexe

Application Layer Gateway Service

인터넷 연결과 공유 방화벽의 핵심 로세스로 안정성과

보안을 해 실행된다

System부분의 시스템 커 모드 스 드가 System 로세스로

실행된다

System Idle

Process

각 로세서에서 실행되는 단일 스 드로 다른 스 드를

처리하지 않을 때의 로세서 시간을 나타내는 일만 한다

smssexe

Session Manager Subsystem

사용자 세션의 시작을 담당하는 세션 리자 하 시스템

이다 이 로세스는 시스템 스 드에서 시작되며

Winlogon Win32(Cwsrssexe) 로세스의 시작과 시스

템 변수 설정을 비롯한 다양한 작업을 수행한다

csrssexe

ClientServer Runtime Server Subsystem

Win32의 하 시스템의 사용자 모드 부분으로 항상 실행

되어야 하는 하 시스템이다 콘솔 창 스 드 생성과 삭

제 16비트 가상 MS-DOS 환경의 일부를 담당한다

winlogonexeWindows Logon Process

사용자 로그온과 로그오 를 리하는 로세스이다

servicesexe

Windows Service Controller

시스템 서비스의 시작 지 시스템 서비스와의 상호작

용을 담당하는 서비스 제어 리자이다

lsassexe Local Security Authority Service

부록 2 운 체제시스템에서 사용되는 로세스

- 137 -

Winlogon 서비스에 필요한 인증 로세스를 담당한다

spoolsvexe

Printer Spooler Service

스풀링 된 인쇄팩스 작업 리를 담당한다 린터의 작

업을 장하고 린터가 비되면 작업을 보낸다

lsassexe

로컬 보안 인증 서버로 winlogon 서비스에 해 사용자를

인증하는 로세스를 생성한다 이 로세스는 기본

Msginadll과 같은 인증 패키지를 사용하여 수행된다

rundll32exe32bit DLL을 로드하여 실행한다 즉 DLL 일을 실행

로그램과 연결하여 실행해주는 유틸리티 로그램이다

explorerexe

Program Manager

작업표시 바탕화면 등으로 표시되는 사용자 쉘이다

Window를 실행하는데 필수 이지는 않다

taskmgrexeThe Windows Task Manager

작업 리자 자체에 한 로세스이다

Mstaskexe사용자가 미리 정한 시간에 작업을 실행하는 일을 담당하

는 작업 스 러 서비스이다

- 138 -

부록 3 악성코드가 사용변경하는 일 지스트리

악성코드 에서도 트로이목마가 사용하거나 변경하는 일

지스트리를 정리하 다

Win-TrojanAgent9216HX (안철수연구소)

분류 트로이목마 (20090323)

Win-TrojanAgent9216HX 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로 실

행되도록 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

ImagePath = 도우 시스템 폴더msscreenexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

Msscreen

DisplayName = msscreen

실행 시 1gif 일을 표시하고 도우 시스템 폴더에 다음

일을 생성한다

- 1gif

- msscreenexe

도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가 입

력하는 키보드 입력 값을 가로채어 송한다 한 다양한 악

의 인 스크립트를 실행하는 경우도 있다 속을 시도하는 리

스트는 다음과 같다

- 617862180

- 139 -

Win-TrojanAgent99324 (안철수연구소)

분류 트로이목마(2009-03-21)

Win-TrojanAgent99324 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKCUSoftwareMicrosoftWindowsCurrentVersionRun

zhido = cwindowssystem32zhidoexe

도우 폴더에 다음 일을 생성한다

- expiorerexe

도우 시스템 폴더에 다음 일을 생성한다

- haozs0dll

- zhidoexe

- cao220dll

- cao110dll

Temp 폴더에 다음 일을 생성한다

- 1exe

속 도메인

아래의 사이트에서 악의 인 일을 다운로드 시도한다

wwwingycmaufmgwtt

wwwingycmaufm1rr

212362780

2746212

- 140 -

Win-TrojanAgent47104JM (안철수연구소)

분류 트로이목마(2009-03-20)

Win-TrojanAgent47104JM 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWinlogon

Userinit = cwindowssystem32userinitexerr64_bexe

일도우 시스템 폴더에 다음 일을 생성한다

- rr64_bexe

Win-TrojanAgent33280LK (안철수연구소)

분류 트로이목마(2009-03-15)

Win-TrojanAgent33280LK 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

s NTCurrentVersionWindows

AppInit_DLLs = 도우 시스템 폴더mmmhxihxdll

도우 시스템 폴더에 다음 일을 생성한다

- mmmhxihxdll

실행폴더에 다음 일을 생성한다

- prevedbat

- 141 -

Win-TrojanAgent701440C (안철수연구소)

분류 트로이목마(2009-03-11)

Win-TrojanAgent701440C 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Srvices

MIBUSn

ImagePath = 도우 폴더systemwmibusnexe

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

core86

ImagePath = 도우 시스템 폴더driverscore86sys

도우 폴더system에 다음 일을 생성한다

- wmibusnexe

도우 시스템 폴더drivers에 다음 일을 생성한다

- sysdrv32sys

속 도메인

속을 시도하는 리스트는 다음과 같다

120044 ~ 120194

12182054 ~ 12182074

20901818

6554871

6555521

65555213

91161018

- 142 -

TrojanWin32RT-Agnet67584B (하우리)

분류 트로이목마(20090305)

ldquo2090 바이러스rdquo로 알려진 이 바이러스에 감염되면 도우 시스템 시간이

2090년 1월 1일 오 10시로 변경된다 감염된 시스템에서 악성코드의

생성과 실행 과정에서 메모리를 과다하게 사용하여 시스템이 다운되기도

한다 시스템 날짜가 2090년 1월 1일로 변경된 감염시스템이 다운된 후

재부 을 하여 도우의 사용자 계정에 로그온하려고 하면 로그오 가

자동으로 되어 정상 으로 시스템을 사용할 수 없게 된다

지스트리

악성코드에 감염되면 userinitexe 지스트리에 등록되기 때

문에 재부 후에도 실행된다

무한 로그오 가 되는 증상은 Winlogon 지스트리에서

Userinit값의 데이터가 삭제되었기 때문에 발생한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWinlogon]

Userinit=(데이터 삭제)

다음과 같이 ldquo랜덤한 숫자exerdquo 일들을 생성하며 7자리 랜

덤한 숫자를 가진 sys 나 확장자가 없는 일들을 생성한다

- ( 도우 시스템 폴더)systemexe

- ( 도우 시스템 폴더)107exe (랜덤)

- (Temp 폴더)1788514sys (랜덤)

- ( 도우 시스템 폴더)3244468 (랜덤)

이동식 디스크로 될 수 있도록 Autoruninf 일과

explorerexe를 생성하며 네트워크로 공유된 공유폴더로도

확산이 가능하다

속 도메인

IRC 채 에 속을 시도하며 성공하면 명령을 받아

MS08-067 취약 을 이용하여 TCP 445 포트를 스캔하고

상 시스템에 취약 이 존재하면 익스 로잇 코드를 송하

여 시킨다

- 143 -

Win-TrojanAgent24576ANJ (안철수연구소)

분류 트로이목마(2009-02-20)

Win-TrojanAgent24576ANJ 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindow

sCurrentVersionRun

SidebarSearch =

도우 로그램 일 폴더sidebarsearchssmanagerexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SidebarSearchexe

도우 로그램 일 폴더sidebarsearch에 다음 일을 생

성한다

- SSDlldll

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

201422180

해당 IP는 다음 사이트들과 연결이 되어 속이 된다

yscokrppv_devspp

yscokrsuideSerahee19

yscokrsuideSlldl

- 144 -

Win-TrojanAgent19968MY (안철수연구소)

분류 트로이목마(2008-01-09)

Win-TrojanAgent19968MY 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

1 도우 시스템 폴더에 다음 일을 생성한다

- testsys

- hf1226dll

- hf1226exe

2 시스템 루트에 다음 일을 생성한다

- SFC_OSDLL

3 도우 시스템 폴더drivers에 다음 일을 생성한다

- beepsys

4 실행폴더에 다음 일을 생성한다

- xxxbat

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 145 -

Win-TrojanAgent49152XG (안철수연구소)

분류 트로이목마(2008-12-30)

Win-TrojanAgent49152XG 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다 해당 사이트로 속이 되면 생성된

일(dll exe)이 실행된다

지스트리

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie5gpq3w5ir에 다음 일을

생성한다

- MagicKeyX[1]dll

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie55csblp0d에 다음 일을

생성한다

- MagicUpgrade[1]exe

시스템 루트documents and settingsuserlocal settingste

mporary internet filescontentie521vgx0zu에 다음 일을

생성한다

- RunAsAdmin[1]exe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

214999580

- 146 -

Win-TrojanAgent507980 (안철수연구소)

분류 트로이목마(2008-11-24)

Win-TrojanAgent507980 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 자동으로

실행되도록 한다

HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersionpoliciesExplorer

Run = 0xe1d3d510

도우 시스템 폴더에 다음 일을 생성한다

- csrcsexe

Temp 폴더에 다음 일을 생성한다

- suicidebat

TrojanWin32PSWQQPass75909 (하우리)

분류 트로이목마(20081121)

실행 인 모든 로세스에 winscokdll 일을 인젝션하여 특정 로세스가

실행되는 것을 방해한다

지스트리

악성코드에 감염되면 다음과 같이 지스트리 값을 수정한다

HKLMSOFTWAREMicrosoftWindowsCurrentVersionE

xplorerAdvancedFolderHiddenSHOWALL

- CheckedValue 0 (숨김 일 보지 못함)

H K L M S O F T W A R E M i c r o s o f t W i n d o w s

NTCurrentVersionWinlogon

- Shell Explorerexe

CWINDOWSsystem32qqbmyvexe (부 시 실행)

악성코드에 감염되면 다음과 같은 경로에 일을 생성한다

(시스템 폴더)QQhxdat (TrojanWin32PSWQQPass75909)

(시스템 폴더)qqbmyvexe (TrojanWin32PSWQQPass75909)

(시스템 폴더)winscokdll (TrojanWin32PSWQQPass28021)

- 147 -

TrojanWin32DDoS-Agent16384 (하우리)

분류 트로이목마(20081105)

바이러스가 실행되면 DDoS 공격을 주 하는 공격자에게 속을 시도하여

공격자의 명령을 받기를 기다린다 공격자의 명령을 받게 되면 ICMP

Flooding 공격 HTTP Flooding 공격 UDP Flooding 공격 등을 수행할 수

있다 DDoS 공격에 가담하게 될 경우 네트워크에 과부하를 발생시켜 네트

워크 장애를 발생시킬 수 있다

IEXPLOREEXE 로세스를 생성한 후 ald_softdosdll 일을 리모트 쓰

드로 인젝션한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesAPCWSC]

ImagePath=( 도우 시스템 폴더)APCWSCexe

DisplayName=APC Windows System Center

다음과 같은 일들을 시스템에 생성한다

( 도우 시스템 폴더)APCWSCexe (TrojanWin32Zlob37632)

( 도우 시스템 폴더)ald_softdosdll (TrojanWin32DDoS-A

gent16384)

속 도메인DDoS 공격을 주 하는 공격자에게 속을 시도한다

121(생략)(생략)578088 (s(생략)0(생략)66org) 속 시도

- 148 -

TrojanWin32DDoS-Agent201749 (하우리)

분류 트로이목마(20080725)

Visual Basic 로그래 언어로 제작된 DDoS 공격에 사용되는 DDoS

에이 트이다 DDoS 에이 트가 실행되면 DDoS 공격을 주 하는

공격자에게 속을 시도하여 공격자의 명령을 받기를 기다린다 공격자의

명령을 받게 되면 ICMP Flooding 공격 Apache 웹 서버 공격 HTTP

Flooding 공격 UDP Flooding 공격 등을 수행할 수 있다 DDoS 공격에

가담하게 될 경우 네트워크에 과부하를 발생시켜 네트워크 장애를

발생시킬 수 있다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionRun]

setup=( 도우 폴더)Cursorscsrssexe

[HKEY_CURRENT_USERSoftwareMicrosoftWindows

NTCurrentVersionWinlogon]

Shell=( 도우 폴더)Cursorscsrssexe

다음과 같은 일들을 생성한다

( 도우 폴더)Cursorscsrssexe (TrojanWin32DDoS-Agent

201749)

( 도우 시스템 폴더)MSWINSCKOCX

(정상 Microsoft Winsock Control DLL 일)

속 도메인

DDoS 공격을 주 하는 공격자에게 속을 시도한다

- 6(생략)(생략)130666 (le(생략)1apo(생략)winfo) 속 시도

다음의 사이트들에 속하여 감염된 PC의 IP정보와 치 정

보를 확인한다

(1) 20968271680 (wwwipchickencom) 속

- 감염 PC의 로컬에서 IP를 확인 할 경우 인터넷 공유기

NAT를 이용할 경우 사설 IP를 얻게 됨으로 IP 확인 사이트

에 속하여 외부에서 확인할 수 있는 공인 IP를 획득한다

(2) 209160246280 (wwwseomozorg) 속

- 획득한 공인 IP를 토 로 해당 IP의 지역을 조회한다

- 149 -

Win-TrojanInfoStealer65536 (안철수연구소)

분류 트로이목마(20080724)

Win-TrojanInfoStealer65536 은 트로이목마의 일종으로 특정 폴더에 특정

일과 자기복제본을 생성한다

지스트리

지스트리에 다음 값을 추가해 도우 시작 시 서비스로

자동 실행되게 한다

HKEY_LOCAL_MACHINESYSTEMControlSet001Services

KAVsys

ImagePath = cwindowssystem32driversklifsys

도우 시스템 폴더에 다음 일을 생성한다

- ttrexe

- afmain0dll

- kva8wrexe

- bgotrtu0dll

- uweyiwe0dll

시스템 루트에 다음 일을 생성한다

- AhnRptaexe

- 9nwepbat

도우 시스템 폴더drivers에 다음 일을 생성한다

- klifsys

시스템 루트documents and settingsuserlocal settingste

mp에 다음 일을 생성한다

- llexe

속 도메인

해당 사이트로 사용자의 개인정보를 송하거나 사용자가

입력하는 키보드 입력 값을 가로채어 송한다 한 다양한

악의 인 스크립트를 실행하는 경우도 있다

속을 시도하는 리스트는 다음과 같다

60192280

21124280

- 150 -

TrojanWin32Agent4993 (하우리)

분류 트로이목마(20080718)

DLL 일로써 해당 DLL이 로드되면 특정 사이트로부터 다른

바이러스들을 다운로드하여 실행한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionWindows]

AppInit_DLLs=zsqfdll

일해당 일은 다음의 치에 존재한다

( 도우 시스템 폴더)zsqfdll (TrojanWin32Agent4993)

TrojanWin32Banker83456B (하우리)

분류 트로이목마(20080131)

인터넷 뱅킹과 련하여 사용자의 아이디 패스워드 등을 가로채는

역할을 하는 트로이목마이다

지스트리

다음의 지스트리에 등록되어 사운드 장치를 호출할 때 실

행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

ws NTCurrentVersionDrivers32]

midi1 =[랜덤한 문자숫자 조합열]dll

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]dll

( 도우 시스템 폴더)[랜덤한 문자숫자 조합열]cpl

속 도메인

취한 정보들을 다음의 도메인으로 송한다

- mixxxxxxcxx

- rexxxxxxxcxx

- 151 -

TrojanWin32Xorer95744(하우리)

분류 트로이목마(20080215)

TrojanWin32Xorer95744는 주로 이동식 드라이 는 네트워크 드라이

공유 등을 통해서 된다 한 해킹당한 사이트에서 다운로드 되거나

네트워크 상의 감염된 다른 PC에 의해 ARP Spoofing 공격을 통해

웹페이지에 인젝션되어 다운로드 되는 것으로 추정된다

트로이목마가 실행되면 자신을 보호하기 해 각종 보안 로그램 등을

종료시키며 모든 드라이 의 루트 폴더에 자신을 복사하여 시킨다

실행 일을 감염시키기도 하며 많은 변종들이 존재한다

지스트리

다음의 지스트리 하 키를 삭제한다 이로 인해 안 모드

부 이 정상 으로 이루어지지 않으며 시스템 시작 시 자동

으로 실행되는 보안 로그램 등이 실행되지 않게 된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootMinimal4D36E967-E325-11CE-BFC1-08002BE103

18]

[HKEY_LOCAL_MACHINESYSTEMControlSet001Contro

lSafeBootNetwork4D36E967-E325-11CE-BFC1-08002BE10

318]

다음의 지스트리 항목을 수정하여 드라이 의 자동실행을

활성화한다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesExplorer]

NoDriveTypeAutoRun=dword00000091

자신을 하기 해 모든 드라이 의 루트에 다음의 일

들을 생성한다

(모든드라이 루트)pagefilepif (TrojanWin32Xorer95744)

(모든드라이 루트)AUTORUNINF (INFAutorun172C)

감염된 시스템에서 다음과 같은 일들을 생성한다

( 도우 시스템 폴더)comlsassexe (TrojanWin32Xorer95744)

- 152 -

( 도우 시스템 폴더)comnetcfg000 (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comnetcfgdll (TrojanWin32Xorer16384)

( 도우 시스템 폴더)comsmssexe (TrojanWin32Xorer40960)

( 도우 시스템 폴더)dnsqdll (TrojanWin32Xorer32256B)

( 도우 시스템 폴더)[랜덤한6자리숫자]log (TrojanWin32X

orer95744)

(드라이 루트)[랜덤한6자리숫자]log (TrojanWin32Xorer95744)

(드라이 루트)Documents and SettingsAll Users시작 메

뉴 로그램시작 로그램~exe[랜덤한6자리숫자]exe (Troj

anWin32Xorer95744)

- 153 -

TrojanWin32Agentdcc (Kaspersky)

분류 트로이목마(20071201)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

The following registry key will be created

[HKLMSystemCurrentControlSetServicesruntime]

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

Once launched the Trojan copies its executable file as

shown below

Systemdriversruntimesys

The Trojan contains a rootkit driver which masks the

presence of Trojan files on the hard disk and also the

presence of the files listed below

Systemntoskrnlexe

Systemntkrnlpaexe

SystemntkrnlmpexeDownloaded files will be saved as

TEMPltrndgtexe

with ltrndgt standing for a random sequence of numbers

Systemntkrpampexe

속 도메인

The Trojan also launches a hidden process called

iexploreexe It injects its code into this process which

will then download files from the following addresses

20866194

66246252

20866195

745342

745342

- 154 -

TrojanWin32Autorun27745 (하우리)

분류 트로이목마(20071122)

변종 바이러스나 이동식 디스크를 통해서 확산하는 Trojan으로 자신을

도우 시스템 폴더에 복사하며 특정사이트에 속하여 변종 바이러스를

다운로드 한다

지스트리

지스트리에 등록되어 재 부 시에도 자동으로 실행된다

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindo

wsCurrentVersionRun]

crsss = ( 도우 시스템폴더)RxpMoNExe

아래의 지스트리 등록시 작업 리자를 사용할 수 없게 된다

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesSystem]

DisableTaskMgr = 1

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ExplorerAdvancedFolderHiddenSHOWALL]

CheckedValue= 1

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCu

rrentVersionPoliciesWindowsUpdate]

DisableWindowsUpdateAccess=1

[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInter

net ExplorerControl Panel]

HomePage= 1

다음과 같은 경로에 자신을 복사한다

- 루트SosExe (TrojanWin32Autorun 27745)

- 루트AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더RxpMoNExe

(TrojanWin32Autorun 27745)

- 도우 시스템 폴더AUToRuNInF (BATAutorun159)

- 도우 시스템 폴더TDO(랜덤)COM

TDOzCOMTDOxCOMTDOcCOMTDOvCOMTDObCOM

에 선택

- 155 -

속 도메인

다음과 같은 사이트에 속을 시도하여 다운로드 할 URL이

힌 TXT문서를 다운받아 이 문서를 참조하여 변종 바이러

스를 다운로드 한다

- httpwwwlcom

- httpwwwscom

TrojanWin32DDos-Agent14848 (하우리)

분류 트로이목마(20071011)

MS06-063 (서버 서비스 서비스 거부 취약 ) 취약 을 이용하며 53 137

138 포트를 통해 다량의 트래픽을 발생시킨다

지스트리

다음의 지스트리에 아래와 같이 서비스를 등록한다

HKLMSYSTEMCurrentControlSetServicesWindowsCat

alog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

HKLMSYSTEMControlSet001ServicesWindows Catalog

ImagePath = ( 도우 시스템 폴더)Down(2)exe

감염된 시스템에서 악성코드를 복제하여 아래와 같은 경로

로 치하게 한다

( 도우 시스템 폴더)Down(2)exe

속 도메인해당 도메인으로 속을 시도한다

- Caxxxxxxwxto

- 156 -

TrojanWin32Agentbve (Kaspersky)

분류 트로이목마(20071004)

This Trojan has a malicious payload The program itself is a Windows

PE DLL file It is approximately 100KB in size

지스트리

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

[HKLMSoftwareClassesCLSIDE4D629C3-78D3-4597-AE

36-CC394E39F934InprocServer32]

default = Systemmstmdmdll

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

ShellServiceObjectDelayLoad]

UpdateCheck =

E4D629C3-78D3-4597-AE36-CC394E39F934

The Trojan also creates the following registry key and

save its configuration to this key

[HKLMSOFTWAREMicrosoftWindowsCurrentVersion

StrtdCfg]

The Trojan copies its executable file to the Windows

system directory

Systemmstmdmdll

In order to ensure that the Trojan is launched

automatically each time the system is booted the Trojan

adds a link to its executable file in the system registry

The Trojan also creates the following files

WinDir1txt

System__1dat

WinDirsystem32mswmpdattlb

WinDirsystem32winviewocx

속 도메인The Trojan gets network configuration via the following link

- httplivenewscxupdate

- 157 -

TrojanWin32Autorun7680 (하우리)

분류 트로이목마(20070813)

변종 바이러스나 이동식 디스크를 통해서 확산하는 확산하는 Trojan으로

dll 일을 도우 시스템 폴더등에 생성한다

지스트리

다음의 지스트리를 등록하여 시스템 재시작 시 자동으로

시작되도록 설정한다

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManager]

DisplayName=Network Manager

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesNetManagerParameters]

ServiceDll=( 도우 시스템 폴더)netmanagedll

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnscon]

DisplayName=DNS Connection

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSe

rvicesdnsconParameters]

ServiceDll=( 도우 시스템 폴더)dnscon70dll

다음과 같은 일 디 토리들을 시스템에 생성한다

( 도우 시스템 폴더)SR1000RDLL (TrojanWin32Autorun73728)

( 도우 시스템 폴더)crssexe (TrojanWin32Autorun21504)

( 도우 시스템 폴더)netmanagedll (TrojanWin32Autorun7680)

( 도우 시스템 폴더)netuseddll (TrojanWin32Autorun61952)

( 도우 시스템 폴더)dnscon70dll (TrojanWin32Autorun5120)

( 도우 시스템 폴더)mstcpcon20dll (TrojanWin32Autorun6144)

( 도우 폴더)temp_ISTMPIDIR

( 도우 폴더)temp_ISTMPIDIRautoruninf (INFAutorun334)

( 도우 폴더)temp_ISTMPIDIRmmc32exe (TrojanWin32A

utorun89600)

( 도우 폴더)temp_ISTMPIDIRtemplatetmp

속 도메인

바이러스를 제작 는 배포한 공격자에게 속을 시도한다

- 도메인 co(생략)hb(생략)org

- 포트 80

- 158 -

부록 4 Netbot의 Import Function 비교

KERNEL32dll

NetNtExdll

CloseHandle CopyFileA CreateFileA CreatePipe CreateProcessA CreateThread Cr

eateToolhelp32Snapshot DeleteFileA FileTimeToLocalFileTime FileTimeToSystemTi

me FindClose FindFirstFileA FindNextFileA FreeConsole FreeLibrary GetCompute

rNameA GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDriveTy

peA GetFileSize GetLastError GetLogicalDriveStringsA GetModuleFileNameA Get

ProcAddress GetProcessHeap GetStartupInfoA GetSystemDirectoryA GetTickCoun

t GetVersionExA GlobalMemoryStatus HeapAlloc InterlockedExchange LoadLibrary

A lstrcpyA lstrcpynA lstrlenA Module32First MoveFileA MoveFileExA OpenProc

ess OutputDebugStringA Process32First Process32Next ReadFile SetLastError Slee

p TerminateProcess WaitForSingleObject WinExec WriteFile

ALFTPexe

CloseHandle CompareStringA CopyFileA CreateDirectoryA CreateEventA CreateF

ileA CreateFileMappingA CreateMutexA CreateProcessA CreateSemaphoreA Creat

eThread DeleteCriticalSection DeleteFileA DosDateTimeToFileTime DuplicateHandl

e EnterCriticalSection EnumCalendarInfoA EnumSystemLocalesA ExitProcess Exit

Thread ExpandEnvironmentStringsA FatalAppExitA FileTimeToDosDateTime FileT

imeToLocalFileTime FileTimeToSystemTime FindClose FindCloseChangeNotificatio

n FindFirstChangeNotificationA FindFirstFileA FindNextChangeNotification FindN

extFileA FindResourceA FlushInstructionCache FormatMessageA FreeLibrary Free

Resource GetACP GetCommandLineA GetComputerNameA GetCPInfo GetCurren

tDirectoryA GetCurrentProcess ( 략) WritePrivateProfileStringA

iexploreexe

CloseHandle CompareFileTime CompareStringW CreateEventW CreateFileMapping

W CreateFileW CreateMutexW CreateProcessW DeleteCriticalSection EnterCritical

Section ExpandEnvironmentStringsW FindResourceExW FindResourceW FreeLibrar

y GetCommandLineW GetCurrentDirectoryW GetCurrentProcess GetCurrentProces

sId GetCurrentThreadId GetFileAttributesExW GetLastError GetLocaleInfoW GetL

ongPathNameW GetModuleFileNameW GetModuleHandleA GetProcAddress GetSt

artupInfoW GetSystemDefaultLCID GetSystemDefaultUILanguage GetSystemTimeA

sFileTime GetTickCount ( 략) OutputDebugStringA QueryPerformanceCounter R

aiseException ReleaseMutex SearchPathW SetErrorMode SetLastError SetUnhandle

dExceptionFilter Sleep TerminateProcess UnhandledExceptionFilter UnmapViewOf

File WaitForMultipleObjects WaitForSingleObject WaitForSingleObjectEx

notepadexe

CloseHandle CompareStringW CreateFileMappingW CreateFileW DeleteFileW Fin

dClose FindFirstFileW FoldStringW FormatMessageW GetACP GetCommandLine

W GetCurrentProcess GetCurrentProcessId GetCurrentThreadId GetDateFormatW

GetFileAttributesW GetFileInformationByHandle GetLastError GetLocaleInfoW Get

LocalTime GetModuleHandleA GetProcAddress GetStartupInfoA GetSystemTimeA

sFileTime GetTickCount GetTimeFormatW GetUserDefaultLCID GetUserDefaultUI

Language GlobalFree GlobalLock GlobalUnlock LoadLibraryA LocalAlloc LocalFr

ee LocalLock LocalReAlloc LocalSize LocalUnlock lstrcatW lstrcmpiW lstrcmpW

lstrcpynW lstrcpyW lstrlenW MapViewOfFile MulDiv MultiByteToWideChar Que

ryPerformanceCounter ReadFile SetEndOfFile SetLastError SetUnhandledException

Filter TerminateProcess UnhandledExceptionFilter UnmapViewOfFile WideCharTo

MultiByte WriteFile

- 159 -

USER32dll

NetNtExdll

CloseDesktop CloseWindow CloseWindowStation CreateWindowExA ExitWindowsEx

GetDesktopWindow GetProcessWindowStation GetSystemMetrics GetThreadDesktop

IsWindow keybd_event mouse_event OpenDesktopA OpenWindowStationA SendMes

sageA SetCursorPos SetProcessWindowStation SetThreadDesktop wsprintfA

ALFTPexe

ActivateKeyboardLayout AdjustWindowRectEx AttachThreadInput BeginDeferWind

owPos BeginPaint BringWindowToTop CallNextHookEx CallWindowProcA CharL

owerA CharLowerBuffA CharNextA CharNextA CharToOemA CharToOemBuffA

CharUpperBuffA CheckMenuItem ChildWindowFromPoint ClientToScreen CloseCl

ipboard CopyImage CopyRect CreateDialogParamA CreateIcon CreateMenu Crea

tePopupMenu CreateWindowExA DeferWindowPos DefFrameProcA DefMDIChild

ProcA DefWindowProcA DeleteMenu DestroyCursor DestroyIcon DestroyMenu

DestroyWindow DialogBoxParamA DispatchMessageA DrawAnimatedRects Draw

Edge DrawFocusRect DrawFrameControl DrawIcon DrawIconEx DrawMenuBar

DrawTextA EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow En

dDeferWindowPos EndDialog EndPaint EnumClipboardFormats EnumThreadWind

ows EnumWindows EqualRect ExitWindowsEx FillRect FindWindowA FindWind

owExA FrameRect GetActiveWindow GetAsyncKeyState GetCapture ( 략) Wait

ForInputIdle WaitMessage WindowFromPoint WinHelpA

iexploreexe

AllowSetForegroundWindow CharNextW CharUpperW DialogBoxParamW Enable

Window EndDialog GetDlgItem GetParent GetThreadDesktop GetUserObjectInfor

mationW IsDlgButtonChecked LoadStringW MessageBoxW SendDlgItemMessage

W SendMessageW SetDlgItemTextW

notepadexe

CharLowerW CharNextW CharUpperW CheckMenuItem ChildWindowFromPoint

CloseClipboard CreateDialogParamW CreateWindowExW DefWindowProcW Destr

oyWindow DialogBoxParamW DispatchMessageW DrawTextExW EnableMenuIte

m EnableWindow EndDialog GetClientRect GetCursorPos GetDC GetDesktopWi

ndow GetDlgCtrlID GetDlgItem GetDlgItemTextW GetFocus GetForegroundWind

ow GetKeyboardLayout GetMenu GetMenuState GetMessageW GetParent GetSub

Menu GetSystemMenu GetSystemMetrics GetWindowLongW GetWindowPlacemen

t GetWindowTextW InvalidateRect IsClipboardFormatAvailable IsDialogMessage

W IsIconic LoadAcceleratorsW LoadCursorW LoadIconW LoadImageW LoadStri

ngW MessageBeep MessageBoxW MoveWindow OpenClipboard PeekMessageW

PostMessageW PostQuitMessage RegisterClassExW RegisterWindowMessageW Rel

easeDC ScreenToClient SendDlgItemMessageW SendMessageW SetActiveWindow

SetCursor SetDlgItemTextW SetFocus SetScrollPos SetWindowLongW SetWindow

Placement SetWindowTextW SetWinEventHook ShowWindow TranslateAccelerator

W TranslateMessage UnhookWinEvent UpdateWindow WinHelpW wsprintfW

- 160 -

GDI32dll

NetNtExdllBitBlt CreateCompatibleBitmap CreateCompatibleDC CreateDCA DeleteDC Delete

Object GetDIBits SelectObject

ALFTPexe

Arc BitBlt CombineRgn CopyEnhMetaFileA CreateBitmap CreateBrushIndirect Cr

eateCompatibleBitmap CreateCompatibleDC CreateDCA CreateDIBitmap CreateDI

BSection CreateFontA CreateFontIndirectA CreateHalftonePalette CreatePalette Cr

eatePenIndirect CreateRectRgn CreateRectRgnIndirect CreateSolidBrush DeleteDC

DeleteEnhMetaFile DeleteObject Ellipse ExcludeClipRect ExtCreateRegion ExtText

OutA GdiFlush GetBitmapBits GetBrushOrgEx GetClipBox GetCurrentObject Get

CurrentPositionEx GetDCOrgEx GetDeviceCaps GetDIBColorTable GetDIBits GetE

nhMetaFileBits GetEnhMetaFileHeader GetEnhMetaFilePaletteEntries GetMapMode

GetObjectA GetPaletteEntries ( 략) SetMapMode SetPixel SetROP2 SetStretchBlt

Mode SetTextColor SetViewportOrgEx SetWindowOrgEx SetWinMetaFileBits Stret

chBlt TextOutA TranslateCharsetInfo UnrealizeObject

iexploreexe CreateFontIndirectW DeleteObject GetObjectW

notepadexe

AbortDoc CreateDCW CreateFontIndirectW DeleteDC DeleteObject EndDoc EndP

age EnumFontsW GetDeviceCaps GetObjectW GetStockObject GetTextExtentPoint

32W GetTextFaceW GetTextMetricsW LPtoDP SelectObject SetAbortProc SetBkMo

de SetMapMode SetViewportExtEx SetWindowExtEx StartDocW StartPage TextO

utW

ADVAPI32dll

NetNtExdll

AdjustTokenPrivileges ChangeServiceConfigA CloseServiceHandle ControlService Create

ServiceA DeleteService LookupPrivilegeValueA OpenProcessToken OpenSCManager

A OpenServiceA QueryServiceStatus RegCloseKey RegCreateKeyA RegisterServiceC

trlHandlerA RegOpenKeyA RegOpenKeyExA RegSetValueExA SetServiceStatus Sta

rtServiceA

ALFTPexe

AdjustTokenPrivileges AllocateAndInitializeSid CryptDestroyKey CryptReleaseCont

ext EqualSid FreeSid GetTokenInformation GetUserNameA LookupPrivilegeValue

A OpenProcessToken OpenThreadToken RegCloseKey RegCloseKey RegCreateKe

yExA RegDeleteKeyA RegEnumKeyExA RegFlushKey RegOpenKeyExA RegOpen

KeyExA RegQueryInfoKeyA RegQueryValueExA RegQueryValueExA RegSetValue

ExA

iexploreexe

RegCloseKey RegCreateKeyExW RegDeleteKeyW RegDeleteValueW RegEnumKey

W RegEnumValueW RegOpenKeyExW RegQueryInfoKeyW RegQueryValueExW

RegQueryValueW RegSetValueExW

notepadexeIsTextUnicode RegCloseKey RegCreateKeyW RegOpenKeyExA RegQueryValueEx

A RegQueryValueExW RegSetValueExW

- 161 -

WS2_32dll

NetNtExdll WSASocketA

ALFTPexe -

iexploreexe -

notepadexe -

AVICAP32dll

NetNtExdll capCreateCaptureWindowA capGetDriverDescriptionA

ALFTPexe -

iexploreexe -

notepadexe -

- 162 -

from sets import Set

import pydot

import BitVector

import math random re

class BloomFilter

k bitSet bitArraySize expectedElements = 0 None 0 0

def __init__(self bitArraySize expectedElements)

selfbitArraySize = bitArraySize

selfexpectedElements = expectedElements

selfbitSet = BitVectorBitVector( size = bitArraySize )

selfk = int(mathceil((bitArraySize expectedElements)

mathlog(2)))

def add(self o)

randomseed(hash(o))

for i in range(selfk)

selfbitSet[randomrandint(0 selfbitArraySize-1)] = 1

def clear(self)

bitSetreset(0)

def contains(self o)

randomseed(hash(o))

for i in range(selfk)

if selfbitSet[randomrandint(0 selfbitArraySize-1)] == 0

return False

return True

def expectedFalsePositiveProbability(self)

return mathpow((1 - mathexp(-selfk

float(selfexpectedElements)

float(selfbitArraySize))) selfk)

부록 5 Python 스크립트

1 Tracing Script

- 163 -

def overwrite(self other)

for i in range(selfbitArraySize)

if otherbitSet[i] == 1

selfbitSet[i] = 1

def GetDistance(self other)

dist = 0

for i in range(selfbitArraySize)

if otherbitSet[i] = selfbitSet[i]

dist += 1

return dist

def show(self)

result =

temp =

for i in range(selfbitArraySize)

if selfbitSet[i] == 1

temp = temp + 1

else

temp = temp + 0

return temp

dic =

sig =

m n = 210 10

def GetSignature(addr)

bf = BloomFilter(m n)

if addr in sig

b = sig[addr]

return b

elif not rematch([0-9A-F]8 addr)

bfadd(addr)

sig[addr] = bf

return bf sig[addr]

elif addr not in dic

sig[addr] = bf

return bf

- 164 -

for d in dic[addr]

If it was a address

b = GetSignature(d)

bfoverwrite(b)

sig[addr] = bf

return bf

def GetCall(start end)

result = []

for head in Heads(start end)

if isCode(GetFlags(head))

mnem = GetMnem(head)

if call in mnem

oprand = GetOpnd(head 0)

Skip the register

if rematch(eSS oprand)

continue

Skip relative jump

elif [ in oprand

continue

elif rematch(sub_[0-9] oprand)

addr = int(oprand[4] 16)

if addr not in result

resultappend(addr)

H = X start

straddr = X addr

if H not in dic

temp = []

tempappend(straddr)

dic[H] = temp

else

temp = dic[H]

if straddr not in temp

tempappend(straddr)

dic[H] = temp

else If it call a named function

H = X start

if H not in dic

- 165 -

temp = []

tempappend(oprand)

dic[H] = temp

else

temp = dic[H]

if oprand not in temp

tempappend(oprand)

dic[H] = temp

return result

ea = ScreenEA()

CallList = []

for funcea in Functions(SegStart(ea) SegEnd(ea))

if funcea not in CallList

CallListappend(funcea)

for cl in CallList

end = FindFuncEnd(cl)

for call in GetCall(cl end)

if call not in CallList

CallListappend(call)

Initialize Graph

g = pydotDot(type=diagraph)

gset_rankdir(LR)

gset_size(11 11)

gadd_node(pydotNode(node shape=ellipse color=lightblue style=filled))

gadd_node(pydotNode(edge color=lightgrey))

K = dickeys()

for k in K

for d in dic[k]

gadd_edge(pydotEdge(k d))

index = dfind()

temp = d[index+1]

gadd_edge(pydotEdge(k temp))

path = GetInputFilePath()

filename = GetInputFile()

- 166 -

print path

print filename

gwrite_ps(path + ps)

fp = open(path + txt w+)

for k in K

bf = GetSignature(k)

sg = bfshow()

s = s[s]n (k sg)

fpwrite(s)

for d in dic[k]

index = dfind()

temp = d[index+1]

bf = GetSignature(d)

sg = bfshow()

s = s[s]n (temp sg)

fpwrite(s)

fpclose()

K = sigkeys()

- 167 -

import sys

import BitVector

import psyco

class Progressbar

def __init__(self finalcount progresschar = blankchar = )

selffinalcount = finalcount

selfblockcount = 0

selfprogresschar = progresschar

selfblankchar = blankchar

selff = sysstdout

percentage = 0

def rewind(self)

for i in range(16)

selffwrite(b)

def progress(self count)

count = min(count selffinalcount)

if selffinalcount

percentage = int(round(100countselffinalcount))

else

percentage = 100

selfrewind()

num = int(percentage10)

selffwrite([)

for i in range(10)

if num lt= i

selffwrite( selfblankchar )

else

selffwrite( selfprogresschar )

selffwrite(])

str = 3d percentage

selffwrite(str)

selffflush()

def IsThere(a h)

2 Comparing Script

- 168 -

K = hkeys()

for k in K

flag = (a == h[k])

if flag == 1

return [1 k]

return [0 0]

def OpenFile(filename)

result =

fp = open(filename r)

for l in fpreadlines()

index = lfind([)

k = l[index]

val = l[index+1len(l)-2]

ival = []

for i in val

if i == 1

ivalappend(1)

else

ivalappend(0)

bit = BitVectorBitVector( bitlist = ival )

if k not in result

result[k] = bit

return result

psycofull()

dic =

r = []

f = sysstdout

print Init

h1 = OpenFile(sysargv[1])

- 169 -

h2 = OpenFile(sysargv[2])

lh1 = len(h1)

lh2 = len(h2)

print d d (lh1 lh2)

if lh1 gt lh2

a = h2

b = h1

else

a = h1

b = h2

K = bkeys()

bar = Progressbar(lh1)

cnt = 0

print Comparing

for k in K

cnt += 1

barprogress(cnt)

result = IsThere(b[k] a)

if result[0] == 1

del b[k]

del a[result[1]]

rappend(k)

s1 = lh1

s2 = lh2

l = (s1 + s2 - len(r)) 2

u = s1s2

sig = 00

sig = float(u) float(l)

print nns1 d s1

print s2 d s2

print u d len(r)

print Sigma f sig

- 170 -

참고문헌

[1] 최경철 ldquo웹 해킹과 방어rdquo 리 2008

[2] 이순원 ldquo난 지스트리로 PC 리한다rdquo 길벗 2005

[3] httpwwwglaacuk443certguidesprocesses_xpshtml

[4] httpsupportmicrosoftcomkb263201ko

[5] 안철수 연구소 (httphomeahnlabcom)

[6] 하우리 (httpwwwhauricokr)

[7] Kaspersky (httpwwwkasperskycom)

악성코드 유형에 따른 자동화 분석

방법론 연구

985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103985103

2009년 6월 인쇄

2009년 6월 발행

발행인 황 연

발행처 한국정보보호진흥원

서울시 송 구 로 135(가락동 78)

IT벤처타워(서 )

Tel (02) 4055-114

인쇄처 하이넷 시스템 인쇄사

Tel (02) 2297-2049

lt비매품gt

1 본 보고서는 방송통신 원회의 출연 등으로 수행한

정보보호 강화사업의 결과입니다

2 본 보고서의 내용을 발표할 때에는 반드시 한국정보보보호진흥원

정보보호 강화사업의 결과임을 밝 야 합니다

3 본 보고서의 권은 한국정보보호진흥원이 소유하고 있으며

당 진흥원의 허가 없이 무단 재 복사를 합니다

Page 9: Automated Malware Analysis Mechanism
Page 10: Automated Malware Analysis Mechanism
Page 11: Automated Malware Analysis Mechanism
Page 12: Automated Malware Analysis Mechanism
Page 13: Automated Malware Analysis Mechanism
Page 14: Automated Malware Analysis Mechanism
Page 15: Automated Malware Analysis Mechanism
Page 16: Automated Malware Analysis Mechanism
Page 17: Automated Malware Analysis Mechanism
Page 18: Automated Malware Analysis Mechanism
Page 19: Automated Malware Analysis Mechanism
Page 20: Automated Malware Analysis Mechanism
Page 21: Automated Malware Analysis Mechanism
Page 22: Automated Malware Analysis Mechanism
Page 23: Automated Malware Analysis Mechanism
Page 24: Automated Malware Analysis Mechanism
Page 25: Automated Malware Analysis Mechanism
Page 26: Automated Malware Analysis Mechanism
Page 27: Automated Malware Analysis Mechanism
Page 28: Automated Malware Analysis Mechanism
Page 29: Automated Malware Analysis Mechanism
Page 30: Automated Malware Analysis Mechanism
Page 31: Automated Malware Analysis Mechanism
Page 32: Automated Malware Analysis Mechanism
Page 33: Automated Malware Analysis Mechanism
Page 34: Automated Malware Analysis Mechanism
Page 35: Automated Malware Analysis Mechanism
Page 36: Automated Malware Analysis Mechanism
Page 37: Automated Malware Analysis Mechanism
Page 38: Automated Malware Analysis Mechanism
Page 39: Automated Malware Analysis Mechanism
Page 40: Automated Malware Analysis Mechanism
Page 41: Automated Malware Analysis Mechanism
Page 42: Automated Malware Analysis Mechanism
Page 43: Automated Malware Analysis Mechanism
Page 44: Automated Malware Analysis Mechanism
Page 45: Automated Malware Analysis Mechanism
Page 46: Automated Malware Analysis Mechanism
Page 47: Automated Malware Analysis Mechanism
Page 48: Automated Malware Analysis Mechanism
Page 49: Automated Malware Analysis Mechanism
Page 50: Automated Malware Analysis Mechanism
Page 51: Automated Malware Analysis Mechanism
Page 52: Automated Malware Analysis Mechanism
Page 53: Automated Malware Analysis Mechanism
Page 54: Automated Malware Analysis Mechanism
Page 55: Automated Malware Analysis Mechanism
Page 56: Automated Malware Analysis Mechanism
Page 57: Automated Malware Analysis Mechanism
Page 58: Automated Malware Analysis Mechanism
Page 59: Automated Malware Analysis Mechanism
Page 60: Automated Malware Analysis Mechanism
Page 61: Automated Malware Analysis Mechanism
Page 62: Automated Malware Analysis Mechanism
Page 63: Automated Malware Analysis Mechanism
Page 64: Automated Malware Analysis Mechanism
Page 65: Automated Malware Analysis Mechanism
Page 66: Automated Malware Analysis Mechanism
Page 67: Automated Malware Analysis Mechanism
Page 68: Automated Malware Analysis Mechanism
Page 69: Automated Malware Analysis Mechanism
Page 70: Automated Malware Analysis Mechanism
Page 71: Automated Malware Analysis Mechanism
Page 72: Automated Malware Analysis Mechanism
Page 73: Automated Malware Analysis Mechanism
Page 74: Automated Malware Analysis Mechanism
Page 75: Automated Malware Analysis Mechanism
Page 76: Automated Malware Analysis Mechanism
Page 77: Automated Malware Analysis Mechanism
Page 78: Automated Malware Analysis Mechanism
Page 79: Automated Malware Analysis Mechanism
Page 80: Automated Malware Analysis Mechanism
Page 81: Automated Malware Analysis Mechanism
Page 82: Automated Malware Analysis Mechanism
Page 83: Automated Malware Analysis Mechanism
Page 84: Automated Malware Analysis Mechanism
Page 85: Automated Malware Analysis Mechanism
Page 86: Automated Malware Analysis Mechanism
Page 87: Automated Malware Analysis Mechanism
Page 88: Automated Malware Analysis Mechanism
Page 89: Automated Malware Analysis Mechanism
Page 90: Automated Malware Analysis Mechanism
Page 91: Automated Malware Analysis Mechanism
Page 92: Automated Malware Analysis Mechanism
Page 93: Automated Malware Analysis Mechanism
Page 94: Automated Malware Analysis Mechanism
Page 95: Automated Malware Analysis Mechanism
Page 96: Automated Malware Analysis Mechanism
Page 97: Automated Malware Analysis Mechanism
Page 98: Automated Malware Analysis Mechanism
Page 99: Automated Malware Analysis Mechanism
Page 100: Automated Malware Analysis Mechanism
Page 101: Automated Malware Analysis Mechanism
Page 102: Automated Malware Analysis Mechanism
Page 103: Automated Malware Analysis Mechanism
Page 104: Automated Malware Analysis Mechanism
Page 105: Automated Malware Analysis Mechanism
Page 106: Automated Malware Analysis Mechanism
Page 107: Automated Malware Analysis Mechanism
Page 108: Automated Malware Analysis Mechanism
Page 109: Automated Malware Analysis Mechanism
Page 110: Automated Malware Analysis Mechanism
Page 111: Automated Malware Analysis Mechanism
Page 112: Automated Malware Analysis Mechanism
Page 113: Automated Malware Analysis Mechanism
Page 114: Automated Malware Analysis Mechanism
Page 115: Automated Malware Analysis Mechanism
Page 116: Automated Malware Analysis Mechanism
Page 117: Automated Malware Analysis Mechanism
Page 118: Automated Malware Analysis Mechanism
Page 119: Automated Malware Analysis Mechanism
Page 120: Automated Malware Analysis Mechanism
Page 121: Automated Malware Analysis Mechanism
Page 122: Automated Malware Analysis Mechanism
Page 123: Automated Malware Analysis Mechanism
Page 124: Automated Malware Analysis Mechanism
Page 125: Automated Malware Analysis Mechanism
Page 126: Automated Malware Analysis Mechanism
Page 127: Automated Malware Analysis Mechanism
Page 128: Automated Malware Analysis Mechanism
Page 129: Automated Malware Analysis Mechanism
Page 130: Automated Malware Analysis Mechanism
Page 131: Automated Malware Analysis Mechanism
Page 132: Automated Malware Analysis Mechanism
Page 133: Automated Malware Analysis Mechanism
Page 134: Automated Malware Analysis Mechanism
Page 135: Automated Malware Analysis Mechanism
Page 136: Automated Malware Analysis Mechanism
Page 137: Automated Malware Analysis Mechanism
Page 138: Automated Malware Analysis Mechanism
Page 139: Automated Malware Analysis Mechanism
Page 140: Automated Malware Analysis Mechanism
Page 141: Automated Malware Analysis Mechanism
Page 142: Automated Malware Analysis Mechanism
Page 143: Automated Malware Analysis Mechanism
Page 144: Automated Malware Analysis Mechanism
Page 145: Automated Malware Analysis Mechanism
Page 146: Automated Malware Analysis Mechanism
Page 147: Automated Malware Analysis Mechanism
Page 148: Automated Malware Analysis Mechanism
Page 149: Automated Malware Analysis Mechanism
Page 150: Automated Malware Analysis Mechanism
Page 151: Automated Malware Analysis Mechanism
Page 152: Automated Malware Analysis Mechanism
Page 153: Automated Malware Analysis Mechanism
Page 154: Automated Malware Analysis Mechanism
Page 155: Automated Malware Analysis Mechanism
Page 156: Automated Malware Analysis Mechanism
Page 157: Automated Malware Analysis Mechanism
Page 158: Automated Malware Analysis Mechanism
Page 159: Automated Malware Analysis Mechanism
Page 160: Automated Malware Analysis Mechanism
Page 161: Automated Malware Analysis Mechanism
Page 162: Automated Malware Analysis Mechanism
Page 163: Automated Malware Analysis Mechanism
Page 164: Automated Malware Analysis Mechanism
Page 165: Automated Malware Analysis Mechanism
Page 166: Automated Malware Analysis Mechanism
Page 167: Automated Malware Analysis Mechanism