287
-1-

바이러스 및 해킹대응 관리시스템 개발 - ITFIND바이러스 및 해킹대응 ... 따르면 중국은 년 컴퓨터바이러스 부대를 창설했으며 대만의 경우는

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

- 1 -

최종 연구개발 결과보고서

바이러스 및 해킹대응

관리시스템 개발

Development of virus and hacking response management system

2001.12

주관연구기관 한국정보보호진흥원

정 보 통 신 부

- 2 -

제 출 문

정보통신부 장관귀하

본 보고서를 바이러스 및 해킹대응 관리시스템 개발에 관한 연구 의 최종 연구개발 결“ ”

과 보고서로 제출합니다

년 읠 일2001 12 31

연구책임자 : 이병권 기반보호사업단 선임연구(

원)참여연구원 : 정현철 기반보호사업단 연구원( )

김상철 기반보호사업단 연구원( )

이동연 기반보호사업단 연구원( )

전완근 기반보호사업단 연구원( )

오은숙 기반보호사업단 연구원( )

전병기 기반보호사업단 연구원( )

임지영 기반보호사업단 연구원( )

이완의 기반보호사업단 연구원( )

김재성 평가인증사업단 선임연구(

원)하도윤 기술단 연구원( )

박정현 전직( )

임채호 전직( )

이현우 전직( )

이상엽 전직( )

조용상 전직( )

- 3 -

요 약 문

제목1.

바이러스 및 해킹대응 관리 시스템 개발

연구개발의 목적 및 중요성2.

세기는 국가간 가상공간 전쟁 즉 사이버전이 확대될 가능성이 매우 높으며 이 사이버전에21

이용되는 기본적인 방법이 해킹과 바이러스이다 여기서 바이러스의 경우 여러 외신 보도에.

따르면 중국은 년 컴퓨터바이러스 부대를 창설했으며 대만의 경우는 약 개의컴퓨터97 10,000

바이러스를 중국과의 사이버전을 위하여 제작하여 두고 있다고 전하고 있다 만약 유사시.

이 바이러스가 유포될 경우 인터넷의 특성에 따라 중국뿐만 아니라 전 세계가 위험에 빠질

수 있다 현재 바이러스를 해결하고 있는 백신은 바이러스 샘플을 구하여 치료 모듈을 제작.

하고 엔진을 하는 과정으로 이루어진다 따라서 동시에 수많은 바이러스가 유포될 경Update .

우 샘플 확보 분석 백신 개발 과정 동안에 뚜렷한 대응 방법 없이 속수무책으로 피해를 당, ,

할 수밖에 없다 그러므로 기존의 해킹 및 바이러스 방지대책을 더욱 체계화하고 신종 해킹.

및 바이러스 공격에 대비할 수 있는 연구개발이 매우 절실히 필요하다 이에 신종 바이러스.

를 탐지할 수 있는 지능형 바이러스 면역시스템과 커널 백도어를 예방할 수 있는 시스템을

개발하였다.

- 4 -

연구개발의 내용 및 범위3.

현재 바이러스나 백도어는 샘플을 입수하고 분석하여 대응책을 만들기까지 시간이 걸린다.

이로 인해 대응책이 나오기 전까지는 아무 조치도취하지 못한다 따라서 미확인 바이러스와.

백도어와 같은 악성코드에 즉각적으로 대응 할 수 있는 시스템이 필요하다 이에 본 연구에.

서는 기존바이러스 백도어 자동화된 툴 분석을 통해서 일반적인 기법을 연구하여 악성코드, ,

의 행동을 정의하고 패턴화하여 를 구축하였다 이를 기반으로 아직 출현하지 않은 미확DB .

인 바이러스 및 백도어를 대응할 수 있는 기술을 연구하여 시스템을 설계 개발하였다, .

연구개발결과4.

본 연구에서는 인터넷의 발전과 함께 증가하는 컴퓨터 바이러스의 발생과 사이버 테러에 대

응하기 위해 이와 관련된 정보들을 수집 연구하여 알려지지 않은 바이러스를 탐지 할 수, ,

있는 지능형 바이러스 면역 시스템과 기존의 커널 백도어를 분석하여 탐지하는 방법을 제시

하고 예방할 수 있는 커널 모듈을 개발하였다.

지능형 바이러스 면역시스템은 알려진 바이러스를 탐지하며 알려진 웜 바이러스를 분, VBS

석하여 악성 행위를 추출한 후 이 행위를 바탕으로 알려지지 않은 웜 바이러스를 탐VBS

지한다 유전자 알고리즘을 이용하여 바이러스일 확률을 표시하며 변형된 바이러스 탐지도.

가능하다 커널 백도어 탐지 시스템은 커널 필터링을 통하여 정해진 모듈이름이 아닌 경우.

는 로딩을 금지하고 로딩이 된 후에도 시스템 콜을 감시하여 시스템 콜의 주소를 변경시키,

는 모듈은 언로드된다.

본 연구에서 개발한 시스템은 알려지지 않은 웜을 사전에 차단할 수 있는 시스템으로VBS

바이러스일 확률 표기와 바이러스가 아닌 것을 바이러스로 탐지하는 긍정적인 오류가 있다.

앞으로 웜으로 제한하여 개발한 이 시스템을 확장하고 확률 계산의 최적화와 오류를VBS

줄이는데 노력해야 한다 커널 백도어 탐지시스템은 사용자가 미리 정해주지 않은 어떠한.

커널 모듈도 로딩되지 않는다.

- 5 -

활용에 대한 건의5.

지능형 바이러스 면역 시스템에 의해 기존 바이러스 및 변종 바이러스와 차세대 악성 바이

러스까지 탐지 가능하여 국내 실정에 적합한 차세대 악성 바이러스 백신 소프트웨어로 제품

화하여 국내 백신시장의 경쟁력강화에 커다란 도움이 될 것이다 뿐만 아니라 이러한 기술.

은 내부 네트워크의 바이러스 및 해킹에 대안 접근 제어를 방지하기 위한 침입차단시스템

등의 보안도구에까지 활용이 가능하다.

유닉스 커널 백도어 대응 시스템은 기존의 유닉스 커널 백도어에 대한 심도있는 분석 정보

를 제공하여 이에 대한 대응 기술력 확보 및 개발된 시스템을 이용하여 효과적인 커널 백도

어 탐지에 활용할 수 있다 이러한 기술을 전파하여 침입탐지시스템과 같은 보안도구에까지.

활용 가능하다.

기대 효과6.

바이러스 및 해킹대응 관리시스템은 기존의 바이러스 변종 및 차세대악성 바이러스 및 백도

어의 자동탐지 가능성을 제공함으로써 국제적인 지식정보화 기반의 경쟁력을 강화할 뿐 아

니라 차세대 악성 프로그램에 대응하는 백신 소프트웨어 및 와 같은 보안 제품으로 개, lDS

발하여 국내시장의 국제경쟁력 확보와 전문 연구인력의 증가로 국가 안보를 강화할 수 있

다.

- 6 -

SUMMARY

1. Subject

A Development of Virus and Hacking Response Management System

2.Objectives and Importance of Research and Development

There is a high possibility that a war of virtual space, also known as a war of cyber

space, is expanded among countries in the21st century. The basic strategy of the cyber

warfare is hacking and a computer virus. In case of the computer virus, the overseas

news agency reported that Mainland China has established the computer virus military

unit in 1997 and Taiwan has produced about 10,000 viruses to cope with the cyber

warfare against Mainland China. In time of an emergency, Mainland China and the

entire world can fall into the dangerous situation if these viruses are circulated.

Current vaccine technology used to cure virus infection is processed by getting the

virus sample, developing a module to cure it, and updating the vaccine. If numerous

viruses are spread at the same time without proper vaccine technique, the effects they

make are critical. As you can imagine, therefore, it is desperately required to carry out

research and development on the new type of hacking and virus attack as well as to

further systemize countermeasures against the current hacking and virus.

- 7 -

As a one of the solutions to attacks or situations mentioned above, the intelligent virus

immune system to detect new virus and the system to prevent kernel back-door were

developed.

3. Contents and Scope of Research and Development

Until now, it takes some time for existing technology to get samples, analyze, and

provide cures to deal with virus or back-door attack. Due to this reality, there is

nothing can be done until a technique to cure attacks is developed. And thus, there is

no question to have a system which can spontaneously deal with malicious codes such

as unknown virus and back-door activity. Throughout analyzing known viruses,

back-door activities, and automatic tools, techniques were generalized, behavior of

malicious codes were defined and patterned, and databases were constructed. Based on

these works, the technology to cope with unknown viruses and back-door attacks was

developed, and the system was designed and developed.

4. Study Results

This study aims to not only suggest the detection technique for the unknown computer

viruses, worms, and back-doors through collection of related information and the basic

structure of the learning-type virus immunity system but a1so develop a kernel module

that can in advance find and deal with such attacks in order to cope with virus

occurrence and cyber terror that increases in line with growth of the Internet.

This learning-type virus immunity system detects unknown VBS worm virus from

activity retrieved by detecting known virus, analyzing known VBS worm virus. Generic

algorithm is used to

- 8 -

determine in percentage an identity of viruses and detect them. Kernel filtering allows

kernel back-door system to prevent modules, which aren't already set, from loading,

monitor a module trying to modify the address of a system call, and unload it even

when loaded.

While the system developed by this study can protect a VBS worm in advance, it still

has positive possibility that the system can malfunction in computing probability of

virus and determine non-virus as virus. For the future research, this system that was

initially designed for VBS worm should be further developed to optimize probability of

computation and minimize errors. Note that kernel back-door system does not allow any

kernel module which isn't authorized by user.

5. Suggestion for Practical Use

Using learning-type virus immunity system viruses, from existing ones to next

generation ones, can be detected and the system is to be commercialized with meeting a

domestic market situation and getting it more competitive. Besides, this technology can

extensively be used for an intrusion detection system that prevents viruses and hackers

from accessing and controling an internal network system.

Unix kernel back-door response system can not only provide results in detail retrieved

analyzing existing unix kernel back-door and technology but it also can be used to

effectively detect kernel back-door. ln addition to this, the technology can practically

used for security tools 1ike intrusion detection system.

- 9 -

6. Expected Effects

The virus and hacking response management system will reinforce the national

competitiveness on the international knowledge information by providing the possibility

of an automatic system that can detect the variation of the currently identified virus and

the next generation malicious virus. Furthermore, it will contributes to both secure

international competitiveness of the national vaccine market through commercialization of

the vaccine software against the next generation malicious codes and stronger national

security by growing number of expertises.

- 10 -

CONTENTS

Chapter l. Introduction

1. Background of Research and Development

2. Purpose of Research and Development

Chapter 2. Research of Malicious Program and Response Technique

1. Technique of Malicious Program

2. Response Technique of Malicious Program

Chapter 3. Design of Virus and Hacking Response Management

System

1. Design of Entire System

2. Design of Virus and Hacking Response System

3. Design of Trojan Response System Relate to Hacking

Chapter 4. Development of Virus and Hacking Response

Management System

1. Development of Virus and Hacking Response System

2. Development of Trojan Response System Re1ate to Hacking

3. Practical use method

- 11 -

Chapter 5. Conclusion

Reference

- 12 -

목 차

제 장 서론1

제 절 연구개발 배경1

국내 바이러스 사고 현황1.

신종 바이러스 발생 현황2.

국내 해킹 사고 현황3.

국외 해킹 바이러스 사고 현황4.

제 절 연구개발 목적2

최근 바이러스의 특징1.

연구개발 목적2.

제 장 악성프로그램 기법 및 대응 기법 연구2

제 절 악성프로그램 기법1

바이러스 분류 및 주요 바이러스1.

바이러스 감염 기법2.

웜 분류 및 주요 웜3.

웜 감염 기법4.

웜 자동생성툴킷5.

백도어 분류 및 주요 백도어6.

백도어 기법7.

제 절 악성프로그램 대응 기법 연구2

대응 현황1.

연구 동향2.

연구 방향3.

- 13 -

제 장 바이러스 및 해킹대응 관리시스템 설계3

제 절 전체 시스템 설계1

제 절 바이러스 및 웜 대응 시스템 설계2

면역 시스템 정의1.

면역 시스템의 요구 조건2.

시스템의 패턴 업데이트 시나리오3. AVIS DB

업데이트를 위한 환경 설계4.

바이러스 탐지5.

제 절 해킹관련 트로이목마 대응 시스템 설계3

커널 백도어 대응 시스템의 요구조건1.

시스템의 정의2. Shark

시스템 구성도3. Shark

시스템에서의 시나리오4. Shark

시스템 설치5. Shark

제 장 바이러스 및 해킹대응 관리시스템 개발4

제 절 바이러스 및 웜 대응 시스템 개발1

연구개발의 범위1.

시스템 구현2.

모듈 설명3.

테스트 환경4.

테스트5.

테스트 결과6.

- 14 -

제 절 해킹관련 트로이목마 대응 시스템 개발2

시스템 구현1. Shark

구현 모듈 설명2.

기능 테스트 시나리오3.

테스트 시나리오4.

테스트 결과5.

제 절 활용방법3

제 장 결론5

참고문헌

부록 주요 웜 바이러스의 특징 및 증상A.

부록 리눅스 커널 백도어 주요 코드 분석B.

부록 솔라리스 커널 백도어 주요 코드 분석C.

부록 커널 백도어 탐지 툴 코드 분석D.

- 15 -

그림 목차

그림 신종 바이러스 발생 현황 년 년( 1-1) (1990 - 2001 )

그림 유형별 신종바이러스 발생 현황 년 년( 1-2) (1999 -2001 )

그림 월별 해킹사고 접수현황( 1-3)

그림 새로운 웜의 등장에 따른 사고접수의 변화( 1-4)

그림 웜 피해 현황( 1-5) Nimda

그림 지능화되는 바이러스 제작 기법( 1-6)

그림 바이러스 웜 트로이목마의 비교( 2-1) , ,

그림 바이러스 감염 구조( 2-2) VIT

그림 바이러스 감염 과정( 2-3) VlT

그림 바이러스 감염 구조( 2-4 ) SlLOV

그림 바이러스의 감염 동작( 2-5) SlLOV

그림 웜의 종류( 2-6)

그림 인터넷 웜의 일반적인 기법( 2-7)

그림( 2-8) Create Object methods

그림 와 스크립트 엔진( 2-9) WSH

그림 일반 백도어 루트킷( 2-10) ( )

그림 커널 백도어( 2-11)

그림 일반적인 유닉스 커널의 구조( 2-12)

그림 리눅스 커널 모듈 동작 구조( 2-13)

그림 솔라리스 커널 모듈 동작 구조( 2-14)

그림 시만텍 면역 시스템( 2-15)

그림 오토마타 상태 전이 다이어그램( 2-16)

그림 교배연산의 예( 2-17)

그림 돌연변이 연산의 예( 2-18)

- 16 -

그림 전체 구성도( 3-1)

그림 전체 구성( 3-2) AVIS(Anti Virus Immune System)

그림 일반적인 면역 시스템 모델( 3-3)

그림 패턴 의 서버 전송( 3-4) DB

그림 바이러스 행동 정의 오토마타( 3-5)

그림 자기복제( 3-6)

그림 자신을 복제하는 바이러스의 오토마타 표현( 3-7)

그림 파일을 덮어씌우는 행위( 3-8)

그림 임의의 파일을 오픈하는 바이러스의 오토마타 표현( 3-9)

그림 레지스트리 변경 패턴( 3-10)

그림 레지스트리를 변경하는 오토마타 표현( 3-11)

그림 이메일 전송 패턴( 3-12)

그림 전송 바이러스의 오토마타 표현식( 3-13) E-mail

그림 가중치가 반영된 새로운 확률테이블 형성( 3-14)

그림 커널 백도어 대응 시스템 동작( 3-15)

그림 커널 백도어 침해 여부 모듈 구성( 3-16)

그림 커널 백도어 예방 탐지 및 복구 모듈( 3-17) ,

그림 커널 백도어에 의안 침해 검사( 3-18)

그림 커널 모듈 필터링( 3-19)

그림 시스템콜 변경 탐지 및 복구( 3-20)

그림 모듈 리스트 변경 탐지 및 복구( 3-21)

그림 프로토콜 핸들러 탐지 및 복구( 3-22)

그림 시스템 동작 흐름( 3-23) Shark

그림 시스템 전체 구성( 3-24) Shark

그림 커널 모듈 적재 시도 감시( 3-25)

그림 시스템 콜 변경 탐지 및 복구( 3-26)

- 17 -

그림 모듈 리스트 변경 탐지 및 복구( 3-27)

그림 커널 백도어 침해 여부 검사( 3-28)

그림 커널 백도어 탐지시 예방( 3-29)

그림 커널 백도어 탐지시 복구( 3-30)

그림 시스템 전체 구성도( 4-1) AVIS

그림 바이러스 탐지 클라이언트( 4-2)

그림 폴더 선택 브라우저( 4-3)

그림 다중 선택( 4-4)

그림 알려지지 않은 바이러스 탐지( 4-5)

그림 탐지 결과( 4-6)

그림 알려진 바이러스 탐지( 4-7)

그림 탐지 결과( 4-8)

그림 패턴 의 업데이트( 4-9) DB

그림 패턴 업데이트 완료( 4-10) DB

그림 패턴 테이블 구성( 4-11) DB

그림 패턴 의 내용( 4-12) DB

그림 기존 바이러스 검사( 4-13)

그림 스크립트 내부의 악성 코드 추출( 4-14)

그림 패턴 업데이트 시나리오( 4-15) DB

그림 의 면역 시나리오( 4-16) AVIS System

그림 실험환경( 4-17)

그림 바이러스 파일 리스트( 4-18)

그림 시스템으로 바이러스 탐지( 4-19) AVIS

그림 바이러스 파일( 4-20) Very Funny

그림 바이러스를 변조한 파일( 4-21) Very Funny

그림 시스템( 4-22) Shark

- 18 -

그림 커널 모듈 접근제어테이블( 4-23)

그림 새로운 시스템 콜의 구현( 4-24)

그림 기존 시스템 콜을 확장한 시스템 콜 추가( 4-25)

그림 시스템 콜 테이블 변경( 4-26)

그림 시스템 콜 테이블 보호 커널 타이머( 4-27)

그림 리눅스 커널 모듈 리스트 구조( 4-28)

그림 구조체들의 연결 구조( 4-29) inet-protocol

그림 커널 백도어가 없는 경우( 4-30)

그림 에 의해 침해 당한 경우( 4-31) Adore

그림 알려지지 않은 커널 백도어에 의한 침해의 경우( 4-32)

그림 여러 커널 백도어에 의한 침해의 경우( 4-33)

그림 시스템 언로드 보호( 4-34) Shark

그림 커널 백도어 설치 방지( 4-35)

그림 시스템에 허가 커널 모듈 등록( 4-36) Shark

그림 커널 백도어 의 허가 모듈 등록 및 로드( 4-37) knark

그림 의 시스템콜 변경 탐지 및 복구( 4-38) knark

그림 프로토콜 핸들러 커널 모듈 리스트 변경 탐지 및 복구( 4-39) ,

그림 과 에 의한 침해( 4-40) Rkit Adore

그림 커널 백도어에 침해된 시스템( 4-41)

그림 시스템 동작 흐름( 4-42) Shark

그림 일반 리눅스에서 특정 디렉토리 숨김 시도( 4-43)

그림 일반 리눅스에서 특정 디렉토리 보임 시도( 4-44)

그림 가 설치된 리눅스에서 특정 디렉토리 숨김 시도( 4-45) Shark

그림 일반 리눅스에서 시도( 4-46) exec-redirection

그림 가 설치된 리눅스에서 시도( 4-47) Shark exec-redirection

그림 일반 리눅스에서 권한 획득 시도( 4-48) root

그림 가 설치된 리눅스에서 권한 획득 시도( 4-49) Shark root

- 19 -

표 목차

표 국내 바이러스 피해 현황 월 월[ 1-1] (2001.2 ~ 12 )

표 출처별 국내 신종바이러스 발생현황 년 년[ 1-2] (1988 -2001 )

표 연도별 국외 해킹사고 발생현황[ 1-3]

표 윈도우 바이러스 종류[ 2-1]

표 대표적 매크로 공격 분류[ 2-2]

표 어플리케이션 파생 바이러스[ 2-3]

표 객체가 제공하는 메소드[ 2-4] Scripting. FileSystemObject

표 객체가 제공하는 메소드[ 2-5] WScript. Shell

표 객체가 제공하는 메소드[ 2-6] WScript. Network

표 버전별 특징[ 2-7] VBSWG

표 트로이목마와 백도어[ 2-8]

표 주요 커널 백도어 탐지 툴[ 2-9]

표 확장된 패턴의 변이도에 따른 확률[ 3-1]

표 유전자 알고리즘의 적용 흐름도[ 3-2]

표 가중치와 유전자 코드[ 3-3]

표 커널 백도어 설치 시점과 작동 모듈 관계[ 3-4]

표 바이러스 탐지 시스템간의 성능 비교[ 4-1]

- 20 -

제 장 서론1

본 과제에서는 급증하고 있는 해킹 바이러스로 인한 사고에 대응하기 위해 이미 발견되어

알려진 악성 프로그램 뿐 아니라 알려지지 않은 악성프로그램들로 인한 피해까지 예방 할

수 있도록 바이러스 및 해킹 대응 시스템을 개발하였다 본 장에서는 이러한 시스템을 개발.

하기 위해 우선적으로 해킹 바이러스로 인한 피해의 현황을 분석하여 피해 규모 및 추세를

보고 이 연구의 필요성 범위 목적을 알아본다, , .

제 절 연구개발 배경1

국가의 지식기반 경제력 확충에 무엇보다 큰 역할을 하고 있는 인터넷은 년이후 초고속1998

통신망등의 인프라구축과 더불어 보급이 활발해지면서 그 이용자도 기하급수적으로 증가PC

하였다 특히 쇼핑몰 인터넷뱅킹 사이버증권등 다양한 전자상거래 분야를 통해 인터넷이. , ,

기업차원에서는 중요한 경영 수단으로 자리잡아 대기업은 물론 수많은 중소기업들도 가세,

하고 있으며 인터넷 이용자들은 이전의 정보공유 차원을 넘어 경제활동의 장으로 활발히,

이용되고 있다.

그러나 인터넷의 발달과 이용자가 증가할수록 해킹 바이러스는 기승을 부리고 있고 그로,

인한 피해 규모도 점차 커지고 있다 더욱이 출현하고 있는 바이러스들이 점차 더 복합적이.

고 교활해져 다양한 형태의 공격루트를 이용하고 있기 때문에 해킹 바이러스 대응의 중요,

성이 무엇보다 크다고 할 수 있다.

- 21 -

국내 바이러스 사고 현황1.

일반 사용자들의 가장 큰 보안 위협으로 인식되고 있는 바이러스는 빠른 네트워크 환경PC

구축과 인터넷 인구의 증가로 그 피해가 더욱 커지고 있다 년 바이러스에 인한 피해의. 2001

주요 특징으로는 네트워크 및 메일을 통하여 전파되어 그 확산 속도가 급속도로 발전했E-

다는 점과 서비스 거부 공격 등 해킹 공격에도 이용한다는 것이다 이번 해 동안 님다와 같.

이 메일을 이용한 전파 방법뿐만 아니라 해킹 시 이용되는 취약점을 통하여 다른 시스템에

침입한 후 바이러스를 심어놓거나 웹페이지를 방문한 시스템을 감염하는 형태 서캠과 같이,

시스템내의 중요 정보를 유출하는 등 진보된 형태의 바이러스가 나타났으며 많은 피해를 발

생시켰다.

년 동안 출현한 주요 바이러스로는2001 Win32/Sircam.worm, Win32/Nimda, W32. Goner.

A@mm, W32. Klez.A@mm, W32.Aliz.Worm, W32.Badtrans.B@mm, VBS.Haptime,

등을 들 수VBS_HOMEPAGE.A, W32.Naked@mm, VBS.JongBoy@mm, Anna Kournikova

있다.

년 한해 동안 바이러스에 의한 피해는 하반기에 출연한 서캠과 님다의 영향을 가장 많2001

이 받았다 이는 각각 월과 월에 제작된 신종 바이러스임을 감안할 때 다른 바이러스 보. 7 9

다 기간별 피해규모는 훨씬 더 크다는 것을 알 수 있다 상반기에는 상대적으로 뚜렷한 신.

종 바이러스에 의한 피해 없이 기존의 바이러스로 인한 피해가 컸던 것에 반해 하반기에는

님다와 서캠과 같은 놀라운 전파력에 의한 새로운 웜 형태가 출현하여 많은 피해를 일으킨

한해였다.

년 상반기 동안의 바이러스 피해는 와 같이 파일 공유를 통하여 전파2001 FunLove, Wininit

되는 바이러스에 의한 피해가 많았다 하드 드라이브나 폴더 공유 시 쓰기 권한제한 패스워. ,

드 사용 등으로 나타나고 있으며 신종 바이러스 보다 기존의 바이러스에 의한 피해가 대부

분이었다.

- 22 -

상반기 동안 신종 바이러스인 등은 바이러스의 유포를 촉진하AnnaKournikova, Homepage

기 위하여 일반사용자를 유혹하는 문구를 사용하기도 하였으며 이러한 바이러스들에 의한

피해는 처음 출현한 기간동안 상대적으로 적은 피해를 입혔고 점차 줄어들어 전체 바이러,

스 피해 중 차지하는 비중 또한 줄었다.

표 국내 바이러스 피해 현황 월 월[ 1-1] (2001.2 ~ 12 )

순위 바이러스 이름 유형 전체피해상반기월 월(2 -6 )

하반기월 월(7 -12 ) 국 외 산/

1 Win32/Nimda I-Worm 16,665 0 16,665 외산

2 Win32/Sircam.worm I-Worm 12,216 0 12,216 외산

3 Win32/Funlove.4099 Win32 11,372 6,445 4,927 외산

4 I-Worm/Wininit Trojan 2,827 1,890 937 외산

5 W32/CIH Win95 2,705 2,278 427 외산

6 Win32/Nimda.D I-Worm 2,205 0 2,205 외산

7 I-Worm/Hybris I-Worm 1,754 1,360 394 외산

8 W32/Weird I-Worm 1,190 1,106 84 외산

9 W32/Weird Win32 1,187 818 369 외산

10 I-Worm/Navidad I-Worm 1,127 581 546 외산

기타 11,785 6,299 5,486

합계 65,033 20,777 44,256

)※ 변형바이러스도 별도로 취급함으로 본 피해통계에서는 변형 또는 원형 바이러스로

인한 각각의 피해현황을 나타내고 있음.

)※ 자료제공 해킹바이러스상담지원센터 안철수연구소 하우리 시만텍코리아 트랜드: , , , ,

코리아

공유된 네트워크를 통해 전파되는 의 피해가 가장 큰 비중을 차지해왔던 상반기와Funlove

달리 월에 발생한 서캠과 월에 발생한 님다 바이러스에 의한 전체 피해 추세에 변화가 생7 9

겼다.

- 23 -

월 일 의 출현 이후 약 일 동안 천 백여건의 피해를 발생시켜 상반기 매달7 17 Sircam 10 5 6

피해의 위를 지켜왔던 바이러스와 현저한 차이를 보였으며 의 위세는 월1 FunLove Sircam 8

까지 지속되었다.

그러나 월 일 가 출현하면서 보다 더 큰 피해를 발생하여 발견된지 일9 18 Nimda Sircam 10

만에 약 만건에 이르는 피해를 일으켰고 이는 월 전체 피해의 나 되는 비중을 차지했9 80%

다.

신종 바이러스2. 1) 발생 현황

신종바이러스 통계를 잡기 시작한 년 이후 매년 증가하던 신종바이러스가 금년 종이'88 194

발견되어 전년도 같은 기간보다 정도 축소되었다36% .

그림 신종 바이러스 발생 현황 년 년( 1-1) (1990 - 2001 )

1) 신종바이러스란 국내에서 발견된 변형바이러스를 포함한 새롭게 나타난 바이러스를 지칭

- 24 -

표 기 출처별 국내 신종바이러스 발생현황 년 년[ 1-2] (1988 -2001 )

전통적인 바이러스인 파일바이러스가 년이전까지 국내 신종바이러스의 출현을 주도했으'99

나 년 중반부터 감소하여 최근에는 거의 발견되지 않고 있다, '98 .

매크로바이러스는 년부터 본격적으로 국내에서 나타나기 시작하여 년 말까지 나타났'99 '00

고 이와 더불어 트로이목마는 년 하반기부터 많이 나타나기 시작하여 국내 신종바이러, '99

스 출현건수 증가에 결정적인 영향을 주었다.

그러나 년에는 트로이목마와 매크로바이러스는 감소되고 있는 반면 와 같은 스크립'01 , VBS

트 형태나 인터넷 웜이 꾸준히 출현하고 있으며 지속적으로 전파력을 가지고 피해를 주고,

있는 것으로 분석된다.

그림 유형별 신종바이러스 발생 현황 년 년( 1-2) (1999 -2001 )

- 25 -

국내 해킹 사고 현황3.

년 한해동안의 해킹사고 누적건수는 총 건으로 월평균 건의 사고접수가 있었2001 5,333 , 444.4

으며 이것은 년의 해킹사고 총괄 누계인 건과 비교하면 가 증가한 수치이다, 2000 1,943 274% .

이와 같이 해킹사고가 급증한 원인은 네트워크상의 시스템을 무작위로 공격하는 인터넷 웜

의 창궐과 밀접한 관련이 있다.

년 국내 해킹사고 월별 접수현황은 다음과 같다2001 .

그림 월별 해킹사고 접수현황( 1-3)

금년 초기에 등장하여 인터넷 웜의 시대를 예고했던 라멘 웜과 웜은 목표가 되는 리눅110n

스시스템을 공격할 때 이미 널리 알려진 취약점을 사용하였다 따라서 시스템 관리자들은.

이미 확고한 보안대책을 가지고 있는 상태였으며 전파력도 비교적 약하였다 이러한 상황은, .

월에 이르러 정찰기 충돌 사건으로 간의 사이버전 양상이 나타나면서 등장한5 , -美 中

웜의 등장으로 크게 변화하였다 웜은 주로 시스템을 공격Sadmind/IIS . Sadmind/IIS Solaris

숙주로 하여 시스템의 홈페이지를 변조시켰다WindowNT/2000 .

- 26 -

이때 피해의 대부분은 서버를 통해 웹서비스를 하고 있던 시스템에서 발생하, IIS windows

였으며 홈페이지변조라는 특수성 때문에 일반인들도 공격사실을 쉽게 인지할 수 있었다 이, .

후 월에 들어 코드레드 웜이 등장하여 이전에 볼 수 없었던 광범위한 규모로 시스템을 감7 I

염시켰다.

그림 에서 특이할 사항은 코드레드 웜의 등장에도 불구하고 월의 해킹사고는 전월대( 1-4) I 7

비 로 감소하였다는 점이다 이는 해당 시스템의 관리자들이 코드레드 웜의 공격사실을84% . I

인지하지 못하였거나 인지하였어도 시스템 리부팅 후 별다른 보안조처를 강구하지 않았기,

때문으로 추측된다 코드레드 웜은 메모리에만 존재하며 시스템을 리부팅하면 모든 공격의. I ,

흔적이 소멸한다 사용자가 시스템 이상을 인지하였을 때 가장 먼저 취하는 응급. Windows

조치가 시스템 리부팅이라는 사실을 감안하면 일반 사용자가 코드레드 웜의 감염여부를 판I

별하는 것은 대단히 어려웠을 것이다.

- 27 -

이것은 코드레드 웜과 관련된 침해사고접수가 실제로 공격을 감행하는 시기 매달 일I ( 1~19 )

가 아니라 언론 등에 보도된 이후에 이루어졌음에서도 알 수 있다 월 초 추후에 시스템을. 8 ,

접근할 수 있는 백도어를 설치하는 새로운 종류의 코드레드 웜이 등장하면서 해당 웜의 감II

염여부를 보다 쉽게 알 수 있게 되었고 더불어 해킹피해접수도 급증하였다.

국외 해킹 바이러스 사고 현황4.

국내와 마찬가지로 국외 미국 영국 일본의 경우도 매년 배씩 해킹사고 접수가 증가하고, , 2~3

있으며 특히 년 들어 해킹사고가 거의 배씩 증가했다 이번 해에는2001 3~4 . Codered, Nimda

와 같은 바이러스 사고가 많아 다른 해에 비해 증가율이 컸다.

표 연도별 국외 해킹사고 발생현황[ 1-3]

자료출처:※ http://www.cert.org/stats/cert_stats.html

미국 영국( ) http://www.ja.net/cert/JANET-CERT/monthly_reports.html( )

일본http://www.jpcert.or.jp/stat/reports.html ( )

한국http://www. certcc.or. kr/( )

해킹에 대한 실례로 년 월 일 금요일자 신문에 사가 소스코드를 해킹 당했2000 10 27 Microsoft

으며 소스코드를 손상당했다는 내용에 의 부사장 스티븐 발머는 해커는 소스코드의 일, MS

부분을 보았을 뿐이라고 밝혔다.

- 28 -

실제로 최근 몇 년 동안 해킹과 같은 불법 행위로 중요한 정보들이 빠져나가는 사례가 늘고

있다 이것이 사실이든 아니든 간에 사의 소스코드 해킹의 스파이 행위는 경제적. Microsoft

인 부분에 대해 매우 중대한 책임을 져야 하는 문제이다.

이렇듯 해킹 사고에서 예외일 수 있는 기관은 없으며 그 사고건수와 규모가 급증하고 있어

심각성을 간과할 수 없다는 것이 전 세계적으로 처해있는 현주소이다.

제 절 연구개발 목적2

본 절에서는 최근 해킹기법과 바이러스 기법을 동시에 사용하는 교묘하고 지능적인 방법으

로 제작되는 악성 프로그램들의 특징을 살펴보고 이러한 추세에 대응하기 위한 본과제의 연

구개발 목적을 살펴본다.

최근 바이러스의 특징1.

최근에 발생하고 있는 바이러스들은 해킹 기법을 동시에 사용하기도하여 해킹과 바이러스의

구분이 모호해지고 있고 다방면에서 지능적이고 교묘한 특징을 이용하고 있다.

신종 바이러스의 출현건수가 감소하고 매크로나 트로이목마와 같은 유형의 출현건수도 감소

하는 반면 웜 유형의 출현건수는 꾸준히 증가하고 있다 이러한 웜은 전파속도가 빨라 시. 24

간 이내에 전세계적으로 확산되어 빠른 속도로 피해를 일으키고 있다.

- 29 -

월 일 외국에서 최초 발견된 의 경우 일 국내에도 유입되어 만 하루사이에 피9 18 NIMDA 19

해건수가 약 건에 이르는 이례적인 피해를 일으켰다 국내에 유입된 것이 최초 발생 이4000 .

후 하루 차이를 보이나 이는 시차에 의한 것으로 사실상 몇 시간차이에 불과하며 지금까지

가장 큰 피해를 일으키고 있는 바이러스가 올해 월 일 약 건의 피해를 일으킨CIH 4 26 1000

것에 비하여 볼 때 그 피해규모를 짐작할 수 있을 것이다

그림 웜 피해 현황( 1-5) Nimda

월에 처음 발견된 의 경우 그 확산속도와 피해규모도 엄청났으나 더욱 문제가 되는7 Sircam

것은 정보의 유출이었다 시스템내에 존재하는 문서파일을 찾아 웜에 감염시켜 원래의 첨부.

파일명을 그대로 이용하여 메일을 보낸다 따라서 실적보고 년 지분현황 이력서. “ ”, “2001 ”, “ ”

등의 중요 문서가 유출되어 메일 수신자에게 그 내용이 그대로 전달되어 기업의 중요 정보

나 개인 정보가 외부로 유출되는 사회적 문제를 초래하기도 하였다.

바이러스의 유포를 촉진하기 위하여 일반 사용자를 유혹하는 문구나 매체를 사용하는 등의

교묘한 방법을 사용하기도 한다.

- 30 -

의 경우 사용자를 유혹하기 위해 러시아 미모의 테니스선수 안나코르니- AnnaKournikova

코바 사진 파일인 것처럼 첨부파일 이름 을 위장하여 메일을 보냄(AnnaKournikova.jpg.vbs)

의 경우 메일로 전파하는데 메일의 제목이 첨부파일 이름이- Naked “Fw: Naked wife",

와 같은 선정적인 문구로 사용자를 현혹시킴”NakedWife.exe" .

에 감염되면 불건전 성인 사이트로 접속을 시도- Homepage

의 경우 메일 전파 시 제목이 첨부파일이름이- Kind . “New antivirus tool", ”Antivirus.exe"

로 마치 새로운 바이러스 치료 프로그램인 것처럼 위장

미국 테러 이후에는 테러 관련 메일로 위장하여 빈라덴이나 이슬람 미국 전쟁 등의 내- , ,

용이 담긴 다수의 바이러스 발견

최근 출현하는 웜 중에는 바이러스와 해킹의 기능을 동시에 사용하여 더욱 지능적인 수법을

이용하고 있다 해킹기법을 이용해 다른 시스템에 불법으로 침입한 후 바이러스 기법으로.

트로이목마 웜 바이러스와 같은 악성 코드를 심어놓고 전파하는 형태 바이러스의 전파를, , ,

위해 다른 시스템을 검색하거나 서비스 거부 공격을 가하는 형태가 출현하여 바이러스와 해

킹의 구분이 모호해지고 있다.

이렇게 여러 가지 기능을 동시에 이용하므로 그 피해 규모 또한 상당하다.

- 31 -

그림 지능화되는 바이러스 제작 기법( 1-6)

연구개발 목적2.

위에서 살펴본 바와 같이 단기간에 많은 피해를 입힌 림다와 서캠을 비롯한 대부분은 메일

을 통해 전파되고 서캠은 피해 시스템에 있는 파일을 첨부하여 메일이 발송되므로 정보 유

출의 피해까지 있다 메일을 통해 전파되므로 전 세계로 한두시간안에 전파된다 하지만 백. .

신은 바이러스의 샘플을 입수하여 분석한 후에 백신이 개발되어 엔진을 업데이트 하게 된

다 샘플 입수와 분석이 끝나 백신이 개발된 시점에 바이러스는 이미 전 세계로 전파된 후.

다.

따라서 새로운 바이러스가 발견되면 실시간으로 탐지하는 기술 및 실시간 대응체계 이미, ,

알려진 바이러스 뿐 만 아니라 아직 출현하지 않은 미확인 바이러스까지 탐지 할 수 있는

발전된 바이러스 탐지 시스템에 대한 연구가 진행되고 있다 본 연구에서는 알려지지 않은.

바이러스 중 요즘 많이 발생하고 있는 로 제작된 웜을 사전에 탐지하는 방법을 연구하VBS

였다.

- 32 -

해킹도 많은 증가가 있었으나 일반적인 해킹은 관리자가 쉽게 탐지할 수가 있다 하지만 커.

널 백도어는 일반적인 방법으로는 찾아내기가 매우 힘들다 이에 커널 백도어를 탐지할 수.

있는 방법 및 예방할 수 있는 방법에 대해 연구하였다.

바이러스 및 해킹에 대해 사후 대처가 아닌 사전에 예방할 수 있는 방법을 제시하여 바이러

스와 해킹의 피해를 줄이는데 본 연구의 목적이 있다.

- 33 -

제 장 악성프로그램 기법 및 대응 기법 연구2

악성 프로그램의 대표적인 유형으로 컴퓨터 바이러스 웜 트로이 목마를 들 수 있다 궁극, , .

적으로 이러한 악성 프로그램에 대응 할 수 있는 시스템을 개발하기 위해 이장에서는 바이

러스 웜 트로이목마의 기본개념부터 기존 악성 프로그램에서 사용하는 기법을 분석한 후, ,

현재 대응하고 있는 실정을 살펴보고 문제점을 지적한다 또한 이러한 문제점을 해결하기.

위해 진행되고 있는 관련 연구 방법들을 살펴보고 대응 할 수 있는 기법을 알아보고자 한

다.

제 절 악성프로그램 기법1

악성 프로그램은 일반적으로 제작자가 의도적으로 사용자에게 피해를 주고자 만든 프로그램

인데 크게 컴퓨터 바이러스 웜 트로이목마 등으로 분류한다 바이러스의 경우 자기 복제, , .

능력을 가지며 감염 대상 코드의 실행 구조를 변경하거나 내부 구조를 변경하여 대상 코드

의 수행 전후에 바이러스가 실행 될 수 있도록 하며 부작용을 일으킬 수 있다 이러한 바이.

러스는 독립적으로 존재하지 못하고 다른 프로그램에 기생하는 프로그램이다 웜 프로그램.

은 바이러스와 달리 감염 대상을 갖지 않는다 즉 숙주 프로그램 없이 독립적으로 존재하면.

서 자신을 복제하는 프로그램으로 초기에는 시스템에 영향을 미치지 않았으나 현재 악의의

기능을 갖는 웜도 존재한다 국내에 발견된 대표적인 웜에는. I-Worm/Happy99,

등이 있다 트로이 목마의 가장 큰 특징은 자기 복I-Worm/ExploreZip, I-Worm/PrettyPark .

제 기능이 없다는 것이다 그리고 악의적 문제를 일으키는 것을 목적으로 작성된 악성 프로.

그램으로 자료의 파괴 뿐만 아니라 정보 유출 해킹 등을 목적으로 하는 경우가 많다, .

- 34 -

대표적인 트로이목마로는 등이 있다Wintrojan/Back_Orifice, Win-Trojan/SubSeven .

이와 같은 바이러스 웜 트로이 목마의 차이를 그림 에서 볼 수 있다, , ( 2-1) .

그림 바이러스 웜 트로이목마의 비교( 2-1) , ,

이 절에서는 이러한 악성 프로그램의 대표적인 유형인 바이러스 웜 트로이목마에서 지금까, ,

지 사용하고 있는 기법들을 분석해본다.

바이러스 분류 및 주요 바이러스1.

몇 년 전 바이러스는 전 세계적으로 시스템과 재산상의 엄청난 손실을 야기했었다 이CIH .

렇게 시스템과 재산상의 심각한 피해를 입히는 바이러스는 바이러스 제작자들로부터 모방되

어져 또 다른 형태의 바이러스를 양산하게 된다.

- 35 -

본 절에서는 최신 바이러스의 동향을 분석하여 알려지지 않은 새로운 형태의 바이러스를 탐

지하고자 하는데 그 기반을 삼기 위함이다 바이러스는 운영체제별로 또한 응용 프로그램. ,

파생 바이러스별로 분류할 수 있으며 이러한 바이러스 유형에 대해 살펴본 후 바이러스 기

법을 분석해본다.

가 윈도우 바이러스.

도스 기능을 사용하는 반쪽자리 윈도우 바이러스로 년 처음 등장한 윈도우 바이러스는94 97

년부터는 컴퓨터를 이용하는 최대 바이러스로 부상했다 현재 가장 문제가 되고 있는 바이.

러스는 윈도우 용 바이러스이다 이들 바이러스는 윈도우 에서는 동작하지 않거95/98 . ' 2000'

나 오동작 할 가능성이 크다 하지만 윈도우 이 널리 사용되기 전까지는 윈도우. , 2000 95/98

사용자들에게 많은 피해를 줄 것으로 예상된다.

또한 바이러스 제작 기법과 전파 기법도 매우 다양해지고 있다 로 바이러스를 전송. E-mai1

하는 기법은 이들 윈도우 바이러스들에서 처음 사용됐다 대표적인 예로. Win95/CIH,

등이 있다 윈도우용 바이러Anxiety-Poppy, Win95/Marburg, Win95/Padania, Win32/Parvo .

스는 제작 기법에 따라 다음과 같이 구분한다.

- 36 -

표 윈도우 바이러스 종류[ 2-1]

종 류 설 명 예

Win3.1Virus(NE)비트 코드로 작성된16 New

포맷을 가진 실행파일만을Executable감염시키는 바이러스

Win16/Redteam

Win9x Virus(PE)

비트 코드로 작성된 파일을 감염시32키는 바이러스 확장자가 이며 윈. EXE도우 의 비트 실행 파일인95/98 32

포맷을 가진 실행Portable Executable파일만을 감염시키는 바이러스

Win95/CIH,Win95/Marburg

Win32 Virus(PE)위와 동일하지만 에서도Windows NT정상적으로 메모리에 상주하거나 감염활동을 하는 바이러스

Win32/Kriz,Win32/CTX

나 유닉스 바이러스.

유닉스 바이러스는 컴퓨터바이러스와 해킹의 기술이 결합되어 유닉스 서버에서 동작하는 보

다 진보된 바이러스를 의미하며 최근 컴퓨터바이러스와 해킹 기법의 기술적인 향상으로 인,

하여 유닉스 등의 서버 시스템의 컴퓨터바이러스 출현 가능성에 대한 우려가 더욱 높아지고

있다 현재까지는 유닉스 바이러스에 대한 위협이 그렇게 크게 나타나지는 않았지만 점점.

일반 사용자들에게 가 대중화되어감에 따라 바이러스 제작자들은 환경을 유닉스 쪽으Linux

로 바꾸게 될 것이며 해킹 기술과 연계된 이러한 바이러스들의 위협은 현재의 일반 바, PC

이러스 보다 더 큰 위협이 될 것이다.

- 37 -

의 컴퓨터바이러스는 자기 자신을 다른 프로그램에 덧붙임으로써 그 프로그램Fred Cohen “

을 감염시키는 프로그램이다 라는 정의에 의하면 유닉스 바이러스는 등.” Linux/Staog, Bliss

과 같은 직접적으로 유닉스의 실행 파일이나ELF(Executable and Linking Format) Kernel,

에 코드가 삽입되는 일반적인 바이러스 형태와Library Morris Worm, ADM Worm,

등과 같이 직접적으로 파일이나 시스템을 감염시키지 않고 유닉Millennium Internet Worm

스 시스템 자체의 버그나 설정상의 취약성을 이용한 해킹 기법을 이용하여 네트워크를 통해

대규모로 자동 전파할 수 있는 웜의 형태로 나누어 볼 수 있을 것이다.

최근 등 주요 인터넷 전자상거래 사이트들이 해커들의 분산서비스Yahoo, CNN, Amazon “

거부공격 에 의해 서비스를 제대로 제공하지 못하는 등의 사고가(DDOS, Distributed DOS)"

발생하여 전자상거래의 활성화에 큰 위협을 주고 있다 이번 공격에 사용된 분산서비스거부.

공격의 위협은 웜에 의한 공격은 아니었으나 이미 년에 의, 1995 Peter V. Raddtti “Computer

논문에서 유닉스 웜을 이용한 특정 사이트에 대한 분산서비스Viruses In Unix Networks”

거부공격이 가능할 것으로 예견되었던 것이었다.

유닉스 웜을 이용한 수천대의 유닉스 서버에 대한 자동 해킹 및 감염방법으로 해커들은 쉽

게 특정 사이트에 대한 공격을 할 수 있을 것이다 또한 바이러스와 해킹 기술에 모두 능숙.

한 해커라면 시스템을 해킹한 뒤에 바이러스 형태로 시스템의 주요 파일과 커널 에(Kernel)

보이지 않게 트로이목마를 설치할 수 있을 것이다 이러한 방법으로 시스템을 침해할 경우.

에는 보안 전문가라고 할지라도 그 트로이목마를 탐지 제거 할 수 없을 것이며 현재의 보,ㆍ

안 침입탐지 침입차단 으로는 이러한 공격을 대응하기 어렵다는 문제가 지속적으로 발생될( , )

것이다.

- 38 -

주요 유닉스 바이러스1)

유닉스 바이러스에 대한 연구는 년에 와 등에 의해 의1980 Elk Cloner Fred Cohen 4BSD

에서 최초의 유닉스 바이러스들이 제작되면서부터 시작되었다 하지만 이 시절에는VAX . PC

로부터 바이러스가 출현하여 처음 바이러스가 인식되기 시작되었던 시기였으며 심각한 보,

안 위협의 대상이 되지는 못하였다.

가 최초의 리눅스 바이러스) Linux/Staog -

최초의 실제적인 파일 감염 기능을 갖는 리눅스 바이러스는 라는 오스트리아 바이러VLAD

스 그룹의 에 의해 년에 제작된 이다 이 바이러스는 유닉스의Quantum 1996 “Linux/Staog” .

파일들을 감염시키는 로 제작된 바이러스ELF(Executable and Linking Format) Assembler

로 일단 실행되면 메모리에 상주하여 다음에 다른 사용자가 실행 파일을 수행할 때 해당 파

일을 감염시키는 윈도우 바이러스와 유사한 형태를 갖는 바이러스이다 또한 이 는 그. Stoag

시기에 알려진 세가지 보안 취약성 버퍼오버플로우 버퍼오버플로우 버(mount , tip , suidper1

그 을 이용하여 시스템의 관리자 권한을 얻는 해킹 기법이 추가적으로 포함되어 있었다) .

나 두 번째 리눅스 바이러스) Linux/B1iss -

두 번째 출현된 리눅스 바이러스는 년 월에 제작된 이며 이 바이러스도1997 2 “Linux/Bliss"

처럼 파일들을 감염시킨다 이 바이러스는 특징적으로 해킹 기술을 응용한Linux/Staog ELF .

웜 유형을 포함하고 있어서 의 정보를 통해 다른 시스템에 바이러스를 전파/etc/hosts.equiv

시킨다.

다) VIT virus

년 월 에 의해 제작된 리눅스 용 기생형 바이러스로 파일에서1998 10 Silvio Cesare x86 ELF

와 사이의 빈 공간을 이용하여 의 끝에 바이러Text Segment Data Segment Text Segment

스 코드를 삽입하는 방식으로 파일을 감염시키는 로 작성된 바이러스이다 이 바이러스는C .

복제를 위해 바이러스가 실행되면 현재 디렉토리의 파일들을 임의적으로 선택하여 감ELF

염시킨다.

- 39 -

라 최신 취약점을 이용한 웜) ADM lnternet worm(ADMwOrm) -

년에 리눅스 시스템을 자동으로 공격하고 자체 전파 기능이 있는 웜이 발견1998 x86 ADM

되었다 이 웜은 등의 취약성을 이용하여 시스템에 침입한 뒤 다른. IMAP, POP, rsh/rlogin

시스템을 임의적으로 선택하여 공격하는 기능을 가지는 웜이다.

마 국내에서 발견된 최신 웜) Millennium Internet Worm -

웜과 유사한 형태를 가지며 여기에 새로운 원격 해킹 취약점에 대한 공격 기능ADM

취약성 과 다양한 추가기능이 포함된 보다 진보된 웜이(imapd, qpopd, rpc.mountd, named )

다 년 월에는 국내의 모 기업의 해킹 사고에서 이 웜이 발견되었으며 이미 이 사이. 1999 12 ,

트에서 개의 서버를 공격한 상태였다477 .

유닉스 바이러스의 유형2)

가) Shell scripts

가장 간단히 제작될 수 있는 유닉스바이러스 유형으로 년에 이 쓴 그의 저1990 Fred Cohen

서 에서 소개된 것처럼“Computers Under Attack Intruders, Worms and Viruses” Shell

스크립트를 이용하여 크기가 단지 도 안되는 유닉스 바이러스를 제작할 수 있다200bytes .

- 40 -

그는 스크립트 바이러스의 예로 를 제시하였으며 바이러스Shell Man Page Virus , Melissa

와 같은 형태로 에서도 과 같은 메일 프로그램의 버그를 이용하여 주소록의 사Linux PINE

용자들에게 감염 파일을 전파시키는 등의 스크립트 바이러스가 출현할 가능성이 있을Shell

것이다.

나) Boot Sector viruses

을 기반으로 하는 일반 와 서버 시스템의 경우 기본 부트 섹터의 구조가 같기Intel PC PC ,

때문에 용 바이러스에서의 변형으로 가장 쉽게 적용될 수 있는 유닉스 용 바이러스의PC

유형으로 일반 와 같이 등의 기반 서버 들은 감염된PC Linux, 386BSD, SCO Unix Intel PC

로 부팅할 경우 부트섹터 바이러스에 감염될 수 있다DlSK DOS .

다) ELF infectors

유닉스 시스템의 실행파일인 파일을 실제적으로 감ELF(Executable and Linking Format)

염시키는 유형으로 임의의 악의적인 코드 실행 코드나 텍스트 를 실행 파일에 삽입 할 수( )

있기 때문에 그 전파 가능성은 매우 높다고 할 수 있다 악의적인 바이러스 제작자가. PC

바이러스의 유포방법처럼 유닉스 시스템의 주요 프로그램이나 패치 등에 바이러스를 감염시

켜 배포하게 된다면 현재까지는 유닉스 서버 용 백신에 대한 인식이 거의 없기 때문에 그

확산과 피해는 매우 클 것으로 예상된다 예로 등의 바이러. Linux/Staog, Linux/Bliss, VIT

스가 있으며 계속적으로 새로운 유형이 연구되고 있다, .

라) Faked libraries

유닉스 시스템에서는 응용 프로그램을 수행하거나 함수를 호출할 때 그에 따른 라이브러리

등이 많이 사용되는데 이러한 라이브러리들은 보안 설정에 대한 취약한 부분이 있으며 이,

를 이용한 해킹도 많이 발생되고 있다.

- 41 -

바이러스에서도 주요 함수의 라이브러리를 악성 코드로 바꾸어 놓아 응용프로그램 실행시

변경된 라이브러리가 실행되어 악의적인 작업을 수행하게 만드는 바이러스 유형으로 구현이

쉽기 때문에 그 변형이 많이 출현할 수 있다, .

마) Kernel infectors

유닉스 시스템의 자체를 감염시키는 바이러스 유형이 현재 연구되고 있다 현재까지Kernel .

는 이론적으로만 연구되고 있으나 곧 구현된 바이러스가 출현할 것으로 예상된다, .

다 바이러스. PDA

핸드헬드 스마트폰 휴대폰을 이용한 인터넷 접속 가PDA(Personal Digital Assistant), PC, ,

능성이 늘어나면서 무선 단말기에도 바이러스가 침투할 수 있다는 예측이 제기되고 있다.

특히 이 안정적으로 시행되고 각 단말기별로 채택될 통신 방식이 구체화되면 인IMT-2000

터넷을 통한 무선 단말기용 바이러스 출현은 시간 문제로 보여진다 실제로 바이러스. PDA

의 일종인 페이즈 바이러스는 감염된 애플리케이션을 닫으면 파일들을 삭제하여 정(Phage)

상적인 작동을 멈추게 한다.

이제 바이러스에 대한 위협은 와 같은 모바일 컴퓨팅 영역에까지 미치게 되었고 아직PDA

모바일 장비의 각종 표준 개발언어 프로토콜 등 이 정해지지 않았고 당분간은 기초적(O/S, , )

인 인터넷 이용만 가능할 전망이어서 바이러스에 대한 위협을 일반 사용자가 느끼기에는 시

간적 여유가 있는 편이다.

- 42 -

는 크게 세가지의 파일 포맷을 지원한다 등이 바로 그것이다PALM OS . PRC, PDB, PQA .

이 모든 파일 포맷이 공개되어 알려져 있으며 이를 이용해서 전위형 내지는 후위형 파일,

변형 바이러스를 만들 수 있음이 증명되어져 있다 몇해 전까지만 해도 이 많이 보급. PARM

이 안되어 있을 당시에는 크게 걱정을 하지 않았지만 현재는 사정이 많이 달라졌다, .

라 자바 바이러스.

최초의 자바 바이러스는 년 여름에 발견되었다 이들 바이러스 역시 자바가 디스크에1998 .

접근할 수 있어야만 하며 자바 애플릿이 아닌 자바애플리케이션을 감염시킨다 이들 바이러.

스 역시 대부분의 시스템에서는 자바가 디스크에 접근하지 못하게 설정되어 있는 등 제약이

있으므로 일반인에게 크게 문제가 되지 않는다.

예) Java/BeanHive, Java/StrangeBrew

마 어플리케이션 파생 바이러스.

어플리케이션에 내장된 매크로 혹은 스크립트 언어를 사용해서 바이러스를 제작 가능하리라

는 예상은 지난 년부터 시작되었다 그러나 이를 이용한 실제 바이러스는 지난 년1991 . 1994

월 최초로 발견됐으며 실제로 문제가 되기 시작한 것은 년 중반부터이다 현재 이런12 , 1995 .

원리를 이용한 매크로 바이러스와 스크립트 바이러스가 사용자를 괴롭히는 최대바이러스로

부상했다.

매크로 바이러스1)

운영체제와 상관없이 응용 프로그램을 플랫폼 삼아 작동한다 즉 호환 기종의 운영체제. IBM ,

매킨토시 기종의 운영체제 등에서 실행되는 워드 엑셀 등에서만 활동한다 그러나 매크로, .

기능이 있는 모든 응용 프로그램에 감염되는 것은 아니다 매크로 바이러스를 만들 수 있게.

된 것은 워드 엑셀이 인터프리터에 의해 해석되는 프로그래밍 언어 수준의 매크로 언MS ,

어를 지원하기 때문이다.

- 43 -

이들 매크로 언어는 의 비주얼 베이직 프로그래밍 언어와 비슷한 문법 체계를 갖고 있MS

다 그것이 바로 환경이다 매크로 바이러스의 경우. VBA (Visual Basic for Applications) .

세계적으로 워드 엑셀 바이러스가 기승을 부리고 있지만 국내에서는 특히 엑셀 바이러스의, ,

피해가 극심하다 수가 적기는 하지만 파워포인트와 액세스 바이러스도 등장했다 이들 바이. .

러스는 을 전파 수단으로 사용하곤 한다 주요 매크로 바이러스의 공격형태를 보면E-Mail .

다음과 같다.

표 대표적 매크로 공격 분류[ 2-2]

공격형태 공격내용

시스템 매크로공격 시스템 매크로를 가로채 주어진 일 이외의 행동

메뉴교체공격 특정메뉴를 악성행위를 하게 만듬

버튼재정의 공격 새로운 툴바 버튼 정의시 감염시키는 공격

공격Key Shortcuts 를 누를 때 감염시키는 공격Hotkey

매크로 공격Field 작성시 각 필드 접근시 공격Form

감염 공격Startup Dir 파일 읽기전에 다른 템플릿 읽어 상태변경Normal.dot

공격Add-in global template 일반 템플릿 파일 위치 변경공격

가 파파 바이러스) (X97M/Papa.A)

사상 최악의 바이러스로 악명을 날린 멜리사 바이러스의 위협에서 놓여나기도 전에 멜리사

보다 더 빠른 속도로 전파되는 신종 바이러스 파파가 발견돼 또 다른 파문을 불러일으켰' '

다.

- 44 -

나 프릴리사) (W97M/Prilissa. A)

크리스마스 시즌에 유행하는 이 바이러스는 메일을 통해 전파되며 만약 감염된 컴퓨터를E- ,

욀 일에 동작시키면 하드디스크를 자동으로 포맷한다12 25 .

스크립트 바이러스2)

각종 스크립트 언어로 작성된 바이러스를 말한다 예전에는 도스용 배치파일 스크립트 바이.

러스 제작에 사용됐으나 윈도우가 일반적인 운영체계로 자리잡으면서, .mIRC, VBS, HTML

등의 스크립트 언어가 유행을 타고 있다 현재는 를 이용하여 상당수의 바이러스가. VBScript

제작되었으며 여러 가지 기법이 사용되고 있다 초보자도 쉽게 제작이 가능하여 그 숫자가.

크게 늘고 있다 주로 로 확산되며 사용자의 주의가 특히 요구된다 본 연구 개발 과. E-mail , .

제에서 주요 탐지 대상으로 하고 있다 자세한 사항은 장에 언급되어 있다. 3 .

3) mIRC

인터넷용 채팅 프로그램이다 이 프로그램은 간단한 스크립트를 지원하는데 이 기능을 이용.

해서 퍼지는 바이러스들을 말한다 년 말에 최초로 보고되었다 채팅을 통해 퍼지는 형. 1997 .

태로 일종의 버그이다 는 부터 를 지원. VBS Internet Explorer 5.0 VBS(Visual Basic Script)

하며 보안 설정이 없는 경우 로컬 시스템의 파일에도 접근 할 수 있어 이 기능을 바이러스

가 사용하고 있다 하지만 이들 바이러스는 익스플로러 에 에 설치되어 있어야만 하. , 5.0 VBS

며 보안설정이 해제되어 있어야 하기 때문에 일반인들에게 문제될 가능성은 적다 크게, .

과 윈도우 스크립트를 감염시키는 종류로 나뉜다HTML .

- 45 -

표 어플리케이션 파생 바이러스[ 2-3]

분류 종류 예

매크로

바이러스

엑셀 X97M/Laroux,X97M/DM,X97M/Sugar, Extras, VCX, Compat

워드 W97M/Marker, W97M/Ethan,Win/Concept, W97M/Melissa,W97M/Class, W97M/Groov

파워포인트 Attach, ShapeMaster, Shift

액세스 Access4, Detox, Jaring

오피스97 O97M/Tristate

스크립트

바이러스

VBS HTML.lnternal, WinScript

바이러스 감염 기법2.

지금까지 소개된 각 바이러스에서 사용되는 감염 기법을 유닉스 바이러스를 통하여 살펴본

다.

바이러스1) VIT

바이러스는 년 월 에 의해 파일로 제작된 리눅스 바이러스로 그VlT 1998 10 Silvio Cesare c

감염 대상을 파일로 하는 메모리 비상주형 바이러스이다ELF .

바이러스 역시 바이러스가 감염활동을 하게 되면 해당하는 파일의 헤더 정보를VlT ELF

바꿈으로써 실제 바이러스의 정보를 헤더와 프로그램 헤더 세그먼트 헤더에 반영하게ELF ,

된다.

실제 바이러스 감염 활동을 살펴보면 바이러스는 현재 디렉토리를 검색하여 포맷VIT ELF

의 파일이 존재하는지의 여부를 헤더 정보를 통해 파악하게 된다.

- 46 -

이후 감염 이후에 필요한 헤더의 시작점을 읽어 오게 되는데 이후 감염 파일 구성 시ELF

에 헤더의 시작점은 바이러스를 가리키게 되고 바이러스는 감염활동 수행 후 이전ELF

헤더의 시작점이 가리키던 곳을 지시하게 되어 바이러스 활동 수행 이후에도 프로그램ELF

수행에 지장이 없도록 한다.

그림 바이러스 감염 구조( 2-2) VIT

헤더 정보를 읽어 들인 후 라는 임시 파일을 생성 파일 내부에 바이러스를vi321.tmp ELF

심은 새로운 파일을 재구성한다 이때 바이러스로 인한 옵셋의 변화에 따라 프로그램 헤더.

와 세그먼트 헤더 테이블의 내용도 변경되게 된다 바이러스를 심는 과정에서 파일 텍. ELF

스트 세그먼트와 데이터 세그먼트 사이에 빈 영역을 이용하여 바이트의 이동이 그림4096 (

와 같이 일어나게 되고 이 사이에 바이러스 감염 코드를 심게 된다 각각의 파일 정보2-2) .

를 가지는 헤더 프로그램 헤더 그리고 세그먼트 헤더가 바이러스 정보에 의해 변경된ELF ,

다면 이를 이용하여 감염된 파일을 만들게 된다.

- 47 -

파일이 성공적으로 재구성된다면 이 파일을 실제 감염 대상이었던 파일과vi321.tmp ELF

대체하여 감염 활동을 마치게 된다.

감염은 과정은 그림 과 같다( 2-3) .

그림 바이러스 감염 과정( 2-3) VIT

감염 활동 과정에서 바이러스는 파일 내부에 데이터 파일의 정보를 파괴하지 않으므로ELF

복구가 가능하다 라는 바이러스의 이름은 감염시의 임시 파일. VlT vi321.tmp (vixxx. txxx)

로부터 명명되었다 또한 바이러스와 마찬가지로 퍼미션이 허용된 파일에 한해서만 감. bliss

염 활동을 할 수 있다.

- 48 -

바이러스2) FlLE

바이러스는 에 의해 제작된 간단한 유닉스 바이러스로 파일 감염 바이러FlLE Silvio Cesare

스이다.

# cat host >> parasite# ./parasite

위의 예에서 의 기능을 잃었음에도 불구하고 새로운 내에는 여전히 그 기능을host parasite

유지한다 가 자신의 크기를 안다면 파일로부터 를 빼내어 실행시킬 수 있다. parasite host .

바이러스는 원래의 가 실행되기 전에 이러한 일을 하며 자식 프로세서에 기FlLE host exec

능을 넘겨주고 부모 프로세서는 기다리게 된다 이렇게 함으로서 를 빼내는데 사용된. host

임시 파일을 깨끗이 없앨 수 있다 계속적인 전파를 위해 현재 디렉토리의 실행 파일을 감.

염시킨다 감염된 프로그램은 원래의 대신에 바이러스만을 남기며 복구 불가능하다 같. host .

은 에 재감염을 피하기 위해 파일의 끝에 넘버를 붙인다 이 숫자를 통하여 감host 'magic' .

염 여부를 확인하고 다시 감염되는 것을 피한다.

바이러스3) SlLOV

바이러스는 형태의 실행 파일에 감염되는 바이러스로서 그림 와 같이 마SILOV ELF ( 2-4)

지막 섹션의 뒤에 이라는 섹션을 추가하여 감염시킨다 바이러스로 감염된 영역을 먼.datal .

저 실행시키기 위해 먼저 프로그램의 시작점을 마지막 섹션 즉 바이러스의 시작 지점을 가,

리키도록 한다 이때 바이러스는 임시 파일을 생성하여 위의 동작을 진행한다. .

- 49 -

그림 바이러스 감염 구조( 2-4) SILOV

루트의 권한으로 실행될 경우 을 감염시켜 뒤이어 실행되는 모든 파일을 감염시킬init ELF

수 있게 된다 이때 바이러스는 프로그램의 심벌 테이블을 수정하여 의 실행 시 자. , , EXECV

신이 만든 프로그램이 실행되도록 하여 모든 프로그램이 실행 될 때 감염이 되도록 하고, ,

있다 만약 루트가 아닌 경우는 현재 디렉토리의 파일을 검색하여 감염을 시킨다. , .

바이러스는 코드와 약간의 어셈블리 언어로 만들어져 있다 바이러스의 핵심 부분SILOV C .

은 라는 함수이며 이 함수는 파일의 이름을 파라메터로 받아 바이러스를 추가하try_infect() ,

는 기능을 가진 함수이다 이 과정에서 바이러스는 파일의 변경이미지를 만들기 위해 임시.

파일을 생성한다 의 동작은 그림 와 같다. try_infect() ( 2-5) .

- 50 -

그림 바이러스의 감염 동작( 2-5) SILOV

바이러스는 포인터 변수에 감염시키고자 하는 파일의 헤더정보를 가져온다 이 과정에서.①

파일이 형식인지를 확인하며 파일에 이미 섹션이 존재하면 감염되어 있는 것으ELF , .data ,

로 간주하고 감염 과정을 중단한다.

함수를 부른다 이 함수는 파일의 동적 심벌 테이블을 검색하여 이름이find_rel() .②

인 심벌의 주소를 얻어온다EXECVE .

를 호출하여 현재 실행중인 파일 파일 감염을 하고 있는 바이러스 의 바이러init_virus() ( )③

스 부분을 가져오고 감염 대상 파일의 시작점과 의 주소를 저장한다, EXECVE .

바이러스는 의 작업 후 본격적으로 감염파일을 만든다 바이러스는 이 과정을, , .④ ① ② ③

위해 임시파일을 생성하고 바이러스를 추가하기 위해 헤더의 섹션 수나 프로그램 헤, ELF

더의 시작점 등의 헤더 정보를 수정하고 실제 바이러스 섹션을 추가한 후에 임시파일을 현,

재 파일에 덮어쓰게 된다.

- 51 -

루트에 의해 바이러스가 실행되면 바이러스는 을 감염시키게 된다 이 은 생성되는, init . init

모든 프로세스의 부모 프로세스이며 내부적으로 함수를 이용하여 새로운 프로세, EXECVE

스를 실행하도록 한다 그러나 이 감염되게 되면 바이러스에 의해 변경된 주소를 갖는. , init ,

를 실행하게 되며 이 가로채진 는 먼저 파라메터로 받아진 파일 이름을EXECVE , EXECVE

를 통해 감염시킨 후에 저장해 놓은 본래의 를 지정하는 포인터 함수를try_infect() EXECVE

이용하여 정상적으로 실행되도록 한다EXECVE .

웜 분류 및 주요 웜3.

해킹 기술을 응용하기도 하며 원격 시스템으로의 전파라는 점에서 웜은 바이러스보다 그 전

파력과 파괴력이 강하다고 할 수 있고 가장 위험한 유형이라고 할 수 있다 웜의 형태는 시.

스템과 설치된 응용프로그램의 버전들에 의해 그 피해확산이 결정되는 문제가 있었으나 최,

근에는 새로운 취약성이 계속적으로 공개되고 있으며 이러한 취약성에 대한 공격 모듈은 쉽

게 추가와 업데이트가 가능하도록 웜이 구현되어가고 있기 때문에 그 위험성은 매우 심각하

다.

예로 웜 등이 있으며 분산서비스거부공Morris Worm, ADM , Millennium Internet Worm ,

격 등의 공격에 이용될 수 있는 위험성이 있다.

컴퓨터 바이러스와 웜의 정의에 대해서는 아직까지 일치된 하나의 명확한 이론이 없으며 주

로 다음과 같은 두 가지 개념으로 정리 할 수 있다.

- 52 -

첫 번째 웜과 바이러스는 서로 다른 별개의 악성 프로그램이다- : .

이러한 개념에 따르면 웜은 어떠한 행위의 개입 없이 스스로 존재하고 스스로 전파되는 독

립적인 악성 프로그램으로 와 같은 것이 이에 속한다 또한 이메일을 통하여 전파CodeRed .

되는 와 같은 것은 이메일의 첨부파일을 실행해야 바이러스Melissa, Loveletter, Kournikova

가 활동하므로 이 정의에 의해서는 엄밀히 웜에 속하지 않는다.

두 번째 웜은 바이러스의 일부분에 속한다- : .

두 번째 개념에 대해서도 많은 이론이 존재하며 이 개념은 대부분의 안티 바이러스 연구자

들이 따르고 있는 것으로 자기복제 프로그램을 바이러스로 정의한데 이어 필요에 의해 등장

한 개념이다 이 정의에 의하면 웜은 호스트 파일이 필요 없는 바이러스로 분류되고 있으나.

굳이 바이러스에 포함되는지의 여부에 대해서는 언급하지 않기도 한다.

일부에서는 웜을 바이러스의 부분집합으로 정의하여 네트워크를 이용하는 여부에 관계 없이

보통 자신의 전체를 복사하여 전파되는 것으로 정의하기도 했으며 일부에서는 또한 매핑된

네트워크 드라이브를 검색하여 감염하는 등 전파 시 네트워크를 이용하는 것을 웜으로 정의

하기도한다 이 문서에서는 웜을 네트워크를 통하여 다른 시스템으로 전파하는 것의 개념을.

따른다.

실제로 유닉스를 이용한 웜 이 처음으로 알려지게 된 것은 년 월 일에 발생(Worm) 1988 11 2

한 사건 이후였다고 할 수 있다 는 유닉스 시스템의Morris Worm . Robert T. Morris

과 의 버그와 를 이용하여 자기 복제 및 자체적인 네트워크 전파sendmail fingerd rsh/rexec

기능을 갖는 유닉스 웜 을 개발하여 인터넷을 통해 유포하여 대 이상의 서버 시(Worm) 6200

스템을 정지시키는 혼란을 야기시켰으며 거의 만 달러의 피해를 입혀 큰 사회적 문제가, 100

되었다.

- 53 -

웜은 많은 전파를 목적으로 하는 경우가 많으며 웜에서 사용되는 전파방법에 따라 이메일,

호스트 컴퓨터 네트워크 웜과 같은 세 가지 유형으로 나눌 수 있다, .

최근 더욱 복잡하고 다양해진 소프트웨어와 어플리케이션의 개발로 시스템의 취약점이나 강

력한 개발도구에 의해 주어지는 보안 허점 등과 같이 웜에서 이용될 수 있는 수단이 훨씬

다양해지고 있다 또한 인터넷 이용의 폭발적인 증가가 더욱 빠르게 전파 할 수 있는 환경.

을 제공해준다.

지난 몇 년간 인터넷 웜의 다른 유형들이 개발되면서 컴퓨터 웜은 로컬 네트워크를 통해 전

파되는 네트워크 웜과 인터넷과 같은 글로벌 네트워크를 통해 전파되는 인터넷 웜으로 나눌

수 있다.

컴퓨터 웜

네트워크 웜 인터넷 웜

그림 웜의 종류( 2-6)

또한 최근 등장하는 인터넷 웜 중에서 윈도우 웜이 큰 비중을 차지하여 플랫폼에 따라 윈도

우에서 활동하는 윈도우 웜과 윈도우 외에 다른 플랫폼에서 활동하는 윈도우 웜으로Non-

분류할 수 있다.

윈도우 웜은 이메일이나 뉴스레터 메신저와 같은 채팅 프로그램 그밖에도, IRC, MSN ,

등를 이용하고 있으며 윈도우 웜은 리눅스나 솔라리스와 같은 유닉스 시Gnutella, IIS Non-

스템과 매킨토시에서 활동하는 유닉스의 러브레터 개념의 웜 최초의 큰 규모의 전파Morris ,

력을 보여주었던 리눅스 웜 솔라리스의 매킨토시의 과 같은 것이Ramen , Sadmind, Simpson

있다.

- 54 -

가 인터넷 웜.

인터넷 웜은 다시 행위에 따라서 몇가지 그룹으로 분리할 수 있는데 주로 이메일의 메시지

를 읽음에 의해 행동하는 웜 파일을 열어 봄으로써 행동하는 웜 아무런 행위 없이도 자동, ,

으로 행동하는 웜으로 나눌수 있다.

이메일 웜은 또한 로 분류되며 전파되는 속도에 따라서mass-mailer Slow mass-mailers,

로 분류된다 웜은 감염된 사용자가 메일을 보내는Fast mass-mailers . Slow mass-mailers

시점에 웜을 전송하는 것이고 는 한번에 여러 메일 사용자에게 웜을 보Fast mass-mailers

낸다.

윈도우 웜1)

윈도우는 바이러스 제작자들에게 여전히 주요 대상 플랫폼으로 새로운 응용 프로그램이나

기술이 등장하면 바이러스가 만들어지고 그에 이어 다수의 바이러스가 출현하기도Concept

한다.

이메일 웜2)

이메일 웜은 전파하는 방법으로 시스템에 이미 설치되어 있는 이메일 클라이언트를 사용하

는데 특정 메일 클라이언트의 주소록에 등록된 모든 사용자에게 메일을 송신하는 것이 대부

분이다 웜이 가장 많이 사용하는 이메일 클라이언트로는 마이크로 소프트의 아웃룩과 아웃.

룩 익스프레스를 들 수 있다 상대적으로 유도라나 를 이용하는 이메일 웜은 아주. Pegasus

드물다.

- 55 -

이메일 웜은 메일 발송 기능을 통해 다른 사용자들에게 동시에 전파된다는 점이 특징이다.

따라서 어느 한 명이 감염되면 그 사람의 이메일 주소록에 있는 다른 사람들의 컴퓨터까지

바이러스에 감염될 위험이 있으며 이렇게 연쇄적으로 웜이 확산될 경우 엄청난 숫자의 컴,

퓨터들이 바이러스에 걸리게 된다.

이메일 웜의 특징은 러브레터나 나비다드처럼 사람들의 감성을 자극하는 문구를 첨가하거나

음란 사진이나 동영상이라는 문구를 사용해 호기심을 유발하는 경우가 많다는 것이다 또한.

최신 바이러스 백신이라고 가장해서 바이러스에 겁먹은 사람들의 별다른 의심 없이 첨부 파

일을 열도록 유도하는 등 다양한 방법을 사용하고 있다 이러한 이메일 바이러스는 확산 속.

도가 매우 빠르다 일단 웜에 감염되면 침투한 웜이 이메일 주소록에 있는 다른 이들에게.

첨부 파일로 가장하여 다시 웜을 보내게 되고 이메일을 받은 사람들은 자신이 잘 아는 사,

람이 보낸 메일이므로 별다른 의심을 하지 않고 열어보기 때문이다.

나 네트워크 웜.

네트워크 웜은 로컬 네트워크를 통하여 전파되는 웜으로 다음과 같은 단계로 구성된다.

공유 드라이브 찾기①

드라이브 매핑하기②

웜을 복사하고 실행하기③

복사된 웜의 실행은 즉각적으로 일어나지 않고 윈도우 시작 시 자동실행 될 수 있는 시작

폴더와 같은 특정 디렉토리에 복사해놓는 경우가 많다.

- 56 -

네트워크 웜의 하나인 는 먼저 전파하려는 대상을 찾기 위해 임의의 를 설정VBS. Netlog IP

하여 검색한 후 서브넷 시스템 전체에서 드라이브 전체를 공유해 놓은 시스템을 찾아낸다C .

그 후 해당 드라이브를 드라이브로 설정하고 윈도우와 윈도우 시작 폴더에 파일을 복사해J

놓으면 다음 윈도우 시작 시 자동으로 실행되어 감염된다.

다 주요 웜.

멜리사1) (W97M/Melissa.A).

미국에서 처음 발견된 멜리사 바이러스는 이메일을 통해 스스로 복제되는 최초의 이메일 바

이러스이다.

해피2) 99 (I-worm/Happy99)

메일에 첨부돼 오는 파일을 실행하면 라는 문자와 함Happy99.exe 'Happy New Year1999'

께 불꽃놀이 화면이 뜬다 이 특이한 바이러스는 그 사람의 주소록에 있는 모든 사람에게.

파일을 첨부한 메일을 보낸다Happy99.exe .

화이트3) (I-Worm/White)

세의 어린 중학생이 제작해 화제가 되기도 했던 바이러스이다 국내에서 제작된 최초의15 .

웜 바이러스인 화이트 바이러스는 매달 일이 되면 감염된 컴퓨터 시스템을 모조리 파괴한31

다.

4) MYPICS (I-Worm/MyPics)

컴퓨터 메모리를 완전히 파괴할 수 있는 전염성이 강한 바이러스로 멜리사 바이러스와 유,

사한 방식으로 전파된다.

- 57 -

러브레터5) (VBS/Loveletter)

수신한 의 제목이 인 이 바이러스는 필리핀에서 제작된 것으로 알려졌E-mail 'I Love You'

으며 처음 발견된 이후 라는 제목의 로 변형되어 전세계에 확, 'Very Funny', 'Joke' E-mail

산되었다.

나비다드6) (I-Worm/Navidad)

나비다드는 남미에서 크리스마스를 뜻하는 단어로 이 바이러스에 감염되면 프로그램 오류,

메시지 경고를 알리는 창이 뜨며 확인 버튼을 누를 경우 화면 우측 아래에 위치한 트레이, ' '

에 눈 모양의 아이콘이 생성된다 이 아이콘을 실행시키면 윈도 응용 프로그램 중 확장자가.

인 파일의 실행이 불가능하게 된다 다만 인터넷 익스플로러의 받은 편지함을 검색해exe . ' '

읽은 메일 중 첨부 파일이 있는 메일을 찾아 이 파일들을 로 교체한 후 주소록Navidad.exe

에 등록된 사람들에게 이 바이러스가 포함된 메시지를 보내게 된다.

- 58 -

웜 감염 기법4.

이 제작되는 일반적인 기법은 다음과 같은 메카니즘을 사용한다I-Worm .

그림 인터넷 웜의 일반적인 기법( 2-7)

대부분의 인터넷 웜이 파일을 감염시킨다WSOCK32.DLL .◦

감염시킨 파일을 모니터링 하면서 호출을 기다린다WSOCK32.DLL .◦

호출이 발생했을 때 정상 루틴을 하여 메일을 보내게 되면 정상 루틴대로 수행hooking◦

하지 않고 웜의 루틴을 수행한다 또는 를 이용할 경우 번 포트를 사용하는데 이렇. SMTP 25

게 특정 포트로의 연결에 대하여 감시하고 연결이 이루어지면 웜의 루틴을 수행하게 한다.

웜 자신을 복제하여 메일에 첨부한다◦

보내는 대상으로 메일을 전송하는데 이때 주소록을 참조하여 주소록의 대상에게 보내는◦

방법 받은 메일 중 첨부파일을 가지고 있는 메일의 첨부파일 대신 복제된 웜으로 대체하여,

보내는 방법 받은 메일에 대한 답신 메일로 웜을 첨부하여 회신하는 방법 등이 있다, .

- 59 -

서캠과 같이 웜 자체가 메일을 전송하는 엔진을 소유하기도 하며 여러 가지 다양한SMTP

방법을 이용하는데 이러한 기법 중에서 크게 메일 전송과 취약점을 이용하는 방법에 대해

살펴본다 또한 웜의 제작언어로 가장 많이 사용하고 있는 스크립트로 작성된 웜에서 사용.

하고 있는 방법에 대해서도 알아보고자 한다.

메일 전송 기법1)

웜이 실행되기 위해 메일의 첨부파일을 실행하는 등의 사용자의 동기가 되는 행위 없이 메

일의 본문에 내재되어 단지 미리보는 것만으로도 웜이 실행될 수 있다 이것은 첨부파일에.

어떤 행위를 가하지 않고도 전파될 수 있어 상당히 빠르게 퍼지는 것으로 이메일의 본문에

을 사용한다HTML .

전파되기 위한 다른 방법으로는 웜이 실행되기 위한 동기가 되는 어떤 행위를 요구한다 예.

를 들어 메일에 첨부된 파일을 클릭하는 등의 행동을 말한다 이러한 웜으로 매크로 바이러.

스에서 이용되는 매소드를 호출하는 방법이 있다Sendkeys .

은 다형성 매크로 바이러스로 감염된 워드 문서를 전송하는 증상을WM/PolyPoster.A@mm

갖는 최초의 워드 매크로 바이러스이다 는 매소드를 이용하는. W97M/Antimark Sendkeys

것으로 마이크로 소프트사의 아웃룩 익스프레스를 이용하여 메일을 보낸다 워드 매크로. 97

바이러스이며 문서와 템플릿 파일을 감염시키는 증상을 갖는다 아웃룩 익스프레스가 설치.

된 경우 메일을 통해 전파하는데 우선 아웃룩 익스프레스가 설치된 폴더를 찾는다 그 다음.

으로는 주소록 파일을 찾아서 커맨트를 통해 개의 주소를 가져와 새로운 메일Sendkeys 20

을 만든 후 감염되어 있는 자신을 복사하여 전송한다.

- 60 -

가 사용) CreateObject

메일을 보내는 방법을 사용하는 웜은 를 사용하여 메일전송 기능을 쉽게 구현CreateObject

하고 강력하게 만들어 준다 는 강력한 비주얼 베이직 스크립트 기능으로 다른, . CreateObject

마이크로 소프트의 어플리케이션에 의해서 사용되는 것을 허용한다 이 기능은 비주얼베이.

직 스크립트 버전에서부터 제공되었으며 인터넷 익스플로러 이상에서 디폴트로 제공2.0 4.0

된다.

최근 출현하고 있는 웜들 중 많은 것들이 를 사용하고 있으며 가장 많이 이용CreateObject

되고 있는 아웃룩 메일 클라이언트나 인터넷을 통한 전파가 많다 나 많은. W97M/Melissa

전파력을 선보였던 러브레터와 같은 웜들은 모두 를 이용하였으며 아웃룩을 이CreateObject

용하여 주소록에 있는 모두에게 메일을 보내는 방법이 사용되었다.

메일을 전송하는 웜들이 많이 이용하는 방법으로 와MAPI AddressLists, GetDefaultFolder

가 있다.

CreateObject methods

MAPI AddressLists GetDefaultFolder

그림( 2-8) CreateObject methods

메시지 응용 프로그램 인터페이스 는 마이MAPl(Messaging Application Program Interface)

크로소프트사의 윈도우즈 응용프로그램 내에서 전자우편을 보내거나 자신이 현재 작성 중,

인 문서를 전자우편 내용 위에 첨부할 수 있도록 해주는 마이크로소프트 윈도우 프로그램

인터페이스이다.

- 61 -

MAPI·

를 이용하는 응용프로그램들에는 워드프로세서 스프레드시트 그리고 그래픽 프로그MAPI , ,

램 등이 있다 와 호환성이 있는 응용프로그램들에는 대체로 파일 메뉴 내에 전자메. MAPI , “

일로 보내기 등과 같은 항목이 존재한다 이 항목을 선택하면 서버에게 그 요청이 보” . MAPI

내진다.

프로그램 개발 업체들을 위해 마이크로소프트사에서 만든 메시지 서비스에 대한 액세스를,

제공하는 응용 프로그램 인터페이스이다.

은 프로그래머들에게 운영체제 및 그것이 기반하고 있는 하드웨어와는 독MAPI version 2.1

립된 크로스 플랫폼 메시지 기능에 대한 자원을 제공하며 응용 프로그램이 메일을 인식할

수 있도록 해준다 는 프로그램과 메시지를 주고 받을 수 있다. MAPI VIM .

가장 유명한 전자우편 프로그램 중 하나인 유도라에도 서버가 포함되어 있다 유도라NAPI .

서버를 활성화시키려면 도구 메뉴에서 옵션 을 고르고 를 더블클릭한다 그MAPI , “ ” , MAPI .

다음에는 가 항상 활성화될 것인지 또는 유도라가 실행 중일 때만 활성화될 것인지를MAPI ,

설정하면 된다 마이크로소프트 익스체인지와 일부 다른 프로그램들에서는 사용하는 중에는. ,

서버를 꺼놓을 필요가 있는 것들도 있다MAPI .

AddressLists·

매서드는 메일 클라이언트인 아웃룩에서만 사용되는 매서드로 다음과 같은 단AddressLists

계로 사용된다 먼저 마이크로소프트 아웃룩 응용프로그램을 열고 주소록에 있는 사용자들.

의 메일 주소를 찾는다 새로운 메일을 생성하여 제목과 본문 등을 텍스트로 채우고 주소록.

에서 찾은 메일 주소로 받는 사람을 써넣은 후 마지막으로 웜을 첨부하여 메시지를 발송한

다.

- 62 -

이러한 주소록을 이용하여 메일을 받을 대상을 선정하는 방법은 가장 널리 알려진 방법으로

멜리사와 러브레터 홈페이지와 같은 웜이 이러한 방법을 사용하고 있으며 매크로 바이러스,

나 로 쓰여진 대부분에서 사용한다 또한 웜과 같은 경우는VBS . VBS VBSWG(VBS Worm

와 같은 자동 웜 생성기까지 개발되어 프로그램을 모르는 사용자들도 쉽게 제작Generator)

가능해졌다.

GetDefaultFolder·

는 를 이용하는 메일 송신 기능을 구현하는 또 하나의 매서드GetDefaultFolder CreateObject

로 아웃룩 프로그램을 여는 기능을 하며 많이 사용되지는 않는다.

나 이용) Pegasus

는 하나의 이메일 어플리케이션으로 과Pegasus HLLP.Toadie, W97M/Jim, W97M/Moridin

같은 몇 가지 바이러스에 의해 사용되었다 메일의 첨부파일을 바이러스로 대체하여 보내는.

방법을 사용하는데 그리 널리 사용되고 있는 것은 아니다.

취약점을 이용하는 기법2)

인터넷 익스플로러의 약점을 이용하여 확산되는 방법으로는 인터넷 익스플로러의 보안 설정

에 관한 것과 취약점에 관한 두 가지가 있다.

- 63 -

사용자가 인터넷 익스플로러의 보안 설정을 허술하게 해놓아 악의의 웜과 같은 프로그램이

실행되도록 허용하는 점을 이용하는 것이 첫 번째 방법이고 이는 보안 설정을 높임으로써

해결할 수 있다.

인터넷 익스플로러의 취약점을 이용하는 것은 익스플로러 제작시 고려하지 못한 부분을 발

견하여 웜이 그러한 취약점을 이용하는 것으로 제공업체에서 패치 버전을 배포하거나 아예

익스플로러를 설치하지 않음으로써 해결할 수 있다.

스크립트 웜 기법3)

스크립트 웜은 소스코드가 함께 전달되면서 감염되기 때문에 많은 변종들이 뒤를 이어 산출

된다 또한 언어자체가 단순하며 사용하기 쉬워 더욱 많은 웜들이 빠르게 생성되고 있다 이. .

제부터는 이렇게 빠르게 생성되고 있는 스크립트 웜들이 어떤 모습으로 만들어지는지 살펴

보자.

최근에 성행하는 웜바이러스는 주로 를 이용하여 제작되고 있다 본 절에서는 초보VBScript .

자도 쉽게 제작이 가능하여 그 문제점이 더욱 심각한 에 대해 알아보고 바이러스VBScript ,

에 주로 사용되는 객체와 메소드를 중심으로 스크립트 웜에서 사용하는 기법을VBScript

알아본다.

다음은 의 여러 객체 중 웜에 의해 사용되는 객체를 나열한 것이다 일반적으로 웜VBScript .

이 시스템에 피해를 미치기 위해서는 먼저 객체를 생성하고 그 객체에 속한 메소드를 호출

하는 방식을 취한다 이때 웜에 의해 생성되는 객체들의 대부분은 다음과 같다. .

Scripting.FileSystemObject (FSO)

WScript. Shell

WScript. Network

Outlook. Application

- 64 -

이러한 객체 가운데 는 아웃룩이 설치된 시스템에만 존재하고 나머지Outlook. Application

객체들은 윈도우 스크립팅 호스트가 동작하는 시스템에는 항상 존재한다.

이러한 스크립트 웜이 자주 이용하는 객체들이 실제 사용되는 모습과 각 객체들이 지원해주

는 역할 및 메소드들은 다음과 같다.

가) Scripting.FileSystemObject

이 객체는 파일 시스템에 완전하게 접근하여 동작할 수 있도록 강력한 메소드들을 제공한

다 최소한 웜이 실행되면 자신을 시스템의 특정 위치에 복사시키는데 이 객체가 이용된다. .

메소드는 설치시의 다양성을 지원하여 윈도우즈 폴더 보통GetSpecialFolder ( C: Windows\

이거나 시스템 폴더 보통 혹은C:\Winnt), ( C: Windows System C: Winnt System32),\ \ \ \

임시 폴더 등을 리턴한다.

어떤 웜은 시스템에 자신을 복사할 때 처럼 시스템에서 사용하는 파일로WIN32DLL.VBS

혼동시키는 이름으로 위치하기도 한다.

이 객체에서 중요하게 인지해야 할 사항은 파일을 읽고 쓰고 생성할 때 반드시FSO text

일 필요가 없다는 것이다 이것은 이진 파일을 읽고 쓸 수 있다는 의미이며 곧 시스based .

템 내에 실행 파일을 위치시켜 바이러스나 웜과 같은 악성 코드들의 활동을 가능하게 해준

다는 것이다.

표 는 객체가 제공하는 메소드들 중 웜을 생성하는데 자주[ 2-4] Scripting.FileSystemObject

쓰이는 메소드 목록이다.

- 65 -

표 객체가 제공하는 메소드[ 2-4] Scripting.FileSystemObject

Method Name Description

C1ose Closes an open TextStream file.

CopyFolder Copies one or more files from one location to another.

CopyFolder Recursively copies a folder from one location to another.

CreateFolder Creates a folder.

DeleteFilder Deletes a specified file.

DeleteFolder Deletes a specified folder and its contents.

DriveExists Returns True if the specified drive exists ; False if it does not.

FileExists Returns True if a specified file exists; False if it does not.

FolderExists Returns True lf a specified folder exists; False if it does not.

GetDr ive Returns a Drive object corresponding to the drive in a specifiedpath.

GetExtensionName Returns a string containing the extension name for the lastcomponent in a path.

GetFileName Returns the last file name or folder of a specified path that isnot part of the drive specification.

Get Folder Returns a Folder object corresponding to the folder in aspecified path.

Get SpecialFolder Returns the special folder specified.

Move Moves a specified file or folder from one location to another.

MoveFile Moves one or more files from one location to another.

MoveFolder Moves one or more folders from one location to another.

OpenTextFile Opens a specified file and returns a TextStream object that canbe used to read from, write to, or append to the file.

Read Reads a specified number of characters from a TextStream fi1eand returns the resulting string.

ReadAll Reads an entire TextStream file and returns the resultingstring.

ReadLine Reads an entire line (up to,but not including, the newlinecharacter) from a TextStream file and returns the resultingstring.

Remove Removes a key, item pair from a Dictionary object.

RemoveAll Removes all key, item pairs from a Dictionary object.

Write Writes a specified string to a TextStream file.

WriteLine Writes a specified string and newline character to aTextStream file.

- 66 -

나) WScript.Shell

윈도우기반의 파일 시스템이 객체에 완전 노출되어 있는 것처럼 윈도우 시스템의 레FSO

지스트리는 객체에 의해 다루어진다 다음 표는 이 객체에 의해 제공되는 메WScript.Shell .

소드들의 일부를 보여준다.

표 객체가 제공하는 메소드[ 2-5] WScript.Shell

Method Name Description

ConnectObject Connects an objects event sources to functions with agiven prefix.

CreateObject Creates an object specified by the strProgID parameter.CreateShortcut Creates an object reference to a shortcut or URLshortcut.

ExpandEnvironmentStrings

Expands the PROCESS environment variable and returnsthe result string.

RegDelete Deletes from the registry the key or value namedstrName.

RegRead Returns the registry key or value named by strName.RegWrite Sets the registry key or value named by strName.Remove De1etes the environment variable specified by strName.Run Creates a new process that executes strCommand.Save Saves a shortcut to the specified location.

SendKeys Sends one or more keystrokes to the active window asif typed at the keyboard.

S1eep Places the script process into an inactive state for thenumber of milliseconds specified and then continuesexecution.

SpecialFolders Accesses the Windows shell folders such as the desktopfolder, the Start menu folder, and the personal documentfolder.

대부분의 웜이나 바이러스들은 레지스트리 값을 생성하는데 특히 HKLM Software\

값에 어떤 엔트리를 설정하여 부팅시 자동으Microsoft Windows CurrentVersion Run\ \ \ \

로 악성 코드를 실행하게 한다 웜의 목적이 시스템 파괴일 시. Run, RegWrite, RegDelete

메소드를 호출하여 이나 를 통해 대량의 파일들을 손상시키며 중요한 레지“format” “deltree”

스트리 키를 삭제하거나 수정하여 컴퓨터를 무용지물로 만들기도 한다.

- 67 -

어떤 경우에는 사람들의 호기심을 자극하여 널리 전파되는 것을 목적으로 메소드RegWrite

를 사용하여 인터넷 익스플로러의 기본 페이지를 성 관련 사이트로 설정해 놓기도 한(sex)

다.

다) WScript.Network

이 객체는 네트워크에 관련한 것으로 연결된 네트워크 드라이브를 매핑시켜준다 다음 표는.

이 객체에 의해 제공되는 메소드들의 일부이다.

Method Name Descrption

EnumNetworkDrives Returns the current network drive mappings.

MapNetworkDrive Maps the share point specified by strRemoteName to the localresource names strLocalName.

RemoveNetworkDrive Removes the current resource connection denoted by strName.

표 객체가 제공하는 메소드[ 2-6] WScript.Network

라) Outlook.Application

는 마이크로 소프트 아웃룩이 설치된 경우 생성되는 객체이다 메일을Outlook.Application .

통해 전파되는 웜은 대부분 이 객체를 사용하는데 받은 메시지나 주소록을 참조하여 답신

메일로 보내거나 새로운 메시지를 생성하여 아웃룩을 통해 메일을 보낸다.

대부분의 웜이 을 이용하는 이유는 우선 아웃룩을 이용한 예제가 많이Outlook.Application

존재하기 때문이다 앞에서도 언급했듯이 스크립트 웜은 소스코드 자체가 전파되므로 비교.

적 쉬운 스크립트 언어만 이해할 수 있는 사용자는 누구나 쉽게 웜을 분석하고 재생산 할

수 있다 다른 이유로는 아웃룩이 스크립트를 통해 제공하는 기능이 아주 강력하다는 것이.

다.

- 68 -

이 객체를 통해 주소록 하나 하나를 뒤져 볼 수 있으며 받은 메시지의 발신자를 알 수도 있

으며 첨부파일을 첨부하고 메일을 보내는 기능까지 제공한다 이러한 기능들은 웜이 필요로.

하는 기능이며 객체를 이용해 쉽게 제작할 수 있다Outlook.Application .

위에서 살펴본 객체들의 메서드들을 이용하여 제작된 실제 웜인 를 통해 예를 들LoveLetter

어보자.

다음은 웜의 함수 부분이다loveletter Main .

웜의 함수 부분에서는 파일 시스템에 대한 완전한 접근을 지원해주는LoveLetter Main

와 객체를 이용하여Scripting.FileSystemObject WScript.Shell OpenTextFile,

등의 메서드를 호출하는 실례를 볼 수 있다GetSpecialFolder, GetFile .

- 69 -

다음은 웜의 과 객체 사용의 일부분이다LoveLetter WScript.Shell FilsSystemObject .

다음은 웜이 객체를 사용하여 메일을 보내는 부분이다LoveLetter Outlook.Application .

- 70 -

객체를 이용하여 메일을 보내는 방법으로 전파되는 부분이다 메시지의Outlook.Application .

제목 받는 사람의 주소 본문 첨부파일을 모두 작성하여 메일을 보내기까지의 전 부분이, , ,

위에서 보는 바와 같이 비주얼 베이직 스크립트에 의해 아주 손쉽게 제작할 수 있다.

웜 자동생성툴킷5.

컴퓨터바이러스의 신주류를 이루고 있는 웜 신종이나 변종의 직접적인 증가 요인VBScript

으로는 누구나 손쉽게 악성프로그램을 제작가능하게 하는 과 같은 비쥬얼 베이직VBSWG

스크립트 웜 전문제작 툴킷 등장과 같은 환경의 변화를 들 수가 있다 이와 같은. VBSWG

로 만들 수 있는 비쥬얼 베이직 스크립트형태의 웜의 종류와 웜의 각종 전파방법을 알아보

고 여러 가지 방법을 통하여 전파된 웜이 실행시 필요한 환경요소는 무엇이 필요, VBScript

한지 분석하였다.

가 툴킷의 종류. VBSWG

은 현재 버전 까지 다양하게 나와 있VBSWG(Visual Basic Script Worm Generator) 2.0b

다 초기 버전에서는 웜 백업 또는 복제 등 단순한 기능이었으나 파일감염. , outlook mIRC

기능 및 검색기능 시스템파괴 등의 페이로드가 추가되었다 의 버전별 특징은 다, . VBSWG

음과 표와 같다.

- 71 -

표 버전별 특징[ 2-7] VBSWG

VBSWG 제작년도 특징

명칭 버젼

Vbs worms creator 0.01 -윈도우 시작시 웜실행- ,웜백업 기능-

또는 복제기능-outlook mirc검색기능없음( )

Vbs worms creator 0.802000.7.1 파일감염 및 검색기능 추가- mirc

페이로드 추가-

Vbs Worms Generator 0.902000.7.9 틀명변경- ,

스크립트 코드 변경-pirch백신탐지 방지 기능-

Vbs Worms Generator 0.952000.7.11 스크립트 코드 변경-mirc

시스템파괴 기능 추가-

Vbs Worms Generator1.0

2000.7.12 감염복제가능 추가-Mirc감염복제기능 테스팅완료-Pirc -

파일 감염 기능 추가-VBS, VBE삭제 방지 기능 추가-

Vbs Worms Generator 1.12000.7.15 문서에 웜코드 추가-HTML

코드 암호화 기능 추가-페이로드 추가-

Vbs Worms Generator1.5b

2000.8.4 백신탐지 방지 기능-새로운 코드 암호화기능추가-빠르고 작고( , )실행시 파일 다운로드기능추가-

Vbs Worms Generator 2.0b 2001.3.9 시스템 기능- shutdown

나 에 포함되어 있는 기능. VBSWGl.5b

은 형식으로 되어 있어 웜 제작방법이 매우 간편하고 웜의 전파경로VBSWG GUI VBScript ,

를 다양하게 선택할 수 있도록 되어 있다 또한 웜소스가 스크립트형태로 되어 있. VBScript

어 분석이 쉬워 다양한 변종을 만들어 낼 수가 있다.

- 72 -

엔 간단하게 대응하였기 때문에 추후의 버전에서는 웜소스에 암호화 엔코딩 기능을 추가하( )

여 백신제작자로 하여금 소스분석과 그에 대한 백신제작을 어렵게 하였다 에. VBSWBl.5b

포함되어 있는 기능들은 다음과 같다.

암호화 엔코딩 기능( )·

웜 소스 엔코딩-

전파방법 선택기능·

메일의 첨부화일로 전파- Outlook

로 전파- HTML

로 전파- Pirc/Mirc

특정 파일 감염 선택 기능·

확장자 인 파일 검색 및 감염기능- .vbs and vbe

웜 삭제 방지 기능·

웜 백업 기능·

파일 다운로드 및 실행 기능·

페이로드 기능·

메시지혹은 그림보여주기- shows a message box:

웹페이지 주소 열기- Open web address:

메모리 다운하기- Crash System:

시스템 다운하기- Crash System 2:

페이로드가 실행될 날짜 설정하기- When :

다 이용 제작된 웜 형태. VBSWG

현재 인터넷상의 여러 사이트에서 컴퓨터바이러스를 만드는 방법이나 개발도구가 공개되어

있어 관심있는 사람은 누구나 신종바이러스를 제작할 수 있다 웜 제작은 다른 웜. VBScript

바이러스 제작방법과 마찬가지로 인터넷사이트에 공개되어 있는 악성코드 전문제작툴킷을/

이용하게 된다.

- 73 -

보통 툴킷을 이용하면 웜의 전파방법과 감염대상 등을 옵션 형식으로 선택할 수 있어 손쉽

게 제작할 수 있다 을 이용하여 웜을 제작할 경우에 첨부화일의 유무에. VBSWG VBScript

따라 보통 다음과 같은 두가지의 형태의 웜을 제작할 수 있다.

스크립트 웜 단독형1) Stand-alone ( )

단독형 스크립트 웜은 웜처럼 첨부화일을 지니고 오는 형태의 웜코드를 말VBS/Loveletter

한다 스크립트가 실행이 될 때 윈도우즈 스크립트 호스트 를 사용하는데 스크립트가. (WSH)

암호화되거나 엔코딩이 될 수 있으며 이렇게 암호화된 것은 해당되는 스크립트엔진에서 실

행할 수 있는 형태로 변환해 준다.

웜VBS/Loveletter -※

http://www.certcc.or.kr/cvirc/Alert/42/lovelet-alert.htm

스크립트 웜 내포형2) Embeded ( )

내포형 스크립트 웜은 웜처럼 안에 내포되어있는 형태의 스크립트VBS.Bubbleboy HTML

코드를 말하는 데 웹페이지나 혹은 형태의 전자우편 메시지에 포함이 되어있는 있다HTML .

이런 형태의 스크립트는 편지 수신자가 메시지나 형태의 메시지를 볼 경우 실행조HTML

건이 맞으면 보는 즉시 실행이 되어 웜소스나 샘플을 구하기가 어렵다.

웜VBS.Bubbleboy -※

http://www.certcc.or.kr/cvirc/Alert/15/BubbleBoy.html

- 74 -

라 웜 전파 방법. VBScript

를 이용하면 제작된 웜의 전달 또는 유포방법으로 메일이나 채팅프로그램VBSWG VBScript ,

공유된 네트워크드라이브를 통한 방법 등을 선택 가능하다 를 전파방법을 달리하. VBSWG

여 다음과 같이 제작하여 보았다.

아웃룩 메일에 첨부화일 형태로 전파하는 방법1)

보통 웜의 전달매체로 메일을 선호한다 이는 을 이용하면 다수의 인터넷사용자들을. E-mail

대상으로 단시간에 웜을 전파시킬 수 있기 때문이다 로 첨부되어 웜이 전파되기 때, . E-mail

문에 메일의 제목 본문 첨부화일명등 메일형식을 갖추어 보내게 된다 보통 메일수신대상은/ / .

무작위로 선정하거나 을 참조하거나 또는 일정 수로 정한, WAB(Windows Address Book) ,

다 그리고 메일 수신자가 첨부된 웜 확장자 을 클릭하도록 재미있는 문구나 호기심을. ( VBS)

일으키는 메일의 제목이나 본문내용을 작성한후 메일을 전송하게 된다.

로 제작된 아웃룩 메일 첨부 형태로 전파되는 웜 단독형VBSWG VBS ( )ㆍ

- 75 -

에 포함되어 전파되는 방법2) HTML

인터넷 문서의 표준으로 쓰이고 있는 문서도 웜의 전파경로로 사용된다HTML VBScript .

문서내에 웜 코드가 포함된 메시지를 메일본문에 실어보내는데 문서HTML VBScript HTML

내에 포함된 웜 코드가 실행되려면 스크립트 엔진에 대한 제어를 얻어야만VBScript ActiveX

된다 이에 대한 제어권은. “You need ActiveX enabled if you want to see this e-mail”

라는 메시지가 나타났을 경우“Please open this message again and click accept ActiveX"

에 버튼을 누를 경우에 획득하게 된다Yes .

로 제작된 에 포함되어 전파되는 웜 내포형VBSWG HTML VBS ( )ㆍ

를 통하여 전파되는 방법3) mIRC

채팅프로그램의 일종인 도 웜의 전파경로가 된다 채팅프로그램은 하나IRC mIRC VBScript .

의 채널을 여러 사람이 공유하여 사용하기 때문에 동시에 많이 확산이 될 수가 있다.

- 76 -

전파방법은 감염대상화일 나 이 있는 지 확인한 후에 존재할 경'MIRC32.EXE' 'MlRC.EXE'

우 파일을 자동으로 생성한다 이후 사용자가 로 채팅을 하면 같은 채널Script.ini . mIRC IRC

에 접속한 사용자들에게 웜을 전송하면서 확산되게 된다VBScript .

로 제작된 를 통하여 전파되는 웜 내포형VBSWG mIRC VBS ( )ㆍ

IRC (Internet Relay Chat)※

하나의 서버에 전 세계의 클라이언트들이 연결되어 대화를 나누는 것으로 서버가 전세IRC ,

계의 클라이언트 서비스하는 것이 아니라 서버와 서버가 연계 가능하여 하나의 서버에 연결

하면 전세계의 서버와 연결하게 되어 전세계의 클라이언트들과 실시간 대화를 나눌 수, IRC

있어 해커들이 자주 사용하는 툴 중의 하나이다.

- 77 -

마 웜의 실행 환경. VBScript

에 의해서 제작된 웜이 윈도우즈 환경에서 실행되려면 스크립트 엔진의VBSWG VBScript

제어역할을 담당하는 와 실제로 스크립트를 처리하는WSH(Windows Script Host)

엔진을 필요로 한다 웜을 실행되면 먼저 윈도우 운영체제와 제품군에서VBScript . VBScript

환경에 맞는 를 선택하게 된다 그 후에WSH(Windows Script Host) . WSH(Windows Script

는 스크립트 파일의 내용을 읽은 후에 스크립트 엔진으로 넘겨지면 스크Host) Visual Basic

립트 엔진이 파일의 내용을 처리하게 된다.

그림 와 스크립트 엔진( 2-9) WSH

- 78 -

는 현재 스크립트 엔진과 같은 스크립트 엔진WSH(Windows Script Host) Java ActiveX ,

엔진들과 함께 사의Perl, TCL, REXX, Python MS Windows95, Windows98, IIS 4.0,

제품군들에 포함되어 있다Windows 2000 server, Windows2000 Professional .

바 로 제작된 사례. VBSWG

안나코르니코바 바이러스는 비주얼베이직 스크립트웜생성툴킷인 으로 만들어진 대VBSWG

표적인 사례로서 라는 제목과 라는 본문 내용“Here you have, ; o) (Hi : Check This!)” ,

라는 첨부 파일명을 지닌 메일으로 국내로 유입이 되어서“AnnaKournikova. jpg. vbs” 2001

년 월 일에 에서 긴급경보를 내렸다2 13 CERTCC-KR .

참고: http://www.certcc.or.kr/cvirc/Alert/2001/AnnaKournikova.html

개요□

비주얼베이직 스크립트로 만들어진 바이러스는 전자우편의 첨부파일VBS/AnnaKournikova

을 통해 전파되며 마이크로소프트 아웃룩 사용자에게 적용된다 이 바이러스는.

등의 별칭으로도AnnaKournikova, SST, Kalamr, VBS/VBSWG.J, VBS/Onthefly.A, Lee

불리워진다.

전파원리 및 피해증상□

감염원리·

전자우편의 첨부파일로 전송된 파일을 아웃룩 사용자가 실행시키AnnaKournikova.jpg.vbs

는 경우 주소록에 저장된 사용자에게 아래와 같은 전자우편을 다시 보내게 된다.

- 79 -

윈도우즈탐색기에서 알려진 파일 형식의 파일 확장명 숨기기가 체크되어 있는 경우 비주얼

베이직스크립트 파일의 기본확장자인 가 보이지 않게 되며 이미지 파일 확장자인.vbs .jpg

만이 보이게 되므로 사용자가 해당 첨부파일을 열어볼 가능성이 증가하게 된다.

메일제목 : Here you have, ;o)

본 문: Hi : Check This!

첨부 파일 : AnnaKournikova.jpg.vbs

피해증상·

파일을 첨부한 전자우편 트래픽의 증가로 인해 네트워크 속도를AnnaKournikova.jpg.vbs

저하시키며 정상적인 메일 서버에 부하를 주게된다 현재 파일수정나 삭제같은 파괴적은 행.

동은 하지 않으나 변종이 나타남으로써 파괴적인 행동을 할 수 있는 충분한 가능성은 있다.

첨부파일을 실행시키는 경우

레지스HKEY_CURRENT_USER Software OnTheFly=“Worm made with Vbswg l.50b”\ \

트리키를 생성시키며 첨부파일 자신을 윈도우즈 시스템 디렉토리에 (C:\WINDOWS\

복사한다 또 현재 사용자의 아웃룩 주소록에 있는 엔트리로AnnaKournikova. jpg. vbs ) .

메일을 전송한 이후에는 로HKEY-USERS .DEFAULT Software OnTheFly mailed=1\ \ \ \

레지스트리키를 설정하여 현재 사용자가 지속적으로 메일을 보내는 것을 막는다.

- 80 -

백도어 분류 및 주요 백도어6.

트로이목마는 유용한 것으로 가장하여 사용자가 그 프로그램을 실행하도록 속인다 사용자.

가 의심하지 않고 그 프로그램을 실행하게 되면 실제 기대했던 기능이 수행된다 하지만 실.

제 목적은 사용자의 합법적인 권한을 사용하여 시스템의 방어 체제를 침해하고 공격자는 접

근이 허락되지 않는 정보를 획득하는 것이다.

트로이목마 프로그램은 시스템 파괴 침입사실은폐 재침입을 위한 백도어 등 다양한 기능을, ,

할 수 있다 특히 트로이목마가 백도어 일명 뒷문 로 사용될 경우 정보시스템에 접근하기. , ( ) ,

위해 반드시 필요한 인증과정을 거치지 않고 불법적인 시스템 접근을 허용해 주거나 자신,

의 침입흔적을 숨기기 위해서 설치한다.

백도어 는 시스템 설계자나 관리자가 시스템에 고의로 남겨 둔 보안 헛점으로서(back door)

일종의 트랩도어 이다 이러한 백도어는 항상 악의적인 의도만을 위한 것은 아니(trap door) .

고 필드 서비스 기술자나 제품 공급사의 유지보수 프로그래머가 시스템에 접근하기 위한,

경우도 있다.

침입을 위한 백도어 프로그램들의 주요기능은 다음과 같다.

모든 패스워드들을 바꾸는 등 관리자가 안전하게 관리하려고 함에도 불구하고 시스템에①

침입할 수 있다.

발견되지 않고 시스템에 침입할 수 있다 대부분의 백도어 프로그램은 로그를 남기지 않.②

고 온라인으로 들어와 이를 발견할 수 없다, .

시스템에 최단 시간에 침입할 수 있다.③

- 81 -

가 어플리케이션 백도어.

어플리케이션 백도어의 일반적인 형태는 루트킷 이라고 지칭되는 형태의 프(root-kit) trojan

로그램 패키지로 현재 가장 많이 활용되고 있다 아래 그림과 같이 루트킷은 시스템의 사용.

자 공간에서 실행되며 특정 파일 네트워크 정보 및 프로세스 정보를 감추기 위해 등, 1s, ps

의 주요 시스템 프로그램을 트로이버전으로 바꾸어 버린다 그림 의 경우 이러한 트로.( 2-9)

이 버전의 프로그램은 사용자에게 잘못된 정보를 제공하는 것이다 하지만 이러한 일반 백.

도어는 와 같은 파일 무결성검사 툴에 의해 탐지가 가능하다tripwire .

그림 일반 백도어 루트킷( 2-10) ( )

리눅스와 시스템에 이러한 루트킷이 발견되고 있으며 리눅스 루트킷 버전 의 기능SUN . 4.0

은 다음 표와 같다.

- 82 -

표 트로이목마와 백도어[ 2-8]

분류 주요 파일 기능 비고

원격

접근

trojaned login 매직패스워드 사용 로그후 로그를 안남김,

trojaned inted 외부에서 숨겨진 포트에 접속 허용

trojaned rshd 매직패스워드 사용 로긴후 로그를 안남김,

trojaned tcpd 특정 에대해 무조건 접근허가IP

trojande crontab 에 백도어 데몬 심음crontab

내부

사용

흔적

삭제

trojaned ps, top 특정프로세스의 정보를 숨김

trojaned pidof 특정프로세스의 정보를 숨김 버전 에 업데이트4.0

trojaned ifconfig 스니퍼링 탐지를 방해

trojaned netstat 특정 의 접속정보 숨김IP

trojaned ls 특정 파일이나 디렉토리 숨김

trojaned du 특정 파일이나 디렉토리 숨김

trojaned find 특정 파일이나 디렉토리 숨김 버전 에 업데이트4.0

trojaned syslogd 특정 로그내용 숨김

wted 편집기wtmp/utmp

z2 특정 사용자 로그인 정보 삭제

관리

자권

획득

trojaned shell 부팅 화일들이나 보안취약점을 이용 생성

trojaned chin 일반사용자가 루트가 되는 백도어 루틴내장

trojaned chsh 일반사용자가 루트가 되는 백도어 루틴내장

trojaned passwd 반사용자가 루트가 되는 백도어 루틴내장

기타

sniffchk 스니퍼 동작 상태 점검 버전 에 업데이트4.0

trojaned killall 특정 프로세스를 보호 버전 에 업데이트4.0

나 커널 백도어.

커널 백도어는 이와 같은 일련의 기능을 가진 코드가 커널 내부에 설치되는 형태root-kit

를 취하고 있다 커널 백도어는 이러한 시스템 프로그램의 변경 없이 이미 커널에서 잘못된.

정보를 나 와 같은 프로그램에게 제공한다 그림 결국 시스템 프로그램의 변경은1s ps ( 2-10).

없지만 그 시스템 프로그램이 커널로부터 이미 잘못된 정보를 받았기 때문에 사용자에도 같

은 정보가 전달되는 것이다 이는 파일의 변경이 없어 기존 백도어 기술로는 탐지가 불가능.

하다.

- 83 -

그림 커널 백도어( 2-11)

다 백도어의 유형.

패스워드 크래킹 백도어1)

유닉스 시스템에 접속하기 위한 가장 최초이고 고전적인 침입 방법으로 백도어들은 패스워

드 크래커를 실행한다 이 방법은 취약한 패스워드를 가진 계정을 알아낸다 이러한 계정들. .

은 시스템에 침입하기 위한 백도어의 가능성을 내재하고 있다 침입자들은 취약한 패스워드.

를 가진 사용하지 않는 계정들을 탐색하여 그 패스워드를 어려운 계정으로 바꾸어버린다.

시스템관리자가 유추 가능한 취약한 패스워드를 찾아 사용을 금지시키려 해도 이미 이러한

계정을 찾을 수 없는 상태가 된다.

패스워드 구조ㆍ

패스워드는 다음과 같이 개의 필드로 구성되어 있다- 7 .

유저명 패스워드 유저 그룹 이름 홈 디렉토리: : ID : ID : : : shell

예) root : fVi3dx5Ytkdo : 0 : 0 : root : / : /bin/bash

- 84 -

패스워드 파일에 백도어 심는 방법ㆍ

에 다음과 같이 넣으면 된다 다음과 같은 방법으로도 백도어를 만들 수 있지만/etc/passwd .

쉽게 들킬 수 있다 그래서 패스워드 중간정도에 집어넣든지 아니면 잘 사용하지 않는 사용.

자의 유저 와 그룹 를 으로 바꾸어 사용할 수도 있다lD lD 0:0 .

$ echo “hacker : : 0:0:hacker:/:/bin/bash”>> /etc/passwd

유저 그룹 가 으로 설정되어 있다면 그것은 의 권한을 가지고 있다는 뜻이다ID: lD . 0:0 root .

라는 유저는 루트의 권한을 가지고 패스워드 없이 로그인 할 수 있게 된다hacker .

백도어2) Rhosts + +

네트워크에 연결된 유닉스시스템에서 사용의 편리성을 위해 등의 서비스를 많이rsh, rlogin

사용하고 있다 유닉스의 명령어는 홈디렉토리의 파일을 참조하여 사용. rsh, rlogin .rhosts

하는 명령어로 호스트이름에 의해 인증이 이루어지고 추가적인 패스워드를 묻지 않는 보안

취약성을 내재하고 있다 침입자는 어떤 사람의 파일에 를 넣어 어떤 호스트. rhosts “+ + ”

의 어떤 사용자라도 해당 사용자로 패스워드 없이 들어올 수 있도록 한다 많은 침입자들은.

가 홈디렉토리를 모든 호스트에 하고 있을 경우에 이 방법을 많이 사용한다 이NFS export .

계정들은 시스템에 침입할 수 있는 백도어가 된다 시스템관리자가 파일에서. rhosts “+ +”

를 검사할 수 있으므로 침입자는 여기에 자신이 해킹한 다른 계정을 등록함으로써 발견 가,

능성을 줄인다.

- 85 -

백도어3) Login

유닉스 시스템에서 프로그램은 사용자가 텔넷을 통해 시스템에 접속할 경우 패스워드login

인증을 수행한다 침입자들은 프로그램을 수정하여 특정한 백도어 패스워드가 입력. login.c

될 경우 관리자가 어떤 패스워드를 설정해 놓든 지에 상관없이 로그인을 허용하고 나, utmp

와 같은 로그파일에 기록도 하지 않도록 한다 침입자는 침입한 흔적을 남기지 않고wtmp .

시스템에 로그인하여 쉘을 획득할 수 있다 시스템 관리자는 라는 명령어를 사용하. “strings”

여 실행 프로그램에 백도어 패스워드의 유무를 점검하기도 하지만 침입자들은 백도어login ,

패스워드를 암호화하여 저장함으로써 이러한 명령어에 의한 발견을 피할 수 있다 가장 좋.

은 방법은 체크섬을 이용하여 이러한 백도어들을 탐지해 내는 것이다MD5 .

백도어4) Telnetd

사용자가 시스템에 텔넷 접속을 할때 서비스가 그 포트를 리슨 하고 있다가, inetd

에 연결시켜 주고 는 프로그램을 구동한다 어떤 침입자는 시스템in.telnetd , in.telnetd 1ogin .

관리자가 프로그램을 수시로 점검하기 때문에 아예 를 수정하는 경우도 있login in.telnetd

다 는 사용자들로 부터 터미널 종류 등 몇 가지 사항을 점검한다 일반적으로 터. in.telnetd .

미널은 이나 으로 설정되어 있다 침입자는 터미널 종류가 등 특수하Xterm VTl00 . “letmein”

게 설정되어 있을 경우 인증과정 없이 쉘을 부여하도록 를 수정할 수 있다 침입자in.telnetd .

는 어떤 서비스에 백도어를 설치하여 특정 소스 포트로부터 오는 연결에 대해서는 쉘을 부

여하도록 할 수도 있다.

- 86 -

백도어5) Services

대부분의 네트워크 서비스들 즉 심지어 등은 백도어 버, finger, rsh, rexec, rlogin, ftp inetd

전이 존재한다 이 프로그램들은 와 같이 전혀 사용되지 않는 와 같은 서비스를. uucp uucp

백도어 프로그램으로 교체하여 파일에 등록한다 관리자는 시스템에서 어떤 서비inetd.conf .

스들이 제공되고 있는지 항상 점검하고 원래 서비스가 수정되지 않았는지 체크섬에, MD5

의해서 진단해야 한다.

백도어6) Cronjob

은 유닉스 시스템에서 특정 프로그램을 특정 시간에 구동될 수 있도록 한다 침입자Cronjob .

는 백도어 쉘 프로그램을 에 추가하여 새벽 시에서 시 사이에 구동되도록 할 경우cronjob 1 2

이 시간동안 침입자는 시스템에 접속할 수 있다 침입자는 에서 전형적으로 구동되. cronjob

는 합법적인 프로그램인 것처럼 가장한다.

백도어7) Library

대부분의 유닉스 시스템에서는 공유 라이브러리를 사용한다 공유 라이브러리는 같은 루틴.

들을 재사용하여 프로그램의 크기를 줄이기 위해 사용한다 어떤 침입자들은 나. crypt.c

프로그램 같은 루틴들에 백도어 프로그램을 넣어 두기도 안다 는 루_crypt.c . login.c crypt()

틴을 사용하게 되는데 백도어 패스워드가 사용될 경우 바로 쉘을 부여하게 된다 관리자가.

프로그램의 를 점검한다고 하더라도 백도어 코드를 찾을 수 없고 대다수의 관리login MD5

자들이 백도어의 근원지를 찾아내기가 상당히 힘들다 백도어에 대한 대책은. library MD5

체크섬 점검기를 정적으로 연결하여 시스템에서 구동하는 것이다 정적으로 연결된 프로그.

램은 트로이목마의 공유 라이브러리를 사용하지 않는다.

- 87 -

백도어 기법7.

일반적으로 백도어 라는 용어는 매우 넓은 범위를 가진 용어로서 침입자가 시스(Back-door) ,

템을 침입한 후 추후에 그 시스템에 다시 접근할 것을 목적으로 설치하는 도구를 의미한다, .

현재 가장 많이 활용되고 있는 백도어는 루트킷 이라고 지칭되는 형태의 프(root-kit) trojan

로그램패키지이다 커널 백도어는 이와 같은 일련의 기능을 가진 코드가 커널 내부. root-kit

에 설치되는 형태를 취하고 있다.

커널 이란 운영체제를 구성하는 가장 기본적이며 필수적인 요소로서 코어 라는(Kernel) (Core)

용어로도 지칭된다 커널은 어떠한 운영체제가 하드웨어 상에서 동작할 때 가장 먼저 메모.

리에 적재되어 실행을 시작하는 프로그램으로서 일단 모든 하드웨어 자원을 사용자가 이용,

가능한 상태로 초기화하며 이후의 사용자 프로세스를 관리함으로써 사용자에게 일종의 가,

상 하드웨어 환경을 제공해 주는 역할을 한다.

그림 일반적인 유닉스 커널의 구조( 2-12)

- 88 -

현재 사용되고 있는 거의 모든 유닉스 계열의 운영체제 커널은 매우 유사한 구조를 가지고

있으며 의 경우에도 이전 버전의 와 달리 유닉스 커널 모델과 흡사,Windows 2000 Windows

한 커널 모델을 가지고 있다고 알려져 있다 이와 같은 유닉스 커널의 구조는 그림. ( 2-12)

와 같다.

그림 에서 보는 바와 같이 유닉스 커널은 크게 다음과 같은 서브 시스템으로 구성되( 2-12)

어 있다.

처리File Subsystem.- File I/Oㆍ

프로세스간 통신 스케줄링 메모리 관리Process Subsystem - , ,ㆍ

또한 서브 시스템 내 각각의 기능들은 서로 의존적인 관계를 가지며 상호 작용한다 여기서, .

주목할 부분은 디바이스 드라이버 부분이다 실제 운영체제에서 각 하드웨어 주변기기를 지.

원하는 디바이스 드라이버는 그 크기가 매우 크다 따라서 커널에 정적으로 존재하는 것은. ,

거의 불가능하다 따라서 이들 디바이스 드라이버들은 필요할 경우에만 커널 메모리에 적재. ,

되는데 이들이 바로 커널 모듈의 형태를 가진다, .

일반적인 루트킷 형태의 백도어는 시스템의 사용자 공간에서 실행된다 반면 커널 루트킷. ,

백도어는 커널 내부에 설치되어 커널의 일부로서 인식되고 실행된다.

과거에는 일반적인 프로그램 수준의 백도어가 주로 발견되었으나 최근에는 커널 수준의 백,

도어 기법이 알려지면서 이를 이용한 유닉스 계열운영체제에서의 커널 백도어가 개발되어

사용되고 있다 솔라리스의 경우 이라는 이름의 커널 백도어가 널리 유포되어 많은. SLKM

솔라리스 시스템에 설치되어 있으며 리눅스의 경우는 를 그 시작으로 하여 가지, Knark 10

이상의 커널 백도어가 개발되어 있는 실정이다 이와 같은 커널 백도어는 그 특성상 감지가.

어렵기 때문에 차후의 또 다른 해킹에 사용될 수도 있다는 심각한 위협으로 부각되고 있다.

- 89 -

본 연구에서는 현재 발견되고 있는 같은 커널 백도어가 가지고 있는 기술에SLKM, Knark

대한 분석과 이를 감지하고 대응할 수 있는 기반 기술을 개발하고자 한다.

가 리눅스 커널 백도어 분석. - Knark

은 에 의해 작성되어져 이미 년 월경에 배포되었다 은 리눅스 커널knark Creed 1999 11 . knark

에 설치되며 설치시 운영체제를 리부팅할 필요가 없다 패키지의 핵심은 인2.2 . knark knark.c

데 이 프로그램이 리눅스 커널에 로드되는 이다LKM .

의 주요 화일1) knark

가 로드되면 라는 숨겨진 디렉토리가 생성되는데 이 디렉토리에 다음과 같knark /proc/knark

은 파일들이 생성된다.

author - shameless self-promotion bannerㆍ

files - list of hidden files on the systemㆍ

nethides - list of strings hidden in /proc/net/[tcpludp]ㆍ

pids - list of hidden pids, ps-like outputㆍ

redirects - list of exec-redirection entriesㆍ

는 파일 프로세스 에 문자열 커널 모듈 숨김 기능과knark , , /proc/net/tcp, udp , ,

원격 명령 로 접속 기능을 제공한다 이는 리눅스 커널 백도어 중에exec-redirection, , root .

가장 많은 기능을 제공하며 사용된 기법도 다양하다 의 상세 기능은 다음과 같다, . knark .

- 90 -

의 주요 기능2) knark

커널 백도어는 실질적인 기능을 수행하는 커널 모듈인 로 구성된다 시스템knark knark.o .

침입자는 의 기능을 호출하기 위해서 별도의 응용 프로그램을 사용하는데 각 응용knark.o

프로그램의 용도는 다음과 같다.

시스템상의 파일을 숨김hidef -ㆍ

예를 들어 라는 디렉토리를 만들고 그 아래에 각종 해킹 툴이나 백도어를, /usr/lib/.haxOr

숨겨놓았다면 라는 명령어로 디렉토리와 그 아래의 서브디렉./hidef /usr/1ib/.haxOr .haxOr

토리 또는 파일들이 등의 명령으로 볼 수 없게 된다 이는 명령을 통해ls, du . hidef

파일에 특정 문자열이 등록됨으로써 가능하게 된다/proc/knark/files .

에 의해 숨겨진 디렉토리를 보이게 하는 명령unhidef - hidef .ㆍ

만일 어느 디렉토리를 숨겼는지 잊어버렸을 경우 명령으로 숨겨진 디렉cat/proc/knark/files

토리를 확인할 수 있다.

설정ered - exec-redirection .ㆍ

원래 프로그램 대신에 트로이 버전의 프로그램을 대신 실행시킬 수 있는 기능을 한다 이.

기능은 기존의 에서 원래 프로그램 자체를 트로이목마 버전으로 바꿈으로써 공격자가rootkit

의도하는 기능을 수행하도록 한 것과는 달리 원래 프로그램은 바꾸지 않고 그대로 놓아 둔

상태에서 공격자가 의도하는 다른 트로이 버전이 실행되도록 하는데 이 경우 주요시스템 파

일의 무결성 검사에서도 탐지가 불가능하다 예를 들어. ,'./ered /usr/1ocal/sbin/sshd

라고 하면 실제 가 실행되지 않고/usr/lib/.haxOr/sshd-trojan' /usr/local/sbin/sshd

프로그램이 실행된다 모든 을 없애기 위해서는 명령sshd-trojan . exec-redirection './ered -c'

을 사용한다.

- 91 -

명령시 특정 네트워크 접속을 숨기는 기능nethide - netstat .ㆍ

와 파일에서 참조하는 것으로 이 두 파일에서 특정 문자열을 지/proc/net/tcp /proc/net/udp

워 특정 네트워크 접속을 숨길 수 있다 단 파일에서는 주소나 포트번. , /proc/net/[tcpludp] IP

호 등이 모두 진수로 표기되므로 명령에서도 진수로 특정 주소나 포트번호를16 nethide 16 IP

숨겨야만 한다 가령 리눅스 취약점을 공격한 후 자동으로 생성되는 번 백도어 포. , amd 2222

트를 숨기기 위해서는 이라고 명령하여 접속사실을 숨길 수 있다'./nethide ':08AE' ' .

프로그램 없이 로의 접속 가능rootme - suid root .ㆍ

예를 들어 이라고 하면 루트권한으로 를 구동하여 루트 쉘을 취득, './rootme /bin/sh' /bin/sh

할 수 있다 또한 라고 하면 루트만이 읽기 권한이 주어진. './rootme cat /etc/shadow'

파일을 일반 사용자도 볼 수 있다shadow .

실행중인 프로세스의 와 를 변경taskhack - UID GID .ㆍ

예를 들어 라는 일반사용자 계정으로 구동중인 쉘을 루트권한으로 바꿀 수 있다, creed .

원격지에서 서버로 임의의 명령을 실행rexec - knark .ㆍ

예를 들어 원격지에서 이 설치된 서버 를 대상으로 다음의 명령을, knark (haxored.server.nu)

실행시켰다면,

- 92 -

# ./rexec www.microsoft.com haxored. server.nu /bin/touch /LUDER

이 경우 출발지 주소와 포트가 으로 위장된 패킷이, www.microsoft.com:53

으로 전달되고 서버에서는 명령haxored.server.nu:53 haxored.server.nu “/bin/touch/LUDER”

이 실행되게 된다 이 경우 일단 서버가 공격을 당하여 이 설치된 후 패킷 필터링 침. knark

입차단시스템이 설치되더라도 침입차단시스템에서 정상적인 서비스 패킷으로 오인하DNS

고 차단하지 못하여 일종의 을 형성할 수도 있다Covert Channel .

는 위에서 언급한 것 이외에도 다음과 같은 부가적인 기능을 가지고 있다Knark .

시그널 번을 이용한 특정 프로세스의 숨김 기능 는 반대 기능- 31 (32 )

네트웍 인터페이스의 의 숨김 기능- PROMlSCUOUS mode

커널 모듈을 숨기기 위한 커널 모듈 제공- knark modhide.o

나 유닉스 커널 백도어 분석. - SLKM

은 솔라리스 커널에 설치되는 가장 대표적인 커널 백도어이며 에 의해서 개발SLKM , THC

되었다 이 백도어는 라는 초기 버전의 커널 백도어를 바탕으로 그 기능을 향상시킨. flkm

것이며 커널 백도어 모듈의 이름 역시 여전히 으로 되어있다, flkm .

의 주요 기능1) SLKM

은 크게 다음과 같은 기능들을 가지고 있다 그 기능은 전체적으로 에서의SLKM . Linux

와 유사하다knark .

- 93 -

특정 파일의 숨김 기능ㆍ

특정 파일의 내용 숨김 기능ㆍ

디렉토리 숨김 기능ㆍ

파일 내용과 디렉토리의 숨김 기능을 토글할 수 있는 기능ㆍ

프로세스 숨김 기능ㆍ

네트웍 디바이스의 모드 숨김 기능PROMISCUOUSㆍ

특정 프로세스의 값을 로 변환시키는 기능uid root uid(UlD 0)ㆍ

실행 리다이렉션 특정 프로그램을 실행시 다른 프로그램 실행:ㆍ

의 주요 구성 모듈2) SLKM

솔라리스 커널은 리눅스 커널과 같이 많은 표준 함수를 제공하지 않는다 이러한 함수C . C

를 사용하려 한다면 로부터 사용할 함수들을 추출하고 명령어를 사용해 사용할/lib/libc.a ar

커널 모듈에 연결한다.

초기 버전의 커널 백도어 모듈flkm.o, -ㆍ

에러 발생 모듈anm.o,-ㆍ

는 시스템 콜에서 무작위로anm.o(Administrator's NightMare) execve(),open64(), read64()

에러를 발생시키는 모듈.

실제 솔라리스 백도어 모듈sitf0.1.o, sitf0.2.o -ㆍ

의 실제 모듈은 와 인데 이중 는 이 자원을 많이slkm sitf0.1.o sitf0.2.o sitf0.2.o sitf0.1.o CPU

소모하는 단점을 개선하고 추가적인 기능을 제공하는 백도어 모듈이다.

memcpy.o / memmove.o, / strstr.oㆍ ㆍ ㆍ

은 로부터 와 를 추출하여 사용한다slkm /lib/libc.a memcpy.o, memmove.o strstr.o .

- 94 -

의 주요 함수3) slkm

함수 시스템콜의 값을 다른 값으로 변경_init() - .ㆍ

파일 내용 및 디렉토리 숨김 기능을 켜거나 끄기touch<key> - /ㆍ

시스템 콜 읽거나 쓰기위해 파일 열기 사용open64() - - .ㆍ

시스템 콜 시스템에서 현재의 디렉토리를 바꿀때 사용chdir() - .ㆍ

사용자가 또는 와 같은 명령어를 사용하면 파일 시스템의 일부를 읽어 그 내용ps top proc

을 반환한다.

프로세스의 호출자와 실행된 파일에 관한 정보를 가지는 파일/proc/<pid>/psinfo -

파일의 내용 정의/usr/include/sys/procfs.h -

의 명령 사용자가 실행한 명령을 새로운 명령으로 실행NEWCMD -

의 주요 변수들4) SLKM

에는 위의 기능을 수행하기 위한 변수들이 다음과 같이 정의되어있다slkm .

이것은 매직스트링으로 파일이나 프로세스가 이 문자열을 포함한다면 와MAGIC: ls, psㆍ

같은 사용자 명령어로 볼 수 없다 또한 디렉토리가 이 문자열을 포함하고 보안 플래그가.

셋팅되어 있다면 사용자는 이 디렉토리를 보거나 진입할 수 없다 파일의 내용도 마찬가지, .

로 감추어진다.

명령어를 사용하여 보안 플래그를 설정하거나 해제할 수 있는 다Key : touch Key .ㆍ

- 95 -

사용자가 만약 로 설정되어있는 명령을 실행하면OLDCMD & NEWCMD : OLDCMDㆍ

에 있는 명령어가 실행된다NEWCMD .

사용자의 가 이 값과 일치한다면 그 사용자가 시스템에 로그인 할 경우 자동적UID : uidㆍ

으로 의 를 가지게 된다root id .

및 그 외의 모든 커널 백도어는 시스템 콜 테이블 값을 변경하여 자신의 파일 프로세slkm ,

스 커널 모듈의 이름을 감춘다, .

다 커널 모듈의 동작.

리눅스는 각각의 사용자 명령에 할당된 시스템 콜이 존재하는 반면 솔라리스는 이러한 각각

의 시스템콜을 이라는 시스템콜 하나로 대체한다 이 은 사용자 명령에 의해modctl . modctl

주어진 첫 번째 인자값에 따라 수행될 동작이 결정된다 이러한 각각의 동작들은 시스템콜.

이 아닌 각각의 커널함수를 통해 수행된다.

- 96 -

그림 리눅스 커널 모듈 동작 구조( 2-13)

그림 솔라리스 커널 모듈 동작 구조( 2-14)

- 97 -

제 절 악성프로그램 대응 기법 연구2

본 절에서는 지금까지 살펴본 악성 프로그램에서 사용되는 기법에 대하여 현재 대응하고 있

는 현황을 알아 본 후 문제점을 제시하고 본 연구에서의 대응 방법에 대해 다룬다.

대응 현황1.

지금까지 악성프로그램으로 대표적인 바이러스에 대한 일반적인 대응방법으로 대부분 바이

러스의 진단 및 치료 프로그램인 백신을 이용해왔다 이 방법은 컴퓨터 바이러스가 발견된.

후 바이러스에 대한 정확한 분석 및 백신을 개발하기까지 어느 정도의 시간이 소요되며 사,

용자는 백신 프로그램이 개발되기 전 까지는 아무런 대책도 없이 계속 피해를 입을 수밖에

없다.

백신 프로그램이 바이러스를 탐지하기 위해서 이용하는 방법은 바이러스의 시그니처이다.

시그니처란 어떤 바이러스의 전체 부분 중 다른 코드에는 나타나지 않으며 해당 바이러스만

지니고 있을 형태라고 파악되는 바이러스의 최소 부분을 추출한 것이다 임의의 파일이 바.

이러스에 감염되었는지 여부는 시그니처가 해당 파일에 나타나는지 비교를 통하여 이루어진

다 따라서 특정 바이러스의 출현 후 그 바이러스의 일부분인 시그니처를 확보한 후에야 제.

작 가능한 것이 백신 프로그램이다.

이렇듯 신종 바이러스가 출현 한 후 백신이 만들어지기까지 발생하는 피해에 대해서는 속수

무책이며 게다가 기하급수적으로 급증하고 있는 바이러스들을 감당하기 어려워지고 있다.

더군다나 바이러스 제작자들의 기술 또한 지능화되고 있어 백신 개발까지 더욱 많은 시간이

요구 되고있고 특히 동시에 수많은 바이러스들이 출현할 경우 그 피해 규모는 엄청날 것이

다 이렇게 피해 후 조치를 취하는 방법은 근본적인 컴퓨터 바이러스에 대한 올바른 대응.

자세가 아니며 사후 조치가 아니라 사전에 방지할 수 있는 방법이 강구된다 이에 진단 및. ,

치료를 통한 대책이 아닌 출현하지 않은 바이러스에 대해서도 탐지 할 수 있는 방법이 연구

되기 시작했다.

- 98 -

그러나 지금까지 백신 프로그램 개발에 주력을 다하고 그에 맞는 프로그램들이 개발되어 상

품화되어 왔지만 바이러스를 사전에 방지 할 수 있는 기능을 갖는 시스템을 개발한 사례는

국내에서는 거의 전무한 상태이다.

현재의 커널 백도어를 위한 탐지 툴이 많이 배포 되어있다 표 는 현재 배포되어 있는. [ 2-9]

주요 커널 백도어 탐지 툴이다 과 같은 툴은 커널의 사용자 공간에서만 작동하. Chkrootkit

며 백도어에 대한 탐지는 할수 있으나 복구 및 근본적인 예방의 해결책은 되지 않는다.

등도 마찬가지로 실제 커널 백도어의 모든 기능을 탐지하거나Kstat, Cabonite, StMachael

복구하지 못하고 있다.

표 주요 커널 백도어 탐지 툴[ 2-9]

동작 공간 커널 모듈필터링

시스템 콜 테이블변경

프로토콜핸들러 변경

모듈 리스트변경

Chkrootki user space × 예측만 가능 × ×Kstat kemel × ○ × ×

Cabonite kemel × 예측만 가능 × ×StMachae kernel × ○ × ○

또한 현재 사용되고 있는 커널 백도어 탐지 기술은 근본적인 대책이 될 수 없다 또한 커널.

백도어가 설치된 후에는 커널 모듈이 동적으로 로드 언로드 되기 때문에 모듈의 이름이나/

모듈의 행위 자체를 추적하여 그것이 백도어임을 정확히 판단하는 것은 불가능하다.

- 99 -

연구 동향2.

바이러스에 의한 피해를 최소화 할 수 있는 방법 중의 하나가 바로 바이러스 엔진 업데이트

인데 사용자들의 미숙함으로 인해 그 피해가 더욱 늘어나고 있다 이러한 피해를 줄이기 위, .

한 방법으로 자동 면역 시스템기술이 있다 면역 시스템은 신종 바이러스를 탐지하고 그 정.

보를 내부 네트워크로 연결된 컴퓨터들이 다같이 공유할 수 있도록 하여 바이러스의 확산을

미연에 방지할 수 있도록 하는 시스템이다.

면역시스템1) lBM

오늘날 바이러스가 가지는 커다란 문제점 중에 하나는 인터넷이나 전자메일 등을 통해 빠른

전파가 이루어진다는 점이다 이러한 형태의 바이러스와 싸울 방법을 찾기 위해 에서는. IBM

자연 세계의 면역 시스템이 관심을 가지고 이에 대해 연구하기 시작했다 인간의 면역체계.

는 이질적인 유기체를 발견하게 되면 이 침입자를 탐지하고 퇴치하는 항체를 생성하는 점을

이용해 이를 바이러스 퇴치에 적용하게 된 것이다.

면역체계는 미래에 똑같은 바이러스가 침입할 경우를 대비해 그 바이러스에 관한 충분한 정

보를 기억한다 일단 최초의 바이러스 침입을 물리친 면역체계는 이 항체의 일부를 남겨두.

어서 미래에 똑 같은 바이러스가 침입했을 때 빠른 속도로 대처한다 백신 프로그램은 바이.

러스 전체를 인식하지 않고 그들의 시그니처만을 인식하는 항체 를 가지고 있다 의“ ” . IBM

연구목표는 프로그램의 유추능력을 향상시켜 바이러스를 빠르게 확인할 수 있고 하나의 컴,

퓨터뿐만 아니라 컴퓨터 네트워크 전체에서도 확인이 가능하도록 하는 시스템을 개발하는

것이다.

- 100 -

하지만 이 이외에 계획도 있게 되는데 그것은 의 웹사이트에 등록하는 모든 사람들에게IBM

새로운 바이러스에 대한 시그니처와 그 치료법을 제공하는 것이다 은 더욱 빠른 탐지. IBM

를 위해서 모든 과정을 자동화시키고 있다 바이러스에 감염된 컴퓨터가 새로운 바이러스.

샘플을 의 바이러스 분석 센터에 보내면 분석 센터에서는 자동적으로 이 바이러스를IBM ,

탐지해서 퇴치하고 바이러스로 인한 피해를 복구시키는 방법을 만들어내게 된다 그 다음에, .

이 치료방법을 바이러스에 감염되었던 컴퓨터로 다시 보내준다 뿐만 아니라 이 새로운 백.

신은 전세계의 다른 고객회사와 컴퓨터 사용자들에게도 전송될 것이다 그 바이러스가 전파.

되는 속도보다 더 빨리 백신을 배포함으로써 새로운 바이러스가 대규모로 확산되는 것을 막

을 수 있다고 은 주장한다IBM .

의 시스템은 미끼를 통해 새로운 바이러스의 발견 여부를 검색하는데 실제 바이러스의IBM ,

활동 시 해당하는 미끼를 변형시키지 않을 경우 심각한 문제에 봉착하게 된다 게다가 설령.

미끼를 변형시킨다 하더라도 그 시점 이전까지의 바이러스의 활동을 막을 방법이 없다.

또한 의 시스템은 새로운 바이러스의 시그니처와 복구 방법을 자동적으로 생성한다고IBM

했는데 실험 결과에 의해 나타난 긍정적 오류 율은 상당히 높았었다 긍정적, (false positive) .

오류란 바이러스가 아님에도 불구하고 바이러스라고 탐지하게 되는 경우를 말하게 되는데

현재의 기술로는 상용화에 만족할만한 수준이 되지 못한다.

시만텍의 디지털 면역 시스템2)

면역시스템을 안티 바이러스 기술에 최초이자 유일하게 적용한 기업은 미국의 시만텍이다.

시만텍은 디지털 면역 시스템에 대하여 과 수년동안 공동연구를 해오고 있다 과의IBM . IBM

수년간 공동 개발 끝에 상용화된 시만텍 디지털 면역 시스템은 바이러스 감지와 전송 기술

인 검색 및 송부 기술과 자동 백신 개발 기술인 시만텍 안티 바이러스(Scan & Delivery)

자동 복구 기술로 구성되어 있다(SARA; Symantec Anti-virus Research Automation) .

- 101 -

검색 및 송부 기술은 기업체 전산 시스템 내에서 바이러스로 손상된 파일이나 감염이 의심

스러운 파일을 발견해 이를 시만텍 안티 바이러스 연구소로 자동 전송시키고 새로운 바이, ,

러스 백신을 로 받아들이는 역할을 담당한다 시만텍 안티 바이러스 연구소는 전송된E-mail .

바이러스를 시만텍 안티 바이러스 자동 복구 기술에 의해 자동적으로 백신을 개발 처음 바,

이러스를 보고한 기업으로 다시 전송한다 또한 노턴 안티 바이러스 확장 엔진 기술을 이용. ,

전 세계 모든 시스템으로 전파해 다른 기업 전산 시스템이 같은 바이러스에 감염되는 것을

방지하게 하고 있다.

- 102 -

그림 시만텍 면역 시스템( 2-15)

의 면역시스템3) UNM(University of New Mexico)

에서는 컴퓨터 면역시스템 에 대한 연구가 활발히 진행되UNM (Computer Immune System)

고 있다 여기에서는 주로 면역시스템을 이용한 네트워크 기반 침입탐지에 대하여 연구하고.

있다 교수와. Stephanie Forrest Geoff Hunsicker, Ken Ingham, Hajime Inoue, Anil

등의 학생들이 연구하면서 다수의 논문을 발표하고 있다Somayaji, Christy Warrender .

이상과 같이 면역 시스템은 독립된 분야가 아닌 바이러스 또는 침입탐지와 같은 다른 분야

와의 결합을 통해 원하는 결과를 얻어내는 방향으로 연구가 진행되고 있다 본 연구과제에.

서는 바이러스의 악성행위를 분석하고 알려지지 않은 바이러스를 탐지하는 시스템과 결합하

여 자동으로 탐지된 바이러스에 관한 정보를 네트워크상의 모든 시스템들이 공유할 수 있도

록 하는 면역 시스템을 개발하고자 한다.

- 103 -

연구 방향3.

현재까지는 악성 프로그램에 대하여 바이러스에 대한 백신을 이용하거나 해킹을 당한 후에

야 피해분석 및 조치를 하는 사후의 대응을 취하고있다 이제는 이러한 사후조치가 아닌 사.

전에 대비할 수 있는 방안이 필요한 시점이다 현재까지 나오지 않은 바이러스에 대해서도.

조치할 수 있으며 깨끗한 시스템에 어떠한 해킹툴도 설치하지 못하도록 예방할 수 있는 뚜

렷한 방법들이 요구된다.

이러한 요구에 부흥하여 오토마타와 유전자 알고리즘을 이용하여 지능형 바이러스 대응 시

스템을 개발하였다 기존 바이러스들의 행동을 분석하여 오토마타를 생성한 후 임의의 파일.

들에 대해서 바이러스에 감염되었는지 여부를 탐지하기 위해 생성된 오토마타에 적용하는

방법은 각 파일들의 소스코드 레벨에서 스캔을 통해 진행된다 다시 말해서 어셈블러나 비.

주얼 베이직 언어 수준에서 소스의 한 문장이 입력으로 주어지며 상태변이를 한다 즉 오토.

마타의 상태변이는 언어의 문장에 의해 이루어지는 것이다 이는 임의의 주어진 파일에 대.

해 시뮬레이션 작업 없이 단지 스캔에 의해서만 이룰 수 있으며 문장 하나에 대해서 정의된

오토마타를 이용한 상태 변이를 통해 시뮬레이션 효과를 볼 수 있다 대신 시뮬레이션에 따.

르는 오버헤드를 수반하지 않는 장점을 지닌다 오토마타의 단점은 행위를 분석하여 작성된.

오토마타는 정해진 행위 외에는 오토마타를 수정하기 전에는 탐지가 불가능하다.

- 104 -

이를 보안하기 위해 유전자 알고리즘을 사용한다 유전자 알고리즘은 자연진화의 법칙을 컴.

퓨터의 논리로 모방하여 일반 최적화 문제나 탐색문제의 해를 구한다 교배 선택 돌연변이. , ,

를 반복함으로써 변형된 형태의 바이러스를 탐지할 수 있다 또한 바이러스를 확률로 표기.

하는데 이 확률을 결정하는 것이 유전자 알고리즘이다.

기존의 커널 백도어의 기법을 분석하여 본 결과 다양한 기능을 원활하게 수행하기 위해 커

널백도어는 주로 시스템의 시스템콜 테이블 프로토콜 핸들러 그리고 커널 모듈리스트를 변,

경한다 따라서 본 연구에서는 커널 백도어 대응 시스템은 이러한 변경을 탐지하고 복구할.

수 있도록 아래와 같은 기능들을 수행하고자 하였다.

커널 모듈 필터링 기능·

유닉스 시스템에서 이용하는 추출된 표준 커널 모듈이외의 커널 모듈이 로드를 시도를-

탐지하고 백도어일 경우에 적재를 방지한다.

시스템 콜 테이블 변경·

커널 백도어가 필수적으로 변경하는 시스템콜 정보 화일를 비교 분석함으로써 침해 여부-

를 점검한다.

프로토콜 핸들러 변경·

진보된 형태의 커널백도어는 자신이 전송할 데이터의 형태에 따라 등의- TCP, ICMP, UDP

프로토콜 핸들러를 변경하는데 저장된 원래의 프로토콜 핸들러를 커널모듈의 로딩후에 것과

비교하여 판단하게된다.

- 105 -

모듈 리스트 변경·

커널백도어가 커널 모듈의 링크드리스트로부터 자신의 모듈을 제거되었는지를 저장된 커-

널 모듈리스트 정보를 현재의 모듈리스트와 비교한다.

가 오토마타.

벱스터 사전에 의하면 오토마타 란 명령에 대하여 연산의 이미 결정된 순차를 자(automata) ,

동적으로 따르도록 설계된 제어기 또는 머신이라고 한다 여기서 머신이라는 단어는 하드웨.

어적이라기 보다 주어진 상태 변화를 형식적으로 서술할 수 있는 수학적 모델로 관찰된다.

따라서 오토마타는 입력에 대하여 정보를 처리하고 답하는 장치 라 할 수 있다(device) .

오토마타는 입력장치 처리장치 출력장치 로 구성되는(input unit), (process unit), (output unit)

데 이들의 기능은 주어진 환경과 시간에 따라 행위를 결정하는 상태로 표기된다 이때 상태.

는 프로그램에서 실행진로를 결정하는 요소로서 상태의 변화는 방향성 그래프 로(Digraph)

표현되거나 인접 리스트 로 구현될 수 있다 따라서 그래프적 오토마타는 심, (adjacency list) .

벌취급과 프로세스 를 단순하고 우아하게 서술하기 위한 도구로서 인식(process) ,

생성 계산 기능을 기본적으로 갖는다(recognize/accept), (generating), (computing) .

예를 들어 프로그래밍 언어에서 변수명을 오토마타의 상태전이 다이어그램으로 서술하면 다

음과 같다.

- 106 -

그림 오토마타 상태 전이 다이어그램( 2-16)

이러한 오토마타 이론은 주 기능이 임의의 고수준 프로그래밍 언어를 정의하고 언어의 어,

휘와 구문이 정의된 문법에 맞게 작성되어 있는지 인식하는 컴파일러에서 중요하게 사용된

다 언어의 정의와 설계는 형식 언어라는 범주에서 논의되고 컴파일러 과정에서 목표를 두. ,

는 언어의 인식은 오토마타 이론에서 다루어질 것이다 따라서 컴파일러 분야는 이 두 이론.

을 배경에 두게 된다.

본 논문에서 연구되는 바이러스 탐지기법에서도 프로그래밍 언어의 문법을 파싱하는 컴파일

러 부분의 역할까지 해결해주는 오토마타를 이용함으로써 소스 문장의 스캔에 의해 파싱 과

정과 함께 바이러스임을 판별해주는 방법을 제안한다.

나 유전자 알고리즘. (Genetic Algorithm)

본 절에서는 확장된 행위패턴 오토마타의 악성행위들을 유전자 알고리즘을 이용하여 식별하

는 것에 대해서 설명한다 오토마타를 이용하여 분석된 다양한 패턴들은 유전자 알고리즘을.

적용하는 단계에 이르러 바이러스 여부를 확률로 표현할 수 있게 된다.

- 107 -

유전자 알고리즘의 소개1)

유전자 알고리즘의 정의ㆍ

유전자 알고리즘이란 자연계의 진화 현상을 구현하는 알고리즘으로 다윈이 주장한 적자생,

존과 자연도태의 원리를 이용하여 개발된 알고리즘이다 다윈의 진화론에 의하면 집단 내.

개체는 주위 환경에 적합한 형질을 가질수록 생존할 확률이 높으며 교배 와 돌연(crossover)

변이 를 통해 더 나은 방향으로 진화하고 적자생존 부적합한 형질을 가질수록 진(mutation) ( ),

화의 과정에서 점차 도태되어 간다 자연도태 즉 유전자 알고리즘은 이러한 자연진화의 법( ). ,

칙을 컴퓨터의 논리로 모방하여 일반 최적화 문제나 탐색 문제의 해를 구하는 알고리즘이

다.

유전자 알고리즘은 기존의 탐색 기법과는 달리 집단 이라고 불리는 임의의 초기(population)

해집단으로부터 출발한다 일단 어느 정도 정답에 가까운 해의 집합을 가지고 탐색을 시작.

한다는 뜻이다 그리고 기존의 탐색 알고리즘은 탐색과정에서 얻어진 정보를 이용할 수 없. ,

지만 유전자 알고리즘은 탐색과정의 정보를 보관할 뿐만 아니라 이들 정보를 이용하여 새,

로운 탐색에 참고하는 기능 선택 재생 과 주어진 판단기준에 따라 해를 탐색하는 적응 기능( , )

을 가지고 있다 적합도 평가( ).

유전자 알고리즘의 연산ㆍ

유전자 알고리즘은 아래의 가지 기본적인 연산들을 반복적으로 수행하며 일정 세대가 되3 ,

면 적합도가 높은 어떤 개체에 수렴한다 일반적으로 이 개체는 문제에 대한 최적해를 나타.

낸다.

선택- (selection)

선택은 각 개체의 적합도를 이용하여 다음 세대를 위한 집단을 새로이 생성하는 연산을 말

한다 적합도란 목적함수 값에 적당한 함수를 도입하여 그 차이를 확대시킨 값으로 이러한.

과정을 스케일링 이라고 부른다 일반적으로 많이 사용되는 선택 방법은 룰렛 휠(scaling) .

선택으로 이는 다른 개체들의 적합도에 대한 특정 개체의 상대적인 적합(roulette wheel) ,、

도 크기를 이용하여 개체를 선택한다 이 방법은 적합도가 클수록 선택될 확률도 높아지는.

방법이다.

- 108 -

교배- (crossover)

교배는 두 부모 염색체를 적절히 조합하여 새로운 자손을 생성하는 연산을 말한다 이진 비.

트 스트링 염색체에서 교배를 행하는 간단한 방법은 먼저 임의의 교배점을 선택한 후 이,

위치를 기준으로 두 부모의 우측 부분을 교환하는 것이다 점 교배 그림 에서 교배연(1 ).( 2-17)

산의 예를 보인다 이는 이진 비트 스트링의 경우 잘 작동하는데 자료 구조의 형태에 따라.

교배의 의미는 달라질 수 있다 유전자 알고리즘의 성능은 교배 연산자의 성능에 크게 의존.

하기 때문에 문제에 맞는 올바른 교배연산자를 정의 혹은 선택할 필요가 있다 높은 교배확.

률은 더 넓은 해영역을 탐색할 수 있게 하며 따라서 국부 최적점에 빠질 위험을 감소시킨

다 하지만 이 비율이 너무 크면 부적절한 해영역까지도 탐색하게 되므로 연산 시간이 길어.

지게 된다.

그림 교배연산의 예( 2-17)

- 109 -

돌연변이- (mutation)

돌연변이는 염색체 내의 유전자를 임의로 변화시키는 연산을 말한다 그림 에서 돌연.( 2-18)

변이의 예를 보인다 예를 들어 이진 비트 스트링의 경우 을 로 혹은 을 으로 바꾸는. 0 1 , 1 0

과정을 말한다 만약 돌연변이가 없다면 초기 염색체의 집합 이외의 공간은 탐색할 수 없으.

며 결국 원하는 최적해도 구할 수 없을 것이다 따라서 돌연변이는 염색체의 패턴을 전환시, .

키는 역할을 하게 되며 이에 따라 탐색공간이 변경되어 전역 최적해를 구할 수 있는 것이

다 만약 돌연변이 확률이 너무 높으면 임의 탐색과 비슷한 경향을 보이며 너무 낮으면 국. ,

부 최적점에 수렴할 우려가 있으므로 신중히 선택해야 한다.

그림 돌연변이 연산의 예( 2-18)

유전자 알고리즘의 적용ㆍ

유전자 알고리즘은 어떤 문제의 답을 찾거나 혹은 그 문제에 존재하는 어떤 값을 최소와 혹

은 최대화하는 데 유전자의 개념을 적용하는 알고리즘이다 다시 말해 유전자 알고리즘을. ,

이용하면 정확한 답을 구하거나 그 정확한 답에 얼마나 근접한 값인가를 제시할 수가100%

있다 또한 유전자 알고리즘은 많은 변수의 수에 의한 탐색공간이 방대한 경우에 사용되며. ,

답을 찾는 정형화된 규칙이 존재하지 않거나 쉽게 경험 을 적용할 수 없는 문제의(heuristic)

답을 최적화하여 찾는 방법으로 사용된다 탐색공간이 방대하여 정확한 답을 구하기. 100%

가 어려울 때 가능한 변수값들의 조합으로 정답에 가까운 답을 찾는 것이다 그래서 유전, . ,

자 알고리즘은 결정적인 규칙이 없고 확률적 연산자를 사용하는 특징이 있다.

- 110 -

여러 개의 특징 변수들을 조절하여 어떤 시스템의 성능을 최대화하고자 하는 경우가 있다고

하자 그러한 특징 변수값들의 조합은 무수히 많이 존재한다 유전자 알고리즘은 존재할 수. .

있는 답의 경우들 또는 변수들의 상태를 각각 유전자 코드로 변환하여 갖고 있게 된다 유, .

전자 알고리즘은 진화와 퇴보의 과정이 있으며 생각할 수 있는 여러 가지 답들을 유전자,

코드로서 생성한다 이러한 하나의 답을 나타내는 유전자 코드들의 집합을 개체집단.

이라 한다 만들어진 개체집단 내부의 유전자 코드들은 얼마나 정답에 가까운지(population) . ,

좋은 답인지에 대한 평가값을 가진다 개체집단으로부터 발전적인 다음 세대의 그것을 만들.

어내는 작업을 반복하는 것이 바로 유전자 알고리즘이다.

최근 유전자 알고리즘은 그 잠재력으로 인해 많은 관심을 받고 있으며 이미 다양한 분야에,

서 광범위하게 응용되고 있다 대표적인 응용의 예로는 조합최적화 문제 스케줄링 문제 화. , ,

상복원 평면 레이아웃 패턴 인식 유향 그래프 배치 인공지능 하드웨어 진화 등이 있다, , , , , .

유전자 알고리즘의 적용사례2)

본 장에서는 유전자 알고리즘이 사용된 실례를 들어 유전자 알고리즘의 특징과 장점을 밝혀

보고자 한다 한국과학기술원의 전화성 연구원의 유전자 알고리즘을 이용한 언어식별 이란. “ ”

제목의 논문이다.

언어식별이란 입력음성이 어느 언어인지를 판별할 수 있는 기술이다 이 논문에서는 음소별.

음향학적 모델과 음소결합법칙을 이용하되 그 인식률을 높이기 위해 유전자 알고리즘을 이

용한다 다시 말해 음소결합모델을 이용한 언어식별 성능을 향상시키기 위해 음소결합모델. ,

에 주는 적합한 가중치 테이블을 만드는 방법으로 유전자 알고리즘을 이용하였다.

- 111 -

이 논문에서 생성한 음소 바이그램은 개의 음소 집합으로 이루어져있기 때문에 크7 7 x 7

기의 테이블로 표현된다 이것을 개 국어 한국어 중국어 스페인어 에 대해 생성하였으므로. 3 ( , , )

개의 테이블이 존재한다 각각의 음소 바이그램에 주고자 하는 가중치 테이블은 마찬가지3 .

로 의 크기를 가지며 가중치 값들의 총 수는 개가 된다 음소바이그7 x 7 , 7 x 7 x 3 = 147 .

램을 사람이 직접 보고 경험에 의해 가중치를 주어 언어 식별 성능을 높이기 위한 음소 바

이그램에 주는 가중치 테이블을 유전자 알고리즘의 최적화 능력으로 수행하고자 하는 것이

다.

이처럼 유전자 알고리즘은 답을 찾는 정형화된 규칙이 존재하지 않거나 쉽게 경험을 적용할

수 없는 문제의 답을 최적화하여 찾는 방법으로 사용된다 탐색공간이 방대하여 정확한 답.

을 구하기가 쉽지 않을 때 사람이 직접 보고 경험에 의해 가중치를 주기가 어려울 때 유전, ,

자 알고리즘을 이용하면 가능한 변수값들의 조합으로 정답에 가까운 답을 찾을 수 있다.

본 연구과제에서 유전자 알고리즘의 적용과정3)

유전자 알고리즘의 사용목적ㆍ

앞에서도 살펴보았듯이 유전자 알고리즘은 탐색공간이 방대하여 정확한 답을 구하기가 어려

울 때 가능한 변수값들의 조합으로 정답에 가까운 답을 찾는 방법으로 사용된다 그러므로, . ,

이전 단계에 오토마타를 이용하여 분석이 된 악성행위의 확장패턴들은 유전자 알고리즘을

적용하는 단계에 이르러 바이러스 여부를 계량적으로 표현할 수 있게 된다 다시 말하면 미. ,

확인된 악성코드가 우리가 오토마타로 표현한 악성바이러스일 확률을 수치로 제시할 수 있

다는 것이다.

- 112 -

다 커널 백도어 탐지.

커널 백도어는 기존의 백도어와는 동작형식과 프로그램 형태가 완전히 다르기 때문에 커널

백도어 대응 시스템은 커널 백도어 설치 시점과 커널 백도어의 기능이라는 두 가지 측면을

고려한다 커널 백도어는 운영시스템에 커널 백도어 대응 시스템이 존재하기 이전 또는 이.

후에 설치될 수 있다 이는 예방 설치전 탐지 설치후 탐지 및 복구 개념과 일치한다. , , .

실제 커널 백도어가 설치된 커널은 시스템의 재부팅 없이 복구가 불가능하기 때문에 예방과

설치후 탐지 및 복구를 위한 시스템은 커널 백도어 설치여부를 판단하고 필요한 조치후 설

치되어야 한다.

커널 백도어는 종류에 따라 다양한 기능을 가지며 이러한 기능을 수행하기 위해 시스템의,

시스템콜 테이블 프로토콜 핸들러 그리고 커널 모듈리스트의 변경을 수행한다 커널 백도어, .

대응 시스템은 시스템을 모니터링하면서 이러한 변경을 탐지하고 복구할 수 있어야한다.

어플리케이션 백도어는 관리자가 주의 깊게 살펴보면 금방 알아낼 수 있으나 커널 백도어는

주의 깊게 살펴본다 하더라도 찾아내기 힘들다 또한 시스템을 다시 재부팅 하지 않고서는. ,

그 커널 백도어에 관련된 커널 모듈을 메모리에서 제거하는 것이 거의 불가능하다 이는 커.

널 백도어가 시스템 권한을 가진 상태로 커널의 일부로서 실행되기 때문이다.

현재 일반적으로 사용되는 커널 백도어 탐지 방법은 크게 세가지로 구분할 수 있다.

- 113 -

첫째 이미 알려진 커널 백도어의 특성을 이용하는 방법과 둘째 커널 모듈의 특성을 이용하,

는 방법과 셋째 시스템 콜 테이블을 이용한 방법이다.

커널 백도어 특징 이용1)커널 백도어의 탐지는 실제로 매우 어렵다 또한 시스템을 다시 재부팅 하지 않고서는 그. ,

커널 백도어에 관련된 커널 모듈을 메모리에서 제거하는 것이 거의 불가능하다 이는 커널.

백도어가 시스템 권한을 가진 상태로 커널의 일부로서 실행되기 때문이다 현재 일반적으로.

사용되는 커널 백도어 탐지 방법은 크게 두가지로 구분할 수 있다.

첫째 이미 알려진 커널 백도어의 특성을 이용하는 방법과 둘째 커널 모듈의 특성을 이용하,

는 방법이다.

커널 백도어 특성 이용 방법은 이미 알려진 커널 백도어 각각의 특성을 이용하는 방법이다.

이는 커널 백도어가 설치하는 파일과 파일의 위치 특정 기능의 수행을 위한 명령어 정보,

등을 통해 탐지하는 방법이다 의 경우 시그널 번은 모든 프로세스를 숨기는데 사용. knark 31

되며 번은 그것들을 다시 보이게 하는데 사용된다 따라서 번 시그널을 이용하면 숨겨, 32 . , 32

진 프로세스들을 볼 수 있다 또한 는 디렉토리에. knark /proc/knark/ author, files, nethides,

등과 같은 파일들이 디폴트로 생성되므로 이 파일들을 찾음으로써 툴pids, redirects knark

의 존재여부를 알 수 있다 그러나 존재하는 파일의 위치를 알더라도 커널 백도어가 이러한.

파일을 숨기는 기능도 같이 제공하기 때문에 실제 탐지는 어렵다 이러한 탐지는 백도어 설.

치자가 미숙할 경우만 가능한 방법으로 커널 백도어의 디폴트 시그널 값의 변경이 없어야함

을 의미한다 하지만 좀더 지능적인 침입자의 경우 커널 백도어의 디폴트 옵션을 바꾸기 때.

문에 실제 탐지가 불가능하게 된다 이 방법은 실제 커널 백도어의 특성이 모두 분석되어야.

하고 분석되었더라도 실제 탐지를 보장할 수 없는 한계 점을 가진다.

- 114 -

커널 모듈 특성 이용2)

커널 백도어는 커널 모듈로 구현되기 때문에 커널 모듈 자체 특성을 이용해 탐지 될 수 있

다 커널 모듈은 그 특성상 모듈의 이름이 시스템 상에 알려지는 원리를 이용한다 시스템은. .

로드된 커널 모듈의 관리를 위해 이름 의존성 등과 같은 많은 정보를 가지는데 이 정보는,

정상적인 커널 모듈과 커널 백도어를 구분하는 정보로 사용될 수 있다 그러나 대부분의 커.

널 백도어는 이러한 탐지를 막기 위해 모듈의 이름을 디바이스 이름과 혼동되게 하거나 모

듈 리스트에서 이름을 감춘다 이는 시스템관리자가 모듈 리스트를 신중하게 조사할 경우.

발견 할 수 있지만 일반적인 시스템 관리자는 발견하기 매우 어렵다 나아가 커널 백도어가.

이러한 모듈을 관리하는 시스템 프로그램을 패치 할 경우 탐지는 불가능해진다.

시스템 콜 테이블 이용3)

시스템 콜 테이블에 기반한 커널 백도어 탐지방법은 커널 백도어가 시스템 콜을 후킹하기

위해 시스템 쿨 테이블을 변경하는지를 검사함으로서 이러한 문제를 해결할 수 있다 이 모.

델은 탐지 모듈이 로드되기 전에 설치된 커널 백도어가 없음을 가정한다.

- 115 -

제 장 바이러스 및 해킹대응 관리시스템 설계3

바이러스 및 해킹대응 관리 시스템은 악성 프로그램의 대표적인 유형인 알려진 해킹과 바이

러스에 대응할 수 있도록 설계되었으며 지금까지 출현하지 않은 악성 프로그램에 대하여도

예방 할 수 있도록 설계되었다 이러한 시스템은 크게 바이러스 및 웜 대응 시스템 해킹관. ,

련 트로이목마 대응 시스템 관리 시스템으로 나눌 수 있으며 이러한 각 구성시스템들은 통,

합 로 연계되어 있다 이장에서는 전체 시스템의 구조를 통하여 개략적인 시스템의 구성DB .

을 살펴보고 각 구성 시스템들의 설계에 대하여 자세히 분석해본다.

제 절 전체 시스템 설계1

전체 시스템은 크게 바이러스 및 웜 대응 시스템과 해킹관련 트로이목마 대응 시스템 관리,

시스템으로 나눌 수 있으며 다음 그림 와 같이 통합 로 연계되어 있다( 3-1) DB .

- 116 -

그림 전체 구성도( 3-1)

각 구성 시스템에 대하여 살펴보면 바이러스 및 웜 대응 시스템은 현재 많은 피해를 일으키

고 있는 악성 프로그램 중에서 바이러스와 웜에 대응할 수 있도록 설계된 시스템이다 이.

시스템은 알려진 바이러스에 대하여 탐지할 수 있는 탐지부분과 아직까지 발견되지 않은 바

이러스에 대해서도 대처할 수 있는 예방 부분으로 구분할 수 있다.

- 117 -

탐지부분에서는 알려진 바이러스의 행위가 정의된 를 바탕으로 오토마타를 적용하여 바DB

이러스 감염 여부를 탐지한다 예방 부분에서는 알려진 바이러스의 행위에서 바이러스라고.

의심되는 위험한 행위를 하는 메소드를 추출하여 오토마타를 적용하고 이에 유전자 알고리

즘을 적용하여 변영된 바이러스 및 아직 출현하지 않은 바이러스에 대한 예방이 가능하도록

한다.

이렇게 오토마타와 유전자 알고리즘을 적용하여 바이러스라고 의심되는 경우에 이를 관리시

스템 통하여 에 업데이트 하기 위해 관리시스템을 시킨다Unkown DB invoke .

악성 프로그램의 대표적인 유형인 바이러스 웜 트로이목마 중에서 바이러스와 웜에 대한, ,

대응을 위해 설계된 시스템이 바이러스 및 웜 대응 시스템이며 나머지 트로이목마에 대한

대응을 위해 설계된 것이 해킹관련 트로이목마 대응 시스템이다 해킹관련 트로이목마 대응.

시스템은 트로이목마 중에서도 특히 위험한 것으로 알려졌으며 고도의 기술력이 요구되는

커널 백도어를 중심으로 한다.

이 시스템도 마찬가지로 기존의 커널 백도어에 대응하기 위한 탐지부분과 아직까지 알려지

지 않은 백도어에 대하여 예방 할 수 있도록 설계된 예방 부분으로 나눌 수 있다 탐지부분.

에서는 이미 출현되어 피해를 일으키고 있는 커널 백도어를 분석하여 그 정보를 바탕으로

저장되어 있는 커널 백도어 를 참조하여 기존에 제작된 백도어 탐지를 통해 안Known DB

전한 시스템인지 확인할 수 있도록 설계되었다.

예방 부분에서는 무결한 시스템에서 실시간 감시를 통하여 이미 알려진 커널 백도어 뿐 아

니라 그렇지 않은 어떠한 백도어의 설치도 막을 수 있는 기능이 제공된다.

- 118 -

이러한 예방 기능은 세 가지 방면에서 감시를 시도하는데 우선 커널 백도어가 커널에 로드

되는 것을 막기 위해 프로세서 필터링으로 사용자가 미리 정의하지 않은 커널의 로딩을 못

하게 한다 다시 말해서 커널에 올려진 프로세서를 미리 등록해 놓고 등록되지 않은 어떠한.

프로세서도 로딩이 불가능하도록 필터링함으로써 커널백도어가 무작위로 로딩되지 못하도록

막는 일단계 방법이다.

두 번째 방법은 기존의 대부분 커널 백도어에서 사용하는 시스템콜 변경여부를 체크하는 방

법이다 커널 백도어를 설치하여 시스템 콜의 변경이 불가능하도록 하기 위해 시스템 콜을.

모니터링하면서 변경을 시도하는 커널 백도어를 실시간으로 탐지해낸다.

마지막으로 시스템콜을 변경하는 커널 백도어보다 더 높은 차원의 기술이 요구되는 프로토

콜 핸들러를 모니터링 하는 것이다 프로토콜 핸들러의 변경 유무를 감시하여 커널 백도어.

의 로딩을 막음으로써 어떠한 커널백도어가 설치되어도 실시간으로 탐지 가능하고 새로운

커널 백도어가 나타난 것으로 판단되면 이를 관리시스템에 전송하여 커널 백도어Known

에 업데이트하도록 한다DB invoke .

관리 시스템은 바이러스 및 웜 대응 시스템과 해킹관련 트로이목마 대응 시스템을 통합 DB

와 연계하며 각 시스템에 의해 통합 의 업데이트가 요구되는 경우 이를 수행하는 시스템DB

으로 중앙 관리시스템이라 할 수 있다.

이러한 관리 시스템이 실행되는 시점은 각 구성 시스템인 바이러스 및 웜 대응 시스템과 해

킹관련 트로이목마 대응 시스템으로부터 된다 바이러스 및 웜 대응 시스템에서 바이invoke .

러스나 웜이라고 판단된 확인되지 않은 행위가 바이러스인지 확인 작업을 거쳐 바이러스임

이 확인되면 를 업데이트 한다 또 해킹관련 트로이목마 대응 시스템에서 새로운Known DB .

커널 백도어로 되는 의심되는 정보를 분석한 후 커널 백도어로 확인되면 커널 백도어 를DB

업데이트 한다.

- 119 -

관리시스템을 통해 지속적으로 통합 가 업데이트되어 새로운 바이러스 웜 또는 백도어DB ,

가 출현하더라도 탐지 및 예방이 가능할 수 있도록 설계된 미래지향적 시스템이라 할 수 있

다.

지금부터는 전체시스템에서 핵심이 되는 구성 시스템인 바이러스 및 웜 대응 시스템과 해킹

관련 트로이목마 대응 시스템의 설계부분을 자세히 알아본다.

제 절 바이러스 및 웜 대응 시스템 설계2

시스템은 각각의 바이러스 탐지 시스템이 추출해낸 유AVIS(Anti Virus Immune System)

사 악성 패턴과 기존 바이러스 패턴을 내재하고 있는 패턴 에 최신의 데이터를 가질 수DB

있도록 하는 데 목적이 있다 이는 한 클라이언트 시스템에서 발생된 패턴을 바이러스 업데.

이트 서버로 전송하면 서버측에서는 이외의 탐지 클라이언트 시스템들에게 업데이트된 데이

터를 공유할 수 있도록 를 통해 전송하여 준다 시스템에서 패턴 를 자동으로 전HTTP . DB

송하기 위해서는 배포할 파일 리스트를 미리 등록시켜 놓아야 하고 패턴 의 목록은DB

에 저장된다 의 구성 각각의 기능 및 역할은 그림 와 같다PatternFiles.html . AVIS , ( 3-2) .

- 120 -

그림 전체 구성( 3-2) AVIS(Anti Virus Immune System)

면역시스템과 바이러스 탐지 시스템을 자세히 알아본다.

- 121 -

면역 시스템 정의1.

면역 시스템은 탐지자 작동체 및 메모리 등의 컴퓨터 시스템을 동물의 육체에 대, (effector)

응시켜 일상에서 생물의 내부에 침입한 병원체에 대한 자연 면역 현상을 컴퓨터 시스템 모

델로 설계한 것이다 면역시스템은 탐지자들과 작동체들간의 상호작용과 다양한 셀 분할 그.

리고 일정시간 작동 후 소멸되는 탐지자의 소멸률을 조절하여 육체에서 탐지자들이 필요한

곳에 탐지자들을 할당할 수 있고 어떤 탐지자가 손상되어도 전체 면역 시스템에 영향을 주,

지 않는 결함 허용 능력을 제공한다.

면역 시스템의 요구 조건2.

면역 시스템은 발견된 신종 바이러스에 대한 정보를 내부 네트워크로 연결된 컴퓨터들이 다

같이 공유할 수 있도록 하여 바이러스의 확산을 미연에 방지할 수 있는 시스템이다 자동화.

된 면역시스템은 분산된 각각의 지능형 바이러스탐지 시스템들이 바이러스 정보를 서로 동

적으로 공유하여 컴퓨터들과 그 컴퓨터가 속해 있는 네트워크를 바이러스로부터 차단할 수

있다 그림 는 일반적인 면역 시스템의 모델이다.( 3-3) .

그림 일반적인 면역 시스템 모델( 3-3)

- 122 -

다음은 학습형 면역 시스템이 가져야 할 특징이다.

선천적인 면역성 면역 시스템은 현존하는 바이러스에 대한 면역이 가능해야 하고 모든: ,·

타입의 알려지지 않은 바이러스를 미리 예상하고 있어야 한다.

적응하는 면역성 면역 시스템은 바이러스 탐지를 위하여 샘플로부터 처방전을 자동으:·

로 이끌어낼 수 있어야 한다.

배달과 보급 면역 시스템은 이미 감염된 컴퓨터에 처방전을 배달할 수 있어야 하고 같: ,·

은 네트워크 상의 다른 컴퓨터들에게도 처방전을 보급해야 한다.

속도 면역 시스템은 바이러스가 전파되는 속도보다 빠르게 처방전을 보급해야 한다 현: .·

재의 적절한 목표는 바이러스가 처음 발견된 지 분 안에 처방전을 만드는 것이고 분10 , 30

안에 주위의 모든 컴퓨터들에게 처방전을 배포하는 것이다.

업데이트 면역 시스템은 한 시간에 적어도 백 개의 컴퓨터들을 업데이트시킬 수 있어: 1·

야 한다 업데이트 속도가 늦게 된다면 나중의 업데이트는 무용지물이 될 것이다. .

안전과 신뢰성 면역 시스템에 의해 생산된 처방전은 사람의 손을 거치지 않더라도 충:·

분하게 보급될 수 있다는 신뢰성이 충분하게 있어야 한다 또한 분류하고자. , False Positive(

하는 부류에 속하지 않는데 속한다고 시스템이 잘못 분류하는 것 비율은 가능한 한 낮아야)

한다.

보안 바이러스 샘플이 제 자에 의해 도난 당하지 않도록 보호되어야 한다 이보다 더: 3 .·

중요한 것은 면역 시스템에 의해 분배되어지는 처방전이 면역 시스템에 의해 만들어진 것이

확실한가 하는 것이다 이것이 보장되지 않으면 네트워크 내 컴퓨터들의 안티 바이러스 시. -

스템이 큰 혼란에 빠질 수 있다.

- 123 -

시스템의 패턴 업데이트 시나리오3. AVIS DB

다음은 패턴 가 자동으로 업데이트 되는 과정을 설명한다 이 패턴 는 프로토DB . DB HTTP

콜을 이용하여 송 수신된다 그림 는 패턴 의서버 전송을 보여준다.( 3-4) DB .ㆍ

그림 패턴 의 서버 전송( 3-4) DB

- 124 -

단계1·

패턴 추출 알고리즘에 의해 탐지된 알려지지 않은 악성 행위 패턴 정보는 에 저장되기DB

위하여 적절한 자료구조로 변환되어 패턴 가 설치된 관리 서버로 보내어진다DB .

단계2·

분석된 바이러스 패턴은 관리서버의 데이터베이스에 저장되게 되고 이 패턴 정보는 다시,

맨 처음 바이러스 정보를 보내온 컴퓨터에 보내어 자신의 정보를 갱신한다.

단계3·

맨 처음 바이러스 정보를 보내온 컴퓨터를 제외한 나머지 다른 컴퓨터들에게도 바이러스 패

턴 정보는 전송된다 따라서 내부 네트워크에 종속된 모든 컴퓨터들은 동일한 바이러스로부. ,

터 면역력을 향상시키게 된다.

업데이트를 위한 환경 설계4.

업데이트 기능은 와 각각의 클라이언트 사이에서 패턴 의AVIS Pattern Update Server DB

수정 여부를 서로 통신하여 최신의 를 공유하도록 한다 업데이트를 위한 각각의 환경DB .

설정은 다음과 같다.

에서 업데이트 정보 설정Pattern Update Server·

패턴 의 업데이트는 클라이언트 서버 상호간의 버전 정보를 기준으로 수행되는데 가장DB / ,

최신의 버전 정보는 의 파일에 등록된다 이는 버Pattern Update Server UpdateVersion.html .

전의 카운트 역할만을 수행하기 때문에 텍스트형의 파일 형태로 존재하게 된다 다HTML .

음은 버전 정보를 나타내는 의 한 내용이다UpdateVersion.html .

- 125 -

1.2.2

업데이트 파일 목록·

각 클라이언트 시스템들이 최신 패턴 를 수신하기 위해서 의 버전DB PatternUpdate Server

정보를 수신받아 자신의 버전과 비교 후 업데이트 이벤트가 발생하면 클라이언트는 Pattern

의 파일을 참조하여 업데이트할 파일 목록을 인식하게 된다Update Server UpdateFilelist.dat .

업데이트할 파일 리스트는 버전 정보에 따라 구성된다.

파일은 항목에 버전정보를 그리고 그에 따른 업데이트 파일 목록을UpdateFilelist.dat [ ] ,

폴더명과 함께 기술한다.

- 126 -

바이러스 탐지5.

바이러스 탐지부분은 오토마타와 유전자 알고리즘을 사용하였다.

가 오토마타.

오토마타를 이용한 새로운 바이러스 탐지 기법에서는 우선 기존의 바이러스들의 행동들을

분석하여 일반적으로 바이러스들이 갖는 행위들을 오토마타로 정의해야한다 즉 아직 출현.

하지 않은 바이러스의 행위를 미리 파악하기 위해 이미 발견된 바이러스들의 행위를 면밀히

분석해야한다.

기존 바이러스들의 행동을 분석하여 오토마타를 생성한 후 임의의 파일들에 대해서 바이러

스에 감염되었는지 여부를 탐지하기 위해 생성된 오토마타에 적용하는 방법은 각 파일들의

소스코드 레벨에서 스캔을 통해 진행된다 다시 말해서 어셈블러나 비주얼 베이직 언어 수.

준에서 소스의 한 문장이 입력으로 주어지며 상태변이를 한다 즉 오토마타의 상태변이는.

언어의 문장에 의해 이루어지는 것이다 이는 임의의 주어진 파일에 대해 시뮬레이션 작업.

없이 단지 스캔에 의해서만 이룰 수 있으며 문장 하나에 대해서 정의된 오토마타를 이용한

상태 변이를 통해 시뮬레이션 효과를 볼 수 있다 대신 시뮬레이션에 따르는 오버헤드를 수.

반하지 않는 장점을 지닌다.

또한 임의의 파일에 대한 바이러스 여부를 판명하기 위해 프로그래밍언어 수준에서 스캔하

기 위해서는 와 같은 실행파일 자체로는 불가능하나 파일을 역어셈블하는 디버거.exe .exe

와 같은 프로그램이 에 기본적으로 제공되므로 가능하다 게다가 지금까지 출현한 바이OS .

러스들의 생성 언어는 와 같은 실행파일을 감염시키는 바이러스는 대부분 어셈블러로.exe

제작되었으며 현재 만들어지는 대부분의 웜 경우 비주얼 베이직 스크립트나 자바 스크립트

로 생성된다.

실행파일 경우 기본으로 제공되는 역 어셈블을 통해 어셈블러 소스 레벨에서 읽기 가능하며

비주얼 베이직이나 자바의 스크립트 언어는 스크립트 호스트에 의해 실행되기 때문에 스크

립트 소스자체가 바이러스 파일이 되므로 읽기 가능하다.

- 127 -

다음은 바이러스의 행동을 정의한 오토마타의 형태이다.

그림 바이러스 행동 정의 오토마타( 3-5)

오토마타의 각 상태는 바이러스들의 행동인 메모리에 상주된 상태 시스템을 파괴하는 증상,

을 나타내는 상태 다른 파일에 감염하는 상태 등이 될 수 있으며 이러한 상태를 거쳐 바이,

러스라고 판정되는 특정 상태와 바이러스가 아니라고 판명하는 상태가 존재할 것이다.

본 연구에서는 구문분석에 의해서 나온 산출물과 기존에 알려진 바이러스를 오토마타로 모

델링하여 바이러스의 행위를 비교하여 알려지지 않은 바이러스를 탐지할 수 있다.

알려지지 앞은 바이러스를 탐지하기 위해서는 먼저 메소드 리스트와 구문분석에 의해 산출

된 것을 비교하여 오토마타로 모델링한 악성 행위패턴을 갖는지를 비교하여야 한다 그러기.

위해서는 먼저 구문분석에 의해 산출된 함수명과 메소드들을 제거하고 메소드가 프로그램이

흘러가듯이 하는 것이 중요하다 함수 단위로 되어 있기 때문에 메인에서 시작되어 함수를.

호출하여 사용한다 함수를 호출 할 때 그 함수 안에 있는 메소드가 호출된 곳에 들어가도.

록 되어야 한다 이러한 형태로 만든 다음에 오토마타로 모델링한 바이러스 패턴과 비교하.

여 알려지지 않은 바이러스 행위가 들어 있는지를 탐지한다.

- 128 -

탐지하는 방법은 오토마타로 모델링한 첫 메소드와 메소드로 추출한 것과 같고 그 다음 메

소드와 같은지를 비교하여 모두 일치하게 된다면 알려지지 않은 악성 행위로 탐지하게 된

다.

그림 은 바이러스에서 자기 복제 행위를 하는 바이러스 패턴을 오토마타로( 3-6) VBScript

정의한 것이다.

그림 자기복제( 3-6)

기존의 에서의 파일을 복사하는 바이러스 형태는 일관된 한가지의 형태만 나타났VBScript

다 그 바이러스 형태는 라는 메소드의 형태로 나타나서. .GetSpecailFolder,. GetFile,. Copy

바이러스를 전파하게 된다 이러한 일관된 형태의 바이러스가 변형된 바이러스 형태로 나타.

날 수 있다 대표적으로 바이러스가 있다 본 연구에. VBS_LOVELETTER-O(Very Funny) .

서는 앞으로 파일을 복사할 수 있는 형태로 나타날 수 있는 파일 복사 바이러스의 형태를

오토마타로 정의하여 아래에 나타난 것처럼 표현하였다.

- 129 -

그림 자신을 복제하는 바이러스의 오토마타 표현( 3-7)

그림 은 자기 자신의 파일을 복제하는 형태의 를 오토마타로 표현한 것이다( 3-7) VBScript .

먼저 특정 폴더를 불러온다 불러들인 특정 폴더에서 임의의 파일을 읽어들이고 이 파일을. ,

특정 폴더에 바이러스 파일로 복제하게 된다 따라서 알려지지 않은 바이러스를 탐지하기.

위해서는 오토마타로 표현된 메소드의 패턴을 이용하여 에서 이 패턴과 유사한 형VBScript

태가 있다면 파일을 복제하는 것으로 탐지할 수 있다 위의 오토마타 표현은 특정 폴더 또.

는 지정된 폴더에서 읽어들인 파일을 어떠한 형태로 파일을 쓰던지 간에 그것을 파일 복제

가 된다는 것을 보여준 형태이다.

- 130 -

파일 복사 예 에서 보는 것과 같이 특정 폴더를 선택하여 임의의 파일을 읽어 들이고 이[ ]

임의의 파일을 특정 폴더로 복사하게 된다.

그림 파일을 덮어씌우는 행위( 3-8)

파일 복사의 또 다른 방법은 텍스트 파일을 오픈하여 그 파일의 내용을 복사하여 다른 파일

에 쓰는 방법이 있다 이 방법은 새로운 파일을 생성하지 않고 단지 그 파일이 있으면 그.

파일에 새로운 내용을 추가하고 없다면 그 파일을 생성하여 내용을 쓸 것이다 이러한 행동, .

은 악성코드를 새로운 파일을 생성하지 않고 저장할 수 있으므로 사용자가 자주 사용하는

파일에 내용을 추가함으로써 악성 행위를 수행할 수 있다.

- 131 -

이러한 악성행위를 하는 바이러스로 바이러스와 바이러VBS_HAPTIME.B VBS_Merlin.A

스가 있다 이러한 형태의 코드는 그림 에서 보는 바와 같은 형태로 되어진다 이러한. ( 3-8) .

형태를 더 생각하여 보면 우선 파일을 하여야 하고 파일을 한 다음에는 어떠한 형open open

태로든 그 파일의 내용을 변형 할 수 있다 이런 형태를 오토마타로 표현한 것이 아래 보여.

지는 바와 같은 형태로 나타날 것이다.

그림 임의의 파일을 오픈하는 바이러스의 오토마타 표현( 3-9)

그림 에서 임의의 파일을 하여 그 파일에 악성 행위가 포함되어진 코드 또는 문자( 3-9) open

열을 읽어들인 파일에 쓰게 된다 이러한 형태는 임의의 텍스트를 하여 그 텍스트 안에. open

새로운 악성 코드 또는 문자열을 쓰여지게 할 수 있다 위의 오토마타 형태를 보면 파일을.

오픈하고 그 파일에 어떠한 형태로 변형이 일어나게 되면 그것이 악성 행위가 일어나는 알

려지지 않은 바이러스라고 탐지를 하게 된다.

- 132 -

파일 복사 예[ ]

파일 복사 예 에서 보는 것과 같이 임의의 텍스트 파일을 읽어들여 그 파일에 악성 행위가[ ]

포함된 코드 또는 문자열을 그 파일에 씀으로써 임의의 파일이 악성 행위를 할 수 있는 파

일이 된다.

그림 레지스트리 변경 패턴( 3-10)

레지스트리를 변경하는 방법으로는 그림 에서 나타난 것처럼( 3-10) .CreateObject,

순서로 메소드나 문자열이 나타나게 되면 이것을 바이러스라고.RegRead, .RegWrite, Run\

탐지하게 된다 여기서 은. ' Run' “HKEY_LOCAL_MACHINE Software Microsoft\ \ \

에서 나타난 것처럼 레지스트리의Windows CurrentVersion Run LINUX32” ' Run'\ \ \ \ \

폴더에 라는 이름으로 시작될 프로그램의 경로를 넣어서 윈도우가 처음 시작될 때LINUX32

그 프로그램이 시작되게 하게끔 하는 것이다.

- 133 -

레지스트리를 변경하는 악성행위는 대부분의 웜바이러스에서 발견되고 있다 아래 그림은.

레지스트리를 변경하는 를 오토마타로 표현한 것이다VBScript .

그림 레지스트리를 변경하는 오토마타 표현( 3-11)

그림 는 레지스트리의 값을 변경하는 의 순서화된 행위로 레지스트리의 값( 3-11) VBScript

을 변경시켜서 악성 행위를 하는 파일이 컴퓨터의 부팅 과정 중에 수행하도록 하게끔 하기

위해서 레지스트리의 값을 변경시킨다 먼저 레지스트리를 조작할 수 있는 객체를 생성시키.

고 레지스트리의 특정 값을 읽어오거나 아니면 레지스트리에 악성 행위를 하는 파일이 먼,

저 실행되게끔 값을 쓴다 여기서 과 는 컴퓨터가 처음 부팅되고 난. ' Run' ' RunServices'\ \

다음 과 의 레지스트리 폴더에 있는 것들을 수행하게 한다' Run' ' RunServices' . ' Start\ \ \

는 를 실행하였을 때 의 첫 화면이 실행되는 홈페이Page' Internet Explorer Internet Explorer

지 주소를 가지고 있다 위의 오토마타 정의를 한 패턴에 의해 레지스트리를 조작하는 행위.

가 에서 나타나게 되면 그것을 알려지지 않은 바이러스로 탐지하게 된다VBScript .

에서는 오토마타로 정의된 패턴에 의해 레지스트리의 조작이 이루어지면 이러한VBScript

는 알려지지 않은 바이러스라고 탐지하게 된다VBScript .

- 134 -

레지스트리 예[ ]

레지스트리 예 에서 보는 것처럼 레지스트리의 값을 변경하여 악성 행위를 수행하는 파일[ ]

을 컴퓨터가 부팅될 때 수행하도록 레지스트리에 쓴다 레지스트리에 값을 쓰기 위해서 수.

행되는 는 먼저 를 이용하여 레지스트리를 사용할 수 있는 객체를 생VBScript CreateObject

성하고 그 객체를 이용하여 를 이용하여 이나 에 값을 써넣RegWrite ' Run' RunServices'\ \

음으로써 악성 행위를 수행하는 바이러스 파일이 될 수 있다.

- 135 -

그림 이메일 전송 패턴( 3-12)

에서 을 발송하기 위해서는 에 있는 주소록에서 주소를 가져와서VBScript E-mail “Outlook”

메일을 보내게 된다 그림 은 에서 메일을 자동으로 발송할 수 있는. ( 3-12) VBScript

코드의 메소드 순서를 나타낸 것이다 위의 그림에서 보는 바와 같이 주소록에서VBScript .

하나의 메일 주소를 얻어와서 발송할 메일을 생성하고 제목과 내용을 넣은 다음 첨부파일을

덧붙이고 메일을 발송하게 된다 위와 같이 사용자의 허가 없이 메일을 보내는 바이러스는.

등 많은 웜바이러스들이 그러한 악성행위를 하고VBS_LOVELETTR.AS, VBS_LODING.A

있다 메일 발송 형태를 아래의 그림에서 오토마타로 정의하였다 메일을 발송 할 때 꼭 필. .

요한 메소드와 없어도 메일 전송에는 아무런 지장이 없는 메소드의 호출순서를 오토마타 형

식으로 지정하여 아래의 그림과 같이 표현하였다.

- 136 -

그림 전송 바이러스의 오토마타 표현식( 3-13) E-mail

그림 은 에서 악성 행위를 하는 파일을 첨부시켜서 에 있는 주소록( 3-13) VBScript Outlook

을 이용하여 악성 행위를 하는 파일을 전파시키도록 하는 메일을 보내는 것이다 메일을 발.

송하는 의 행위는 먼저 에 있는 주소록 리스트를 가져오고 그 주소록에서VBScript Outlook

한 개의 메일 주소를 얻는다 메일을 보내기 위해 메일을 보내도록 객체를 생성하고 그 객.

체에 보낼 메일 주소와 제목 그리고 내용을 넣고 첨부 파일로 악성 행위를 하는 파일을 첨,

부시켜서 보내는 동작을 하게 된다 그렇게 함으로써 악성 행위를 하는 파일이 다른 컴퓨터.

로 보내지게 된다 메일을 발송하는 스크립트의 형태를 보면 메일 주소에 파일 첨부를 하여.

보내는 형태로만 메일을 발송 할 수 있다 바이러스가 메일을 발송할 수 있는 형태는.

의 주소록을 불러와서 메일에 주소를 넣고 파일을 첨부한 하는 메일을 발송하는 것Outlook

을 탐지해 낼 수 있다 위의 정의된 오토마타로 정의된 패턴 형태로 메일을 발송하는 바이.

러스는 탐지될 수 있다.

- 137 -

메일 발송 예[ ]

위 코드는 메일을 발송하는 의 예 이다 에서 주소록 파일을 가지고 와VBScript “ ” . “Outlook”

서 그 주소록에 있는 파일 있는 메일 주소를 가지고 와서 메일을 보내게 된다 위의 예제는.

악성 행위를 하는 에서 메일을 발송하는 부분을 발췌하여 보인 것이다VBScript .

알려진 바이러스 탐지에서 지금까지 나와 있는 악성행위를 분석해 보고 또 앞으로 나타날

수 있는 바이러스의 악성행위를 정리한다.

주요 악성행위ㆍ

대표적인 웜바이러스인 는 윈도우 레지스트리를 조작하고 을 통하'VBS.LoveLetter' E-mail

여 자기 자신을 복제하며 특정한 파일을 손상시키고 악성 파일을 생성하는 등의 악, HTML

성 행위를 한다 바이러스의 악성 행위를 정리하면 다음과 같다. 'VBS.LoveLetter' .

윈도우의 레지스트리 조작-

을 통한 자기 자신의 복제- Outlook

파일 손상 또는 삭제-

악성 파일 생성- HTML

- 138 -

예상되는 추가 악성행위ㆍ

이밖에도 아직 발견되지는 않았지만 바이러스 제작자에 의해 작성될 가능성이 있는 악성행

위들을 정리하면 다음과 같다.

모든 하드디스크드라이브 읽기 쓰기 공유 설정- /

모든 드라이브를 읽기 쓰기 가능으로 공유하여 파일의 변조 및 삭제 등을 용이하게 할 수/

있다 이것은 네트워크를 이용해 전파되는 다른 바이러스에 의해 피해를 입을 수도 있다. .

파일 조작- Autoexec.bat

컴퓨터가 부팅될 때마다 실행되는 일괄실행파일 을 덮어쓰거나 변조하여 파일Autoexec.bat

을 삭제하거나 특정 드라이브를 포맷할 수 있다.

각종 시스템 정보 변경-

시스템의 각종 중요한 정보 예 컴퓨터이름 주소 연결프로그램 등 를 조작하여 차후에 해( , , IP , )

킹이 용이하도록 시스템을 무력화 할 수 있다.

네트워크 등록정보 접근 불가-

네트워크 등록정보에 접근할 수 없도록 하여 주소나 주소를 변경할 수 없도록 할IP , DNS

수 있다.

레지스트리 접근 불가-

특정한 레지스트리 값을 추가하여 윈도우 시스템을 다시 설치하기 전에는 레지스트리에 접

근할 수 없도록 할 수 있다.

- 139 -

나 유전자 알고리즘.

앞에서 기존의 바이러스를 분석한 결과를 바탕으로 바이러스의 기본 행위패턴을 오토마타로

표현할 수가 있었고 이것으로 확장된 행위패턴 오토마타를 정의하였다, .

본 절에서는 확장된 행위패턴 오토마타의 악성행위들을 유전자 알고리즘을 이용하여 식별하

는 것에 대해서 설명한다 오토마타를 이용하여 분석된 다양한 패턴들은 유전자 알고리즘을.

적용하는 단계에 이르러 바이러스 여부를 확률로 표현할 수 있게 된다.

본 과제에서는 웜바이러스의 여러 가지 악성행위를 식별하는 데 있어 확률로 그 가능성을

제시한다 그러기 위해서는 먼저 오토마타를 이용하여 대표적인 악성행위 가지를 확장시킨. 5

패턴을 구한다 기본 패턴을 기준으로 다양한 확장패턴들의 변이도를 확률로 표시한다 표. . [

는 자동메일 전송하는 악성행위를 예로 설명한 것이다3-1] .

표 확장된 패턴의 변이도에 따른 확률[ 3-1]

기본 악성행위 확장된 악성행위패턴변이도에따른 확률

자동메일전송

AddressLists →AddressEntries →CreateIterm →Recipients →Subject Body→ →Attachments Send→

AddressLists AddressEntries→CreateItem Recipients→ → →

Subject Attachments Send→ →80%

AddressLists AddressEntries→CreateItem Recipients→ → →

Body Attachments Send→ →70%

: :

그리고 확장된 패턴의 확률에 유전자 알고리즘을 이용하여 가중치를 부여한다 다양한 악성, .

행위 패턴을 사람이 직접 소스를 살펴보고 경험에 의해 가중치를 주어 악성행위 식별 성능

을 높이는 것은 쉽지 않은 일이다 그래서 악성행위 식별 성능을 높이기 위한 기본 확률 테. ,

이블에 주는 가중치 테이블을 유전자 알고리즘의 최적화 능력으로 수행하고자 하는 것이다.

- 140 -

그림 가중치가 반영된 새로운 확률테이블 형성( 3-14)

그림 은 기본 확률테이블에 가중치를 주어 새로운 확률테이블이 나오는 흐름을 그린( 3-14)

그림이다 새로운 확률테이블은 클라이언트 시스템에 입력으로 들어온 파일을 구문분. AVIS

석하여 나온 악성행위 패턴에 적용하여 출력화면에 바이러스 확률이라는 정확도로 표시된

다.

이상의 내용을 흐름도로 다시 설명하면 표 과 같다[ 3-2] .

- 141 -

표 유전자 알고리즘의 적용 흐름도[ 3-2]

대표적 악성행위의 기본패턴 분석

오토마타로 악성행위의 확장패턴 모델링다양한 확장 패턴을 예상 가능( ll )

확장패턴의 확률 테이블 구성하나의 악성행위별로 예상되는 다양한 확장패턴이 악성행위일 확률을(각각의 악성행위별로 확률테이블 구성)

유전자 알고리즘을 이용하여 가중치 테이블 구성다양한 악성행위 패턴을 사람이 직접 소스를 살펴보고 경험에 의해(가중치를 주어 악성행위 식별 성능을 높이는 것은 쉽지 않은 일이므로유전자 알고리즘 이용)

새로운 확률 테이블 생성유전자 알고리즘에 의해 생성된 가중치 테이블을 다시 악성행위(확장패턴의 확률 테이블에 적용하여 새로운 확률 테이블을 생성)

악성행위의 평균 확률값 산출악성행위의 확률값의 합을 악성행위 개수로 나누어 평균 확률값을 계(산)

바이러스 탐지 결과 화면에 출력산출된 평균 확률값을 결과 화면의 확률 필드에에 출력( )

- 142 -

초기 개체집단의 생성ㆍ

유전자 알고리즘을 적용하기 위해서는 우선 초기 개체집단 즉 초기유전자 코드들의 집합을,

생성해야 한다 표 와 같이 하나의 유전자코드는 웜바이러스의 악성행위에 대한 가중. [ 3-3]

치 값이다.

표 가중치와 유전자 코드[ 3-3]

이때 가중치는 부터 까지 주되 가중치가 이 될 확률을 그외 가중치가 될 확, 1.0 0.70 1.0 0.99,

률을 로 설정하였다 기본적으로 모든 악성행위에 가중치 을 부여하도록 하였으며 유0.01 . 1.0 ,

전자 코드에 변이를 주기 위해 특정 확률 로 조금 틀린 값의 가중치를 주었다 그리고(0.01) . ,

의 유전자코드 중에 모두 이거나 모두 인 것은 제외하였다 초기 개체집단에 존재하4-bit 0 1 .

는 이러한 조그마한 변이는 세대를 반복해 나가면서 또 다른 변이를 계속 유발하여 결과적

으로 보다 나은 가중치 테이블을 발견할 수 있는 시초가 된다 본 과제에서는 이러한 유전.

자 코드 개로 개체집단을 구성하였으며 유전자 알고리즘의 수행에 따라 세대가 반복되어20

도 유전자 코드의 수는 일정하게 개를 유지하도록 하였다20 .

- 143 -

유전자 알고리즘 작업 정의ㆍ

재생산은 어떤 세대의 개체집단으로부터 다음 세대의 개체집단을 만들기 의해 필요한 개의2

유전자 코드를 확률적으로 선택하는 작업이다 각 유전자 코드들은 미리 정해진 방법에 의.

해 결정된 평가값을 가지며 그 평가값에 비례하도록 재생산할 때 선택될 확률을 가진다 보, .

다 높은 평가값을 갖는 유전자 코드일수록 다음 세대의 유전자 코드를 생성하기 위해 사용

될 확률이 높게 된다.

교배는 재생산단계에서 선택되어 복사된 개의 유전자 코드를 각각 일부분을 잘라 맞바꿈으2

로써 새로운 개의 유전자 코드를 생성하는 작업이다 이 작업은 복사된 유전자 코드를 사2 .

용하여 이루어지므로 전 세대의 개체집단에 존재하는 유전자 코드들은 변경되지 않은 채로

남아있게 된다.

돌연변이는 특정 확률로 유전자 코드에 변이를 생성하게 만든다 이 작업에 의해 유전자 알.

고리즘은 국부 최소값에 빠질 가능성을 줄일 수 있으며 유전자 코드의 집합인 개체집단에,

새로운 유전자 정보가 삽입되는 것을 의미한다 재생산과 교배작업을 통해 다음 세대의 개.

체집단에 포함되는 새로운 개의 유전자 코드가 형성되어 있다 유전자 코드의 번째 값 즉2 . i ,

어떤 악성행위 에 대한 가중치 값에 변이를 적용하는 방법은 다음 식과 같다(4-bit) .

여기에서 는 실수로 표현된 과 사이의 난수이다 즉 어떤 가중치값을 의 확률로 그P 0 1 . , 0.95

대로 보존시키고 의 확률로 가중치 값을 만큼 증가시키거나 감소시키는 것이다, 0.025 0.05 .

이 결과 새로운 가중치 값이 을 초과하거나 미만인 것을 방지하기 위해 다음 식을 덧붙1 0

였다.

- 144 -

재생산 교배 돌연변이를 한번 적용하면 다음 세대를 위한 새로운 유전자 코드 개가 생성, , 2

되므로 이의 반복적 적용을 통해 이전 세대와 동일한 수의 유전자 코드를 가지도록 다음,

세대의 개체집단을 반복적으로 생성하여 보다 나은 유전자 코드를 찾아내는 작업을 수행한

다.

제 절 해킹관련 트로이목마 대응 시스템 설계3

커널 백도어 대응 시스템은 커널 백도어를 이루는 커널 모듈과 커널모듈이 로드되어 같이

동작하는 커널 그리고 커널 백도어 각각의 기능을 고려하여 설계되어야한다 커널 백도어는.

기존의 백도어와는 동작형식과 프로그램 형태가 완전히 다르기 때문이다.

커널 백도어 대응 시스템의 요구조건1.

커널 백도어 대응 시스템은 커널 백도어 설치 시점과 커널 백도어의 기능이라는 두가지 측

면을 고려해야한다 커널 백도어는 운영 시스템에 커널 백도어 대응 시스템이 존재하기 이.

전 또는 이후에 설치될 수 있다 이는 예방 설치전 탐지 설치후 탐지 및 복구 개념과 일치. , ,

한다 실재 커널 백도어가 설치된 커널은 시스템의 재부팅 없이 복구가 불가능하기 때문에.

예방과 설치후 탐지 및 복구를 위한 시스템은 커널 백도어 설치여부를 판단하고 필요한 조

치 후 설치되어야 한다.

- 145 -

그림 커널 백도어 대응 시스템 동작( 3-15)

그림 은 커널 백도어 설치 시점에 따라 커널 백도어 대응 시스템이 수행해야할 동작( 3-15)

을 보인다 커널 백도어 대응 시스템이 먼저 설치될 경우 커널 백도어의 커널 로드를 막고. ,

만약 로드된다면 이를 탐지하고 변경된 시스템 정보를 복구해야만 한다 이에 대해 이미 커.

널 백도어가 설치된 경우 커널 백도어의 존재 여부를 판단하고 이에 대한 조치후 이후의,

커널 백도어에 대응할 수 있는 시스템을 설치할 수 있는 환경을 제공해야한다.

- 146 -

다음으로 커널 백도어는 종류에 따라 다양한 기능을 가지며 이러한 기능을 수행하기 위해,

시스템의 시스템콜 테이블 프로토콜 핸들러 그리고 커널 모듈리스트의 변경을 수행한다 커, .

널 백도어 대응 시스템은 시스템을 모니터링하면서 이러한 변경을 탐지하고 복구 할 수 있

어야한다.

시스템의 정의2. Shark

시스템은 커널 백도어에 의한 피해를 예방 탐지 및 복구 기능을 가지는 커널 백도어Shark ,

종합대응시스템이다 시스템은 위의 다양한 커널 백도어에 대응하기 위해 이미 설치. Shark

된 커널 백도어의 탐지 시스템의 커널 로딩후 커널 백도어를 원천적으로 방지하는, Shark

커널모듈 필터링 필터링을 통과한 일부 커널 백도어에 대한 행위 감시를 통한 탐지 및 복,

구 기능을 제공한다.

시스템 구성도3. Shark

시스템은 크게 커널 백도어 설치 여부 검사 부분과 커널 백도어가 설치되지 않은 시Shark

스템의 커널 일부로 로드되어 커널 백도어 예방 탐지 및 복구 기능을 수행하는 부분으로,

나뉘어진다.

그림 은 시스템이 커널 백도어에 의해 침해 당했는지 여부를 검사는 검사 시스템이( 3-16)

며 그림 는 아직 피해가 없는 시스템에 설치되어 앞으로의 커널 백도어에 의한 피해, ( 3-17)

를 예방 탐지 및 복구하는 시스템이다, .

- 147 -

그림 커널 백도어 침해 여부 모듈 구성( 3-16)

그림 커널 백도어 예방 탐지 및 복구 모듈( 3-17) ,

- 148 -

시스템에서의 시나리오4. Shark

시스템의 동작은 전체를 세단계로 구분할 수 있다 첫 번째는 시스템이 커널 백도어Shark .

에 의한 침해 여부를 판단하기 위한 검사 과정 두 번째는 커널 모듈이 커널로 로딩되기 직,

전에 시스템 관리자가 등록한 커널 모듈인지를 확인하여 이의 로딩을 허가할지를 결정하는

커널 모듈 필터링 단계 마지막으로 허가된 이름을 가지는 커널 모듈을 커널 모듈 필터링이,

허가하여 로딩되었을 때 로딩된 커널 모듈의 악위적인 행위를 탐지하고 이를 복구하는 단계

이다 이러한 단계는 구체적으로 다음의 다섯단계로 구분된다. .

커널 백도어에 의한 침해 검사 시나리오·

커널모듈 필터링 시나리오·

시스템콜 변경 탐지 및 복구 시나리오·

모듈 리스트 변경 탐지 및 복구 시나리오·

프로토콜 핸들러 탐지 및 복구 시나리오·

위의 단계중 첫 번째 단계인 커널 백도어에 의한 침해 검사를 제외한 모든 단계는 깨끗한

시스템에 시스템이 로딩된 후 이루어지며 이중에서도 커널모듈 필터링은 커널 모듈의Shark ,

로딩 직전 나머지는 로딩 직후와 커널모듈의 언로딩 직전에 이루어진다 다음은 이러한 단, .

계들의 단순한 동작과정이다.

커널 백도어에 의한 침해 검사 시나리오1)

커널 백도어에 의한 침해 검사는 피해 시스템을 발견하기 위해 그리고 이후의 커널 백도어

를 예방 탐지 및 어떤 변경에 대한 복구를 수행하는 대응시스템을 설치하기 위한 사전 작,

업이 될 것이다 실재 검사를 위해서는 커널 컴파일시 생성된 시스템콜에 관한 커널 정보를.

획득하고 이를 커널 메모리 정보와 비교하여 다를 경우 사용자에게 경고 메시지를 출력하,

는 과정을 거친다.

- 149 -

그림 커널 백도어 에 의한 침해 검사( 3-18)

커널 모듈 필터링 시나리오2)

커널 모듈 필더링을 위해서는 커널에 이미 로드되어있는 시스템이 허가할 커널 모듈Shark

에 관한 정보를 가지고 있어야 한다 그러기 위해서는 커널의 시스템에 이러한 정보. Shark

를 등록하고 삭제하는 별도의 유틸리티가 필요하며 실제로 제공하고 있다 그러나 별도의, .

유틸리티에 대해서는 구현 부분에서 다루기로 한다 여기서는 실제 이러한 정보를 가지고.

커널 필터링의 동작원리만을 언급한다 커널 필터링은 로딩되는 커널 모듈의 이름을 등록되.

어 있는 허가모듈과 비교후 일치할 경우 커널로의 로드를 허가하며 그렇지 않다면 에러를,

발생시켜 로딩을 막는다.

- 150 -

그림 커널 모듈 필터링( 3-19)

시스템콜 변경 탐지 및 복구 시나리오3)

시스템콜 변경 탐지를 위해 시스템은 로딩시 시스템으로부터 시스템콜 테이블의 정Shark

보를 저장하고 이를 통해 변경 여부를 탐지하며 복구한다 시스템은 커널 모듈이 로, . Shark

딩되면 이 커널 모듈이 시스템콜을 변경하는지 비교한다 만약 변경이 있다면 이를 기존의.

정보로 복구하며 이를 시스템 관리자를 위해 변경 복구 정보를 저장한다.

- 151 -

그림 시스템콜 변경 탐지 및 복구( 3-20)

모듈 리스트 변경 탐지 및 복구 시나리오4)

커널 모듈 리스트 변경 탐지 및 복구 역시 위와 동일한 방식으로 동작한다.

그림 모듈 리스트 변경 탐지 및 복구( 3-21)

- 152 -

프로토콜 핸들러 탐지 및 복구 시나리오5)

프로토콜 핸들러 탐지 및 복구 역시 위와 동일한 방식으로 동작한다.

그림 프로토콜 핸들러 탐지 및 복구( 3-22)

시스템 설계5. Shark

커널 백도어에 의한 시스템 침해 검사에 커널 백도어가 발견되지 않는다면 시스템을Shark

설치하며 는 다음 그림과 같이 동작한다 앞에서도 언급했듯이 로딩되는 커널 모듈에, Shark .

대해 커널 필터링을 실시하고 허가된 모듈의 악성적인 행위를 탐지 및 복구한다, .

- 153 -

그림 시스템 동작 흐름( 3-23) Shark

다음 그림은 전체 시스템 구성도이다 일반 사용자 공간에 커널 백도어 침해 검사 모듈과.

허가 커널 모듈 등록 모듈이 위치하며 커널 공간에 커널 모듈 필더링 시스템 콜 변경 탐지, ,

및 복구 프로토콜 핸들러 변경 탐지 및 복구 커널 모듈 리스트 탐지 및 복구 모듈이 위치, ,

한다 그림에서 사용자 공간의 두 모듈은 커널로부더 데이터를 가져오거나 커널의. , Shark

시스템으로 필요 데이터를 전송하면서 기능을 수행한다 커널 공간의 모듈들은 커널 메모리.

상에서 특정 커널 모듈의 로딩 또는 언로딩시 그 모듈의 정보를 검사하고 이의 판단을 통,

해 각각 동작한다.

- 154 -

그림 시스템 전체 구성( 3-24) Shark

가 시스템 기능 설계.

시스템이 위에서 언급한 기능을 갖도록 하기 위해 각 모듈들의 기능을 세분화하고Shark ,

이를 명세할 수 있다.

커널 백도어 침해 탐지1)

커널 백도어 침해 탐지는 커널 모듈 형태의 시스템을 커널에 로드하기 전에Shark Shark

시스템의 올바른 동작을 보장하기 위해 실시한다 커널 백도어 침해 탐지 모듈이 가져야할.

세부 기능은 다음과 같다.

- 155 -

올바른 시스템 콜 정보의 획득·

올바른 시스템콜 정보의 획득을 위해서는 커널 컴파일시에 생성되는 커널정보를 사용해야한

다 리눅스의 경우 이러한 커널 정보는 파일에 보관되는데 이 파일로부터. /boot/Sytem.map ,

커널 본래의 시스템콜 정보를 획득할 수 있다.

수행 커널의 실제 시스템 콜 정보의 획득·

본래의 시스템콜 정보를 안다면 실제 수행되고 있는 커널의 시스템콜 정보가 필요하다 이, .

를 얻기 위해 커널 백도어 침해 탐지 모듈은 으로 정보를 추출해야한다/dev/kem .

획득한 정보들을 비교 후 결과의 제공·

본래 시스템콜 정보와 수행중인 커널의 시스템콜 정보는 각각의 엔트리에 대한 비교가 수행

되며 다른 엔트리들에 대해 레포트 형태의 정보를 사용자에게 알려 주어야한다 사용자는, .

이러한 정보를 통해 시스템이 커널 백도어에 감염되었는지 여부를 알 수 있으며 운이 좋다,

면 그 커널 백도어의 종류까지도 알 수 있다.

커널 모듈 펄터링2)

커널 모듈 필터링은 시스템이 커널에 로드된 후 특정 커널 모듈의 커널로의 로딩을Shark

필터링한다 이러한 필터링 기능을 위한 세부 기능은 다음과 같다. .

시스템으로부터 표준 시스템 커널 모듈의 추출·

유닉스는 시스템 자체에서 필요에 따라 커널 모듈을 동적으로 로드 언로드시킨다 시스템이, .

스스로 이용하는 커널 모듈들은 표준 커널 모듈들로 시스템의 특정 위치에 모여 있다 표준.

커널 모듈의 추출은 이 특정 디렉토리내의 커널 모듈 이름 리스트를 단일 파일로 생성하는

방법을 사용한다.

- 156 -

추출된 커널 모듈과 허가할 커널 모듈의 등록 및 삭제·

추출된 표준 커널 모듈 리스트 파일과 그 외 허가할 커널 모듈의 등록 및 삭제는 특정한 시

스템콜을 변경하여 가능하며 모듈 리스트 파일과 같은 파일 단위 또는 모듈 단위로 등록,

및 삭제가 가능하다.

커널 모듈의 커널로의 적재 시도 감시·

일단 시스템의 커널 모듈 필터링 기능이 커널에 적재되면 로드를 시도하는 모든 커Shark ,

널 모듈에 대해 검사를 실시한다 이 검사는 로드되려는 커널 모듈이 허가 모듈 리스트에.

존재하는지에 대한 것이다.

적재 시도 모듈과 허가 등록 모듈의 비교 및 그 결과에 따른 조치·

만약 커널 모듈이 목록에 존재하지 않는다면 커널 모듈 필터링은 일단 그 커널 모듈을 커널

백도어로 판단하고 이 커널 모듈의 적재를 방지한다 반대로 허가된 모듈이라면 이를 일단.

커널에 적재한다.

- 157 -

그림 커널 모듈 적재 시도 감시( 3-25)

시스템콜 변경 탐지 및 복구3)

시스템콜 변경을 탐지하고 이를 복구하기 위해서는 시스템이 이미 커널 백도어에 감염되지,

않았음을 전제로 한다 는 커널로 로드되면서 시스템으로부터 시스템콜 테이블 정보를. Shark

얻어 저장하고 어떤 커널 모듈이 로드되면 이 모듈이 시스템콜 정보를 변경하는지 감시한,

다 실제 시스템은 계속 감시하는 것이 아니라 모든 커널 모듈이 자신이 로드될 때. Shark

사용하는 시스템콜을 변경하여 그 시스템콜이 호출 될 때만 그 커널 모듈의 행위를 감시하

는 것이다 이는 시스템에 부하를 주지 않으며 로드되는 커널 모듈의 이상행위를 탐지하고.

이에 대응하기 위한 좋은 방법이다.

- 158 -

그림 시스템 콜 변경 탐지 및 복구( 3-26)

모듈 리스트 변경 탐지 및 복구4)

커널 백도어는 자신의 커널 모듈을 숨기기 위해 커널 모듈의 링크드 리스트로 부터 자신의

모듈을 제거한다 이러한 변경을 탐지 및 복구하기 위해서 는 역시 커널로 로드될 때. Shark

로드되어진 현재의 커널 리스트를 저장한다 커널은 커널 모듈을 계속 동적으로 로드 언로.

드하기 때문에 는 새로운 커널 모듈이 등록될 때 마다 저장한 커널 모듈리스트를 갱Shark

신한다 결국 는 커널 모듈이 로드되는 순간 커널 모듈 리스트를 갱신하고 이 커널. Shark ,

모듈이 모듈 리스트에서 자신을 제거하면 저장된 정보와 현재 모듈 리스트를 비교후 다시,

복구시킨다 그림은 시간 흐름에 따른 커널 백도어와 시스템의 동작과정을 보인다. Shark .

- 159 -

그림 모듈 리스트 변경 탐지 및 복구( 3-27)

프로토콜 핸들러 탐지 및 복구5)

프로토콜 핸들러를 변경 하는 커널 백도어는 주로 원격에서 침해된 시스템에 허가되지 않은

접속이나 명령을 실행하기 위해 사용하는 기법이다 커널 백도어는 자신이 전송할 데이터.

형태에 따라 등의 프로토클 핸들러를 변경하고 변경된 프로토콜 핸들러TCP, ICMP, UDP ,

가 동작하는 특정 형태의 패킷을 그 시스템에 전송한다 이는 결과적으로 정상적인 프로토.

콜 핸들러가 아닌 다른 핸들러에 의해 의도된 동작을 수행하게 한다 그러나 시스템 관리자.

나 다른 접속자들은 이러한 것을 발견할 수 없는데 이는 대부분의 커널 백도어가 의도한 행

위 후 원래의 프로토콜 핸들러를 호출함으로서 정상적으로 동작하는 것으로 위장하기 때문

이다 이러한 것을 탐지 및 복구하기 위해서 는 로드시에 프로토콜 핸들러를 저장하고. Shark

커널 모듈의 로딩후 이 저장된 프로토콜 핸들러와 비교하고 만일 변경 사항이 있다면 이를,

복구한다 이러한 복구는 시스템콜 커널 모듈 리스트 변경 및 복구와 마찬가지로 커널 백도. ,

어의 기능을 상실시킨다.

- 160 -

나 전체 구성.

전체 시스템은 앞에서 언급했듯이 적용 시점에 따라 커널 백도어 침해여부 검사 시스템과

시스템이 깨끗하다는 가정하에 적용되는 커널 백도어 예방 탐지 및 복구 시스템으로 구성된

다.

커널 백도어 침해 여부 검사 시스템 설계1)

가 시스템 기능 구성)

커널 백도어 침해 여부 검사 시스템은 대상 시스템의 사고전후에 사용될 수 있어야 한다.

사고전에는 시스템의 무결성을 확인하는 목적으로 사고후는 시스템이 커널 백도어에 의한,

침해 사실을 발견하는 목적으로 사용될 수 있으며 나아가 침해 사실 발견시에는 어떤 커널

백도어가 설치되었는지를 확인할 수 있어야 한다 실제 커널 백도어 침해 여부 검사시스템.

의 기능 구성은 다음과 같다.

시스템 무결성 확인 기능·

시스템 침해 여부 검사 기능·

시스템 침해 발견시 설치된 커널 백도어 판단 기능·

나 커널 백도어 침해 여부 검사 방법)

실제 커널 백도어의 침해 이후 침해 사실을 판단하는 것은 매우 어려운 일이다 이는 커널.

백도어가 일반 백도어와 같이 특정한 시스템 명령어를 수정하는 것이 아니라 이미 커널에서

이러한 시스템 명령에게 잘못된 정보를 제공하도록 하기 때문이다 만약 커널로부터 잘못된.

정보가 제공되는지를 알 수 있다면 커널 백도어에 의한 침해 여부를 판단할 수 있다.

- 161 -

하지만 커널 백도어 자체가 이미 커널의 일부로 동작하고 있는 시점에서는 그 커널로부터

오류동작은 감지할 수 없다 그러므로 커널의 침해 사실을 판단하기 위해서는 침해 전의 원.

래 커널 정보를 가지고 수행중인 커널의 정보와 비교하는 방법이 필요하다 하지만 시스템.

이 이미 침해당했다면 검사 시점에서 침해 전의 원래 커널 정보를 커널로부터 획득할 수 없

게된다 이러한 시점에 원래 커널의 정보를 획득하는 유일한 방법은 커널이 컴파일될 때 수.

집된 정보이다 이는 리눅스의 경우 파일로 보관되며 커널 백도어 침해. /boot/System.map ,

여부 검사 시스템은 이 파일로부터 필요 데이터를 추출하여 수행중 커널 정보와 비교할 수

있다 그러나 원래 커널 정보와 현재의 커널 정보를 획득하였더라도 실제 침해 사실을 알.

수 있는 정보는 일부로 한정될 것이다 실제 커널 백도어들은 일반 백도어의 기능을 커널.

수준에서 구현하기 위해 시스템콜 변경을 필수적으로 수행한다 커널 백도어 침해 여부는.

커널 백도어가 필수적으로 변경하는 시스템콜 정보를 비교 분석함으로써 침해 여부를 알 수

있다 또한 침해 사실이 확인된 경우 우리는 특정 변경된 시스템콜의 목록들을 얻을 수 있.

으며 이를 통해 특수한 경우가 아닌 경우 커널 백도어의 종류도 판단할 수 있다 커널 백도, .

어들은 각각이 수행하는 기능의 수가 다르며 같은 기능을 구현하는데 있어서도 서로 다른,

시스템콜을 변경할 수 있다 그러므로 각각의 커널 백도어들이 변경하는 시스템콜에 대한.

분석자료와 대상 시스템에서 변경되었다고 발견된 시스템콜의 목록을 대조하여 커널 백도어

종류를 판단하다.

- 162 -

커널 백도어 침해 여부 검사 시스템의 전체 모듈은 다음 그림과 같이 구성된다.

그림 커널 백도어 침해 여부 검사( 3-28)

커널 백도어 예방 탐지 및 복구 시스템 설계2)

가 시스템 기능 구성)

커널 백도어 예방 탐지 및 복구 시스템은 커널 백도어의 침해 여부 검사에 의해 깨끗한 시

스템으로 판단된 경우에 설치 활용할 수 있다 이 시스템은 크게 커널 백도어 설치의 예방, . ,

설치되는 커널 백도어 탐지 및 설치된 커널 백도어에 의한 시스템 자원의 변경을 복구하는

기능을 제공한다 여기서 커널 백도어에 의한 시스템 자원의 변경 복구는 시스템 자원을 원.

래의 상태로 복구한다는 의미도 있지만 나아가 커널 백도어의 기능을 무력화시킨다는 의미,

이다 즉 복구이후 커널 백도어는 자신이 의도하는 기능을 수행할 수 없다 또한 이러한 예. .

방 탐지 및 복구는 커널 백도어가 시스템에 설치되는 시점과 관련한다 예방은 커널 백도어, .

가 커널에 로드를 시도하는 시점에서 탐지는 커널 백도어가 커널에 로드된 직후 어떤 행위,

를 할때이며 복구는 그 어떤 행위가 악의적인 경우로 판단된 경우에 대한 대응이다, .

- 163 -

다음 표는 이러한 시점과 관련해 필요한 기능을 보인다.

표 커널 백도어 설치 시점과 작동 모듈 관계[ 3-4]

시 점 기 능 수행 모듈

설치 시도 커널 백도어 예방 커널 모듈 필터링 모듈

설치직후 행위 수행 커널 백도어 탐지 탐지 및 복구 모듈

악의적 행위 탐지후 변경 자원 복구 탐지 및 복구 모듈

나 커널 백도어 예방 방법)

커널 백도어의 예방은 위의 표에서와 같이 커널 백도어의 설치 시도시에 이루어진다. Shark

가 시스템의 커널에 로드되어 어떤 커널 모듈이 로드를 시도할 때 이 모듈의 이름을 감사한

다 실제 는 이미 시스템의 표준 커널 모듈들과 시스템 관리자가 허가한 커널 모듈의. Shark

목록을 가지고 있다 는 목록에 존재하는 커널 모듈을 제외한 모듈 커널 모듈의 적재. Shark

를 방지함으로서 커널 백도어에 의한 시스템 침해를 원천적으로 예방할 수 있다 만약 시스.

템 관리자가 새로운 디바이스를 추가하고 외부에서 이 디바이스의 디바이스 드라이버를 설,

치하는 경우라도 먼저 시스템에 이 정보를 등록한 후에만 이러한 행위가 가능하다Shark .

최악의 경우 시스템 침입자가 시스템에 등록된 허가 모듈의 이름을 알 경우 자신의Shark

커널 백도어를 로드 할 수 있지만 그런 경우는 희박하며 그러한 경우가 발생하더라도 이후,

커널 백도어 탐지 및 대응 시스템이 이에 대해 적당한 대응을 수행한다.

- 164 -

그림 커널 백도어 탐지시 예방( 3-29)

다 커널 백도어 탐지 방법)

커널 백도어의 탐지는 커널 모듈 필터링을 통과한 커널 모듈의 행위를 보고 탐지한다 실제.

커널 백도어는 자신의 파일이나 프로세스 등을 감추기 위해 시스템콜을 변경하는데 대부분,

은 이러한 시스템콜의 변경을 감지하므로써 커널 백도어 여부를 알 수 있다 또한 부가적으.

로 일부 커널 백도어는 프로토콜 핸들러나 커널 모듈리스트를 변경하는 기능을 수행한다.

커널 백도어는 특정 파일 프로세스를 숨기거나 일반 사용자의 권한 획득과 같은 비정, root

상적인 행위를 위해 시스템콜을 변경하며 특정한 패킷이나 특정 포트로의 인증절차 없는,

원격 접속 기능들을 위해 프로토콜 핸들러를 변경한다 또한 자신이나 특정 커널 모듈에 관.

한 정보를 시스템 관리자가 볼 수 없도록 커널 모듈 리스트를 변경한다 결국 커널 백도어.

는 시스템콜 테이블 프로토콜 핸들러 커널 모듈리스트의 변경을 탐지하여 발견한다, , . Shark

시스템은 자신이 커널에 로드될 때 현재 커널로부터 이러한 정보를 얻어 보관하고 다른 커,

널 모듈이 로드될 때마다 그 모듈이 시스템의 이러한 정보를 바꾸는지 검사한다.

- 165 -

만약 이러한 시스템 정보가 바뀌었다면 그것은 커널 백도어라 할 수 있으며 이것이 변경한,

정보의 종류에 따라 그것이 어떤 커널 백도어인지 구분할 수 있다.

라 커널 백도어 탐지시 복구 방법)

위에서 언급했듯이 커널 모듈이 로드되어 시스템의 자원을 변경하는 어떤 행위로 인해 커널

백도어가 탐지되었을 경우 이에 따른 복구 조치가 필요하다 이러한 복구는 시스템 원래의.

정상적인 상태로의 회복을 말하는데 이러한 것을 위해서는 반드시 복구 모듈이 정상적인,

시스템 정보를 가지고 있어야함을 말한다 만약 시스템이 이미 어떤 커널 백도어의 침해를.

당한 상태에서 탐지 및 복구 모듈이 커널에 로드될 경우 탐지와 복구를 위한 잘못된 정보를

가지게 되어 결국 복구 후에도 시스템은 정상적인 상태를 유지할 수 없게된다 그러므로 복.

구를 위한 조건은 복구 모듈이 깨끗한 시스템에 로드되는 것이다 이러한 상황만 지켜진다.

면 커널 탐지 및 복구 모듈은 커널 백도어를 탐지하고 이를 안전하게 복구시킬 수 있다 복.

구는 실제 원래의 커널 상태를 유지하게 하면서 동시에 커널 백도어의 기능이 수행되지 못,

하게된다 커널 백도어의 기능이 자신의 커널 모듈을 감추고 자신의 파일이 있는 디렉토리. ,

를 감춘다면 복구가 이루어진 후에는 커널 모듈과 디렉토리 전체가 보이게된다 또한 특정.

프로토콜을 통한 원격 접속을 가능하게 하는 기능이 있더라고 모두 상실된다 결국 시스템, .

관리자는 커널 모듈 탐지 및 복구 시스템의 보고를 보고 이에 따라 커널 모듈을 제거하면,

상황은 종결된다 만약시스템 관리자가 탐지 및 복구 시스템의 로그를 늦게 발견하더라고. ,

사실상 로드된 커널 백도어는 아무 기능도 하지 못하기 때문에 추후에 제거하여도 안전을

보장한다 다음 그림은 전체 커널 백도어 탐지 및 복구모듈을 나타낸다. .

- 166 -

그림 커널 백도어 탐지시 복구( 3-30)

- 167 -

제 장 바이러스 및 해킹대응 관리시스템 개발4

이 장에서는 바이러스 및 웜 대응 시스템 해킹관련 트로이목마 대응 시스템의 구현에 대해,

설명한다 각 시스템의 구현 범위와 중요 모듈을 설명하고 구현된 시스템을 테스트한다 개. .

발된 시스템의 향후 활용 방안에 대해 설명한다.

제 절 바이러스 및 웜 대응 시스템 개발1

연구개발의 범위1.

의 개발 범위와 내용은 크게 세 가지로 구분된다 첫째AVIS(Anti Virus Immune System) . ,

기존 바이러스를 탐지하기 위한 바이러스 패턴 생성과 이를 기반으로 로컬 시스템의 디DB

스크를 검사하여 바이러스 존재여부를 판단 할 수 있다 둘째 스크립트 파일의 구문 분석을. ,

통하여 파일 내부의 악성 코드가 삽입되어 있는지를 오토마타 이론과 패턴 검색을 활용하여

진단하고 발견된 악성 코드에 대한 해석과 악성 코드로부터 패턴을 추출하여 기존 바이러,

스 에 저장하여 앞으로의 검색에 활용할 수 있다 셋째 이와 같은 바이러스 분석 및 패DB . ,

턴 추출을 통해 얻어진 바이러스 악성 행위 정보를 다른 시스템과 공유하여 각자의 자가 면

역기능을 갖출 수 있도록 할 수 있는 네트워크 개념의 시스템 설계를 하여 면역 시스템을

개발하였다.

기존의 알려진 바이러스 탐지-

알려지지 않은 바이러스 탐지-

학습형 면역 시스템-

- 168 -

의 전체 구성도는 그림 과 같다AVIS(Anti Virus Immune System) ( 4-1) .

그림 시스템 전체 구성도( 4-1) AVIS

- 169 -

이 시스템은 기본적으로 클라이언트 서버 모델로 설계되어 있다 클라이언트 부분에는 악성.

코드 패턴 를 통해 기존 바이러스 유무를 탐지 할 수 있는 모듈과 새로운 악성 패턴 추DB

출을 위한 모듈과 서버측과 면역시스템을 구성하기 위한 통신 모듈로 구성되어 있고 서버,

부분은 클라이언트의 악성 행위 탐지 이벤트가 발생하면 해당 악성 코드 패턴 를 전송DB

받고 이에 대해 관리를 할 수 있는 모듈과 각각의 클라이언트들에게 의 업데이트 사실을DB

통보하여 업데이트 할 수 있도록 할 수 있는 메시지 송 수신 모듈 그리고 기본적인 네트워/ ,

크 기능을 위해 와 서버 역할을 수행할 수 있는 모듈로 구성된다HTTP FTP .

클라이언트 측■

기존 바이러스 탐지 모듈-

스크립트 내부의 악성 코드 추출-

면역 시스템을 위한 통신 모듈-

서버 측■

악성 코드 패턴 관리 모듈- DB

면역 시스템을 위한 통신 모듈-

프로토콜과 프로토콜 지원을 위한 서버 모듈- HTTP FTP

개발범위와 내용을 기존 바이러스 탐지 모듈과 스크립트 내부의 악성코드 추출 모듈 그리,

고 면역 시스템 별로 나누어 세부적으로 살펴보면 다음과 같다, .

시스템 구현2.

웜바이러스를 탐지하기 위해서는 먼저 드라이브의 특정한 폴더와 그 서브 폴더를 지정해야

한다 사용자가 지정한 폴더에 있는 모든 파일을 검사하거나 확장자를 따로 지정해서 진단.

할 수 있다.

- 170 -

그림 는 시스템의 클라이언트에서 바이러스를 탐지하기 위한 첫 화면을( 4-2) AVIS Client

보인 것이다.

그림 바이러스 탐지 클라이언트( 4-2)

그림 은 시스템의 클라이언트에서 폴더를 지정할 수 있도록 브라우저를( 4-3) AVIS Client

띄워서 알려진 또는 알려지지 않은 바이러스를 탐지할 수 있도록 특정 폴더를 선택하도록

한 화면을 보인 것이다 여기서 특정 폴더를 선택하면 그 폴더 내에 있는 파일만 검사하는.

것이 아니라 그 폴더 하위에 있는 폴더 모두를 검사하도록 되어 있다.

- 171 -

그림 폴더 선택 브라우저( 4-3)

그림 은 시스템에서 특정 파일의 확장자와 특정 폴더를 여러 개를 선택( 4-3) AVIS Client

할 수 있도록 보인 화면이다 여러 개의 확장자를 검사하고자 할 때에는 확장자 리스트에.

검사할 확장자들을 넣으면 선택된 확장자 파일들을 모두 검사할 수 있다 특정 확장자를 확.

장자 리스트로 넣기 위해서는 특정 확장자를 아래에 있는 에디트 박스에 바이러FileName

스를 검사할 확장자를 쓰고 오른쪽에 있는 버튼을 누르게 되면 검사할 확장자가 그 아Add

래에 있는 리스트로 추가된다 또 확장자 리스트에 있는 검사할 확장자가 잘못되어 그 확장.

자를 지우려고 할 때에는 옆 오른쪽에 있는 버튼을 눌러서 확장자 리스트에서 선택Add Del

된 확장자를 지울 수 있다 확장자 리스트에는 같은 명의 확장자가 들어갈 수 없다. .

여러 개의 폴더를 검사하고자 할 때에는 폴더 리스트에 검사할 폴더들을 넣으면 선택된 폴

더들을 모두 검사 할 수 있다 특정 폴더를 폴더 리스트에 넣기 위해서는 폴더 명을.

이란 부분의 아래에 있는 에디트 박스에 바이러스를 검사할 곳의 폴더 명을 쓰고Location

그 에디트 박스 오른쪽에 있는 버튼을 눌러서 폴더 리스트에 폴더 리스트에 추가한다Add .

- 172 -

또 폴더 리스트에 있는 검사할 폴더가 잘못 지정되어 있다면 삭제할 폴더를 선택하고 Del

버튼을 눌러서 폴더 리스트에서 선택된 폴더 명을 지울 수 있다 폴더 리스트에는 같은 명.

의 폴더가 들어갈 수 없다 그림 에서 볼 수 있다. ( 4-4) .

그림 다중 선택( 4-4)

그림 는 시스템에서 폴더 리스트들에 있는 폴더 내에서 확장자 리스트에( 4-5) AVIS Client

있는 확장자들을 모두 바이러스 검사하여 나타난 화면이다 이 화면은 폴더 리스트에 나타.

난 폴더 명들을 차례로 탐색하여 확장자 리스트에 있는 확장자들이 있으면 그 파일들을 오

토마타 모델링으로 정의된 바이러스 패턴들과 비교한다 만약 그 파일에 바이러스패턴이 있.

다면 그 파일의 명과 그 파일이 있는 곳의 위치 폴더 와 파일의 크기 파일의 수정 시간 그( )

파일에 바이러스로 짐작되어지는 형태를 찾아내어 표시한다.

- 173 -

알려지지 않은 바이러스이기 때문에 바이러스 명을 표시할 수 없어서 그 파일 내에서 바이

러스로 생각되어 지는 부분이 어떤 행위를 하는지에 따라서 그 파일 내에 나타나는 바이러

스의 행위를 바이러스 명을 대신해서 넣어서 표시한다.

그림 알려지지 않은 바이러스 탐지( 4-5)

그림 은 그림 에 의해서 바이러스를 찾아내는 것을 종료하였을 때 검사한 파일의( 4-6) ( 4-5)

개수와 바이러스에 감염된 파일의 개수를 표시해주는 다이얼로그 상자이다.

- 174 -

그림 탐지 결과( 4-6)

그림 는 시스템에서 알려진 바이러스를 탐색하기 위한 화면으로 그( 4-7) AVIS Client (

림 의 알려지지 않은 바이러스 탐색 부분과 화면의 구성은 같다 그림 의 알려진 바.4-5) .( 4-7)

이러스 탐색은 바이러스 패턴 테이블에서 바이러스 패턴과 폴더 리스트와 확장자 리스트에

서 탐색된 파일을 비교하여 같은 패턴이 있으면 그 파일명과 폴더 명 파일의 크기 파일의,

시간 그 파일에 감염되어 있는 해당 바이러스 명을 표시한다, .

그림 알려진 바이러스 탐지( 4-7)

- 175 -

그림 은 그림 에 의해서 탐색된 파일의 개수와 바이러스 테이블에 있는 바이러스( 4-8) ( 4-7)

패턴과 탐색된 파일을 비교하여 바이러스로 판단 파일의 개수를 나타낸 다이얼로그 상자다.

그림 탐지 결과( 4-8)

한 클라이언트 시스템에서 미확인 악성 코드를 발견하고 그 구문 내에서 패턴을 추출한 다

음 패턴 에 저장시킨 후 서버측에 업데이트된 패턴 를 보내면 다른 클라이언트 시스DB DB

템들도 최신 패턴 를 서버의 메시지를 통해 다운받게 된다 다음 그림 은 서버측DB . ( 4-9)

메시지를 받은 클라이언트가 해당 업데이트 파일을 전송 받는 과정이다 그림 은 업. ( 4-10)

데이트가 완료된 메시지를 출력하고 있는 그림이다.

그림 패턴 의 업데이트( 4-9) DB

- 176 -

그림 패턴 업데이트 완료( 4-10) DB

모듈 설명3.

가 기존 바이러스 탐지 모듈.

개요1)

기존 바이러스 탐지 모듈이란 이미 그 존재가 확인되어 각 바이러스 관련 단체에서 그의 특

징이 정의되어 있는 바이러스를 탐색하는 모듈이다 대부분의 바이러스 백신이 자신들의 패.

턴 에 해당 바이러스에 대한 일부 패턴을 입력하고 각각의 파일로부터 해당 패턴의 존재DB

유무를 따져 바이러스 탐지를 하고 있다 시스템의 기존 바이러스 탐지 모듈은. AVIS DB

구축 시 사용할 선정에 있어서 여러 가지 기준을 두고 파악을 했고 그에 대한 경과로DB ,

첫째 엔진에 대한 필요성 유무인데 일반적인 어플리케이션 개발 도구에서 지원되는 특, DB ,

히 본 시스템 구현에 활용된 에서 지원되는 등의Delphi 5.0 BDE(Borland Database Engine)

엔진은 다른 시스템에 설치 시 반드시 그에 대한 드라이버가 같이 설치되어야 하므로 바이

러스 탐지에 쓰이는 모듈에서는 이와 같은 엔진 사용을 배제하여 단독으로 를 사용할 수DB

있도록 하였다 본 시스템에 사용되는 는 으로 작은 사이즈와 빠른 검. DB Volga DB Engine

색을 할 수 있는 특징이 있으며 설치 시 다른 설치 작업이 필요 없다 다음은 를. Volga DB

통해 작성한 바이러스 패턴 의 구성 그림 과 그 내용 그림 이다DB ( 4-11) ( 4-12) .

- 177 -

그림 패턴 테이블 구성( 4-11) DB

그림 패턴 의 내용( 4-12) DB

- 178 -

기존 바이러스 탐지 동작 흐름도2)

그림 는 바이러스 탐지의 구성도이며 동작흐름은 다음과 같다( 4-13) , .

처음 시작할 때 파일의 확장자와 탐색 경로를 지정한다.①

검색이 시작되면 지정된 경로와 파일을 찾아 그 파일의 내부를 검색한다.②

바이러스 패턴 의 내용을 참조하여 같은 패턴이 존재한다면 해당 바이러스명을 출력DB③

해준다.

그림 기존 바이러스 검사( 4-13)

나 스크립트 내부의 악성 코드 추출.

개요1)

스크립트 내부에서 악성 코드의 존재 유무를 탐지하기 위해서는 스크립트에 대한 구문 분석

과 구문 분석을 통해 나타난 패턴을 악성 행위라고 판단할 수 있도록 악성 행위에 대한 모

델링이 정의되어야 한다.

- 179 -

스크립트 내부에 악성 행위를 발생 할 수 있는 패턴이 발견된다 하더라도 이것을 바이러스

라고 단정지을 수는 없고 이러한 판단은 보안 관련 담당자가 판단하도록 한다 본 시스템에, .

서는 미리 정의된 악성 행위가 스크립트 내부에 존재하는지와 어떠한 악성 행위가 내포되어

있는지 그리고 악성 행위가 나타난 스크립트 내부에서 바이러스 패턴 에 저장될 패턴을, DB

어떻게 추출하는지에 대한 사항으로 구성된다.

스크립트 내부의 악성 코드 추출 동작 흐름도2)

그림 는 스크립트 내부의 악성 코드 추출 동작 구성도이며 내용은 다음과 같다( 4-14) , .

먼저 파일의 확장자와 탐색 경로를 지정한다.①

지정된 경로와 파일을 검사하면서 구문 분석을 실시한다 이는 스크립트 내부의 함수와.②

메소드를 추출하는 과정이다.

구문 분석을 통해 추출된 함수와 메소드를 오토마타로 모델링하여 미리 정의된 악성 행③

위 패턴과 비교한다.

스크립트 내부에서 악성 행위를 일으킬 수 있는 패턴이 발견되면 일단 미확인 악성 코드④

로 간주를 하고 스크립트 내부의 패턴 하나를 추출한 후 바이러스 패턴 에 저장하고 저DB ,

장된 패턴이 어떠한 행위를 하는지도 함께 저장하도록 한다.

- 180 -

그림 스크립트 내부의 악성 코드 추출( 4-14)

다 면역 시스템을 위한 클라이언트 서버 모듈. /

시스템의 면역 기능 시나리오1) AVIS

그림 는 시스템의 면역 기능 플로우차트이다( 4-15) AVIA .

- 181 -

그림 패턴 업데이트 시나리오( 4-15) DB

클라이언트 시스템의 패턴 의 버전을 확인한다DB .①

의 파일에 등록된 버전을 확인한다Pattern Update Server UpdateVersion.html .②

버전을 비교하여 업데이트 할 필요가 없으면 업데이트 기능을 중지시킨다.③

그렇지 않으면 파일을 참조하여 다운로드할 파일 목록을UpdateFilelist.dat Pattern④

에서 부여받는다Update Server .

패턴 파일을 전송하여 해당 폴더에 위치시킨다DB .⑤

만약 클라이언트 시스템 자체에 대한 업데이트 사항이 발생하면 다운받은 새 클라이언트⑥

시스템 파일명 앞에 를 삽입하고 실행된다update_ .

- 182 -

그렇지 않으면 업데이트 기능이 중지된다.⑦

원래의 클라이언트 시스템 파일을 삭제하고 전송된 새로운 시스템으로 교체한다.⑧

클라이언트 프로그램을 실행한다.⑨

그림 은 의 패턴 업데이트의 전체적인 모습을 보여주는 그림이다( 4-16) AVIS .

그림 의 면역 시나리오( 4-16) AVIS System

- 183 -

라 면역 시스템의 주요 클래스.

클래스1) DownloadThread

업데이트 시킬 패턴 파일을 다운받아 패치하는DB Thread Class

클래스2) AutoUpdate

업데이트 작업을 수행하는 클래스 선언AutoUpdate

- 184 -

클래스별 멤버 함수3)

DownloadThread·

- 185 -

설명 업데이트에 관련된 작업을 수행하는: FAutoUpdate.DoUpdate 함수를 실행한다.

CabinetCallback·

설명 화일 압축푸는 콜백함수: Cabinet

UpdateLocalVersion·

설명 클라이언트 시스템의 업데이트 관련 파일의 버전 정보를 얻는다: .

GetUniqueFileList·

설명 파일 리스트에서 중복된 파일들은 삭제한다: .

GetPatchInfoFile·

설명 갱신된 패턴 파일의 정보 추출: DB

- 186 -

테스트 환경4.

시스템은 윈도우즈 시스템을 기본으로 하여 만들어졌다 클라이언트는 윈도AVIS MS . MS

우즈 계열의 운영체제를 사용하면 버전에 관계없이 실행되며 서버는 윈도우즈 계열의, MS

서버 운영체제를 사용하면 된다 윈도우즈 서버나 계열을 사용하면 된다 본 연. MS 2000 , NT .

구를 수행하면서 실험한 환경은 그림 과 같다( 4-17) .

그림 실험환경( 4-17)

테스트5.

본 시스템과 타사 바이러스 탐지 시스템을 비교하여 보았다 실험의 내용은 바이러스AVIS .

인 개 파일과 바이러스가 아닌 개의 파일을 검사하여 나타낸 내용이 아래에 나타나 있16 1

다 그림 는 바이러스 코드가 있는 파일들의 리스트를 보인 그림이다. ( 4-18) .

- 187 -

그림 바이러스 파일 리스트( 4-18)

그림 는 시스템에 의해서 바이러스 탐지를 보인 그림이다 시스템에서는( 4-19) AVIS . AVIS

개의 파일을 검사하여 개의 바이러스 파일을 탐지하는 것을 볼 수 있다17 16 .

그림 시스템으로 바이러스 탐지( 4-19) AVIS

- 188 -

본 실험을 위하여 실제 바이러스 파일 개와 임의로 제작한 테스트용 바이러스 개 그리11 8 ,

고 바이러스는 아니지만 유사한 형태를 띄고 있는 파일 개가 사용되었다 실제 바이러스9 .

파일은 바이러스 연구기관에 의뢰하여 개를 구하여 실험에 사용하였다11 .

기존의 바이러스 탐지 시스템들은 정해진 문자열의 유무로 바이러스를 판단하기 때문에 그

문자열이 변경되거나 없으면 탐지가 불가능하다 그래서 제안된 시스템과의 성능 비. , AVIS

교를 위하여 특정 문자열을 변경한 테스트용 바이러스 개를 제작하였다 그리고 오용탐지8 . ,

를 실험하기 위해 바이러스 임직한 유사 바이러스를 개 제작하여 실험하였다 이 파일들은9 .

바이러스와 그 내용은 비슷하지만 실제로 동작하지는 않는 것들이다 정리하면 바이러스 파. ,

일 개와 유사 바이러스 개 합 개를 실험에 사용하였다19 9 , 28 .

테스트용 바이러스는 그림 과 그림 에서 보는 바와 같이 기존 바이러스의 일부( 4-20) ( 4-21)

를 수정해서 만들었다 여기서 특정한 문자열을 변경하면 일부. (“systemdir” “dirsystem”)→

바이러스 진단 프로그램에서는 진단이 되지 않는 것을 알 수 있다 이것은 기존 바이러스.

진단 프로그램에서 특정한 문자열을 단순하게 비교 판단하기 때문이다.ㆍ

- 189 -

그림 바이러스 파일( 4-20) Very Funny

그림 바이러스를 변조한 파일( 4-21) Very Funny

그리고 오용탐지 실험을 위한 파일 개는 기존의 바이러스 파일을 실행이 되지 않도록 변, 9

경하여 제작하였다 가 발생하도록 유도하였기 때문에 더 이상 바이러스라고. Syntax Error

볼 수 없는 파일들이다.

- 190 -

예를 들면 예약어를 정확하게 쓰지 않았다던가 문법에 어긋나도록 공백을 두었다던가 하는, ,

것이다.

테스트 결과6.

표 에서 보듯이 총 개의 파일을 가지고 주 하우리의 제품과[ 4-1] 22 ( ) ViRobot Professional

주 안철수연구소의 제품 그리고 제안된 시스템 에 각각 실험해( ) V3 Pro2000 Deluxe , AVIS

보았다.

표 바이러스 탐지 시스템간의 성능 비교[ 4-1]

탐지시스템구분

ViRobotProfessional

V3 Pro2000Deluxe AVIS

검사한 파일의 총 개수 개22 개22 개22

탐지된 바이러스 개수 개10 개16 개18

바이러스가 아닌데바이러스로 탐지한 개수

개0 개3 개3

바이러스인데탐지하지 못한 개수

개12 개3 개1

실험에 사용된 개의 파일 중에서 바이러스 파일은 개이고 나머지 개는 바이러스의 형22 19 3

태는 띄었지만 문법오류로 인해 실제 피해는 주지 못하는 파일들이다.

표에서도 알 수 있듯이 바이러스가 아닌데 바이러스로 탐지한 오용탐지는 의 경우ViRobot

는 개 와 에서는 개로 나타났다 여기서 오용탐지 개수가 많다고 해서 반드시 성0 , V3 AVIS 3 .

능이 떨어진다고는 말할 수 없다 왜냐면 의 경우 실제 바이러스 파일 개 중. , ViRobot 19 10

개 밖에 진단하지 못하지만 제안된 시스템 의 경우에는 실제 바이러스 파일 개 중, AVIS 19

개를 탐지해내고 있기 때문이다 비록 오용탐지가 적은 수나마 있기는 하지만 하나의 바18 .

이러스라도 놓쳤을 경우 발생할 커다란 피해를 생각한다면 낮은 비율의 오용탐지는 묵인할

수도 있는 작은 오류라고 할 수 있다.

- 191 -

제 절 해킹관련 트로이 목마 대응 시스템 개발2

시스템 구현1. Shark

본 연구에서 위에서 나열한 모든 기능을 포함하는 커널 백도어 탐지 및 대응 시스템을 리눅

스 커널 솔라리스 용 환경을 위한 커널 백도어 탐지 및 대응 시스템2. 4. x, X86 5. 8

이 개발되었다 리눅스의 경우 공개 소스의 특성을 가지므로 솔라리스에 비해 커널(shark) .

백도어가 상대적으로 월등히 많으며 백도어 자체의 기능도 다양하다 시스템 전체구, . Shark

조는 그림 과 같다( 4-22) .

그림 시스템( 4-22) Shark

- 192 -

허가된 커널 모듈의 등록을 통해 로드될 수 있는 모듈 리스트를 관리하며 어떤 커널 모듈,

이 로딩시 일차적으로 리스트를 검색하고 리스트에 존재하지 않는 모듈일 경우 이를 차단한

다 만약 로드되는 커널 모듈이 시스템의 표준 커널 모듈의 이름과 동일할 경우 로드 되는.

데 이때는 이 모듈의 행위를 감시함으로써 대응이 가능하다 로드된 커널 모듈이 시스템 콜, .

테이블의 값을 변경한다면 는 차적으로 변경된 시스템 콜 테이블의 값을 복구한다Shark 2 .

또한 모듈이 시스템이 관리하는 이미 로드된 커널 모듈의 리스트를 변경하거나 특정 모듈,

을 모듈 리스트에서 끊는 행위를 한다면 이 또한 복구하여 그러한 행위를 통해 이루어질 모

듈 숨김 기능을 방지한다.

구현 모듈 설명2.

의 구현된 기능은 다음과 같다Shark .

가 커널 모듈 필터링.

표준 시스템 커널 모듈과 사용자에 의해 허가된 모듈의 등록 및 제거를 통한 커널 백도어

로드 방지 기능을 가지도록 커널모듈접근제어테이블과 범용 시스템내의 설치를 고려하여

시스템콜 기능의 확장하여 구현하였다gettimeofday .

커널 모듈 접근 제어 테이블과 확장된 시스템콜1)

커널 백도어 탐지 및 대응 모듈이 커널에 로드될 때 위의 디렉토리를 검색하여 디폴트 모듈

들의 목록을 등록하며 추가 모듈은 의 등록 모듈을 이용해 등록한다 커널 모듈, User Space .

목록은 리눅스의 경우 에 솔라리스는 아래에 위치한다/lib/modules/2.x.xx , /kernel/dev .

- 193 -

허가된 목록을 관리하기 위한 접근 제어 테이블은 그림 과 같다( 4-23) .

그림 커널 모듈 접근제어테이블( 4-23)

이와 같이 백도어 탐지 및 대응 모듈이 관리하는 허가된 모듈 목록들을 추가하고 삭제하기

위해서는 의 등록 모듈과 통신을 해야한다 이 기능의 구현을 위해서는 커널과User Space .

통신하기 위한 새로운 시스템 콜을 생성하는 방법 그림 과 기존의 시스템콜 기능을 확( 4-24)

장하는 방법 그림 두 가지가 있다( 4-25) .

- 194 -

그림 새로운 시스템 콜의 구현( 4-24)

그림 기존 시스템 콜을 확장한 시스템 콜 추가( 4-25)

- 195 -

그러나 새로운 시스템콜을 생성하여 사용하기 위해서는 커널을 재 컴파일 해야 하므로 커널

백도어 탐지 및 대응 모듈의 범용성을 상실하게 된다 이에 일반적인 범용 시스템내의 설치.

를 고려할 때 시스템콜 기능의 확장이 바람직하다 본 시스템에서는 시스템콜. gettimeofday

을 사용하여 커널과의 데이터를 교환한다 확장된 시스템콜은 특정 플래그가. gettimeofday

셋팅되어 있다면 커널과의 데이터 교환을 위한 추가된 기능이 수행되며 그렇지 않은 경우,

원래 기능을 수행한다.

나 시스템콜 변경 탐지 및 복구.

본 시스템에서는 시스템콜 점검 및 대응을 위해 특정 모듈이 로드 언로드 될 때 그리고 커/

널 타이머를 이용하여 주기적으로 시스템콜 테이블을 검사한다 리눅스의 경우 각각의 사용.

자 명령이 해당 시스템 콜을 호출한다 즉 는 모듈을 로드하기 위해. insmod

를 호출한 후 에러가 없을 경우 정상적으로 을 호출하SYS_create_module SYS_init_module

고 에러가 발생할 경우 를 호출하여 로드한 모듈을 제거한다, SYS_delete_module .

시스템콜 변경 및 탐지 방법1)

리눅스는 각각의 사용자 명령에 할당된 시스템 콜이 존재하는 반면 솔라리스는 이러한 각각

의 시스템콜을 이라는 시스템콜 하나로 대체한다 이 은 사용자 명령에 의해modct1 . modct1

주어진 첫 번째 인자값에 따라 수행될 동작이 결정된다 이러한 각각의 동작들은 시스템콜.

이 아닌 각각의 커널함수를 통해 수행된다 리눅스에서는 모듈을 컨트롤하는 각각의 시스템.

콜을 솔라리스에서는 시스템콜을 후킹함으로서 시스템콜테이블의 변경을 감시하고modct1 ,

변경시에는 이를 복구하는 방식으로 시스템을 구현하였다.

- 196 -

커널 백도어가 시스템콜을 변경하는 방법은 그림 과 같다 아래 그림 에서 커널( 4-26) . ( 4-26)

백도어가 시스템콜을 변경하여 실제 가 호출될 경우__NR_getdent , __NR_getdent

를 호출되어 본래 의도와 다른 동작을 하게 만든다 일반적인 커널 백도어는hacked_getdent .

자신이 로드되는 시점에 시스템콜을 변경하여 사용하거나 다른 모듈에 보조 기능을 부여하,

기 위해 로드 또는 언로드 시점에 시스템콜을 변경한다.

그림 시스템 콜 테이블 변경( 4-26)

- 197 -

커널 타이머를 이용한 시스템콜의 주기적인 검사 과정2)

리눅스에서는 모듈을 컨트롤하는 각각의 시스템콜을 솔라리스에서는 시스템콜을 후modct1

킹함으로서 시스템콜 테이블의 변경을 함으로 주기적으로 감시하여야 한다 그림 은. ( 4-27)

커널 타이머를 이용한 시스템콜의 주기적인 검사 과정을 보인다.

그림 시스템 콜 테이블 보호 커널 타이머( 4-27)

다 모듈 리스트 변경 탐지 및 복구.

커널 백도어 탐지 및 대응 시스템은 로드된 커널 모듈의 리스트를 관리하고 모듈의 리스트,

를 끊는 모듈에 대해 탐지를 수행하여야 한다 모듈의 로드 시점에서 이러한 행위를 감시하.

며 발견시 해당 커널 모듈을 제거하고 원래의 커널 모듈 리스트를 복구한다 실제 커널 모, , .

듈 정보는 다음과 같은 리스트형태를 갖는다.

- 198 -

그림 리눅스 커널 모듈 리스트 구조( 4-28)

라 프로토콜 핸들러 탐지 및 복구.

백도어는 시스템의 구조체의 프로토콜 핸들러를 자신이 만든 핸들러로 대체함inet_protocol

으로서 이러한 기능을 구현한다 다음은 이러한 구조체의 구조이다. inet_protocl .

이러한 구조체들은 해쉬 테이블 형태를 가진다 이러한 구조는 그림 에inet_protocol . ( 4-29)

서와 같이 해쉬 테이블의 각 엔트리는 해당 프로토콜 핸들러를 가르키는 형태로 구성된다.

- 199 -

만약 새로운 프로토콜 핸들러를 추가한다면 해쉬 테이블과 기존에 핸들러 사이에 새로운 핸

들러가 등록되며 이 핸들러 구조체의 멤버는 기존의 핸들러를 가르키게 된다 결국 패, next .

킷의 처리를 위해 호출되는 핸들러는 새로 등록된 핸들러가 되는 것이다.

그림 구조체들의 연결 구조( 4-29) Inet_protocol

다음은 실제 리눅스 커널 백도어 의 프로토콜 핸들러 변경 코드이다knark .

프로토콜 탐지 및 복구 모듈은 이와 같은 프로토콜 핸들러 변경을 막기 위해 이러한

구조체의 형태를 가지는 각각의 프로토콜 핸들러들을 저장하고 특정 모듈의inet_protocol ,

로딩 언로딩시 이 값과 비교한다/ .

- 200 -

만약 변경이 감지된다면 기존의 값으로 다시 복구 시킴으로써 프로토콜 핸들러의 변경을 방

지할 수 있다.

기능 테스트 시나리오3.

위의 연구결과를 기반으로 리눅스 커널 솔라리스 용 환경을 위한 커널 백도어2.4.x, X86 5.8

탐지 및 대응 시스템 이 개발되었다 리눅스의 경우 공개 소스의 특성을 가지므로 솔(shark) .

라리스에 비해 커널 백도어가 상대적으로 월등히 많으며 백도어 자체의 기능도 다양하다, .

이에 본 연구에서 개발한 리눅스용 시스템이 앞장에서 언급한 모든 기능을 가지며 솔라리,

스용 시스템은 커널 모듈 필터링과 시스템콜 테이블 변경 탐지 및 복구 기능을 제공한다.

그러므로 다음에서 리눅스 를 기반으로 설명한다Shark .

전체 시스템은 크게 커널 백도어 침해 여부 검사 모듈과 커널 백도어 예방 탐지 및Shark ,

복구 모듈로 구분할 수 있다 커널 백도어 침해여부 검사 모듈은 일반 사용자 공간의 프로.

그램형태이며 커널 백도어 예방 탐지 및 복구 모듈은 커널 모듈 형태의 주 프로그램과 이, ,

커널 모듈을 도와주는 일반 사용자 공간의 유틸리티들로 구성되어있다 이들의 구분은 사용.

시기에 따라 구분되는 것으로 커널 백도어 침해 여부 검사 모듈은 시스템의 커널 백도어에

의한 침해 예방 탐지 및 복구를 위해 주 모듈을 설치하기 전 또는 특정 시스템이 이, Shark

상 현상을 보일 때 어떤 커널 백도어에 침해 당했는지 여부를 조사할 때 사용할 수 있으며,

침해 검사 모듈에 의해 안전성이 확인된 시스템에 예방 탐지 및 복구 모듈을 설치하므로써,

이후 커널 백도어로부터 시스템을 안전하게 지킬 수 있다 이러한 시스템의 실제 활. Shark

용될 수 있는 예를 보이기 위해 두 모듈들의 기능별 실행 결과를 보이고 이후 실제 커널,

백도어의 다양한 기능을 활용하고자 하는 해커의 시도에 대한 시스템의 대응 과정을Shark

보인다.

- 201 -

가 커널 백도어 침해 여부 검사.

유닉스 시스템은 항상 커널 백도어에 노출되어 있다 만약 시스템의 이상 징후가 있다면 시.

스템 관리자는 이러한 이상 징후가 커널 백도어에 의한 것인지 검사해 보아야 한다 또한.

이후의 커널 백도어 설치에 대한 예방 탐지 및 복구에 대한 대응을 위해 의 설치시에, Shark

도 사전에 시스템의 커널 백도어에 의한 침해 여부를 검사해야한다 이러한 조사를 통해 시.

스템 관리자는 침해 여부를 알 수 있으며 이러한 사항을 고려하여 이후 어떠한 대처가 가,

능하다 실제 커널 백도어 침해 여부 검사 모듈은 커널 백도어의 침해 사실뿐 아니라 이미. ,

알려진 커널 백도어의 경우 그 커널 백도어의 종류도 알 수 있으며 알려지지 않은 커널 백,

도어에 대해서도 침해 사실을 알려준다 또한 하나가 아닌 여러 커널 백도어에 의해 침해되.

었더라도 그것이 알려진 커널 백도어라면 그 종류들을 모두 알 수 있다 다음 그림들은 시.

스템의 커널 백도어 침해 여부를 검사한 결과이다.

그림 커널 백도어가 없는 경우( 4-30)

- 202 -

그림 에 의해 침해 당한 경우( 4-31) Adore

그림 알려지지 않은 커널 백도어에 의한 침해의 경우( 4-32)

- 203 -

그림 여러 커널 백도어에 의한 침해의 경우( 4-33)

나 커널 백도어 탐지 및 복구시스템 제거 방지.

시스템은 일반적인 커널 백도어와 같이 으로 구성되어 있기 때문에 해커가 시Shark LKM

스템 침입시 이를 언로드 시킬 위험이 있다.

이에 시스템은 관리자에 의해 로드된 이상 와 같은 명령으로 제거가 불가능Shark , rmmod

도록 구성하였다.

- 204 -

만약 그림 와 같이 권한을 갖은 어떤 사용자가 를 실행할 경우 시스( 4-34) root rmmod , Shark

템은 언로드 되지 않고 라는 에러를 반환한다 이는 관리자의 경, ‘Operation not permitted' .

우도 마찬가지로 시스템은 한번 로드되면 어떠한 명령으로도 언로드 되지 않는다Shark .

그림 시스템 언로드 보호( 4-34) Shark

- 205 -

다 커널 백도어 설치 방지.

그림 커널 백도어 설치 방지( 4-35)

시스템 침입자는 차후의 접근을 용의하게 하기 위해 커널 백도어를 설치하려 할 것이다.

그림 는 커널 모듈 필터링을 통한 커널 백도어 설치 방지 기능을 보인다( 4-35) .

만약 침입자가 시스템에 등록되어 있지 않은 커널 모듈을 설치하려 할 경우 설치를Shark

막고 에러 메시지를 출력한다 그림에서처럼 를 위한 로딩, 'Invalid request code' . knark.o

명령을 실패하여 로드된 모듈 리스트에서 보이지 않는다.

라 허가 커널 모듈의 등록.

시스템 관리자는 시스템에서 기본적으로 사용하는 커널 모듈의 이름을 등록 할 수 있다.

을 이용하여 시스템으로부터 이러한 커널 모듈 정보를 특정 파일로 저read_system_module

장하고 을 사용하여 그 파일의 모듈 정보를 시스템에 전달한다, modutil Shark .

- 206 -

그림 시스템에 허가 커널 모듈 등록( 4-36) Shark

또한 시스템 네트워크 카드등의 교체로 새로운 디바이스 드라이버를 설치해야 할 경우 -a

옵션으로 새로운 커널 모듈을 등록할 수 있다 그림 은 파일로부터. ( 4-36) system_modules

시스템에 허가 모듈을 등록하는 예이다Shark .

실제 커널 백도어가 로드될 수 있도록 리눅스 커널 백도어 를 그림 과 같이 등knark ( 4-37)

록하고 로드시켰다.

- 207 -

그림 커널 백도어 의 허가 모듈 등록 및 로드( 4-37) knark

마 커널 백도어 로딩후의 행위 탐지 및 복구.

만약 커널 모듈 필터링을 통과하는 커널 백도어가 있다면 시스템은 이 모듈의 행위를, Shark

감시하여 비정상적인 행위를 할 경우 이를 탐지하고 복구한다 그림 은 이 시, . ( 4-38) Knark

스템 콜 변경하는 것을 탐지하고 복구하는 예이다 이 경우 커널 백도어는 커널에 로딩되었.

지만 자신이 수행하려는 기능은 모두 상실한 상태이다 시스템 관리자는 이러한 탐지 및 대, .

응 로그를 확인하여 확인된 모듈을 제거하면 된다.

- 208 -

그림 의 시스템콜 변경 탐지 및 복구( 4-38) knark

그림 프로토콜 핸들러 커널 모듈 리스트 변경 탐지 및 복구( 4-39) ,

- 209 -

는 이라는 커널 모듈을 이용해 커널 모듈 리스트를 변경함으로서 을 숨기knark hide.o knark

고 프로토콜 변경을 통해 특정 포트에서 특정 포트로의 접속이 있을 경우 프로그램, SUID

없이 권한으로 접속을 허가한다 그림 는 이러한 변경을 탐지하고 복구하는 기능root . ( 4-39)

을 보인다.

테스트 시나리오4.

실제 시스템을 이용해 커널 백도어 예방 탐지 및 복구 기능을 활용하기 위해서는 먼Shark ,

저 시스템에 커널 백도어의 존재 여부를 확인해야 한다 시스템의 커널 백도어 예방. Shark ,

탐지 및 복구 모듈도 커널에 로딩되면서 로딩시의 커널 정보를 저장하고 이를 활용하기 때

문에 이때의 커널 정보가 무결성을 지키고 있어야함을 의미한다.

그림 과 에 의한 침해( 4-40) Rkit Adore

- 210 -

그러므로 시스템을 안전하게 유지하기 위한 시스템을 올바르게 작동시키기 위해서는Shark

제일 먼저 다음과 같이 커널 백도어에 침해 여부를 검사하여야 한다.

그림 커널 백도어에 침해된 시스템( 4-41)

위의 그림에서 검사 결과 시스템은 여러 커널 백도어에 침해 되어 있다 이미 침해 당한 시, .

스템에서 커널 백도어를 제거하기 위한 유일한 방법은 시스템을 재부팅하는 것이다 하지만.

어떤 해커들은 이러한 경우를 대비해 시스템 재부팅시 다시 커널 백도어가 로드되도록 한

다 주로 이러한 방법으로 파일에 이러한 과 같은 명령어를 심. /etc/rc.local 'insmod Rkit.o'

어 놓게 되는데 이를 방지하기 위해 시스템 관리자는 재부팅 전에 과 이외의, /etc/rc.loacal

시스템 초기시 실행되는 스크립트들을 조사할 필요가 있다.

- 211 -

만약 조사가 끝나고 그러한 명령어들을 제거했다면 시스템을 재부팅하고 의 커널 백Shark

도어 예방 탐지 및 복구 모듈을 설치하면 이후 어떤 커널 백도어로 부터도 안전하게 시스, ,

템을 보존할 수 있다 시스템 관리자가 위와 같이 커널 백도어를 발견하고 커널 백도어를.

로드시키는 스크립트를 제거한후 시스템을 재부팅하면 시스템의 커널 백도어 예방 탐Shark ,

지 및 복구 모듈을 로드 시킬 수 있다 이러한 과정이 모두 이루어진 후 시스템의 전. Shark

체 동작 흐름은 그림 과 같다 커널 모듈이 로딩 또는 언로딩을 시도할 때마다( 4-42) . Shark

시스템은 이 동작을 반복한다.

그림 시스템 동작 흐름( 4-42) Shark

- 212 -

다음은 실제 해커가 일반적인 리눅스 시스템에서 의 기능을 사용하는 과정과 결과를Knark

보이고 시스템이 설치된 리눅스 시스템에서 시도한 결과와 비교한다 실제 테스트한, Shark .

시스템은 리눅스 커널 이다 또한 여기서는 해커가 시스템의 커널 필터링X86 2. 4. 2 . Shark

을 무사히 통과하여 이 설치되었다고 가정한다Knark .

해커는 자신이 백도어를 설치한 디렉토리를 숨기기 위해 명령을 사용했다 그림test hidef .(

에서 사용자의 명령에 의해 디렉토리는 보이지 않았으며 를 통해 다시4-43) ls test , unhidef

보이게 할 수 있었다 그림( 4-44).

그림 일반 리눅스에서 특정 디렉토리 숨김 시도( 4-43)

- 213 -

그림 일반 리눅스에서 특정 디렉토리 보임 시도( 4-44)

그러나 그림 에서처럼 가 설치된 시스템에서는 의도한대로 동작하는 것처럼 보( 4-45) Shark

이나 명령어로 가 숨겨지지 않았다, ls test .

그림 가 설치된 리눅스에서 특정 디렉토리 숨김 시도( 4-45) Shark

- 214 -

그림 일반 리눅스에서 시도( 4-46) exec-redirection

또한 해커는 시스템 사용자가 특정 시스템 프로그램 사용시 트로이 버전의 프로그램이 실행

되도록 할 수 있다.

그림 는 명령어 실행시 명령이 실행되도록 의 명령을 성공시켰다 하( 4-46) ps df Knark ered .

지만 그림 에서처럼 가 설치된 시스템에서는 이 실패하여 프로( 4-47) Shark exec-redirection

그램 실행에 아무 지장이 없다.

- 215 -

그림 가 설치된 리눅스에서 시도( 4-47) Shark exec-redirection

또한 해커가 가장 원하는 것은 권한일 것이다 은 라는 일반 사용자가root . Knark rootme

권한으로 프로그램을 실행시킬 수 있는 명령어를 지원한다root .

그림 일반 리눅스에서 권한 획득 시도( 4-48) root

그림 은 이라는 일반 사용자가 리눅스 시스템에서 권한의 을 성공적으( 4-48) ispark root shell

로 실행시키는 화면이다 그러나 가 설치된 시스템에서는 그림 과 같이 권. Shark ( 4-49) root

한의 생성에 실패하게 된다shell .

- 216 -

그림 가 설치된 리눅스에서 권한 획득 시도( 4-49) Shark root

즉 위의 간단한 시나리오에서 알 수 있듯이 시스템은 커널 백도어가 커널 모듈 필터Shark

링을 통해 커널 백도어에 의한 침입을 원천적으로 봉쇄할 수 있으며 만약 커널 모듈 필터,

링을 통과하여 커널에 적재되더라도 그 커널 백도어의 모든 기능을 상실시켜 시스템을 안전

하게 보호한다.

테스트 결과5.

위에서 볼 수 있듯이 시스템은 커널 백도어 침해 여부 검사에서 알려진 커널 백도어Shark

들을 탐지했다 또한 알려지지 않은 커널 백도어의 경우 이름만을 알려주지 않을뿐 커널 백.

도어라는 사실은 탐지할 수 있다 만약 알려지지 않은 커널 백도어가 나타난다면 그들 정보.

의 간단한 추가로 이후에는 그 커널 백도어를 구분해낼 수 있다 만약 커널 백도어가 존재.

하지 않거나 존재 여부를 판단하고 적절한 조치후 커널 백도어 예방 탐지 및 복구 모듈을,

설치할 경우 그들의 종류와 상관없이 탐지하며 커널 백도어의 모든 기능을 상실시킨다 이.

는 해커에 의해 커널 백도어가 설치될 가능성이 매우 희박하며 설령 설치되더라도 해커가,

의도하는 모든 행위는 차단된다.

- 217 -

제 절 활용방법3

학습형 바이러스 면역 시스템과 유닉스 커널 백도어 대응 시스템과 같은 이 과제에서 수행

된 악성 코드 대응 관리 시스템은 차후 다음과 같은 방법으로 활용할 수 있다.

먼저 학습형 바이러스 면역 시스템은 인터넷 서비스 제공자를 위한 인터넷 해킹 및 악성 바

이러스의 국내 유입을 차단하는데 활용할 수 있다 인터넷 서버를 대상으로 한 서비스거부.

공격에 대응하고 바이러스 탐지기술 보급 등의 기술지원을 통해 대규모 네트워크에서의 해

킹 및 악성바이러스의 국내 유입을 원천적으로 차단하는 수단으로 제공될 것이다.

또한 백신 업체 및 바이러스 방역서비스업체 등에서 학습형 바이러스 면역 시스템을 상품화

하는데 기여할 수 있다 학습형 바이러스 면역 시스템에 의해 기존 바이러스 및 변종 바이.

러스와 차세대 악성 바이러스까지 탐지하고 제거할 수 있는 가능성을 제공함에 따라 국내

실정에 적합한 차세대 악성 바이러스 백신 소프트웨어로 제품화하여 국내 백신시장의 경쟁

력 강화에 커다란 도움이 될 것이다 뿐만 아니라 이러한 기술은 내부 네트워크의 바이러스.

및 해킹에 대한 접근 제어를 방지하기 위한 침입차단시스템 등의 보안도구에까지 활용이 가

능하다.

- 218 -

유닉스 커널 백도어 대응 시스템은 기존의 유닉스 커널 백도어에 대한 심도있는 분석 정보

를 제공하여 이에 대한 대응 기술력 확보 및 개발된 시스템을 이용하여 효과적인 커널 백도

어 탐지에 활용할 수 있다 이러한 기술을 전파하여 침입탐지시스템과 같은 보안도구에까지.

활용 가능하다.

- 219 -

제 장 결 론5

인터넷이 급속하게 발전하고 대부분의 사람들이 쉽게 인터넷에 접근할 수 있게 됨으로써,

바이러스 및 해킹이 피해가 날로 커지고 있다 년도로 넘어가면서 웜이 급격하게 발달. 2000

되었다 웜은 웜생성기까지 개발되어 누구나 쉽게 새로운 웜을 제작할 수 있고 빠르게 전파. ,

된다는 특징을 가지고 있다 또한 웜이 해킹의 기법을 이용하여 전파되기도 하며 트로이목.

마를 심어 놓기도 한다 하지만 지금까지는 웜이 퍼진 후에 백신이 개발되어 치료하는 형태.

로써 이미 피해를 입은 후에 처리하는 형태였다 이에 따라 바이러스 및 해킹을 사전에 예.

방하기 위하여 한국정보보호진흥원내의 해킹바이러스 상담지원센터에서는 바이러스 및 해킹

대응 관리 시스템을 개발하게 되었다.

바이러스 및 해킹대응 관리 시스템은 바이러스 및 해킹대응 시스템 해킹관련 트로이목마,

대응 시스템 관리 시스템 로 구성되어 있다 이 시스템의 기존의 바이러스 웜 및 커널, , DB . /

백도어를 탐지한다 또한 새로운 바이러스 웜이나 커널 백도어일 것으로 예상되는 것을 탐. /

지하여 관리시스템에 전송하면 관리 시스템에서는 각 분야의 전문가가 바이러스 웜및 커널/

백도어를 분석하여 바이러스 웜 및 커널 백도어로 확인되면 를 업데이트 한다 가 업/ DB . DB

데이트 되면 서버에 연결되어 있는 클라이언트들은 일정 시간마다 서버에 접속하여 버DB

전을 확인하고 가 업데이트되면 를 다운로드하여 항상 최신버전의 를 유지한다DB DB DB .

본 연구의 구현에서는 바이러스의 경우 범위가 매우 넓기 때문에 요즘에 많이 발생하고 있

고 피해가 큰 웜을 대상으로 하였다 알려진 바이러스 및 알려지지 않은 바이러스를 탐VBS .

지하나 바이러스가 아닌 것을 바이러스로 탐지하는 문제가 있다.

- 220 -

바이러스로 탐지된 경우 유전자 알고리즘에 의해 바이러스일 확률로 표기되나 유전자 알고

리즘의 최적화가 완성되지 않아 아직 미흡하다 커널 백도어는 일단 설치가 되면 찾아내기.

가 매우 힘들다 이 시스템은 탐지보다 예방에 중점을 두어 새로운 커널 백도어가 설치되는.

것을 막아준다 커널 백도어가 아닌 경우에도 사용자가 미리 허가하지 않은 커널 모듈은 로.

딩되지 않는다.

본 연구개발 과제를 통하여 앞으로 더욱 기승을 부릴 것으로 예측되는 신종 바이러스 웜 및/

커널 백도어의 출현에 대비 국내 증가하는 인터넷전자상거래 환경을 보호하고 나아가 해외,

에서의 사이버공격에 대비하여 국제적인 지식정보화기반의 경쟁력을 강화하고자 하였다 또.

한 이를 국내 백신업체에게 기술 이전하여 국내 실정에 적합한 바이러스 및 해킹 대응 시스

템에 대한 제품화를 유도함으로서 네트워크상에 대규모로 유포될 수 있는 차세대 악성바이

러스에 대한 선도적인 대응기술로서 활용할 수 있으리라 기대된다.

- 221 -

참 고 문 헌

[1] http://pllab.kangwon.ac.kr/lecture/compiler/1-6.htm

[2] Jeff Kephart, Automatic Extraction of Computer Virus Signatures, Virus Bulletin

International Conference, 1994, pp.178-184

[3] Mark Kennedy, Symantec AntiVirus Research Center,

Script-Based Mobile Threats, 2000.6.27

[4] Anil Somayaji, Steven Hofmeyr, Stephanie Forrest “Principles of Computer Immune

System”Proceedings of the workshop on New security paradigms workshop, 1997, Pages

75 ~82.

[5] Evgeny Kasperksy, Vadim Bogdanov, “Virus Analysis 1”, Virus Bulletin, April 1993,

Pages l2~13.

[6] Jeff Kephart “Automatic Extraction of Computer Virus Signatures”Virus Bulletin

International Conference, 1994, Pages 178~184.

[7] Mark Kennedy “Script-Based Mobile Threats”Symantec AntiVirus Research Center,

2000.

[8] Marko Helenius, “Automatic and Controlled Virus Code Execution System”, EICAR

Conference'95, 1995.

[9]“Prevalence Tables”Virus Bulletin, January~May 2001.

[10] Steve R. White, Morton Swimmer, Edward J. Pring, “Anotomy of a

Commercial-Grade Immune System”, IBM Thomas J. Watson Research Center

[11] Symantec Corporation, “Understanding Heuristics: Symantec' s Bloodhound

Technology”, Symantec White Paper Series, Volume XXXIV

- 222 -

[12] Sara Hedberg, “Combating Computer Viruses : IBM 's New Computer Immune

System”,IEEE Parallel & Distributed Technology, 1996 Summer.

[13] Vesselin Bontchev,“Future Trends in Virus Writing”, Virus Bulletin.

[14] Yoshiteru Ishida “The Immune System as a Prototype of Autonomous Decentralized

System : An Overview”Proceedings of the 3rd Int'l Symposium on Autonomous

Decentralized Systems(ISADS '97), 1997, Pages 85 ~92.

[15] J.Stojanovski, et al, “PALM OS: Problems and Potential solutions”, The 11th

International Virus Bulletin Conference, 2001

[16] J.Kaminski, “Not So Quiet on the Linux Front : Linux Malware II”, The 11th

International Virus Bulletin Conference, 2001

[17] G.Szappanos, “VBA Emulator Engine Design”, The 11th International Virus Bulletin

Conference, 2001

[18] F.Fernandez,“Heuristic Engine”, The 11th International Virus Bulletin Conference,

2001

[19] A. Shipp, “Heuristic Detection of Viruses Within Email”, The 11th International

Virus Bulletin Conference, 2001

[20] L. Lu, “Reducing False Positives in Behavior Blocking”The 11th International Virus

Bulletin Conference, 2001

[21] S. Forrest, et al, “Immulogy as Information Processing”, Design Principles for

Immune System and Other Distributed Autonomous Systems, Oxford Univ. Press, 2000

- 223 -

[22] T.Okamoto, “A Distributed Approach to Computer Virus Detection and

Neutralization by Autonomous and Heterogeneous Agents”, http://www. sys. tutkie. tut.

ac. jp/~ishida, 1998

윤영태 예흥진 조은선 고재영 코드 수정을 통한 스크립트 형태의 악성 이동 코드[23] , , , , “

대응 기법 정보과학회 추계학술발표회”, 2001 , 2001

정현철 커널기반 루트킷 분석 보고서 한국정보보호센터[24] ,“ ”, CERTCC-KR, 2000.11.21

[25] Alessandro Rubini & Jonathan Corbet, “Linux Device Drivers”, 2nd Edition, O'Reilly,

2001

[26] Plasmoid, “Solaris Loadable Kernel Modules”, http://www. infowar. co. uk/thc/, 1999

[27] Pragmatic, “Complete Linux Loadable Kernel Modules”, http://www. infowar. co.

uk/thc, 1999

[28] Timothy Lawless, “Saint Jude, The Model”, http://www. sourceforge.

net/projects/stjude, 2000

[29] Ames, S.R., Gasser, M., Schell, R.R., “Security Kernel Design and Implementation:

An Introduction”,IEEE Computer, Vol. 16, N. 7, 14 -22, 1983.

[30] R. Sekar. T. Bowen and M. Segal, “On Preventing Intrusions by Process Behavior

Monitoring”, Workshop on Intrusion Detection and Network Monitoring (lD '99) fo the

USENlX Association

[31] Sun Microsystems. Inc, “Writing Device Drivers”,2000

[32] Toby Miller, Detecting Loadable Kernel Modules(LKM), http://members. prestige.

net/ tmiller12/papers/1km. htm

[33] Ori Pomerantz , “Linux Kernel Module Programming Guide”,

http://www.linuxdoc.org/LDP/1kmpg/mpg. html, 1999

- 224 -

[34] W.R. Stevens, “Unix Network Programming”,2nd Edition, Prentice Hal1, 1998

[35] David A Rusling, “The Linux Kernel”, http://www.linuxdoc.org/LDP/tlk/tlk.html”,

1999

[36] Daniel Pierre Bovet, Marco Cesati, Understanding the Linux Kernel, Oreilly, 2000

[37] D Verworner, M Beck, M Dziadzka, Linux Kernel Internals 2nd Edition,

Addison-Wesley, 1999

[38] http://www.certcc.or.kr

[39] http://www.ahnlab.com

[40] http://www.antivirus.com

[41] http://www.hauri.co.kr

[42] http://www.symantec.com

[43] http://www.zdnet.co.kr/biztech

한국 트랜드마이크로[44] http://www. trendmicro.co.kr/

[45] http://www.cert.org/other_sources/viruses.html CERT Coordination Center

[29] http://www.commandcom.com/virus/index.html Command Software Systems

[30] http://www. f-secure.com/v-descs/ F-Secure Computer Virus Info Center

[31] http://www. anet. cz/alwil/viruses. htm Alwil Software

[32] http://www.microsoft.com/Korea/scripting/ MSDN

[33] http://www.autocontrol.co.kr/magazine/0010/105-111.htm

[34] http://www.siena.edu/antivirus/advanced.htm

- 225 -

[35] http://agn-www. informatik.uni-hamburg.de/vtc/naveng.htm Virus Test Center

[36] http://www.research.ibm.com/antivirus/ IBM

[37] http://www.ciac.org/cgi-bin/index/bulletins?al1 ClAC Bulletins

[38] http://www.cyberzone-inc.com/alerts/papa.shtml Cyber Zone

[39] http://www.virusbtn.com/OtherPapers/Trends/

[40] http://kb.indiana.edu/data/aioe.html

[41] http://www.math.utsa.edu/sphere/salingar/contr.arch.html

[42] http://www.pldaniels.com/signaturedb/technical.html SignatureDB

[43] http://www.big.net.au/~silvio/

[44] http://home.alphalink.com.au/~oleary/Virus/virusl.htm Tim O'Leary Anti Virus Site

[45]http://www.math.utsa.edu/sphere/salingar/StructurePattern.html The Structure of

Pattern Languages

[46] http://www.cyber.com/products/vfind/misc/vfind.html

- 226 -

부록 주요 웜 바이러스의 특징 및 증상A.

· VBS_POTOK.A(VBS_STREAM.A, New Generation of Drivers)

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : WINDOWS NT, 2000

바이러스 크기3. : 9262 Bytes

증상4.

사용자에게만 영향을 주며 의 주소록 중 처음부터WINDOWS NT, 2000 , Microsoft Outlook

명까지의 주소록에 자기자신을 복제하여 송신한다 아래는 으로 제품에50 . Sample mail MS

대한 정보를 담고 있는 듯하게 보인다.

Subject: New Generation of drivers.

Body: Microsoft has published new driver for all types Video Cards, compatible

with Windows 95/98/NT/2000/XP. You can read about It in attachment document.

Best wishes Microsoft.

Attachment: DRIVER.DOC.VBS

첨부된 파일을 실행하면 에 를 복사하고 시스템의 가/WINDOWS DRIVER.DOC.VBS , OS①

인지 체크한다 만일 아닐 경우 실행을 종료하나 가WINDOWS NT, 2000 . OS WINDOWS

이면 안에 를 집어 넣는다NT, 2000 ODBC.INI virus code .

을 디렉토리에 복사하고 실행하며 초 동안 대기한GO.VBS /WINDOWS/SYSTEM32 , 10②

다.

가 실행이 되면 가 디렉토리에GO.VBS NOTEPAD.VBS /WINDOWS/SYSTEM32/RAS③

생성되고 초 동안 대기한다10 .

초 후에 가 실행이 되면 의 주소록 중 번째까10 NOTEPAD.VBS Microsoft Outlook 1-50④

지의 주소로 위의 메일과 바이러스 프로그램을 송신한다.

또한 트로이목마의 성향으로 라는 사용자를 생성하고 이 사용자는 관리자 권Lord_Nikon⑤

한을 가지게 된다.

- 227 -

VBS_JOLIN.A(VBS/NiIoj-A, JOLIN.A, IRC-Worm.generic)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

바이러스 크기3. : 4584 Bytes

증상4.

을 통하여 전파되며MS Outlook and Internet Relay Chat, mIRC , “①

을 송신한다!!JOLIN_CAUGHT_NAKED!!!!JPG.VBS” .

자기 자신을 플로피 드라이브에 복사를 시도하고 모든 를 삭제한다, DLL, EXE, INF .②

내문서 폴더 안의 를 수정한다EXE, MP3, MPEG, ZIP .③

VBS_ IESTART . B(VBS_ IESTART. B2, IESTART. B)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. :Windows

바이러스 크기3. : 581 Bytes

증상4.

이 바이러스에 감염되면 의 시작 페이지가Internet Explorer①

으로 변경된다“http://www.passthison.com/r1/?did-you-win-something-this-time” .

VBS_LOVELETTR.BE(LOVELETTR. BE, VBS.LOVELETTER.A. LOVELETTER)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows, NT

바이러스 크기3. : 8168 Bytes

증상4.

가 되어진 계열 또는 계열에서 작동Windows Scripting Host(WSH) Install windows NT①

을 하며 아래의 샘플처럼 첨부하여 안 주소록의 모든 주소, 'JOKE.VBS' Microsoft Outlook

로 전파된다.

- 228 -

Subject:fwd:Joke

Message Body:None

Attachment:Joke.vbs

바이러스가 전파가 되면 을 뒤져Local disk, Network Driver②

의 확장자를 가진 과일“vbs”,“vbe”,“js”,“zip”,“css”,“doc”,“xls”, “htm”,“jpg”,“gif”,“mp3”,“mdi”

들을 찾아서 원본과일 을 원본파일 예 로, Name Name+.vbs ( :MyFile.css MyFile.css.vbs)→

바꾸고 그 파일안에 자신의 를 입력한다code .

그 후 순차적으로 원본파일을 파괴한다 또한 파일을 찾아 원본파일. “mp3”,“mdi”③

로 이름 변경 후 숨긴 명령을 통하여 숨긴다Name+.vbs windows .

VBS_HAPTIME.A(VBS_HAPTIME.A, Happy Time, VBS/Helper, HAPTIME.A)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

바이러스 크기3. : 9922 Bytes

증상4.

감염 후 을 통하여 그 주소록에 있는 모든 주소로Microsoft Outlook 'UNTITLED.HTM'①

파일을 첨부하여 전파가 되며 또는 옵션을 이용하여 보내진다, Send Forward .

매년 달 요일의 합이 이 되거나 이 프로그램이 실행한 적이 회가 되면 실행이+ 13 , 366②

되며 시스템 안의 들이 삭제된다, .exe, .dll file .

VBS_LOVELETTR.AS(LOVELETTR.AS, LOVELETTER.AS)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

바이러스 크기3. : 14548 Bytes

증상4.

- 229 -

감염이 되면 을 통하여 그 주소록에 있는 모든 주소로 전파가 된다Microsoft Outlook .①

매년 월 일에 바이러스 작동을 하여 시스템에 연결된 모든 을 해제하7 17 , network drive②

고 확장자가 인 모든 파일, .VBS, .VBE, .JS, .JSE, .CSS, .WSH, .SCT, .HTA, .JPG, .JPEG

들을 자기의 코드로 재작성하여 파괴시키고 또한 확장자가 인 파일들은, .MP3, .MP2

의 숨기기 옵션으로 숨긴다Windows .

VBS_Merlin.A(VBS/Merlin,VBS.Merlin.A@mm)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

바이러스 크기3. : Bytes

증상4.

라는 제목의 편지가 수신이 되며'WindowsXP Betatest' ,①

매월 일 바탕화면에 아이콘이 보이지 않게 한다- 2 : .

매월 일 재 부팅시 을 포멧시킨다- 4 : Hard disk .

매월 일 바탕화면에 아이콘이 보이지 않게 한다- 5 : .

매월 일 독일어 메시지가 화면에 출력된다- 7 :

VBS_Valentin.A(VALENTIN.A, VBS/Valentin@MM)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows 9x/2000

바이러스 크기3. : 6512 Bytes

증상4.

메일을 통해 확산되며 받은 메일을 오픈 시 감염되어 똑같은 메일을 주소록에 등록된 모①

든 사용자에게 발송한다.

인터넷 익스플로러 시작페이지를 변경하고 시스템 날짜가 일 일 일 일이면, 8 , 14 , 23 , 29 C②

드라이브의 모든 파일들을 아래와 같은 내용의 스페인어로 덮어씌우고 파일 확장자를 .txt

로 변경한다.

- 230 -

“'Hola, me IIamo One12 y voy a utilizar tus archivos para declararle miamor a Davinia,

la chica mas guapa del mundo. Feliz san Valentin Davinia. Eres la mas bonita y la mas

simpatica. Todos los dias a todas horas pienso en ti y cada segundo que no te veo es

un infierno. Quieres salir conmigo? En cuanto a ti usuario, debo decirte que tus ficheros

no han sido contaminados por un virus, sino sacralizados por el amor que siento por

Davinia.”

특징5.

이 웜은 의 메일기능을 이용해 증식활동을 하는 웜으로Microsoft Outlook Visual Basic

로 작성된 프로그램이므로 마이크로소프트의 혹은 스크Script Internet Explorer 5, Windows

립팅 호스트가 설치되어 있는 환경에서 동작한다 하지만 한국어 윈도우의 경우는. , startup

플더명이 영문버전과 다르므로 파일이 생성될 수 없고 발병하지 않는다,

VBS_SAN.A(SAN, VBS/San@M)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows 9x/2000

바이러스 크기3. : 4140 Bytes

증상4.

이 웜은 의 메일기능을 이용해 증식활동을 하는 웜으로Microsoft Outlook Visual Basic

로 작성된 프로그램이므로 마이크로소프트의 혹은 스크Script InternetExplorer 5, Windows

립팅 호스트가 설치되어 있는 환경에서 동작한다 메일을 통해 확산되는데 받은 메일을 오.

픈시 감염된다 그리고 똑같은 메일을 주소록에 등록된 전 사용자에게 발송하며 인터넷 익. ,

스플로러 시작 페이지를 변경한다.

특징5.

바이러스가 실행되면 바이러스는 텍스트 파일의 를 작성한다 웜은, INDEX.HTML . Internet

의 시작 페이지를 로 변경한다 다음에 웜은Explorer http://www.terra.es/personal2/sereson .

운영체제의 언어를 확인해 바이러스는 자기 자신의 복사본을 각각의 장소에 작성하고 다음,

번 의 부팅시마다 자동으로 바이러스가 실행되도록 설정을 변경한다Windows .

- 231 -

영어의 경우:

C: windows StartMenu Programs StartUp loveday14-b.hta.₩ ₩ ₩ ₩ ₩

스페인어의 경우:

C: windows menu Inicio Programas Inicio lovedar14-b.hta₩ ₩ ₩ ₩ ₩ ₩

파괴6.

시스템 날짜가 일 일 일 일이면 바이러스는 드라이브에 있는 파일을 삭제하8 , 14 , 23 , 29 , C

고 라는 폴더를 작성하고 서브 폴더를 그 중에 넣는다 하지만 한국어 윈,“happysanvalentin” , .

도우의 경우는 폴더명이 영문버전과 다르므로 파일이 생성될 수 없고 발병하지 않, startup ,

는다.

VBS_HARD.A(HARD.A, VBS.Hard.A@mm, VBS/Hard.A)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. :Windows 9x

바이러스 크기3. : 23268 Bytes

증상4.

을 통해 확산되는 으로 첨부된 파일을 실행 시Microsoft Outlook visual basic script worm

주소록에 등록된 모든 사용자에게 메일을 발송한다 시만텍사의. Antivirus Research Center

로부터 바이러스 경고 메시지로 가장하여 시만텍 라는 파일을 첨부해 메일을www. .com.vbs

보내는 방법으로 전파된다.

제 목 시만텍: FW: Anti-Virus Warning

본문:

-----Original Message -----

From:

To: : : : : : :

시만텍Subject: FW: Anti-Virus WarningHello,

There is a new worm on the Net. This worm is very fast-spreading and very

시만텍dangerous! has first noticed it on April 04, 2001.

The attached file is a description of the worm and how it repllcates itself. With

시만텍regards, F. Jones senior developer

첨부파일 시만텍: WWW. .COM.VBS

- 232 -

특징5.

첨부된 파일을 실행시 아래 파일들을 생성한다C: .₩

시만텍C: WWW. .COM.VBS₩

C: SWITCH. BAT₩

시만텍C: WWW. .COM.{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}₩

시만텍 시만텍C: WWW. .COM.HTA C: _SEND.VBS₩ ₩

C: MESSAGE.VBS₩

또한 웜은 레지스트리의 아래 경로에 값들을 추가한다.

- HKEY_Local_Machine SOFTWARE Microsoft WAB OE Done₩ ₩ ₩ ₩

값: “Hardhead_SatanikChild”

-

HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion Run₩ ₩ ₩ ₩ ₩

시만텍 값: “c: infected with Virus.vbs”₩ ₩

-

HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion Run₩ ₩ ₩ ₩ ₩

값 시만텍Outlook :“c: www. _send.vbs.”₩ ₩

- 233 -

위 값은 웜이 첨부파일을 복사해 메일을 보내는 기능을 하는 값이다.

- HKEY_CURRENT_USER Software Microsoft Internet Explorer Main Start Page₩ ₩ ₩ ₩ ₩

값 시만텍:“c: www. .com.{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}.”₩

의 시작 페이지를 시만텍사의 의 바이러스 경Internet Explorer Antivirus Research Center

고 메시지 페이지가 자동으로 열리도록 설정을 바꾸는 값이다.

-

HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion Run₩ ₩ ₩ ₩ ₩

값Message : “c: message.vbs.”₩ ₩

그리고 위에서 생성된 파일로 인해 시스템 날짜가 월 일인 경우, C: MESSAGE.VBS 11 24₩

아래와 같은 내용의 메세지 상자가 출력된다.

제목 “Some shocking news”

Don't look surprised!

It is only a warning about your stupidity Take care!

VBS_HOMEPAGE.A(VBS/SSI.GEN@MM, VBS/SSI.GEN)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

바이러스 크기3. : 2117 Bytes

증상4.

이 웜은 의 메일기능을 이용해 증식활동을 하는 웜으로Microsoft Outlook Visual Basic

로 작성된 프로그램이므로 마이크로소프트의 혹은 스크립Script Internet Explorer5 Windows

팅 호스트가 설치되어 있는 환경이 아니면 동작하지 않는다.

- 234 -

활동5.

의 설정을 이용하여 아래와 같이 라는 제목으로 메일이 배달된다Outlook , Homepage .

제목: Homepage

본문: Hi! You've got to see this page! It"s really cool : O)

첨부 파일: “HOMEPAGE.HTML.VBS”

특징6.

첨부된 파일을 실행시키면 의 안에 자신을 복사한 후 자신Windows C: Windows System₩ ₩

의 복사본을 첨부한 메일을 주소록에 등록된 모든 사용자에게 메일을 발송한다.

웜은 메일 발송 전에 아래 경로의 레지스트리 값을 체크한다.

장소 :HKEY_CURRENT_USER Software OnTheFly Mailed₩ ₩ ₩

레지스트리 값을 체크해 값이 인 경우 이미 메일 발송이 완료되었음을 의미하며 그렇지1 ,

않을 경우 값이 이거나 레지스트리 값이 존재하지 않는 경우 에만 메일을 발송하고 송신( 0 )

이 완료된 후 의 레지스트리에 해당 키 값을 등록한다 즉 웜에 의한 메일 발송은Windows . ,

번밖에 행해지지 않다는 것이 된다 메일을 송신뒤 아래의 의 홈페이지를 표시한다1 . URL .

http://hardcore.pornbillboard.net/shannon/1.htm

http://members.nbci.com/_XMCM/prinzje/1.htm

http://www2.sexcropolis.com/amateur/sheila/1.htm

http://sheila.issexy.tv/1.htm

이들의 는 모두 해외의 포르노 사이트이다 웜은 자신의 활동을 은닉하기 위해 메일을URL . ,

발송한뒤 받은 편지함이나 지운 편지함의 메일을 검색하고 라는 제목으로 된,“HOMEPAGE”

메일 즉 자신이 첨부된 메일이 존재하는지 확인 후 있으면 해당 메일을 삭제한다

- 235 -

VBS_MALAMAR.A(Anna Kournikova, SST)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼 가 인스톨되어 있는 환경2. : WSH Windows

증상3.

비쥬얼 베이직 웜 프로그램으로 감염시 자신의 카피를 폴더 보통 에Windows ( c: Windows)₩

작성하고 주소록 수신인 전원에게 메일을 송신한다, .

VBS_CARTOLINA.A(CARTOLINA.A, VBS_LOVELETTER.CD)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows 98

증상3.

스크립트 바이러스는 전자 메일을 통하여 전파된다 감염된 사용자의 주소VB . MS Outlook

록에 등록된 모든 사용자에게 파일을 첨부하여 메일을 스스로 전송한다CARTOLINA.VBS .

또한 이 바이러스는 의 기본 페이지를 변경한다 감염된 시스템에, Internet Explorer . MS

이 설치되어 있지 않으면 바이러스는 전파될 수 없다 또 바이러스는 주소록의 모Outlook , . ,

든 전자 메일 계정에 한번씩만 메일을 보낸다 그러나 가 다시 실행되면. , CARTOLINA.VBS ,

메일을 다시 보내게 된다.

VBS_LOVELETTER(LOVELETTER)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

증상3.

이 컴퓨터 웜은 감염 시 레지스트리 값을 변경하고 마이크로 소프트 아웃룩을 통해 첨부파

일 로 발송한다 채팅 룸을 통해서도 감염되고“LOVE-LETTER-FOR-YOU.TXT.vbs”email .

있으므로 주의가 요구된다.

- 236 -

VBS_Loveletter.kitty·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. :Windows

증상3.

파Snoopy.vbs, Hello-Kitty.TXT.vbs(C: Windows System),Winpower.vbs(C: Windows)₩ ₩ ₩

일을 생성하며 레지스트리 엔트리를 다음과 같이 변경한다.

HLM Software Microsoft Windows CurrentVersion RunSnoopy₩ ₩ ₩ ₩ ₩

HLM Software Microsoft Windows CurrentVersion RunServices WinPower₩ ₩ ₩ ₩ ₩ ₩

VBS_STAGES.A(STAGES.A)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows

증상3.

공유 을 통하여 전파가 된다Microsoft Outlook, Pirch, mlRC, drive .①

을 통해 전송된 편지는 파일이 첨부 되어있다E-mail “LIFE_STAGES.TXT.SHS” .②

바이러스가 실행이 될때 노트패드을 통하여 조크메시지를 보여준다, .③

VBS_NEWLOVE.A(NEWLOVE.A, VBS/Spammer.A)·

바이러스 유형 비주얼베이직 스크립트1. :

플랫폼2. : Windows 95/98/2000/NT

증상3.

사용자 시스템의 모든 디렉토리를 검색하여 모든 파일을 로 만들어 버린다 또한0 byte .

가 제대로 실행되지 않을 뿐 아니라 모든 데이터 파일 사용자 문서가 로 사Windows , , 0byte

용이 불가하게 된다.

- 237 -

JS_SEEKER.E(SEEKER, SEEKER.E, SURESEEKER)·

바이러스 유형 자바 스크립트1. :

플랫폼2. : Internet Explorer. Netscape

바이러스 크기3. :~6257 Bytes

증상4.

가 실행되면 의 시작폴더에 파일을 생성한다JS_SEEKER.A C: Window “ie.hta” . “ie.hta”「 」 ₩

는 다음번 시동 시 자동 실행 되도록 설정된다 영문을 제외한 한글버전과 일본어Windows .

환경에서는 시작 폴더의 경로가 다르기 때문에 는 작성되지 않고 자동 실행도 되지“ie.hta” ,

않는다 가 실행되면 라는 파일을 폴더에 작성한다 이것은. “ie.hta” “HOME.REG” Windows .

의 레지스트리 내용을 변경하기 위한 파일이다 레지스트리가 변경되면Windows . Internet

와 의 기본 페이지가 로Explorer Netscape Navigator http://www.sureseeker.com/search.htm

설정이 변경된다.

특징5.

이 프로그램의 소스 코드는 마이크로 소프트의 로 되어있으며Windows Script Encoder「 」

보통 홈페이지등 문서의 중에 기술된 가 실행 가능한 브라우저상에서 동작HTML JavaScript

한다.

JS_SEEKER.A(JS_SEEKER.B, JS/Seeker.B. SEEKER.A, JS.Trojan Seeker.b)·

바이러스 유형 자바 스크립트1. :

플랫폼2. : Windows

바이러스 크기3. : 6257 Bytes

증상4.

이 바이러스에 감염이 되면 감염된 시스템의 시작 페이지를 변경하고 아Internet Explorer ,

래의 사이트에 접속을 방해한다.

http://www.JetHomePage. com

http://www.searchengine2000.com

http://www.sureseek.com

- 238 -

JS_KAKWORM.A(KAKWORM.A, Kakworm.B, KAKWORM.A-M)·

바이러스 유형 자바 스크립트1. :

플랫폼2. : Windows

증상3.

매월 일 오후 시에 작동을 하며 의 서명부문을 수정한다 영어와 프랑스1 6 , Outlook Express .

버전에 적합하다.

- 239 -

부록 리눅스 커널 백도어 주요 코드 분석B.

1.RIAL

의 경우 자신을 은닉하기 위해서 을 가로챈다 커널 모듈을 숨기는 가장RIAL query_module .

보편적인 방법은 커널 내부의 에서 해당 커널 모듈에 대한 구조체 노드를kernel module list

끊는 방법이다 이 구현하고 있는 모듈 은닉 기능은 다음과 같이 구현되어 있다. RIAL .

- 240 -

- 241 -

시스템 콜은 모듈에 부수적인 정보를 얻을 때 사용되는 시스템 콜이며 그query_module ,

프로토타입은 다음과 같이 정의되어 있다.

int query-module(const char *name, int which, void *buf, size_t bufsize, size_t

*ret);

은 현재 적재되어 있는 커널 모듈을 가리키거나 의 값을 가질 수 있다 이name NULL . name

값을 가질 경우는 특정 모듈을 지칭하는 것이 아니라 커널 자체를 의미한다NULL . query

의 기능은 에 의해서 결정된다 의 가능한 값은 다음과 같다module which . which .

0ㆍ

항상 를 리턴한다 이것은 시스템 콜이 정상적으로 동작하는지를 확인하는데 사용된다zero . .

QM_REFSㆍ

이것은 이 가리키는 모듈을 사용하는 모든 모듈을 나열한다 이것은 의 반name . QM_DEPS

대 기능을 수행한다 이때 결과로 리턴되는 문자열을 문자로 분리되어 있으며 각각. , NULL ,

은 커널 모듈의 이름을 나타낸다 그 개수는 가 가리키는 공간에 저장된다. ret .

QM_DEPSㆍ

이것은 이 가리키는 모듈에 의해서 사용되는 모든 모듈을 나열한다 결과로 리턴되는name .

문자열을 문자로 분리되어 있으며 각각은 커널 모듈의 이름을 나타낸다NULL , .

QM_SYMBOLSㆍ

이것은 커널 또는 특정 모듈에 의해서 되는 심볼과 값을 나열한다 버퍼의 포맷은 다export .

음과 같은 형태를 가진다.

- 242 -

QM-INFOㆍ

이 은 이 가리키는 모듈에 대한 부가적인 정보를 리턴한다 출력 버퍼의sub-function name .

형태는 다음과 같다.

필드는 해당 커널 모듈이 위치하고 있는 커널 메모리 영역을 나타낸다 는 커널address . size

모듈의 크기를 의미한다 는 의 값이다 이. flags MOD_RUNNINC, MOD_AUTOCLAN mask .

들은 모두 해당 모듈의 현재 상태를 의미한다.

등과 같은 모듈 관련 시스템 유틸리티는 모듈에 대한 정보를 얻기 위해서insmod, lsmod

시스템 콜에 의존하고 있다 따라서 을 새로운 함수로 대체함으query_module . query_module

로써 적재되어 있는 커널 모듈의 정보를 숨길 수 있다.

2. Adore

- 243 -

를 실행시키는 사용자 프로그램의 옵션은 다음과 같다Adore .

파일 은닉h:ㆍ

은닉된 파일 복구u:ㆍ

권한으로 특정 프로그램 실행r: rootㆍ

값을 완전히 감추기R: PIDㆍ

제거U: adoreㆍ

값 은닉I: PIDㆍ

은닉된 값 다시 복구v: PIDㆍ

또한 는 를 이용하여 를 은닉한다 의 구조는 다음과 같다, Adore cleaner.o adore.o . cleaner.o .

- 244 -

위에서 은 현재의 커널 모듈 를 가리키는 포인터이다_this_module , cleaner.o . _this

는 직전에 적재된 커널 모듈을 가리키므로 를 의미한다_module.next cleaner.o adore.o .

가 를 가리키게 한다면 를 커널 모듈_this_module.next -> _this_module.next->next adore.o

리스트로부터 제거하는 결과를 초래한다.

3. RKit

- 245 -

또한 는 자신을 감추기 위해서 사용하는 커널 모듈을 가지고 있다 커널 모듈의 주요, Rkit .

구조는 다음과 같다.

- 246 -

위에서 가 커널 백도어를 가리킬 경우 는 의 값lmod->next lmod->next lmod->next->next

으로 설정된다 이렇게 함으로써 커널 백도어는 커널 모듈 리스트에서 그 노드가 끊어지게.

된다 커널 내의 함수 및 모든 커널 관련 시스템 콜은 커널 모듈 리스트를 기반으로 동작하.

므로 커널 백도어는 완전하게 은닉될 수있다.

4. Knark

본 분석 문서에서는 에서 동작하는 를 에서 동Linux kernel 2.2 knark 0.59 Linux kernel 2.4

작하도록 이식한 을 소스 코드 수준에서 분석한다knark 2.4.3 .

나 구조. Knark

커널 백도어 소스 코드 는 크게 다음과 같이 구성되어 있다knark knark.c .

기존의 시스템 콜을 저장하기 위한 함수 포인터 정의▶

시스템 콜 테이블 엔트리를 대체할 새로운 시스템 콜 선언 및 정의▶

- 247 -

각 기능을 수행하는데 사용되는 구조체 정의▶

- 248 -

설치된 에 대한 정보를 위한 디렉토리 엔트리 관련 구조체knark /proc/▶

원격 실행을 위한 구조체▶

나 함수별 세부 기능.

(1) init_module

이 함수는 이 커널에 적재된 후 가장 먼저 실행되는 함수로서 에 대한 초기화knark knark

작업을 수행한다 주요 내용은 다음과 같다. :

- 249 -

- 250 -

- 251 -

파일 은닉 관련 함수(2)

파일은 해당 디바이스 및 값을 통해서 유일하게 식별된다 은 은닉할 파일이나inode . knark

디렉토리에 대한 를 구조체에 관리한다(device #, inode #) knark_dev_struct .

이들 구조체는 다음 시스템 콜에서 참조되어 해당 파일을 은닉하는데 사용된다.

- 252 -

{

- 253 -

은닉 파일 리스트는 다음 함수에 의해서 생성된다.

- 254 -

프로세스 은닉 관련 함수(3)

- 255 -

네트웍 정보 은닉(4)

- 256 -

- 257 -

네트웍 정보 은닉(5)

- 258 -

- 259 -

- 260 -

응용 프로그램과의 통신(6)

는 시스템 콜을 확장하여 응용 프로그램으로부터 각종 정보를 제공받는knark settimeofday

다.

- 261 -

- 262 -

부록 솔라리스 커널 백도어 주요 코드 분석C.

1.SLKM

에는 위의 기능을 수행하기 위한 변수들이 다음과 같이 정의되어 있다slkm .

이것은 매직스트링으로 파일이나 프로세스가 이 문자열을 포함한다면 와MAGIC : ls, psㆍ

같은 사용자 명령어로 볼 수 없다 또한 디렉토리가 이 문자열을 포함하고 보안 플래그가.

셋팅되어 있다면 사용자는 이 디렉토리를 보거나 진입할 수 없다 파일의 내용도 마찬가지, .

로 감추어진다.

명령어를 사용하여 보안 플래그를 설정하거나 해제할 수 있는 다KEY : touch Key .ㆍ

사용자가 만약 로 설정되어있는 명령을 실행하면OLDCMD & NEWCMD : OLDCMDㆍ

에 있는 명령어가 실행된다NEWCMD .

사용자의 가 이 값과 일치한다면 그 사용자가 시스템에 로그인할 경우 자동적으UID : uidㆍ

로 의 를 가지게 된다root id .

커널 모듈을 작성하기 위해서는 와 와 와 같은 구조체들DDI, SunDDI modlinkage mod_ops

을 우리에게 제공하는 헤더를 포함시켜야 한다 모듈의 첫 번째 라인은 다음과 같다modctl . .

- 263 -

}:

위와 같이 모듈안에 몇가지 외부 구조체를 포함시키고 구조체안에 커널모듈의 이, , modmisc

름을 정의한다 구조체는 를 참조하고 커널에게 이것이 디바이스 드라. modIinkage modImisc

이버가 아니고 에 의해 보여지는 가없음을 표시한다 만약 구조modinfo info flag . modlmisc

체안에 공백문자로 커널 모듈의 이름을 변경한다면 그것이 로드되었고 가 예약되었더라, Id

도 는 그 모듈을 보여주지 않는다 이것은 모듈을 숨길수 있는 유용한 형태이고 모modinfo .

듈은 여전히 만 안다면 언로드 시킬 수 있다 모듈이 로딩되기 전에 모듈의 리스트를 확ID .

인하여 모듈 를 얻을 수 있다 의 구조체에 커널 모듈의 이름을 주었을때와Id . flkm modlmisc

공백으로 처리했을 때 에 의해 보여지거나 보여지지 않을 수 있다 그러나 모듈을modinfo .

로드하기전에 모듈 리스트를 확인하여 모듈 를 추측할 수 있다id .

솔라리스는 명령어를 사용하여/usr/sbin/modload, /usr/sbin/modunload, /usr/sbin/modinfo

커널모듈을 제어하며 모듈의 컴파일 및 로드 언로드는 다음과 같다 컴파일시 이것이 일반, / .

적인 실행파일이 아니라 커널 모듈임을 알리기 위해 옵션을 사용한다 컴파일 후에는 항상.

모듈의 옵션으로 오브젝트 파일을 링크시켜야 한다 그렇지 않으면 커널 모듈 링커는“-r” .

모듈을 링크할 수 없기 때문에 모듈은 로드되지 않는다.

# gcc -D_KERNEL -DSVR4 -DSOL2 -c flkm. c

# ld -o flkm -r flKm.o

및 그 외의 모든 커널 백도어는 시스템 콜 테이블 값을 변경하여 자신의 파일 프로세slkm ,

스 커널 모듈의 이름을 감춘다 솔라리스의 시스템 콜 테이블이 선언은 다음과 같다, . .

- 264 -

다 의 주요 함수. slkm

함수에서 다음과 같이 시스템콜의 값을 다른 값으로 변경한다_init() .

는 명령어에 의해 사용되는데 명령어로 파일 내용 및 디렉토create64 touch touch <key>

리 숨김 기능을 켜거나 끄기 위해 를 변경한다create64 .

- 265 -

솔라리스에서 읽거나 쓰기위해 파일을 여는 경우에 시스템 콜이 사용된다 다음의open64() .

변경된 시스템 콜은 열려지는 파일의 이름에 매직 스트링이 포함되어 있고 보안 플래그가

셋팅되어 있다면 이라는 에러 메시지를 반환한다“No such file or directory” .

시스템에서 현재의 디렉토리를 바꾸기 위해서는 시스템 콜을 사용한다 아래 코드는chdir() .

디렉토리 명에 매직 스트링에 있고 보안 플래그가 셋팅되어 있다면 변경된 시스템chdir()

콜은 이라는 에러 메시지를 반환한다“No such file or directory" .

- 266 -

사용자가 또는 와 같은 명령어를 사용하면 파일 시스템의 일부를 읽어 그 내용ps top proc

을 반환한다 프로세스의 호출자와 실행된 파일에 관한 정보를 가지는 파일은.

이다 이파일의 내용은 안에 정의 되어 있다/proc/<pid>/psinfo . /usr/include/sys/procfs.h .

- 267 -

구조체의 크기는 항상 일정하다 멤버는 실행된 파일명과 따라오는 인자들psinfo_t . psargs

을 포함한다 파일이 열려질 때마다 변경된 시스템 콜은 특별한 플래그를 셋. psinfo open()

팅한다 가 다음에 호출될 때는 이 파일을 읽게된다 리다이렉트 된 함수는 그. read() . read()

파일의 크기가 와 같은지 확인하고 만약 같다면 콜은 의 플래그를 특별psinfo open64 psfiles

한 파일 디스크립터로 셋팅한다 시스템콜은 구조체에 그 파일의 내용을 복. read() psinfo_t

사하고 실행된 파일을 매직 스트링과 비교한다 매직 스트링이 발견된다면 에러를 발생시키.

고 프로세스 리스트에서 엔트리를 출력하지 않는다proc .

- 268 -

아래의 코드는 정의된 버퍼에 실행할 새로운 명령을 덮어써서 사용자가 실행한 명령을 대체

하여 의 명령을 실행한다NEWCMD .

- 269 -

- 270 -

부록 커널 백도어 탐지 툴 코드 분석D.

1.ChkRootkit

- 271 -

- 272 -

2. Kstat

커널에 적재되어 있는 모듈 리스트를 획득하는 주요 코드는 다음과 같다.

- 273 -

- 274 -

위에서 커널 메모리 영역인 에서 데이터를 읽어오는 것은 함수를 통해서/dev/kmem kread()

이루어지며 함수의 구조는 다음과 같다, kread() .

위에서 볼 수 있듯이 자체는 커널 모듈이 어느 메모리 공간에 위치하고 있는지 알 수, kstat

없다 커널 모듈이 위치하고 있는 공간을 찾기 위해서는 하나의 커널 모듈을 적재한 다음. ,

을 이용해서 그 모듈에 대한 정보를 수집함으로써 가능하다 위에서 이러한query_module .

과정은 다음 라인에 의해서 수행된다.

addr=find_module_addr ();

함수는 다음과 같이 구현되어 있다find_module_addr() .

- 275 -

- 276 -

위에서 보는 바와 같이 에 첫 번째 파라미터로 을 전달하면 현재 커널query_module() NULL

에 적재되어 있는 모든 모듈의 이름을 알 수 있으며 를 전달하면 특정 모듈에 대, QM_INFO

한 정보를 구조체로 전달받을 수 있다 이 구조체는 다음과 같이 구성된다module_info . .

은 파일에서 시스템 콜의 주소를 가져옴으로써 시스템 콜 테이블이kstat System.map LKM

에 의해서 변조되었는지를 확인할 수 있다.

특정 시스템 콜 이름에 해당하는 커널 함수가 커널 메모리에 위치하는 주소 값은 다음 함수

와 같이 을 검색하여 확인할 수 있다System.map .

- 277 -

파일에서 시스템 콜에 대한 라인은 다음과 같이 정의된다System.map fork .

c01058f0 T sys_forK

위에서 은 커널 메모리 주소이며 는 시스템 콜에 해당하는 커널 함수c01058f0 , sys_fork fork

인 를 의미한다 이때 는 맨 처음에서 정확히 바이트 위에 위치한다sys_fork . , sys_fork 11 .

현재 실행중인 커널에서의 시스템 콜 테이블과 위에서 구한 파일에서의 시스System.map

템 콜 함수 주소를 비교하는 것은 다음 함수를 통해서 구현된다.

- 278 -

위에서 현재 커널의 시스템 콜 테이블이 라는 심볼 이름으로 존재한다는 사실을SYSCALL

이용해 다음과 같은 코드를 통해서 정보를 얻고 있다.

- 279 -

Kaddr=find_kmem_offset(SYSCALL):

이것은 심볼의 값이 위치하고 있는 커널 메모리 공간의 주소를 리턴한다SYSCALL .

함수의 구조는 다음과 같다find_kmem_offset() .

- 280 -

위에서 시스템 콜에 파라미터를 전달하여 현재 커query_module() NULL, QM_SYMBOLS

널에 존재하는 모든 심볼 이름들을 얻고 이를 이용해서 우리가 원하는 커널 심볼인,

의 값이 위치하고 있는 커널 메모리 영역의 주소를 얻는다 에 전SYSCALLS . query_module

달되는 출력 버퍼는 다음과 같은 형태를 가진다.

위의 구조체에서 은 전체 출력 버퍼 주소에서 해당 커널 심볼의 이름module-symbol name

을 나타내는 문자열이 존재하고 있는 위치의 오프셋이다 따라서 실제 문자열은 다음과 같. ,

이 출력 버퍼의 첫 주소 값을 더해 준 다음 문자열 비교를 해야 한다.

3. carbonite

의 커널 모듈인 는 다음과 같은 함수를 가지고 있다Carbonite carbonite.o init_module() .

- 281 -

결국 프로세스 테이블에 대한 모든 검사는 함수에 의해서 수행됨을 알find_special_tasks()

수 있다 실제 함수는 거의 대부분의 공간을 디렉토리에. find_special_tasks() /tmp/

라는 디렉토리를 만들고 그곳에 라는 파일에 결과 데이터를CARBONITE CARBONITE.txt

저장하는 기능을 수행한다.

는 프로세스가 에 의해서 은닉된 것인지를 판별하기 위해서 프로세스 플래그Carbonite LKM

를 이용한다 주요 코드는 다음과 같다. .

위에서 현재 프로세스의 플래그와 비교되는 정상적인 프로세스 플래그는 다음과 같이 정의

된다.

- 282 -

함수는 실행중인 프로세스가 가질 수 있는 정상적인 프로세스 플래그find_special_tasks()

마스크를 다음과 같은 코드를 통해서 생성한다.

따라서 만일 다음과 같은 조건문이 참이라면 해당 프로세스는 어떠한 에 의해서 숨겨, LKM

진 프로세스라고 판단할 수 있다.

4. StMichael

함수는 다음과 같이 구현된다init_module() .

- 283 -

- 284 -

커널 백도어는 이 실행된 이후 또는 이 실행된 이후에 커널 내init_module() delete_module()

부의 자료 구조를 변조시킬 수 있다 따라서 은 다음과 같은 함수의. StMichael init_module()

함수를 정의한다wrapper .

에서 구현하고 있는 시스템 콜 테이블의 모니터링은 다음과 같이 구현된다StMichael .

- 285 -

- 286 -

리눅스에서 커널 타이머는 다음과 같은 두 가지의 요소로 구성된다.

경과 시간 (expired time)ㆍ

핸들러 함수 (handler function)ㆍ

리눅스 커널 타이머 자료 구조는 다음과 같다.

타이머 경과시간의 값은 단위이다 커널 전역 변수 는 시스템이 부팅될 때 으jiffies . jiffies 0

로 초기화된다 는 리눅스 커널 내부에서 하드웨어 타이머 인터럽트가 발생할 때마다. jiffies

씩 증가한다 는 절대값이므로 의 값이 값과 같거나 클 때 타이머 핸들1 . jiffies expires jiffies

러가 호출된다.

커널 타이머를 설정하기 위해서는 우선 구조체를 초기화해야 한다 이것은timer_list .

함수를 통해서 가능하다 함수의 프로토 타입은 다음과 같init_timer . init_timer, add_timer

다.

는 의 필드를 으로 초기화하는 커널 인라인 함수이다 초기화된init_timer timer prev, next 0 .

타이머는 경과 시간과 핸들러 필드를 지정한 후 커널 함수를 통해서 전역 커널add_timer

타이머 리스트에 추가된다.

- 287 -