untitled

Similar documents
*2008년1월호진짜

Secure Programming Lecture1 : Introduction

UDP Flooding Attack 공격과 방어

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

< 목차 > 1. 악성코드은닉동향요약 1 2. 홈페이지은닉형악성코드통계 2 - 유포지탐지 국가별현황 2 - 대량경유지가탐지된유포지 TOP 악성코드유형별비율 4 - 악성코드취약점유형별비율 4 - 악성코드수집및분석결과 5 - 경유지탐지 업종별비율 9 3. 악성코

Windows 8에서 BioStar 1 설치하기

<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

제20회_해킹방지워크샵_(이재석)

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo

System Recovery 사용자 매뉴얼

*****

untitled

목차 1. 개요 배경 파일정보 상세분석 SMB 취약점공격흐름 특징적인행위 대응

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

ActFax 4.31 Local Privilege Escalation Exploit

07_alman.hwp

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

#WI DNS DDoS 공격악성코드분석

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

< F5320B4EBC0C0C0E5BAF1BFA120B4EBC7D120BAB8BEC8B1E2B4C920B0A1C0CCB5E528C3D6C1BE292E687770>

<C0CCC8ADC1F82E687770>

Win-Trojan/Scar U 악성코드분석보고서 Written by extr Win-Trojan/Scar U 악성코드분석보고서 Page 1 / 14

DBPIA-NURIMEDIA

게시판 스팸 실시간 차단 시스템

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft Word - src.doc

Microsoft PowerPoint - chap01-C언어개요.pptx

1217 WebTrafMon II

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

PowerPoint Template

인터넷 비즈니스의 필수 요소, 트랜잭션 시큐리티 서비스 인터넷 비즈니스는 기업 영리 활동에 있어서 부가적인 서비스가 아닌 사업을 영위해 가는데 중요한 역할을 하고 있습니다. 특히, 인터넷 쇼핑몰, 인터 넷 뱅킹, 사이버 트레이딩, 전자정부서비스, 온라인 게임, 인터넷

ÀÎÅÍ³Ý ÁøÈï¿ø 3¿ù ÀúÇØ»ó

ÀÎÅÍ³Ý ÁøÈï¿ø 5¿ù

악성코드분석보고서 (Lucci.exe) 작성자 : 김진태 1

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론


<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint - G3-2-박재우.pptx

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

*

DoS 공격의유형분석및탐지방법 (Monitoring and Investigation of DoS Attack) 영산대학교 사이버경찰학과 이성진

서현수

JVM 메모리구조

Observational Determinism for Concurrent Program Security

Microsoft Word - NAT_1_.doc

<31305FBEC6C0CCC5DB2E687770>

슬라이드 1

Microsoft PowerPoint - 권장 사양

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

슬라이드 1

bn2019_2

Windows Server 2012

[Brochure] KOR_TunA

1

The Pocket Guide to TCP/IP Sockets: C Version

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

TGDPX white paper

Cisco SDN 3.0 DDoS DDoS Cisco DDoS Real Demo 2008 Cisco Systems, Inc. All rights reserved. 2

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

네트워크 안정성을 지켜줄 최고의 기술과 성능 TrusGuard는 국내 최초의 통합보안솔루션으로서 지난 5년간 약 4천여 고객 사이트에 구축 운영되면서 기술의 안정성과 성능면에서 철저한 시장 검증을 거쳤습니다. 또한 TrusGuard는 단독 기능 또는 복합 기능 구동 시

컴퓨터관리2번째시간

°í¼®ÁÖ Ãâ·Â

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

PowerPoint 프레젠테이션

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

< FC1A4BAB8B9FDC7D D325FC3D6C1BEBABB2E687770>

Microsoft Word - [Windows Hook] 6.HideProcess.doc

신종파밍악성코드분석 Bolaven

ISP and CodeVisionAVR C Compiler.hwp

(Microsoft PowerPoint - NRMWFKPIIYBC [\310\243\310\257 \270\360\265\345])

NTD36HD Manual

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

chap 5: Trees

PowerPoint 프레젠테이션

<4D F736F F D2033BFF920BECBBEE0BFF9B0A3BAB8B0EDBCAD2E646F6378>

학습영역의 Taxonomy에 기초한 CD-ROM Title의 효과분석

04-다시_고속철도61~80p

PowerPoint Template

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

EDB 분석보고서 (04.06) ~ Exploit-DB( 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time-

RHEV 2.2 인증서 만료 확인 및 갱신

< C6520B1B8C1B6BFCD20BEF0C6D0C5B7C0C720BFF8B8AE2E687770>

제목 레이아웃

1

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

악성코드분석보고서 학번 작성자김진홍작성일 2015 년 5 월 14 일 Keyword Downloader, Mouse cursor modification, Registry modification 1. 개요 1.1 요약 해당악성코드는악성코드를다운로드하는역할

index 1. DOS 1.1 Definition of DoS (Denial Of Services) 1.2 DoS attack in Network 1) ICMP Flooding 2) SYN Flooding (SYNF) 3) Land Attack 2. DDOS 2.1 D

지능정보연구제 16 권제 1 호 2010 년 3 월 (pp.71~92),.,.,., Support Vector Machines,,., KOSPI200.,. * 지능정보연구제 16 권제 1 호 2010 년 3 월

Microsoft Word - SKINFOSEC-CHR-026- Mass SQL Injection 탐지 우회분석 보고서.doc

solution map_....

Microsoft PowerPoint - thesis_rone.ppt

Transcription:

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

제출문 한국정보보호진흥원원장귀하 본보고서를 악성코드유형에따른자동화분석방법론연구 의최종연구보고서로제출합니다. 2009 년 6 월 15 일 수탁기관 : 한양대학교산학협력단연구책임자 : 교수임을규 ( 한양대학교정보통신대학 ) 참여연구원 : 연구원강부중 ( 한양대학교정보통신대학 ) 연구원한경수 ( 한양대학교정보통신대학 ) 연구원한동석 ( 한양대학교정보통신대학 ) 연구원임광혁 ( 한양대학교정보통신대학 ) 연구원유성훈 ( 한양대학교정보통신대학 ) 연구원김인경 ( 한양대학교정보통신대학 ) 연구원김혜선 ( 한양대학교정보통신대학 ) - 1 -

요약문 1. 제목악성코드유형에따른자동화분석방법론연구 2. 연구개발의목적및중요성 1) 연구개발의목적매일새로이발견되는악성코드의수와종류는지속적으로증가하고있는데, 그이유는금전적인이득을목적으로공격자가취약점을계속해서찾아내고, 기존의악성코드와자동제작도구를이용하여신 변종을만들어내기때문이다. 또한악성코드의감염에의한사용자피해역시급속도로증가하고있어서악성코드에대한더욱신속한대응이절실히요구되고있다. 기존의대응기술들은악성코드를수집하고분석하는과정에수동적인작업을필요로하는부분이많기때문에신속한대응을어렵게하고있다. 또한안티바이러스및안티스파이웨어등의제품공급자들마다진단을다르게하여사용자들이혼란을겪기도한다. 본연구과제에서는좀더신속하게대응할수있도록넷봇 (Netbot) 의악성행위및특징을분석하여자동화분석방법을제시하고, 웜, 바이러스, 트로이목마, 애드웨어등각각의악성코드별특징분석을확장적용하여악성코드유형에따른효과적인자동화분석방법에대한연구를목표로한다. - 3 -

2) 연구개발의중요성최근컴퓨터및인터넷의보급이크게확산됨에따라광범위한정보통신망구축이가능해졌으며, 각종정보공유, 전자상거래등이가능하게되었다. 그러나이와더불어정보위조및변조, 정보유출, 웜이나바이러스전파등과같이정보네트워크에서의보안침해부작용도꾸준히증가하고있다. 그중에서도분산서비스거부 (DDoS) 공격, 스팸발송, 해킹, 개인정보유출등으로인한사용자들의피해가급증하고있다. 이러한공격들은대부분사용자컴퓨터에감염된악성코드에의해이루어진다. 악성코드는보안이허술한일반사용자컴퓨터에침투하여공격자를노출시키지않고다른공격들을수행하는중간노드역할을한다. 최근에는이러한악성코드에감염된컴퓨터들이거대한봇넷 (Botnet - 악성코드에감염된여러컴퓨터들이연결된네트워크 ) 을형성하여더광범위한사이버범죄에악용되고있다. 악성코드수와종류의지속적인증가는소프트웨어개발기술발전에도불구하고시스템의취약점을찾는기술이점차정교해지고다양해지고있으며, DDoS 공격도구인넷봇 (Netbot) 외에도각종악성코드의자동제작도구및기술의보편화로인해손쉽게신 변종악성코드를작성하는것이가능하기때문이라고할수있다. 그러나악성코드에대한대응방법은아직까지는대부분수동으로악성코드를탐지 분석하여대응하기때문에악성코드유포속도에크게뒤처지고있어악성코드에의한직접적인피해및 2차적인피해는급속도로확산되고있는실정이다. 따라서본연구를통해서개발되는악성코드의자동화분석방법은다양한악성코드에적용되어보다효율적인분석이이루어질수있으며, 이를통해신속하게대응함으로써악성코드에따른피해확산을최소화시킬수있을것으로판단된다. - 4 -

3. 연구개발의내용및범위 본연구과제에서는악성코드유형에따른자동화분석방법을마련하기위하여다음과같은연구내용을수행한다. o 악성코드의정의및분류방법, 유형별특징분석 - 악성코드의유형별정의와분류방법조사 - 악성코드의유형별특징분석 - 기존의악성코드자동분류방법조사및분석 o 넷봇의악성행위및특징분석 - 넷봇을이용한공격및악성행위분석 - 정적분석을통한넷봇의특징파악 o 분석방해기술 ( 안티디버깅및분석우회방법 ) 조사 - 안티디버깅기술의유형및동작방식조사 - 가상머신탐지기술조사 o 루트킷및커널악성코드유형분석 - 루트킷, 커널악성코드의유형및동작방식조사 o 악성코드의자동화분석방법론도출 - 악성코드가사용하거나변경하는파일및레지스트리분석 - 저장매체사용의모니터링 - 악성코드의도메인접속분석 - 코드인젝션분석 - 악성코드분석프로세스에대한자동화 - 5 -

4. 연구결과 현재까지의연구결과내용은다음과같다. o 중간연구보고서 중간연구보고서에서는악성코드유형에따른자동화분석방법론연구를위한선행단계로써악성코드의정의및분류방법과유형별특징을분석하고, 기존의악성코드자동분류방법에대하여조사하였으며, DDoS 공격도구인넷봇 (Netbot) 의동작방식과악성행위의특징을분석하였다. 또한악성코드중에서트로이목마가사용하거나변경하는파일, 레지스트리를조사하여부록에첨부하였다. o 최종연구보고서 최종연구보고서에서는악성코드유형에따른자동화분석방법론을제시하였다. 이는특징도출단계, 상호작용단계, 자동화분석단계를포함한다. 특징도출단계에대해서는넷봇의 PE 파일을분석함으로써넷봇이사용하는 API를분류하였고, Bloom Filter를이용하여함수사용에따른 Bit Array를추출하였다. 상호작용단계에서는도출된특징을 DB에저장하기위해분석가와의상호작용을제시하였다. 또한자동화분석단계에서는 Bloom Filter의결과로추출한 Bit Array를이용하여넷봇간의코드유사도및넷봇과다른프로그램과의코드유사도를계산하였다. - 6 -

5. 활용에대한건의 본연구과제에서도출되는악성코드의자동화분석방법론은다음과같이활용될수있다. o 자동분석을통해넷봇이나다른악성코드에대하여일치할가능성및변종악성코드의가능성에대한확인 o 실제악성코드자동분석을통해신속한대응및피해확산최소화 6. 기대효과 본연구과제에서도출되는악성코드의자동화분석방법론은급격히증가하고있는악성코드에대하여보다효율적인분석방법을제공할것이다. 악성코드의분석에소모되던시간을크게줄이고, 유사악성코드에대한불필요한분석을제거하여새로운악성코드에대응할수있는시간을단축함으로써악성코드로인한사회, 경제적파급효과를완화시킬수있을것으로기대된다. 아울러본연구과제를통하여배출되는인력들은향후국내정보보호업계에진출하여정보보호산업발전에크게기여할수있을것으로기대된다. - 7 -

SUMMARY 1. Title Automated Malware Analysis Mechanism 2. Purpose and importance of the study 1) Purpose Nowadays, the attackers are trying to find new vulnerabilities of applications and making variance of malwares using automated tools which can make a malware. Therefore, the number of malwares is increasing day after day, the number of compromised hosts is also increasing. So that, for mitigating infection rate, rapid malware analysis method is needed. The existing methods for collecting and analyzing malware are progressed manually. Therefore, they cannot rapid response to malware outbreaks. Also, Users are into confusion because the name of malwares which produced by anti-virus and anti-spywares are differ from each other on the same malware. In the research, we will propose a method which cans rapid response against newly malwares using automated malware analysis mechanism. The mechanism extracts features and malware behaviors automatically. Even this system is built based on NetBot mechanism. The mechanism extracts features and malware behaviors automatically. Even this system is built based on NetBot which is one of the most harmful malwares, our research goal is extending - 8 -

the system to apply to other malwares too. 2) Importance The well constructed infrastructure of wide open communication network and popularization of computer make user share information and do e-commercial on the Internet such as internet banking, e-bay etc. But as these growths, The information network threats(information forgery, Information leakage, and Spreading malwares) also are increased. From those increase, The number of the computer users who are suffered from Distributed Denial of Service(DDoS) attack, sending spam mails, hacking servers, and personal information leakage are increasing. These attacks are occurred from a computer which is compromised by malware. A malware infects a vulnerable computer to attack other computers with hiding attacker's identity. Nowadays, the compromised computers cooperate with each other for attacking computers such as DDoS, sending spam etc. This cooperated system is called 'Botnet - a network of computers with compromised computer'. Even the software development technology has been evolving, the number of malwares and its types also are increasing because the exploit code is automatically made by tools. But the response methods are still progressed manually. Therefore the response methods cannot reach propagation speed of malwares. The automated malware analysis mechanism which we propose will be applied to analyze malware, so that the analyze process will be efficient. It can reduce the time of analyzing malware, we can minimize the damage from the malware. - 9 -

3. Contents and scope of the study In this research, We will perform following acts for making automated malware analysis mechanism. o Analyze definition and classification of malware, extracting features of malware by its type - Survey of definition of malware and classification method - Analyze the features of malware by its type - Survey and Analyze the exisiting automated malware classification method o Analyze features and behaviors of Netbot - Analyze attack patterns and behaviors of Netbot - Extract the features of Netbot using statistic analysis o Survey Anti-analysis technique(anti-debugging and analysis bypassing) - Research anti-debugging technique - Survey virtual machine detecting and analysis bypassing techniques o Analyze classification of rootkit and kernel malware - Survey classification and mechanism of rookit - Derive efficient rootkit analysis method o Derive automated malware analysis mechanism - Analyse files and registries which are used by malware - Monitor storage medium - Analyse internet domain which are used by malware - Analyse code injection - 10 -

- Automate the malware analysis process 4. Results of the study The following are the results of this project so far: o Mid-term report In midterm report, we carried out a pre-stage for searching automated malware analysis mechanism. The stage is consisted of defining concepts and classes of malware, surveying the existing automated analysis systems, and extracting behaviors and features of Netbot. Also, we researched modified files and registries which are used by Torjan Horse one of the malware. ofinal report In final report, we proposed automated malware analysis methodology. It includes the feature extraction phase, analyst interaction phase, automated analysis phase. In feature extraction phase, we analized Netbot's PE file, and classified API which are used in Netbot. In addition, we extracted the Bit Array by using Bloom Filter and calculated code similarity between Netbot and other programs using the result of Bloom Filtering. 5. Suggestion about practical use of the project The result of the research will be applicable to below factors o Derive similarity and variance of malware o Rapid response to outbreak malware and Mitigate spreading of - 11 -

malwar 6. Expected Effects The automated malware analysis mechanism which is proposed in this research will offer efficient malware analyzing method. The time which spend to analyze malwares, will be decreased. Also, the unnecessary malware analyzing will be removed. Therefore, we expect that the damage of social, economic from the malware will be mitigated. Human resources who work in this project will contribute the information security industry of Korea. - 12 -

목 차 제 1 장서론 19 제 1 절연구의목적및필요성 19 제 2 절연구내용및연구방법 21 제 2 장악성코드의개요 27 제 1 절악성코드의정의 27 제 2 절악성코드의감염경로 30 제 3 절악성코드의분류 31 제 4 절악성코드의명명법 36 제 5 절악성코드가사용 / 변경하는파일, 레지스트리 38 제 3 장분석방해기술 41 제 1 절실행압축기법 41 제 2 절디버거탐지기법 42 제 3 절코드혼란 (Obfuscation) 기법 43 제 4 절가상머신탐지기법 45 제 4 장커널기반루트킷 49 제 1 절개요 49 제 2 절특징 50 제 3 절동작방식 51 제 5 장기존의악성코드자동분류 분석방법 55 제 1 절정적코드분석 55 제 2 절동적행위분석 58-13 -

제 6 장 Netbot의특징분석 61 제 1 절개요 61 제 2 절 Netbot의공격기능 62 제 3 절 Netbot의행위분석환경구성 66 제 4 절 Netbot의특징 68 제 5 절 Netbot의공격트래픽 72 제 6 절 Netbot의 Code Injection 76 제 7 장악성코드유형에따른자동화분석방법 85 제 1 절자동화분석방법 85 제 2 절특징분석환경 87 제 3 절특징도출단계 95 제 4 절상호작용단계 116 제 5 절자동화분석단계 119 제 6 절 DB의구성 122 제 8 장연구결과및향후연구진행방향 127 제 1 절연구결과요약 127 제 2 절향후연구방향 129 부록부록 1. 레지스트리 131 부록 2. 운영체제 / 시스템에서사용되는프로세스 136 부록 3. 악성코드가사용 / 변경하는파일, 레지스트리 138 부록 4. Netbot의 Import Function 비교 158 부록 5. Python 스크립트 162-14 -

그림목차 ( 그림 1-1) 연도별악성코드의증가 - 국내 20 ( 그림 2-1) 악성코드판별트리 35 ( 그림 3-1) 가상머신환경 45 ( 그림 3-2) 가상화하드웨어 46 ( 그림 4-1) SSDT Hooking 개념도 52 ( 그림 4-2) SSDT Hooking 52 ( 그림 5-1) 제안한방법의순서도 57 ( 그림 5-2) 제안한방법의 5단계 58 ( 그림 6-1) Netbot의동작개념도 66 ( 그림 6-2) 좀비와중계사이트사이의통신 72 ( 그림 6-3) C&C에대한좀비의연결시도 73 ( 그림 6-4) C&C와좀비의연결설정및정보전송 73 ( 그림 6-5) 좀비에대한공격명령전송 74 ( 그림 6-6) 공격패킷전송 74 ( 그림 6-7) NetNtEx.dll 파일확인불가능 77 ( 그림 6-8) NetNtEx.dll 파일존재확인 77 ( 그림 6-9) PE Explorer를통해분석한 NetNtEx.DLL 파일 78 ( 그림 6-10) Netbot의 Agent 생성 79 ( 그림 6-11) 감염전후의레지스트리비교 80 ( 그림 6-12) 레지스트리값에명시된 DLL의위치 80 ( 그림 6-13) 감염후서비스목록 81 ( 그림 6-14) NetNtEx.dll 삽입확인 82 ( 그림 7-1) 악성코드자동화분석방법의개념도 85 ( 그림 7-2) 악성코드특징도출단계 ( 수동 ) 87 ( 그림 7-3) 레지스트리변경모니터링 88 ( 그림 7-4) 악성코드샘플 89-15 -

( 그림 7-5) 악성코드샘플 92 ( 그림 7-6) 프로세스변경모니터링 92 ( 그림 7-7) 네트워크모니터링 93 ( 그림 7-8) 함수에대한 Bloom Filtering 94 ( 그림 7-9) 특징도출프로세스 ( 자동 ) 95 ( 그림 7-10) 행위기반분석 96 ( 그림 7-11) API 후킹레벨 - 커널및사용자레벨 97 ( 그림 7-12) 악성코드의 API 구분 102 ( 그림 7-13) 코드기반분석 104 ( 그림 7-14) Bloom Filter의동작 107 ( 그림 7-15) Bloom Filter의동작 ( 탐색 ) 108 ( 그림 7-16) Bloom Filtering의예1 109 ( 그림 7-17) Bloom Filtering의예2 110 ( 그림 7-18) Netbot Agent(v4.7) 113 ( 그림 7-19) Netbot Agent(v5.1) 114 ( 그림 7-20) Netbot Agent(v5.5) 114 ( 그림 7-21) Notepad 115 ( 그림 7-22) NateOn 원격제어 115 ( 그림 7-23) 상호작용단계 116 ( 그림 7-24) 화이트리스트필터 118 ( 그림 7-25) 자동화분석단계 119 ( 그림 7-26) DB의구성 122-16 -

표목차 [ 표 2-1] 안철수연구소의악성코드분류방법 32 [ 표 2-2] 하우리의악성코드분류방법 33 [ 표 2-3] Kaspersky의악성코드분류방법 34 [ 표 2-4] 공급업체별악성코드명명법 36 [ 표 2-5] 공급업체별악성코드명명비교 37 [ 표 3-1] 실행압축도구 42 [ 표 3-2] 코드혼란 (Obfuscation) 기법 44 [ 표 3-3] 가상머신 (VMWare) 감지코드 47 [ 표 4-1] 루트킷이가로채는 System Function 50 [ 표 6-1] Netbot의공격기능 62 [ 표 6-2] Netbot의분석환경구성 67 [ 표 6-3] Netbot Agent 감염시의파일변경 69 [ 표 6-4] Netbot Agent 감염시의레지스트리변경 (BITS) 70 [ 표 6-5] Netbot Agent 감염시의레지스트리변경 (SVCHOST) 71 [ 표 6-6] 포트번호범위사용의패턴 75 [ 표 6-7] 레지스트리키값변경 81 [ 표 7-1] 레지스트리변경모니터링 89 [ 표 7-2] 파일변경모니터링 90 [ 표 7-3] 파일변경모니터링에이용가능한 API 함수 100 [ 표 7-4] 레지스트리변경모니터링에이용가능한 API 함수 100 [ 표 7-5] 프로세스변경모니터링에이용가능한 API 함수 101 [ 표 7-6] 네트워크모니터링에이용가능한소켓 API 함수 101 [ 표 7-7] Netbot 에이전트의 Import DLL 104 [ 표 7-8] USER32.dll의함수 105 [ 표 7-9] ADVAPI32.dll의함수 105 [ 표 7-10] AVICAP32.dll의함수 106-17 -

[ 표 7-11] WS2_32.dll의함수 106 [ 표 7-12] 넷봇의코드유사도비교 111 [ 표 7-13] 넷봇과다른프로그램의유사도비교 112 [ 표 7-14] 분석결과리포트의예 121-18 -

제 1 장서론 제 1 절연구의목적및필요성 1. 연구의목적 매일새로이발견되는악성코드의수와종류는지속적으로증가하고있는데, 그이유는금전적인이득을목적으로공격자가취약점을계속해서찾아내고, 기존의악성코드와자동제작도구를이용하여신 변종을만들어내기때문이다. 또한악성코드의감염에의한사용자피해역시급속도로증가하고있어서악성코드에대한더욱신속한대응이절실히요구되고있다. 기존의대응기술들은악성코드를수집하고분석하는과정에수동적인작업을필요로하는부분이많기때문에신속한대응을어렵게하고있다. 또한안티바이러스및안티스파이웨어등의제품공급자들마다진단을다르게하여사용자들이혼란을겪기도한다. 본연구과제에서는좀더신속하게대응할수있도록넷봇 (Netbot) 의악성행위및특징을분석하여자동화분석방법을제시하고, 웜, 바이러스, 트로이목마, 애드웨어등각각의악성코드별특징분석을확장적용하여악성코드유형에따른효과적인자동화분석방법에대한연구를목표로한다. 2. 연구의필요성 최근컴퓨터및인터넷의보급이크게확산됨에따라광범위한정보통신망구축이가능해졌으며, 각종정보공유, 전자상거래등이가능하게되었다. 그러나이와더불어정보위조및변조, 정보유출, 웜이나바이러스전파등과같이정보네트워크에서의보안침해부작용도꾸준히증가하고있다. 그중에서도분산서비스거부 (DDoS) - 19 -

공격, 스팸발송, 해킹, 개인정보유출등으로인한사용자들의피해가급증하고있다. 이러한공격들은대부분사용자컴퓨터에감염된악성코드에의해이루어진다. 악성코드는보안이허술한일반사용자컴퓨터에침투하여공격자를노출시키지않고다른공격들을수행하는중간노드역할을한다. 최근에는이러한악성코드에감염된컴퓨터들이거대한봇넷 (Botnet - 악성코드에감염된여러컴퓨터들이연결된네트워크 ) 을형성하여더광범위한사이버범죄에악용되고있다. ( 그림 1-1) 연도별악성코드의증가 - 국내 그림 1-1은국내에서보고된연도별웜 바이러스등의악성코드수를나타낸것이다. 악성코드수와종류의지속적인증가는소프트웨어개발기술발전에도불구하고시스템의취약점을찾는기술이점차정교해지고다양해지고있으며, DDoS 공격도구인넷봇 (Netbot) 외에도각종악성코드의자동제작도구및기술의보편화로인해손쉽게신 변종악성코드를작성하는것이가능하기때문이라고할수있다. 그러나악성코드에대한대응방법은아직까지는대부분수동으로악성코드를탐지 분석하여대응하기때문에악성코드유포속도에크게뒤처지고있어악성코드에의한직접적인피해및 2차적인피해는급속도로확산되고있는실정이다. - 20 -

따라서본연구를통해서개발되는악성코드의자동화분석방법은다양한악성코드에적용되어보다효율적인분석이이루어질수있으며, 이를통해신속하게대응함으로써악성코드에따른피해확산을최소화시킬수있을것으로판단된다. 제 2 절연구내용및연구방법 1. 연구내용 본연구과제에서는악성코드유형에따른자동화분석방법을마련하기위하여다음과같은연구내용을수행한다. o 악성코드의정의및분류방법, 유형별특징분석 - 악성코드의유형별정의와분류방법조사 - 악성코드의유형별특징분석 - 기존의악성코드자동분류방법조사및분석 o 넷봇의악성행위및특징분석 - 넷봇을이용한공격및악성행위분석 - 정적분석을통한넷봇의특징파악 o 분석방해기술 ( 안티디버깅및분석우회방법 ) 조사 - 안티디버깅기술의유형및동작방식조사 - 가상머신탐지기술조사 o 루트킷및커널악성코드유형분석 - 루트킷, 커널악성코드의유형및동작방식조사 o 악성코드의자동화분석방법론도출 - 21 -

- 악성코드가사용하거나변경하는파일및레지스트리분석 - 저장매체사용의모니터링 - 악성코드의도메인접속분석 - 코드인젝션분석 - 악성코드분석프로세스에대한자동화 2. 연구방법 o 악성코드의정의및분류방법, 유형별특징분석악성코드종류에대한정확한정의의부재는새로운악성코드가발견되었을때해당악성코드의명명에혼란을야기한다. 또한악성코드탐지및치료프로그램이나서비스를제공하는각공급자들마다악성코드를분류하는기준과명명기준이다르기때문에같은악성코드에대한진단명의차이를초래하고있다. 이로인해공급자들사이의정보공유를방해하여신속한대응을방해하게된다. 급증하는악성코드의변종을분류하고불필요한분석을줄이기위하여자동화분석방법에대한연구가시급하다. 이를위한선행단계로써다음의연구내용을수행한다. - 악성코드의유형별정의와분류방법조사 : 웜, 바이러스, 트로이목마, 애드웨어등각악성코드의종류별정의와일반적인분류방법을조사한다. - 악성코드의유형별특징분석 : 각악성코드의유형별악성행위및전파방법에대한특징들을분석한다. - 기존의악성코드자동분류방법조사및분석 : 기존의악성코드자동분류에대한학술연구및기술을조사하고, 그한계점을파악하여보완방법을모색한다. o 넷봇의악성행위및특징분석넷봇 (Netbot) 은최근국내에서발생한주요 DDoS 공격에사용되었던도구이다. 또한넷봇은악성코드를전파하여취약한컴퓨터들을감염시켜서좀비로만들고수많은좀비들이네트워크로 - 22 -

연결되어공격자가 C&C(Command and Control) 서버를통해이를조종할수있는봇넷 (Botnet) 의한종류이다. 악성코드의자동분석방법을연구하기위해넷봇에대하여다음의사항들을수행한다. - 넷봇을이용한공격및악성행위분석 : 넷봇을이용한공격시나리오를작성하고, VMware와같은가상머신과실제컴퓨터등을이용하여공격을수행한다. 이때파일및레지스트리, 프로세스, 트래픽등을모니터링하여넷봇의악성행위를분석한다. - 정적분석을통한넷봇의특징파악 : 넷봇의행위분석을통하여발견할수없는특징들에대해서는 IDA Pro와같은도구를사용하여정적분석을수행한다. o 분석방해기술 ( 안티디버깅및분석회피방법 ) 조사악성코드제작자들은분석을방해하기위하여다양한방법을사용한다. 최근의공통적인방법중의하나는다형성적용을통한다양한변종의생성이다. 이는대부분윈도우즈플랫폼에서이루어지며그방법은실행압축기법, 암호화기법, 명령어치환기법이있다. 다형성방법외에도 Windows API를이용하여프로세스의디버깅여부를판단하는방법, 디버깅시점에서 CPU의특성을이용한하드웨어디버깅탐지방법, 특정디버거의버그를이용하여디버깅을강제로종료하는방법, 프로그램에아무런영향을미치지않는코드를삽입하여분석자의분석을방해하는방법등이있다. 이러한악성코드의분석을방해하도록적용된기술들에대하여다음의사항들을수행한다. - 안티디버깅기술의유형및동작방식조사 : 악성코드의분석을방해하는안티디버깅기술의유형과동작방식을조사한다. 바이너리형태의악성코드에대한정적분석을위하여 IDA Pro와같은디스어셈블러도구를이용하여악성코드를어셈블리어프로그램으로변환하고, 이를동적분석결과와종합한다. - 가상머신탐지기술조사 : 악성코드분석환경으로사용되는가상머신을악성코드가탐지해서악성행위를수행하지않도록 - 23 -

하는기술에대하여조사한다. o 루트킷및커널악성코드유형분석루트킷이나커널악성코드는스스로를숨기기위해커널패치와같은로우레벨의조작을수행한다. 루트킷은자신을숨기기위해 API 후킹등을통한프로세스및스레드은닉, 파일및레지스트리은닉, 메모리은닉등의행위를한다. 이를통해해당루트킷은작업관리자프로세스목록에서도자신을숨기며, 탐색기와같은파일관리도구에서도해당루트킷과관련된파일의목록조차찾을수없다. 이는루트킷의탐지를더욱어렵게만들며, 감염여부조차확인할수없도록한다. 그러나이러한은닉을위한행위들은루트킷으로판단하는특성이기때문에공통적인특징을발견할수있을것으로판단된다. 또한국내에서발견되는대부분의루트킷은중국이나유럽등에서발표된루트킷그자체이거나그소스코드를사용한변종이라는점에서탐지에대한가능성을다시한번확인할수있을것으로예상된다. 따라서이러한루트킷이나커널악성코드를분석하기위해다음의사항들을수행한다. - 루트킷, 커널악성코드의유형및동작방식조사 : 먼저제시한분류방법을통해루트킷이나커널악성코드를유형별로나누고, 이에따라각각의동작방식을조사한다. o 악성코드의자동화분석방법론도출악성코드의분류기준과유형별특징분석, 넷봇의악성행위와특징분석, 안티디버깅및가상머신탐지기술분석, 루트킷및커널악성코드분석등을통해각악성코드의유형별자동분석이가능한방법론을도출한다. - 악성코드분석프로세스에대한자동화 : 이전단계의악성코드특징분석연구를통한특징결과들을명세화하여자동화분류에사용될수있는 악성코드분석이가능한특징 을도출한다. 이특징을도출하는과정은각각의특징에대하여다음과같은서브프로세스를이용한다. - 24 -

악성코드가사용하거나변경하는파일및레지스트리분석 저장매체사용의모니터링 악성코드의도메인접속분석 코드인젝션분석또한서브프로세스에는악성코드를수동으로분석하여악성코드의새로운특징을도출하는프로세스가추가된다. 이과정은악성코드특징도출단계이다. 악성코드의특징을도출한후악성코드자동분석을위하여도출된특징들을조합하고자동분석방법을적용하여악성코드분석자동화의가능성을실험한다. 또한이과정에서발생되는결과값을로그로기록하여긍정오류 (False Positive) 를조사하고, 발생요인을분석하여실험에사용한자동분석방법의개선점을도출함으로써악성코드분석자동화에대한가능성을조사하며그정확도를높인다. 이단계는악성코드자동분석검증및도출단계이다. - 25 -

제 2 장악성코드의개요 제 1 절악성코드의정의 악성코드 (Malicious Code) 는악성코드는정보유출, 금전적이익등악의적인목적으로작성되어컴퓨터사용자의승인없이컴퓨터에침투하거나설치되어악성행위를하는프로그램이며, 말웨어 (Malware: Malicious Software) 라고도한다. 또한악성코드는웜, 바이러스, 트로이목마, 스파이웨어, 애드웨어, 루트킷등으로분류할수있으며, 해롭고불필요한소프트웨어도포함한다. 1. 웜 웜 (Worm) 은자기복제성을가지고숙주프로그램이나파일이없어도독자적으로실행되어프로그램안에서스스로자신을복제하거나프로그램과프로그램사이또는컴퓨터와컴퓨터사이를이동하여전파시키며, 기억장소에코드형태혹은실행파일로존재하는프로그램조각이다. 웜은자기자신을복제하는행위, 사용자가인지하지못한방법으로이메일을전송하는행위, 해당프로그램혹은개발사에서배포하지않은정상적인파일에새로운코드를삽입하는등의악성행위를수행한다. 최근에는같은기능을하면서도형태가각각다른다형성웜 (Polymorphic Worm) 이등장하여웜의탐지및분석을더욱어렵게하고있다. 2. 바이러스 바이러스 (Virus) 는컴퓨터시스템에몰래침투해숙주프로그램이나실행가능한파일에자기자신이나변형된자신을복제하여또다른대상을감염시킴으로써컴퓨터시스템과파일을파괴하는코드혹은 - 27 -

프로그램이다. 바이러스는컴퓨터비정상적인동작유발, 데이터삭제, 컴퓨터성능저하, 인터넷속도저하등의악성행위를수행한다. 바이러스와웜은모두자기복제가가능하다는점에서공통점을가지지만, 전파방법에대한차이점이존재한다. 바이러스는파일등에삽입되어전파되지만, 웜은파일과는독립적으로그자체만으로도네트워크를통해전파된다. 3. 트로이목마 트로이목마 (Trojan Horse) 는겉보기에는정상적인프로그램으로보이지만실행시켰을경우악성코드를실행하는악성루틴이숨어있는프로그램이다. 트로이목마는다른프로그램내에사용자가알수없도록포함되며, 스스로복제하지못한다. 공격자가고의로삽입시키기때문에프로그램의버그와는다르며스스로복제를못하기때문에웜이나바이러스와다른특징을지닌다. 트로이목마는백도어설치, DDoS 공격, 키로거를통한 ID 및패스워드수집등의악성행위를수행한다. 트로이목마와바이러스를비교해보면, 트로이목마는자기복제가불가능하고다른파일을감염시키지못하며, 사용자가실행시키도록하여스스로피해를유발한다. 그러나바이러스는정상적인부트영역및파일등을감염시키면서전파된다는점에서차이가있다. 4. 스파이웨어 스파이웨어 (Spyware: Spy Software) 는주로인터넷등에서무료로배포되는 S/W에포함된형태로, 사용자의동의없이감염된컴퓨터나네트워크내에서개인및기업에대한정보를수집하여공격자에게전송하도록제작된프로그램이다. 스파이웨어는개인정보나금융정보, 계정정보를비롯하여각종정보및데이터를수집하는등의악성행위에이용된다. - 28 -

5. 애드웨어 애드웨어 (Adware: Advertising-supported Software) 는사용자가웹서핑을할때, 혹은특정소프트웨어를실행할때설치되어팝업창등을통하여광고를노출시키는프로그램이다. 애드웨어는팝업노출, 인터넷익스플로러의시작페이지변경또는고정하는등의악성행위를수행한다. 6. 루트킷 루트킷 (Rootkit) 은공격자가설치한악성코드를탐지되지않고컴퓨터에존재할수있도록하여, 관리자계정의권한을획득하는데사용되는프로그램또는이러한소프트웨어들로이루어진도구이다. 루트킷은펌웨어및소프트웨어에침투하여해당시스템의관리자행세를하는악성행위, 원래운영체제를가상화하는악성행위, 파일내용을바꾸는악성행위등을수행한다. 7. 백도어 백도어 (Backdoor) 는시스템접근에대하여사용자인증등정상적인절차를거치지않고응용프로그램이나시스템에접근하도록도와주는도구이다. 즉, 공격자가시스템이한번침입을한후, 자신이원할때재침입하거나권한을쉽게획득하기위해만들어놓은통로이다. 8. 키로거 키로거 (Keylogger) 는키보드로부터의입력을감시하고기록하여공격자에게전송하는상주형소프트웨어또는해킹도구이다. 키로거는온라인상에서감염된컴퓨터의사용자가키보드를통해입력하는 ID, 패스워드, 주민등록번호, 계좌번호, 신용카드번호등의모든데이터를훔쳐볼수있는악성행위를수행한다. - 29 -

제 2 절악성코드의감염경로 사용자의컴퓨터는다양한경로를통해악성코드에감염된다. 대표적인악성코드의감염경로는스팸메일, 이동식저장매체, 메신저, P2P 프로그램등이있다. 1. 스팸메일 악의적인공격자가악성코드를첨부하거나링크를포함한스팸메일을발송함으로써사용자가이를클릭하여감염되도록한다. 공격자는사용자가스팸메일에포함된웹페이지링크주소를클릭하여악성코드실행하도록직 간접적으로유도한다. 최근에는스팸메일이다양한사회공학적기법을이용하여꾸준히유포되고있으며크리스마스, 오바마미국대통령, 새해인사등사회적인이슈와다양한관심유발을통해서사용자들을현혹하고있다. 2. 이동식저장매체 사용자가이미감염된컴퓨터에서 USB 등을이용한저장매체를사용할경우, 사용자몰래감염된파일이실행되도록 USB 저장매체에 autorun.inf( 자동실행스크립트 ) 가설치된다. 감염시추가악성코드를다운로드하거나, 안티바이러스어플리케이션을종료시키며, 시스템을재부팅한후에도지속적으로동작할수있도록레지스트리를변경한다. 3. 악성코드를포함한웹페이지에접속 웹페이지를통한악성코드방법은매우다양하다. 예를들어, 공격자들은 SQL Injection 취약점을이용하여데이터베이스내에악성코드를삽입한다. 이를통하여웹페이지에정적 (Static) 으로악성코드를은닉시키는것이아니라, 데이터베이스내에악성코드 - 30 -

링크를삽입하여해당데이터베이스와연동된게시판이나관련정보웹페이지에악성코드가동적 (Dynamic) 으로삽입되도록한다. 이렇게악성코드를포함한웹페이지에접속하는사용자는자신도모르게악성코드를실행시키거나다운로드하여컴퓨터가감염되고개인정보, 금융정보및계정 ID와패스워드등의정보가유출되기도한다. 4. 메신저 메신저를이용한악성코드감염은사용자부주의나메신저자체취약점을통해발생한다. 사용자부주의란자신의메신저에등록된사용자가악성코드를포함하는웹페이지의 URL이담긴메시지나악성코드를포함한파일을전송하였을때이를아무런의심없이클릭하여실행함으로써감염된다. 공격자는이를통하여주로감염된컴퓨터내에서정보를수집하거나피싱사이트접속을유도하여사용자의정보를수집하게된다. 5. P2P 프로그램 공격자는 P2P 프로그램을통해악성코드파일을일반파일로위장하여공유하고전송하며, 사용자가악성코드파일을실행시켰을경우에감염된다. 제 3 절악성코드의분류 국내외안티바이러스공급업체들이악성코드를분류하는기준에는악성코드의정의, 전파방법, 감염시키는파일의종류, 수행하는악성행위및증상, 공격대상의환경 ( 운영체제 ) 등이있으며각공급업체별분류기준에는약간의차이가존재한다. - 31 -

1. 안철수연구소 안철수연구소에서는악성코드의정의, 운영체제, 증상, 감염영역, 감염경로에따라분류한다. [ 표 2-1] 안철수연구소의악성코드분류방법 분류정의운영체제증상감염영역감염경로 요소 바이러스, 웜, 트로이목마 ( 또는백도어 ), 가짜 (Hoax), 조크 (Joke) DOS, Window, Linux, Palm, Unix, FreeBSD 하드디스크 파일 시스템 네트워크 특이증상 파일바이러스부트바이러스 부트 / 파일바이러스매크로바이러스스크립트바이러스 하드디스크포맷, 부트섹터파괴 파일생성, 삭제, 감염, 손상 시스템정보변경, FAT 파괴, CMOS 정보손상및파괴, 시스템비정상작동, 기본메모리감소, 시스템속도저하, 레지스트리변경, 프로세스종료, 윈도우종료및재부팅, 부팅불가 이메일발송, 정보유출, 네트워크속도저하, 메시지전송, 특정포트오픈, 홈페이지변경, 공유폴더내파일감염 ( 복사 ) 화면, 특정음, 메시지상자 ( 문자열 ) 출력 감염파일실행으로감염 감염되지않은주부트영역, 도스부트영역에감염 부트영역및파일동시감염 MS 오피스의기능을이용하여문서파일감염 자바스크립트및비주얼베이직스크립트로작성된웜또는바이러스 파일실행, 다운로드, 네트워크, 공유폴더, 보안취약성, 이메일 - 32 -

2. 하우리 하우리에서는악성코드의증상, 형태, 파일종류, 감염경로에따라분류한다. 형태에따른분류와파일종류에따른분류는각각안철수연구소의정의에따른분류및감염영역에따른분류와비슷하며, 이하분류방법도대부분동일하다. [ 표 2-2] 하우리의악성코드분류방법 분류 형태 요소웜, 바이러스트로이목마, 가짜 (Hoax), 조크 (Joke), 기타하드디스크하드디스크포맷, 부트섹터파괴 증상 파일시스템네트워크특이증상윈도우파일도스파일 파일생성, 삭제, 감염, 손상시스템정보변경, FAT 파괴, CMOS 정보손상및파괴, 시스템비정상작동, 기본메모리감소, 시스템속도저하, 레지스트리변경, 프로세스종료, 윈도우종료및재부팅, 부팅불가이메일발송, 정보유출, 네트워크속도저하, 메시지전송, 특정포트오픈, 홈페이지변경, 특정홈페이지접속화면, 특정음, 메시지상자 ( 문자열 ) 출력 WIN16, WIN32, WIN95, WIN2K 도스형태의파일로바이러스전파 파일종류 감염경로 부트 부트영역에바이러스감염 부트 / 파일 부트영역및파일동시감염 스크립트 VBS, CSC, JS, PHP, HTML, SWF, ABAP 매크로 ACCESS, WORD, EXCEL, OFFICE, ACAD 파일실행, 다운로드, 네트워크, 보안취약성, 이메일 - 33 -

3. Kaspersky Kaspersky 에서는전파방법으로악성코드를분류한다. [ 표 2-3] Kaspersky 의악성코드분류방법 분류웜바이러스트로이목마 전파방법 이메일, 메신저, 파일공유 (P2P), IRC 채널, LAN, WAN 등의다양한네트워킹시스템을사용하여파일형태로전파된다. ( 이메일첨부파일, IRC 메시지, 감염된웹사이트나 FTP 서버에저장된파일로의링크, 네트워크로접근가능한파일들등 ) 전파방법으로네트워크를사용하지않고감염된객체에코드를보내복제하여다른컴퓨터로전파한다. 감염시킨컴퓨터에서수행하는악성행위에따라다음과같이분류한다. 백도어 : LAN이나인터넷을경유해컴퓨터를감염시켜관리한다. 루트킷 : 시스템파일또는라이브러리를바꾸거나커널모듈을설치하는악성행위를수행한다. 4. Symantec Sysmantec은악성코드의종류에따라 Crimeware, 스파이웨어, 말웨어등으로분류한다. o Crimeware: 사이버범죄에사용되는소프트웨어로봇 (Bot), 키로거, 스파이웨어, 백도어, 트로이목마가있다고정의한다. 공격방법에따라스파이웨어, 말웨어, 취약점, 스팸, 피싱으로분류한다. o 스파이웨어 : 사용자가웹사이트, 이메일, 인스턴트메시지, 파일을다운로드함으로써공격을한다. o 말웨어 : 악성코드 ( 웜, 바이러스, 트로이목마 ) 의한카테고리이다. - 34 -

- 웜은전자우편과인스턴트메시지를통해전파된다. - 트로이목마는전자우편, 웹사이트로전파된다. - 바이러스는 P2P로부터파일을다운로드함으로써전파된다. 5. Microsoft Microsoft에서는그림 2-1에나타낸악성코드판별트리와같이자기복제능력에따라악성코드를분류하며, 스파이웨어및애드웨어는악성코드로분류하지않는다. o 웜 : 매개체없이자기복제능력을갖는다. o 바이러스 : 매개체를통해자기복제능력을갖는다. o 트로이목마 : 자기복제능력을갖지않는다. ( 그림 2-1) 악성코드판별트리 - 35 -

제 4 절악성코드의명명법 악성코드의이름은이를최초로발견한사람에게그권한이있다. 그러나명명법이통일되지않아혼란스러운상태이며, 악성코드가비슷한시기에여러장소에서발견된경우, 발견자들이각각이름을지어같은악성코드에여러개의이름이통용되기때문에동일한악성코드라도구분이힘들다는문제점이존재한다. 최근에는악성코드내부의문자열, 특징적인증상, 발견지등을주요원칙으로하면서각안티바이러스공급업체마다분류안을제정하여운영하고있다. [ 표 2-4] 공급업체별악성코드명명법 공급자안철수연구소하우리 Symantec Kaspersky 명명법플랫폼-형태 / 이름. 사이즈. 변형정도형태. 플랫폼. 이름. 사이즈. 변형정도플랫폼. 이름. 변형정도형태.( 행위.) 플랫폼. 이름. 변형정도 o 플랫폼 : 악성코드가동작하는운영체제, MS 오피스프로그램, JAVA, HTML, 비쥬얼베이직등 o 형태 : 웜, 바이러스, 트로이목마등악성코드의분류 o 이름 : 악성코드의이름은다음과같은사항에따라결정 - 최초로분석한분석가의이름 - 악성코드내부의문자열 - 악성코드의동작형태 - 발견자나제작자의이름 - 기타 o 사이즈 : 악성코드의사이즈 o 변형정도 : 동일한악성코드가발견된순서및변형정도 - 36 -

[ 표 2-5] 공급업체별악성코드명명비교 공급업체 Sample 1 Sample 2 안철수연구소 Win32/FunLove.4099 Win32/Nimda 하우리 Win32.FunLove.4099 Win32.Nimda.D Symantec W32.FunLove.4099 W32.Nimda.A@mm Kaspersky Virus.Win32.FunLove.4099 Net-Worm.Win32.Nimda - 37 -

제 5 절악성코드가사용 / 변경하는파일, 레지스트리 시스템이악성코드에감염되었을경우, 파일생성혹은레지스트리변경등의변화가발생한다. 이러한변화를분석할수있다면악성코드를탐지하고분석하는데유용하다. 이를위해서우선레지스트리에대한정보와악성코드중에서트로이목마가사용하거나변경하는파일및레지스트리에대하여조사하여부록에첨부하였다. - 38 -

참고문헌 [1] 안철수연구소 (http://home.ahnlab.com) [2] 하우리 (http://www.hauri.co.kr) [3] Symantec (http://www.symantec.com) [4] Kaspersky (http://www.kaspersky.com) [5] Wikipedia (http://www.wikipedia.org) [6] 최준호외, 악성코드분류및명명법에관한연구, 정보과학회지 제 20권제11호, 2002. 11. [7] 박병익, 이강석공저, 리버스엔지니어링 : 역분석구조와원리, 지 앤선, 2008. [8] 김성우저, 해킹 / 파괴의광학 ( 개정판 ), 와이미디어, 2006. [9] 왕성현역, 악성모바일코드 : 윈도우바이러스작동원리와퇴 치, 한빛미디어, 2001. [10] William Stallings, Lawrie Brown, Computer Security: Principles and Practice, Pearson Education, 2008. - 39 -

제 3 장분석방해기술 안티디버깅 (Anti-Debugging) 이란프로그램의내부알고리즘이나데이터들을분석하지못하도록파일에 Packing을하는등의디버깅을방지하고분석을하지못하도록하는데큰목적이있다. 악성코드제작자는분석가의분석을방해하기위하여다양한방법을사용한다. 최근의공통적인방법중의하나는다형성적용을통한다양한변종의생성이다. 이는대부분윈도우즈플랫폼에서이루어지며그방법은실행압축기법, 암호화기법, 명령어치환기법이있다. 다형성방법외에도 Windows API를이용하여프로세스의디버깅여부를판단하는방법, 디버깅시점에서 CPU의특성을이용한하드웨어디버깅탐지방법, 특정디버거의버그를이용하여디버깅을강제로종료하는방법, 프로그램에아무런영향을미치지않는코드를삽입하여분석자의분석을방해하는방법등이있다. 제 1 절실행압축기법 실행압축이란데이터를하나로묶어놓는일반압축과는달리실행가능한파일을압축한것으로, 실행압축된파일은압축을푸는과정없이바로프로그램을실행할수있다. 이러한압축을사용할경우 ZIP과같은범용데이터압축보다는실행압축방식을사용하는쪽이더용량이적게사용된다. 악성코드역시이점을이용하여단시간에널리전파되도록실행압축을사용되고있으며, 시그니처기반의악성코드탐지기법을회피하고악성코드분석가들이악성코드를분석하기어렵도록하는데사용된다. 실행압축도구로는표 3-1과같이다양하다. 이는기존파일의확장자를그대로유지하면서파일의실행도전과같이이루어질수있게해준다. 실행압축프로그램 (Packer) 는프로그램의실제코드및데이터를 - 41 -

프로그램상의다른곳에압축하여저장해두고, Entry Point를실행압축해제루틴을가리키게함으로써실행압축루틴 (Unpacking) 이먼저실행되어압축저장한부분들을해제한다음시작하는방법으로동작한다. [ 표 3-1] 실행압축도구실행압축도구 ASPack(Alexey Solodovnikov Pack), UPX, ASprotect, NeoLite, Armadillo, Exeshield, Pecompect, PEncrypt, CryptFF, DBPE, telock, Stxe, PE_Patch.AvSpoof, Bat2Exe.BDTmp, Batlite, ExeStealth, JDPack, PECRC, PE_Patch.Elka, Pex, Pingvin, Mmpo, Embedded CAB, Morphine, Eagle, PE-Crypt.Negn, Bat2Exe, PCPEC, FlySFX, Exe2Dll, Teso, PE-Crypt.UC, Polyene, PE-Crypt.UC, PEBundle, CryptFF, DBPE, BitArts.Fusion, PE_Patch.Aklay, TapTrap, CryptZ, PE-Crypt.Moo, PE-Pack, RarSFX, XCR, ZipSFX, DoomPack, NDrop, PECrc32, DebugScript, PE_Patch.Ardurik, PE-Crypt.Wonk, PE_Patch.Upolyx, MEW, PE_Patch.ZiPack, ZiPack, CryptFF.b, MEW, Yoda Crypter 등 제 2 절디버거탐지기법 IsDebuggerPresent() 는 Kernel32.dll에서 Export되는함수로, 해당프로세스가디버깅이진행중인지여부를 PEB 구조체의디버깅상태값을확인하고디버깅이진행중이라면 1을, 그렇지않으면 0을리턴한다. 그러나이함수로는커널레벨디버거는탐지하지못하며유저모드디버거만탐지할수있다. CheckRemoteDebuggerPresent() 는디버거가프로세스를 Attach하는것을알수있다. 이함수는 2개의파라미터를받아들이는데, 첫번째파라미터는프로세스핸들이며, 두번째파라미터는 Bool 변수의포인터이다. 만약프로세스가디버그중일경우이변수가 TRUE 값을 - 42 -

갖게된다. 이 API에서 NtQueryInformationProcess() 을내부적으로불러낼때 ProcessInformationClass의파라미터는 ProcessDebugPort(7) 이된다. NtQueryInformationProcess() 는커널구조체인 EPROCESS의 Debug Port의 Flag를체크한다. 이함수는 5개의파라미터를가지는데, 디버거를탐지하기위하여 ProcessInformationClass는 ProcessDebug Port(7) 을설정한다. 즉, 유저모드의디버거가프로세스를디버깅중일때는 DebugPort 필드에 0이아닌값이나타난다. 이경우에 ProcessInformation의값은 0xFFFFFFFF이되고, 그렇지않은경우에는 0이된다. OllyDbg: Guard Pages 검사는올리디버거를체크하는기술이다. 이는올리디버거가메모리에 on-access/write를하여브레이크포인트를설정할수있다는특성을이용한다. 이러한종류의브레이크는 Guard Page를통해수행된다. 즉, Guard Page는응용프로그램의어느한메모리부분에접근할때이러한경로를얻을수있도록해준다. Guard Page는 PAGE_GUARD의 Page Protection Modifier를통해설정된다. 접근한메모리주소가 Guard Page의주소이면 STATUS_GUARD_PAGE_VIOLATION(0x80000001) 예외를일으킨다. 그러나올리디버거로디버깅하여 Guard Page에접근하게되면예외는발생하지않게된다. 이러한접근은메모리브레이크로처리하게된다. 제 3 절코드혼란 (Obfuscation) 기법 코드혼란 (Obfuscation) 기법은소스코드를분석하려는분석가에게혼란을주도록소스코드를변화시키는과정을말한다. 이는완전히분석이불가능하게하는것이아니라, 코드를분석하는데드는 Cost를증가시킴으로써분석을어렵게하는것이다. Obfuscation 방법은그대상으로하는정보들에따라표 3-2와같이 - 43 -

분류할수있다. [ 표 3-2] 코드혼란 (Obfuscation) 기법 구분 Layout Obfuscation 설명 소스코드의포맷이나, 변수이름, comments와같은응용의 layout을대상으로하는방법 프로그램이사용하는데이터구조를대상으로하는방법 Data Obfuscation Control Obfuscation Preventive Transformation 메모리에데이터가저장되는방법을변경 Storage 예 ) 지역변수를전역변수로변경저장된데이터가해석되는방법을변경 Encoding 예 ) 변수 i를 c1*i + c2로변경데이터의그룹을변경 Aggregation 예 ) 하나의배열을여러개의하위배열들로분할데이터의순서를변경 Ordering 예 ) 배열을 reordering 하는것, i번째값이특정한함수 f에의해서 f(i) 번째로변경프로그램의제어순서를대상으로하는방법문장들의그룹을변경하는방법 Aggregation 예 ) Inlining의경우함수콜을함수코드자체로변경문장들의실행순서를변경 Ordering 예 ) 루프의진행순서를반대로변경프로그램의제어흐름을변경 Computation 예 ) 실행되지않는코드를추가하거나불필요한코드를추가 deobfuscator들이코드자체를 break하기어렵게함 Targeted 자동 deobfuscation 기술적용을어렵게함 Inherent deobfuscator들의약점을이용 - 44 -

제 4 절가상머신탐지기법 VMware, VirtualPC, Xen, BOCHS, User-Mode Linux와같은가상머신환경 (Virtual Machine Environment: VME) 은사용자또는관리자가하나이상의 Guest OS를호스트 OS 상에설치하는것으로, 그림 3-1과같이에뮬레이션환경하에실행되며가상머신환경으로부터 Virtual과 Real 하드웨어모두중재하여접속할수있도록제공된다. ( 그림 3-1) 가상머신환경 악성코드를분석하기위해보안관계자및분석가들은가상머신환경을이용한다. 그리고악성코드제작자들은분석가들의가상머신사용을파악하고분석을방해하기위해가상머신탐지기술을적용한다. 만약악성코드가실행된환경이가상머신환경이라면분석가에의해악성코드분석을위한실행으로판단하여활동을중지하고, 더나아가서는악성코드자신을파괴시킨다. 현재사용되고있는가상머신환경을탐지방법은 4가지가존재하며, 가장많이사용되는 VMWare를예로하여기술한다. - 45 -

1. 프로세스, 파일시스템, 레지스트리요소 가상머신환경은쉽게발견될수있는프로세스, 서비스, 파일, 디렉토리, 레지스트리등을포함한다. VMWare의경우파일시스템에서 VMWare와관련된 300여개의레지스트리가참조된다. 또한실제로가상머신환경에설치된 Windows가작업관리자에서 VMwareUser.exe 및 VMwareService.exe와같은프로세스를확인할수있다. 악성코드제작자는이러한범위에서선택적으로가상머신을탐지하는코드를삽입할수있다. 2. 메모리요소 가상머신탐지를위한두번째방법은메모리에서의예외를사용하는것이다. Guest 시스템의메모리맵은호스트시스템의메모리맵과는차이를지닌다. 또다른차이는 Interrupt Descriptor Table(IDT) 의위치이다. 호스트시스템에서는 IDT가일반적으로메모리의낮은레벨에위치하지만 Guest 시스템에서는메모리의높은레벨에위치한다. 프로세서는 IDT를가리키는레지스터포인터 (IDTR) 를가지므로위치가같을수없기때문에이기술은서로다른가상머신환경상에서도유용하다. 3. 가상하드웨어 가상머신탐지를위한두번째방법은 NIC(Network Interface Card) 나, USB 컨트롤러, 오디오어댑터, SCSI와같이가상화된특정하드웨어가포함되어있는지살펴보는것이다. ( 그림 3-2) 가상화하드웨어 - 46 -

4. 특정프로세서 Instruction 과 Capabilities 마지막방법은프로세서가 VM의행동적특징을가지고있는지분석하는것이다. 특정가상머신환경에서 non-standard x86 Instruction은 Guest와호스트간의통신을발생시킨다. 이와같은프로세서의예외처리를이용하여가상머신환경을탐지한다. 표 3-3은악성코드가실행된환경이가상머신 (VMWare) 인지를감지하는코드이다. bool IsVMWare() { bool rc = true; try { asm { push edx push ecx push ebx [ 표 3-3] 가상머신 (VMWare) 감지코드 mov eax, 'VMXh' mov ebx, 0 mov ecx, 10 mov edx, 'VX' // any value but not MAGIC VALUE // port number in eax, dx // read port. on return EAX returns the VERSION cmp ebx, 'VMXh' // is it a reply from VMWare setz [rc] // set return value pop ebx pop ecx pop edx } } except(exception_execute_handler) { rc = false; } } return rc; - 47 -

참고문헌 [1] 박병익, 이강석공저, " 리버스엔지니어링 : 역분석구조와원리 ", 지앤선, 2008. [2] 김성우저, 해킹 / 파괴의광학 ( 개정판 ), 와이미디어, 2006. [3] 마이크로소프트웨어 2009년 4월호, 마소인터렉티브, 2009. [4] Mark Vincent Yason, "Mark Vincent Yason", https://www.blackhat.com/presentations/bh-usa-07/yason/white paper/bh-usa-07-yason-wp.pdf [5] - 48 -

제 4 장커널기반루트킷 제 1 절개요 1. 루트킷의정의 루트킷은컴퓨터시스템상에서자신의존재를은닉하고, 공격자가컴퓨터의관리자계정인루트 (Root) 계정의권한을획득하는데유용하게사용되는백도어 / 트로이목마등의작은프로그램들로이루어진킷 (Kit) 이다. 대체적으로루트킷자체는악성기능이없지만다른유형의악성프로그램이시스템내에서자신들의활동을숨기는데루트킷을이용한다. 2. 루트킷의기능 최근의 Windows 루트킷은단순히루트의권한을획득하기위한것이아니라시스템이미지변경과악성코드에대한보호로이어지고있다. 즉, 이러한루트킷은대부분악성코드에대한프로세스은닉이라고할수있으며, 다음과같은특징들을가진다. o 루트킷을이용하는악성코드의증가 owindows 커널 SSDT(System Service Descriptor Table) 를후킹하여악성코드의프로세스및파일보호 o 루트킷소스공개에따른변종증가 o 스파이웨어에서의루트킷사용 - 49 -

제 2 절특징 해킹공격기술이일반화되고발전함에따라이에대응하는보안기술의수준도높아져사용자모드에서실행되는일반적인백도어 / 트로이목마프로그램은관리자들이쉽게탐지할수있게되었다. 따라서공격자는자신의흔적을보다완벽히감추기위해서커널기반의루트킷을사용하게되었고, 현재는이러한커널기반루트킷이공격자들에게일반적인도구로사용되고있다. 가장최근에개발되어발표된공격기법의하나로는현재실행되고있는커널에공격자가만든커널모듈을삽입함으로써시스템함수의정상적인실행을바꾸는방법을사용하며, 또한드라이버로써구현되기도한다. 커널모드의루트킷은크게은닉과원격제어, 소프트웨어모니터링등의기능을가지며, 다음과같이분류할수있다. o 프로세스및쓰레드은닉 o 폴더, 파일, 레지스트리은닉 o 메모리은닉을통해디버거 / 루트킷 Detector로부터데이터은닉 o 프로세스의보안설정변경및제거 otdi 및 TCP/IP 드라이버후킹을통해소켓 / 패킷데이터스니핑 o 키로깅을통한키입력데이터스니핑 상기나열된은닉행위를위해서는표 4-1과같은 System Function (Native API) 들을가로챈다. [ 표 4-1] 루트킷이가로채는 System Function System Function (Native API) NtCreateThread, NtDelayExecution, NtDuplicateObject, NtOpenThread, NtProtectVirtualMemory, NtQuerySystemInformation, NtResumeThread, NtReadVirtualMemory, NtTerminateProcess, NtTerminateThread, NtWriteVirtualMemory - 50 -

제 3 절동작방식 커널기반루트킷은대부분커널레벨에서의후킹을통해자신을은닉하고, 다른악성코드도은닉한다. 그중에서도 SSDT(System Service Dispatch Table) 후킹은최근악성코드에서사용되는루트킷의 80~90% 가사용하는기법이다. 1. SSDT(System Service Descriptor Table) Windows는수많은테이블들의집합이라고할수있다. Windows는인터럽트가발생했을때어떠한시스템서비스가호출되어야하는지에대한판단을위해서테이블을참조한다. 즉, CPU는해당시스템서비스들이위치한메모리상의주소를알아야하지만모든주소를내부적으로저장할수없기때문에테이블이라는자료구조를사용하고, Windows는이를이용하는것이다. CPU가참조하는이러한테이블에는 GDT(Global Descriptor Table), LDT(Local Descriptor Table), IDT(Interrupt Descriptor Table) 이존재하며, 이를통칭하여 SSDT(System Service Descriptor Table) 라부른다. 또한 Windows가자신만의테이블을만들어참조하는방법이사용되는데, SSDT(System Service Dispatch Table) 테이블은 Windows에서구현된테이블중의하나이다. 이테이블은시스템에서이용가능한모든시스템서비스들의주소를가지고있으며, 인터럽트발생시 Windows는이테이블을참고하여결과값을반환한다. 따라서 SSDT 테이블을조작하거나변경하여시스템의서비스를다룰수있기때문에커널루트킷뿐만아니라안티바이러스에서도사용된다. 커널기반루트킷의경우폴더, 파일, 프로세스은닉등을위해사용된다. - 51 -

2. SSDT Hooking SSDT 후킹은그림 4-1과같이인터럽트발생에대하여시스템서비스를제공하기전에 Rootkit이삽입되는것이다. ( 그림 4-1) SSDT Hooking 개념도 ( 그림 4-2) SSDT Hooking - 52 -

System Service Dispatcher, 즉 KiSystemService() 는 SSDT(System Service Dispatch Table) 을참고하여적절한 System Service를실행하게된다. KiSystemService() 에서하는가장중요한작업은 SSDT의주소값을얻어오고어플리케이션에서호출한 API에맞는 Native API의주소를찾아내서호출하는것이다. KiSystemService() 함수에서는먼저 SSDT를찾기위해 KeServiceDescriptorTable에접근하며, 구성요소는 4가지로이루어져있다. 첫번째요소는 SSDT(KiServiceTable) 의주소를담고있고, 세번째요소인 NumberOfService는서비스의개수이다. 그리고해당서비스는 Native API를지칭하기때문에결국세번째요소는 Native API의총개수가된다. 네번째요소는 KiArgumentTable의주소값을담고있다. KiArgumentTable은 SSPT(System Service Parameter Table) 라고도불리는데, 이들각각은 SSDT의 Native API와 1:1로대응한다. 이것들은대응되는 Native API 함수의파라미터총크기를바이트단위로써나타낸다. Native API를찾기위해서는 Ntdll.dll에서 EAX 레지스터에인덱스의형태로값을저장한다. 그리고이것과 SSDT 주소값을이용하여 Native API 함수의엔트리주소값을얻어오게된다. SSDT 주소 (KiServiceTable)+[EAX인덱스*4] 를한다면간단하게 Native API 함수주소를얻어올수있는데, 이것은실제로 KiSystemService() 가하는코드와같다. 이어서 Native API 함수로진입하게된다. 예를들어만약어플리케이션에서 CreateFile() 함수로파일을생성하면, 시스템게이트를거쳐커널의 NtCreateFile() 함수로진입한다. NtCreateFile() 함수에서는커널의구성요소인 I/O Manager를통해디스크드라이버를거치면서일련의작업을진행한다. - 53 -

참고문헌 [1] 그렉호글런드, 제임스버틀러저, 윤근용역, 루트킷 - 윈도우커널조작의미학, 에이콘, 2007. [2] 고흥환저, 루트킷을이용하는악성코드, 국가사이버안전센터 - 원간사이버시큐리티, November, 2005. [3] 김용준역, API로배우는 Windows 구조와원리, 한빛미디어, 2004. [4] Chris Ries, Inside Windows Rootkits, 2006. [4] http://www.rootkit.com - 54 -

제 5 장기존의악성코드자동분류 분석방법 악성코드의자동분석방법은두가지경우로나눌수있다. 첫번째방법은정적인코드분석이고, 두번째방법은동적인행위분석이다. 정적코드분석은디버거 (Debugger) 와디스어셈블러 (Disassembler) 를이용하여실제프로그램의코드나바이너리를다른바이너리코드와비교하여결론을도출하는방법으로, 악성코드의동작흐름에대하여가장정확한분석이가능하나비교하는알고리즘이나비교기준등에서수치적인부분이없으므로그방법이어렵다. 그러나동적분석에비해악성코드를더자세히분석할수있다. 동적행위분석은악성코드가실행하는내용을분석하는방법으로, 악성코드가파일이나레지스트리생성및수정등의행위를관찰하여분석이가능하다. 이장에서는논문을통해제안된기존의악성코드자동분류및분석방법에대한내용을기술한다. 제 1 절정적코드분석 1. Digital Genome Mapping - Advanced Binary Malware Analysis Digital Genome Mapping 방법은 2004년 F-secure사안티바이러스연구팀에서제안되었다. 이는그래프의유사도를이용하여바이너리코드의유사성을도출하는방법으로, 악성코드변종간의유사성및차이점을찾아내는것이다. 바이너리의차이를알아내기위하여두바이너리에서공통된이름을가진함수를찾아내는데, 이러한함수로는라이브러리나운영체제에서사용되는함수들이해당된다. 공통된이름의함수를기점으로인접행렬을도출하고, 각각의함수는공통된부분과공통되지않는부분으로나누게된다. 이를 - 55 -

위해서는 Call-tree signature라는방식을사용하며, 함수마다그특징을나타내는시그니처를생성한다. 또한시그니처생성방법은프로그램을구성하는일종의블록인 Atomic function을이용하는데, N개의 Atomic function들가운데함수에서사용하는 Atomic function의 index 번호를 1로셋 (Set) 하고그렇지않은경우는 0으로리셋 ( ㄲeset) 하여생성한다. 따라서일련의과정을통해두바이너리의공통된함수목록을얻을수있으며, 이함수의유사도를판별하기위해서는다음과같은수식을사용한다. 즉, A와 B 각함수개수의곱을 A와 B 합집합의제곱으로나누며, 산출된값의범위는 이다. 산출된값이 0에가까우면유사도가낮은것을의미하며, 1에가까우면유사도가높은것이다. 결국제안된방법에서의유사도는악성코드자체의유사도가아니라함수사용의유사도를기반으로분석하여악성코드의변종이라는사실을빠르게판단하는방법이라고할수있다. 2. An Automated Virus Classification System 이논문에서기술된방법은 2005년 Microsoft사의보안비즈니스및기술부문 (Security Business and Technology Unit) 에서제안되었으며그림 5-1과같다. 이는악성코드가 Static인경우와 Parasitic인경우에대하여분석하는방법이다르다. Static의경우는악성코드가하나의프로그램인경우를말하며, 악성코드의내용을따로추출해낼필요가없기때문에그자체로분석한다. Parasitic은악성코드가정상적인프로그램에삽입된형태이며, 일반적으로는바이러스에서볼수있다. 따라서 Parasitic의경우전체의코드중에서악성코드만따로추출해야하기때문에 Emulation 및 Tracing 과정이필요하다. 이러한단계를통해악성코드의흐름을도식화한 Control Flow Graph (CFG) 를도출하고, 정확도를높이기위해서는 Basic Block(BB) 으로구분하고새로운실행코드와비교된다. - 56 -

( 그림 5-1) 제안한방법의순서도 Basic Block 간의거리를구하는알고리즘으로는 Edit distance, Inverted Index, Bloom filters의총 3가지방법을제시하였다. Edit Distance는일반적으로 Unix 시스템에서사용되는 Diff와유사하며, 코드가삽입, 삭제, 교환되었는지를판단한다. 그러나각코드의크기가 m과 n 때그속도가 O(mn) 과같다는단점이있다. Inverted Index는 Edit Distance의속도를개선하기위한방법이며, 검색엔진에서사용되는것처럼각각의문자에대한배열의인덱스를두어검색결과를빠르게한다. 그러나미리인덱스를만들어야하기때문에저장용량을많이요구하게된다. Bloom Filter는몇개의 Hash Function을이용하여코드의특징을나타낸다. 도출된특징 (Hash Function의값 ) 은 Bloom Filter의비트 (Bit) 중하나를 Set하고, 이렇게생성된 Bloom Filter는일정한크기로 Basic Block을나타내게된다. 결과적으로는작은양의정보로축소되기때문에그만큼손실이발생하며, False Positive가발생한다. - 57 -

제 2 절동적행위분석 1. Automated Classification and Analysis of Internet Malware 이논문에서기술된방법은미시간대학교의 Michael Bailey에의하여 2007년에제안되었다. 제안한프레임워크는결과적으로악성코드의변종을입력값으로주었을때이와가장유사한악성코드의분류를제시하는것이다. 이를위해서는 Consistency( 일관성 ), Completeness ( 완전성 ), Conciseness( 간결성 ) 과같은총 3개의자동분류속성을제안하였다. 제안한방법은기존의시스템콜수준에서의행위도출이아니라시스템에서발생한변화를특징으로사용한다. 즉, 하위레벨의시스템콜보다좀더상위레벨인프로세스의개수, 파일및레지스트리사용, 그리고네트워크의행위를탐지하여코드의특징으로나타내는것이다. 다음으로는 Learning 단계를통해특징간의거리를계산해야하며, 정보내용의근사값을제공하는방법인 Normalized Compression Distance(NCD) 를사용한다. 이렇게계산된거리는 Threshold를이용하여클러스터링되고, 악성코드간의관계를구성하여악성코드분류에사용된다. 2. Learning and Classification of Malware Behavior 이논문에서기술된방법은독일프라운호퍼연구소의 Konrad Rieck에의하여 2008년에제안되었다. 제안한방법은총 5단계로이루어져있으며각단계는그림 5-2와같다. ( 그림 5-2) 제안한방법의 5 단계 - 58 -

o Data acquisition: 데이터를수집하는단계이다. 이는 Honeypot이나 spam-trap과같은방식을통하여악성코드를수집할수있다. o Behavior Monitoring: 악성코드의행위를수집하게되며, 파일및레지스트리의변경, 실행프로세스감염여부, 뮤텍스생성및요구, 네트워크사용정보, 윈도우서비스실행및중지에대한항목들을수집한다. o Feature Extraction: 위의단계에서생성된파일의경우그형태가문자열등의로그파일이다. 따라서이것은계산하기쉬운형태로변환하는과정이다. 도출된결과를벡터로변환하는과정이포함된다. o Learning and Classification: 벡터로만들어진악성코드의특징을클러스터링하는단계이다. 이단계에서는벡터의내적으로두벡터간의거리를계산한다. 또한이렇게생성된모델로새로운악성코드의종류 (Family) 를판단한다. oexplanation: 이단계에서는위에서도출된결과에대한이유를설명한다. 제안한방법은각악성코드에대한공통점을추출하여그중연관이가장높은것들을추론해내는것이다. - 59 -

참고문헌 [1] E. Carrera et al, Digital Genome Mapping: Advanced Binary Malware Analysis, Proceedings of 15th Virus Bulletin International Conference (VB 2004), pp.187-197, 2004. [2] Marius Gheorghescu, An Automated Virus Classification System, Proceedings of 16th Virus Bulletin International Conference (VB 2005), pp.294-300, 2005. [3] Michael Bailey et al, Automated Classification and Analysis of Internet Malware, Proceedings of the 10th International Symposium on Recent Advances in Intrusion Detection (RAID'07), LNCS 4637, pp.178-197, 2007. [4] Konrad Rieck et al, Learning and Classification of Malware Behavior, Proceedings of the Conference on Detection of Intrusions and Malware, and Vulnerability Assessment(DIMVA 2008), LNCS 5137, pp.108-125, 2008. - 60 -

제 6 장 Netbot 의특징분석 이장에서는악성코드의유형에따른자동화분석방법을도출하기위한선행단계로 Netbot의특징을분석하고, 분석결과는다른여러가지악성코드에대한자동화분석방법에도확장적용시키고자하였다. 제 1 절개요 DDoS 공격도구인 Netbot은기존의웜이나바이러스처럼컴퓨터를감염시킬뿐만아니라계속해서명령을주고받으며시스템까지제어할수있는악성프로그램이다. Netbot은주요기능으로 DDoS공격과원격제어와같은백도어기능도제공한다. 감염시온라인게임의계정유출, 특정서버나웹사이트공격, 스팸메일발송등의악성행위에악용되고있으며, 컴퓨터가느려지는증상도나타난다. 2007년부터국내아이템거래사이트뿐만아니라포털사이트가 Netbot을이용한 DDoS 공격을받아접속이불가능하거나지연되는등의장애가발생하였다. 최근에는공격자가전문적인지식을가지고있지않더라도 Netbot과같이자동화된 DDoS 공격도구를사용하고있으며, 이를악용하여금품을요구하는협박을하는등사이버범죄가증가하고있다. - 61 -

제 2 절 Netbot 의공격기능 Netbot에는총 18가지공격유형이있으며, 표 6-1과같이 Common Attack, WEB Attack, Special Attack, Combine Attack, Attack For Korean으로구분된다. [ 표 6-1] Netbot 의공격기능 공격모드 Common Attack Web Attack Special Attack Combine Attack Attack for Korean 공격유형 SYN Flood, ICMP Flood, UDP Flood, UDP Small Size, TCP Flood, TCP Multi-Connect NoCache Get Flood, CC Attack, HTTP GET Nothing CQ Game Attack, Route Attack, Smart Auto Attack SYN+UDP Flood, ICMP+TCP Flood, UDP+TCP Flood Fin_Wait1 Attack, Fin_Wait2 Attack, Established Attack 1. SYN Flood SYN Flood 공격은 TCP/IP의취약성을이용한 DoS 공격방식의하나로, 네트워크와시스템의자원을공격대상으로한다. SYN Flood 공격은 TCP의연결과정인 3-Way Handshake를악용한것이다. 공격자는 Source IP 주소를스푸핑 (Spoofing) 하고대량의 SYN 패킷을공격대상의특정포트로전송함으로써해당포트의대기큐 (Backlog Queue) 를가득채워해당포트에대한연결요청을큐가빌때까지거부하도록하는방법이다. 또한 Source IP 주소에들어갈임의의호스트는접근이불가능한 (Unreachable) 호스트이다. - 62 -

2. ICMP Flood ICMP Flood 공격은 Ping Flood로도알려져있으며, 대량의 ICMP 패킷 (PING 리퀘스트패킷 ) 을공격대상에게전송하고, TCP/IP 리퀘스트에대한응답을할수없게한다. 이는 ICMP가유일하게활성화된서비스나포트가필요하지않은프로토콜이라는특징을이용한것이다. ICMP Flood 공격의변종으로 Smurf 공격이있다. 이는공격자가 Source IP 주소를공격대상의 IP 주소로스푸핑한후브로드캐스트주소로 ICMP Echo Request 패킷을전송하면그하위모든시스템들이 ICMP Echo Reply 패킷을공격대상으로전송하여대량의패킷들이집중됨으로써네트워크부하를높이게된다. 3. UDP Flood UDP Flood 공격은공격자가공격대상에임의의포트로대량의 UDP 패킷을전송함으로써이루어지는공격이다. UDP Flood 공격은 UDP의특징인비연결성및비신뢰성때문에공격이용이하다. UDP는 Source IP 주소와포트번호를스푸핑하기쉬운취약점을가지고있으며, 이취약점을이용해과다한트래픽을공격대상에전송함으로써스푸핑된공격대상사이의네트워크를마비시킨다. 만약공격자가 Source IP 주소를공격대상 A의 IP 주소로스푸핑하여공격대상 B에게대량의 UDP 패킷을전송할경우, A와 B는계속해서서로패킷을주고받게되어두시스템사이의네트워크에과부하가초래된다. 4. UDP Small Size UDP Small Size 공격은 UDP Flood 공격보다전송하는 UDP 패킷의사이즈가작은것을말한다. UDP Flood 공격에서의 UDP 사이즈가 4008 byte인것에비해 UDP Small Size 공격에서는 512 byte의 UDP - 63 -

패킷을대량으로전송한다. 5. TCP Flood TCP Flood 공격은서버가정상적인서비스를할수없도록지연또는불능상태로만들기위해사용된다. 이는클라이언트가서버에설정하는 TCP 헤더의 Flags에따라 TCP SYN Flooding, TCP NULL Flooding, TCP FIN Flooding, TCP ACK Flooding, TCP PUSH Flooding, TCP RESET Flooding, TCP URG Flooding, TCP XMAS Flooding으로구분된다. 클라이언트가서버에 Flag를설정하여대량의패킷을보내면, 서버는이를처리하기위해서대부분의자원을소모하게되고, 정상적인서비스를하지못하는현상이발생한다. 6. TCP Multi-Connect TCP Multi-Connect 공격은대량의 TCP 연결을시도하는공격이다. IP를변조하지않고, 다량의 SYN 패킷을공격대상서버로전송한다. 공격을받은서버는다수의 ESTABLISHED 세션상태가발생하게되고, 서버의 CPU 및연결자원이고갈된다. 7. 웹부하공격 Netbot에포함된공격모드중 Web Attack은서버에대하여대량의요청을전송하는웹부하공격이다. 서버는웹부하공격을받을경우, 메모리와 CPU의점유율이 90% 이상이되어웹페이지에접속이불가능하거나지연되는등의장애가발생한다. Netbot의 Web Attack 모드에서는 NoCache Get Flood, CC Attack, HTTP GET Nothing의기능이있으며, NoCache Get Flood 및 HTTP GET Nothing은 HTTP Get Flood 공격의일종으로판단된다. - 64 -

가. CC Attack CC(Cache-Control) Attack은 HTTP User-agent 헤더에 Cache-Control 값을비정상적으로조작하여공격대상의 URL을직접호출하는방법을이용한다. Cache-Control은웹페이지의캐싱을위해정의되는값으로, 서버가클라이언트에게웹페이지를제공할때캐싱을요청하기위해사용되며클라이언트가서버에게페이지를요청할때에는일반적으로사용되지않는값이다. 그러나 RFC 문서에서는클라이언트와서버측모두사용되어있도록정의되어있다. 클라이언트가서버에게페이지를요청할때캐싱을요청하지않으면, 해당서버는비정상적으로동작하여서비스불능상태에빠질수있다. 사용자가일반적으로웹서버에접속해이미지혹은 HTML을호출할때변경된사항이존재하지않으면 304 NOT MODIFY 코드를 Response로전송하여로컬컴퓨터의 Temp 폴더를살펴보게한다. 이는접속시마다이미지를표시할때서버의부하를줄이기위한것이다. CC Attack은이와같은원리를이용한것으로, Temp 폴더가 Empty 상태인것처럼가장하여웹서버에이미지및 HTML을요청하게한다. 일반적인 DoS/DDoS 공격이같은페이지를여러사용자가동시에접속해서버에부하를주는것이라면, CC Attack은페이지요청시서버를이용하므로서버에더욱더부하를주는방법이라고할수있다. 나. HTTP GET Flood HTTP GET Flood 공격은특정페이지에대한요청이 TCP 3-Way Handshake 후정상적인과정을통해 HTTP GET을반복적이고대량으로요청하여서버에부하를유발시킴으로써서비스장애를발생시키는공격이다. HTTP GET Flood 공격은단일 TCP 연결에서의반복적 HTTP GET 요청과, 다중 TCP 연결을통한 HTTP GET 요청의 2가지유형으로분류할수있다. NoCache Get Flood 공격의경우 cache-control를 no-cache로 - 65 -

설정해서 Get / 이라는 HTTP 명령을연속적으로전송한다. HTTP GET Nothing 공격의경우는요청에대한명확한대상을지정하지않고 HTTP GET 명령어를연속적으로전송하는것으로판단된다. 제 3 절 Netbot 의행위분석환경구성 이절에서는 Netbot을분석하기위한환경구성에대하여기술한다. 다양한공격을위해공격자가사용하는도구는 Netbot Attacker이며, Netbot Attacker에서사용자들의컴퓨터를감염시키기위한 Agent를생성하여이메일이나게시판등을통해유포시킨다. Netbot의 Agent에감염된수많은사용자의컴퓨터들은공격자가원격제어를할수있으며, 주로 DDoS 공격에이용된다. 따라서 Netbot을분석하기위한환경을구축하고, Netbot의공격경로및특징등을분석한다. ( 그림 6-1) Netbot 의동작개념도 - 66 -

그림 6-1은 Netbot의동작개념도이다. 이에따라표 6-2와같이분석환경을구성한다. [ 표 6-2] Netbot의분석환경구성 Roll Machine Tools 공격자 Computer-1 Netbot Attacker 5.1 좀비 Netbot Agent, Computer-2 Wireshark, Process Monitor, (VMware) TCPview 중계사이트 웹서버 - 공격대상 Computer-3 Wireshark o 공격자 : 공격자역할을하는컴퓨터 (Computer-1) 에서 Netbot Attacker를통해 Agent를생성한다. o 좀비 : Netbot Attacker를통해생성한 Agent를감염시킨다. 분석도구로설치한 Process Monitor를통해파일및레지스트리변경을기록하고, TCPview를통해연결된프로토콜과 IP 주소및포트번호를확인하며, Wireshark를통해들어오고나가는트래픽을저장한다. o 중계사이트 : 좀비가 C&C에접속하기위한공격자컴퓨터의 IP 주소를포함한 txt 파일을저장한다. o 공격대상 : 공격자가좀비를이용하여공격을하는대상이며, Wireshark를통해트래픽을저장한다. - 67 -

제 4 절 Netbot 의특징 Netbot Attacker를통해 Agent를생성할때 2가지의옵션을선택할수있다. 첫번째는정상서비스인 BITS(Background Intelligent Transfer Service) 를변경하는것이고, 두번째는 svchost.exe 를새로생성하고서비스에등록하는것이다. 이는좀비컴퓨터가감염되었을때레지스트리의변경과서비스등록에영향을주게된다. 이렇게생성된 Netbot의 Agent 실행파일 ( 예 : agent.exe) 을실행시킬경우, 시스템시작시실행될수있는프로세스들을등록하여원치않는동작이자동으로수행될수있고, 파일을수정하거나파괴할수있다. 또한실행되는동안프로세스가생성될수있으며, 레지스트리키생성및레지스트리값이수정될수있다. 이절에서는 Netbot의 Agent 파일인 agent.exe를좀비컴퓨터에서실행시켰을때파일과레지스트리의의생성및변경과정을나타낸다. 1. BITS 옵션선택 선택하는옵션에서의 BITS는소프트웨어업데이트를조금씩다운로드할수있도록하는기술인 Background Intelligent Transfer Service의약자이며 Windows에서서비스로서동작한다. Netbot의 Agent 파일생성시이옵션을선택함으로써서비스를변조하여은닉에사용할수있다. 가. 파일변경 Netbot Attacker에서 BITS 옵션을선택하여생성된 Agent 실행파일이일반사용자의컴퓨터에서실행되고감염이되면, 1955984_res. tmp와같은임시파일이생성되고이때앞의 7자리숫자는랜덤하게생성된다. 이임시파일은 NetNtEx.dll로파일이름이변경되어 Windows의 system32 폴더로이동된다. NetNtEx.dll 파일은 Netbot Agent의실체이며, services.exe에 dll 형태로인젝션되어서비스형태로 - 68 -

등록되어서동작하게된다. 또한 Netbot의 Agent는 beep.sys 파일을수정하는데, 이는 SSDT 테이블을수정함으로써분석도구를이용한모니터링을방해하는루트킷이다. NetNtEx.dll 및 beep.sys 파일의생성과수정이완료되면 Netbot Agent의최초실행파일은삭제되고, SysEvent.Evt 파일을수정하여이러한파일변경에대한이벤트로그를삭제한다. 표 6-3은이러한과정을나타낸것이다. [ 표 6-3] Netbot Agent 감염시의파일변경순서내용 1 agent.exe 실행 C:\Documents and Settings\User\Local Settings\Temp 폴더내에 2 1955984_res.tmp 파일을생성 ( 이때 7자리숫자는랜덤 ) 3 1955984_res.tmp가 NetNtEx.dll로변경 4 C:\WINDOWS\system32 폴더로 NetNtEx.dll 파일이동 C:\WINDOWS\system32\drivers 폴더의 beep.sys를수정 5 ( 루트킷설치 ) 6 agent.exe 삭제 7 C:\WINDOWS\system32\config\SysEvent.Evt 수정 나. 레지스트리변경앞서설명하였듯이 Netbot Attacker를통해 Agent를생성할때어떠한옵션을선택하였는가에따라감염된컴퓨터에서레지스트리의변경과서비스등록에영향을주게된다. 표 6-4는 BITS 옵션을선택하여생성한 Agent를실행시켰을때변경되는레지스트리를나타낸것이다. agent.exe에의해수정되는 HKLM\SYSTEM\CurrentCo ntrolset\services\bits\parameters의 ServiceDll 레지스트리키는인젝션된 NetNtEx.dll 파일의위치를기록한다. services.exe에의해생성및수정되는레지스트리키들은 Netbot의기능들을동적서비스로써컨트롤하기위한것으로판단된다. - 69 -

[ 표 6-4] Netbot Agent 감염시의레지스트리변경 (BITS) 순서 1 2 3 내용 agent.exe에의한레지스트리키수정 HKLM\SYSTEM\CurrentControlSet\Services\BITS\Parameters service.exe에의한레지스트리키생성 HKLM 1) \SYSTEM\CurrentControlSet\Enum\Root\LEGACY_BITS\0000 \Control HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_TAPISRV\0000 \Control HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_RASMAN\0000 \Control service.exe에의한레지스트리키수정 HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_BITS\0000 \Control HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_TAPISRV\0000 \Control HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_RASMAN\0000 \Control HKLM\SYSTEM\CurrentControlSet\Services\BITS 2. SVCHOST 옵션선택 가. 파일변경 Agent를생성시킬때 SVCHOST 옵션을선택하더라도, 표 6-3과같이파일의생성및변경은동일한패턴을나타낸다. 1) HKLM: HKEY_LOCAL_MACHINE 컴퓨터에설치된하드웨어와소프트웨어의모든설정사항이저장되어있으며, 특히하드웨어및하드웨어를구동시키는데필요한드라이버와설정사항이저장되어있다. - 70 -

나. 레지스트리변경표 6-5는 SVCHOST 옵션을선택하고설명에는 MediaCenter 를입력하여생성한 Agent를실행시켰을때변경되는레지스트리를나타낸것이다. agent.exe에의해서비스에등록될수있도록 Svchost의 krnlsrvc의값을수정하고, ServiceDll 레지스트리키는인젝션된 NetNtEx.dll 파일의위치를기록한다. 또한 Windows가부팅될때자동시작하도록서비스를등록한다. [ 표 6-5] Netbot Agent 감염시의레지스트리변경 (SVCHOST) 순서 1 2 3 4 내용 agent.exe에의한레지스트리키생성 HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter\Parameters agent.exe에의한레지스트리값수정 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter\Parameters service.exe에의한레지스트리키생성 HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter\Security service.exe에의한레지스트리키생성 HKLM\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_MediaCenter \0000\Control HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter\Security - 71 -

제 5 절 Netbot 의공격트래픽 이절에서는 Netbot의분석환경내에서제3절의그림 6-1과같이 Netbot의동작개념도에따라실제로 Netbot Attacker를이용한공격을수행하고, 이에대한트래픽분석을기술한다. 1. 공격자컴퓨터 (C&C) 와좀비의연결 먼저좀비컴퓨터가 Netbot의 Agent에감염되면그림 6-2와같이중계사이트에접속하여공격자컴퓨터 (C&C) 의 IP 주소와포트번호정보를얻는다. ( 그림 6-2) 좀비와중계사이트사이의통신 다음으로그림 6-3과같이좀비는 C&C의 IP 주소와포트번호 (80:HTTP) 에 SYN 패킷을보내면서 C&C에지속적인연결을시도한다. - 72 -

( 그림 6-3) C&C 에대한좀비의연결시도 공격자의컴퓨터에서 Netbot Attacker를실행할경우, 그림 6-4와같이공격자컴퓨터와좀비의연결이이루어진다. 또한연결이이루어진직후좀비는 HTTP 프로토콜을통해 C&C에패킷을전송하는데, 이는좀비의운영체제, CPU 및메모리등컴퓨터사양과관련된정보를전송하는것으로판단된다. 실제로공격자컴퓨터에서실행한 Netbot Attacker에서 Netbot의 Agent에감염된좀비컴퓨터들의사양을확인할수있다. ( 그림 6-4) C&C 와좀비의연결설정및정보전송 - 73 -

2. Netbot 을이용한공격 C&C와좀비의연결이설정된후, Netbot Attacker를통해실제로 SYN Flood 공격을수행하였다. 이때 C&C에서좀비로전송한공격명령패킷은그림 6-5와같다. ( 그림 6-5) 좀비에대한공격명령전송 www.target.com은공격대상이며, 좀비는공격명령패킷을수신한직후그림 6-6과같이공격대상에게공격패킷 (SYN) 을지속적으로전송한다. 공격대상에게다량의공격패킷을전송할때사용되는포트번호의범위는 1037~1056(20개 ) 이고, 각각의포트번호를통해패킷을하나씩전송하게된다. ( 그림 6-6) 공격패킷전송 - 74 -

그러나시간이지날수록공격에사용되는포트번호의범위가변경되는것을확인할수있었으며, 범위에속한포트번호의개수는총 20개였다. 즉, 처음 20개의포트번호를사용하여총 3번을한사이클로공격패킷을전송하고, 다음 20개의포트번호를사용한공격패킷전송을반복하는것이다. 표 6-6은이러한패턴을나타낸것이다. [ 표 6-6] 포트번호범위사용의패턴 Cycle 사용되는포트번호의범위 1 1 2 3 1037~1056 1 2 2 3 1057~1076 1 3 2 3 1077~1096-75 -

제 6 절 Netbot 의 Code Injection 일반적인응용프로그램은사용자의필요에의해실행된다. 그러나 Netbot과같은악성코드는악성행위를하기위해항상실행되어야하며, 언제나사용자에의해실행이된다는보장이없으므로감염당시에이러한사항을고려하여미리자신을자동적으로실행되도록시스템을조작한다. 즉, Netbot은자신의기능이담긴바이너리코드를윈도우시스템에삽입 (Injection) 해야한다. 이절에는 Netbot에서사용하는코드삽입 (Code Injection) 에대하여기술한다. 1. 코드생성 Netbot의 Agent는실행이가능한 EXE 파일로구성되어있다. 사용자에의해파일이실행되는순간 Netbot의주된악성행위를담당하는 DLL 파일과루트킷을담당하는 SYS 파일로나누어지게되고, EXE 파일은삭제된다. DLL의경우 NetNtEx.dll, nbjs.dll, BITSEx.dll 등의파일명을가지며, SYS 파일의경우 Beep.sys의파일명을가진다. Netbot에감염되었다는것은생성된 DLL 파일이컴퓨터에삽입 (Injection) 되었다는것을의미한다. Netbot의 Agent는감염된컴퓨터의 C:\Windows\System32 폴더에 DLL 파일을생성한다. 그러나이파일은탐색기에서확인이불가능하며, 이는같이설치되는 RootKit 때문인것으로판단된다. 그림 6-7은 C:\Windows\system32 폴더를이름순으로정렬한결과이나, 해당 DLL(NetNtEx.dll) 파일이나타나지않는다. 따라서그림 6-8과같이 시작 > 실행 (R) 을통해직접해당 DLL 파일의존재여부를확인하고, 그림 6-9와같이 PE Explorer 도구로직접접근하였다. - 76 -

( 그림 6-7) NetNtEx.dll 파일확인불가능 ( 그림 6-8) NetNtEx.dll 파일존재확인 - 77 -

( 그림 6-9) PE Explorer 를통해분석한 NetNtEx.DLL 파일 이와같이해당 DLL 파일은탐색기등을통해서는찾아볼수없으나실제로는존재하는파일임을확인할수있다. 2. Registry 생성 위단계에서생성된 DLL 파일을윈도우가실행될때자동적으로시스템에삽입하기위하여 Netbot은해당악성코드를윈도우의서비스로위장하며, 이러한과정에서레지스트리를변경하게된다. Netbot Attacker에서 Agent를생성할때, 그림 6-10과같이서비스명칭및서비스설명과같은항목을지정한다. 이항목들은감염된시스템의레지스트리및제어판의서비스관리에사용된다. - 78 -

( 그림 6-10) Netbot 의 Agent 생성 그림 6-11은 Netbot에감염되기전과후의레지스트리를비교한것이며, 레지스트리의 HKLM\SYSTEM\CurrentControlSet\Services에새로운키를생성한다. 감염후를나타낸부분에서 Agent를생성할때사용한 MediaCenter 라는이름의키가새로생성된것을확인할수있다. 또한 MediaCenter 의레지스트리키중에서 Parameters 에는악성행위를위한악성코드의위치가명시되어있다. Parameters 레지스트리키의값중에서 ServiceDll이라는이름의문자열값은서비스의 DLL 파일을나타내며, C:\WINDOWS\system32\NetNtEx.dll 인것을확인할수있다 ( 그림 6-12). 해당 DLL은윈도우의서비스로등록되어시스템이시작할때시스템의메모리에로드된다. - 79 -

( 그림 6-11) 감염전후의레지스트리비교 ( 그림 6-12) 레지스트리값에명시된 DLL 의위치 - 80 -

또한표 6-7 과같이레지스트리키의값들을변경한다. [ 표 6-7] 레지스트리키값변경 HKLM\SYSTEM\CurrentControlSet\Services\MediaCenter DisplayName MS Media Control Center ErrorControl 0 ImagePath %SystemRoot%\System32\svchost.exe -k krnlsrvc ObjectName LocalSystem Start 2 Type 16 그림 6-13은레지스트리에등록되어생성된윈도우서비스의목록 2) 을나타낸것이다. ( 그림 6-13) 감염후서비스목록 2) 윈도우서비스목록윈도우의서비스목록은 Windows XP 를기준으로했을때 제어판 > 관리도구 > 서비스 에서확인할수있다. - 81 -

서비스목록에서사용하는이름과설명에표시되는내용은 Netbot Attacker에서 Agent를생성할때사용한 2번째와 3번째항목의값이된다. 서비스목록에서 MS Media Control Center 항목이존재하는것을확인할수있다. 이는 Netbot의 Agent에의해윈도우에새로운서비스가등록된것이다. 실제로해당 DLL이메모리에로드된것을확인하기위하여 Process Explorer 도구를사용하여 DLL을검색하였다. 그림 6-14는프로세스의목록중에서 NetNtEx.dll을찾은것이다. 그결과 NetNtEx.dll이윈도우시스템에서서비스를관리하는 svchost.exe 에삽입된것을확인할수있었다. 즉, Netbot의악성행위를위한코드가시스템에삽입 (Injection) 된것이다. ( 그림 6-14) NetNtEx.dll 삽입확인 - 82 -

3. RootKit Netbot의 Agent가감염될때 Beep.sys 파일을수정하여루트킷이설치된다. 이는자신을은닉하기위하여디바이스드라이브를설치하고커널레벨에후킹된다. 그결과파일이나레지스트리의변화를모니터링할수없도록한다. 즉, 탐색기에서파일의변화를관찰할경우루트킷이파일의생성내용을감추기때문에 NetNtEx.dll의생성기록이남지않고, 파일의존재여부도확인하기어렵다. 또한 Process Monitor의 RegMon과같은모니터링도구를통해레지스트리의변화를관찰할경우루트킷이 SSDT 테이블에서의변화기록을삭제하여레지스트리에변화가없는것처럼조작한다. - 83 -

참고문헌 [1] 보안뉴스 (http://www.boannews.com) [2] 디지털타임스 (http://www.dt.co.kr) [3] 보호나라 (http://www.boho.or.kr) [4] Anubis: Analyzing Unknown Binaries (http://anubis.iseclab.org) [5] Wire Shark (http://www.wireshark.com) [6] 한국정보보호진흥원, 분산서비스거부공격도구 Netbot 분석보고 서, 2008. - 84 -

제 7 장악성코드유형에따른자동화분석방법 제 1 절자동화분석방법 본연구에서제안하는악성코드유형에따른자동화분석방법은그림 7-1과같은과정으로이루어진다. ( 그림 7-1) 악성코드자동화분석방법의개념도 - 85 -

특징도출단계에서는특징분석환경내에서특징도출프로세스를통해파일분석, 레지스트리분석, 프로세스분석, 네트워크분석, API 추출, Bloom Filter를이용한 Bit Array 추출및코드유사도계산등악성코드의행위및코드에대한선행분석을수행하고, 이를명세화하여자동화분석단계에사용할수있는각각의악성행위및코드특징을도출한다. 그리고도출된특징은특징 DB에저장하게된다. 그림 7-1에나타낸특징도출프로세스는자동으로동작하며, 자동분석단계에서도악성코드의심파일을자동으로분석하기위해사용된다. 또한악성코드가아닌일반프로그램의파일을분석하여그결과를화이트리스트 DB에저장하기위해서도특징도출프로세스를사용한다. 상호작용단계에서는이전단계에서특징도출프로세스에의해도출된악성코드의특징이화이트리스트 DB와연동된화이트리스트필터를통과한다. 화이트리스트필터링을통해도출된악성코드의특징들에대하여분석가가확인하는상호작용과정을거쳐특징 DB에저장된다. 이러한특징 DB는분석을위해입력된악성코드의특징과비교분석하는도구가된다. 또한일반프로그램의파일을분석하여도출된특징들은분석가의확인을거쳐화이트리스트 DB에저장되기도하는단계이다. 자동화분석단계에서는악성코드로의심되는파일이입력으로주어지면특징도출단계에서사용되었던특징도출프로세스가재사용된다. 즉, 자동으로행위기반분석과코드기반분석을수행하여특징들을추출하고, 이특징들을비교분석모듈이특징 DB에저장된것과비교한다. 그결과수행하는악성행위및코드특징, 악성코드의분류결과등을도출하여리포트한다. 제 2 절에서는본연구에서특징분석환경을통해수동으로악성코드의특징을도출하는방법을기술하고, 이어서각단계에대한세부적인방법론을기술한다. - 86 -

제 2 절특징분석환경 악성코드의특징을도출하기위해서는악성코드를분석하기위한특별한환경이필요하다. 그이유는악성코드의분석과정에서실제네트워크나시스템이악성코드로부터영향을받지않아야하기때문이다. 이와동시에악성코드가수행하는악성행위모니터링및코드분석등에필요한도구들역시마련되어있어야한다. 이러한분석환경에는가상머신 (Virtual Machine) 이나허니팟 (Honeypot), 샌드박스 (Sandbox) 등이존재한다. 가상머신은환경구성및모니터링등이용이하고실제시스템과논리적으로분리되어있으며, 악성코드를실행하여감염시키기전의정상적인상태로빠른복구가가능하다는장점이있다. 본연구에서는악성코드의분석을통한특징도출실험을위해가상머신환경을선택하여사용하였으며, 샌드박스의경우본연구의진행에있어서악성코드실행및분석에대한제약이다수존재하여배제하였다. 또한검증을위해그림 7-2와같이동적분석의범위인레지스트리, 파일, 프로세스, 네트워크, 그리고정적분석의범위인코드분석에대하여각각다양한도구를이용한수동분석을수행하였다. 수동분석에서는다양한도구를사용하였으나, 이후제시하는자동분석에서는각각의수동분석도구를대체할수있는통합자동분석도구가필요하다. ( 그림 7-2) 악성코드특징도출단계 ( 수동 ) - 87 -

1. 레지스트리모니터링 레지스트리는 Windows 운영체제에서시스템의모든설정을모아두는중앙저장소라고할수있다. 이는 Windows의부팅과정에서부터로그인, 응용프로그램의실행에이르기까지모든작업이레지스트리에기록된정보를바탕으로진행된다. 만약시스템이악성코드에감염된다면, 레지스트리의변조등의변화가발생한다. 악성코드는 Windows가시작될때자동으로실행또는로딩되도록하거나, 백신및개인방화벽에의한탐지및차단을회피하기위하여레지스트리를조작한다. 따라서악성코드에의해주로사용되는레지스트리가무엇인지파악하고이를분석하여악성코드의유형에따라각각생성, 수정하여사용되는레지스트리를분류및정리함으로써악성코드자동분석에이용할수있도록한다. 악성코드에의한레지스트리변경모니터링을위해서는 RegMon, RegShot, WinAlysis 등과같은도구를사용한다. 이러한도구들을이용함으로써그림 7-3과같이악성코드가감염되기전과감염된후의레지스트리변화를정리할수있으며, 악성코드의유형및그종류에따라주요레지스트리의변화를특징 DB의레지스트리테이블에저장한다. ( 그림 7-3) 레지스트리변경모니터링 - 88 -

표 7-1은레지스트리모니터링도구인 RegMon을이용하여악성코드의주요레지스트리변경에대한모니터링결과이다. 사용된악성코드샘플은 AhnLab V3 안티바이러스제품에서 Win-Trojan/Injec t.58368으로진단된것이다. ( 그림 7-4) 악성코드샘플 [ 표 7-1] 레지스트리변경모니터링 구분 키생성 값수정 내용 HKLM\System\CurrentControlSet\Enum\Root\LEGACY_RASMAN\0000\Control HKLM\System\CurrentControlSet\Enum\Root\LEGACY_TAPISRV\0000\Control HKLM\System\CurrentControlSet\Services\wer32 HKLM\System\CurrentControlSet\Services\wer32\Security 값이름 레지스트리키 데이터 HKLM\System\CurrentControlSet\Enum\Root\LEGACY_RASMAN\0000\Control ActiveService RasMan HKLM\System\CurrentControlSet\Enum\Root\LEGACY_TAPISRV\0000\Control ActiveService TapiSrv HKLM\System\CurrentControlSet\Services\wer32 ErrorControl ImagePath Start Type 0 C:\WINDOWS\system32\jkghje.dll 1 1 HKLM\System\CurrentControlSet\Services\wer32\Security Security 0x01001480900000009c000000140000003300000000200 1c00010000000280-89 -

2. 파일모니터링 사용자의필요에의하여응용프로그램을설치할때새로운파일들이생성된다. 뿐만아니라시스템이악성코드에감염되었을경우에도파일이생성되거나변경된다. 악성코드는실제로존재하던파일과유사한이름의파일을생성하여위장하거나, 완전히다른이름의파일을생성한후파일의존재를숨기기도한다. 또한몇몇의루트킷과같은악성코드는자신을은닉하기위하여디바이스드라이버를설치하여커널레벨에서의후킹을시도한다. 즉, 이는하드디스크에새로운파일을생성하는과정인것이다. 이러한파일변화의특징을이용하여프로세스의저장매체사용모니터링및의심되는파일의생성을모니터링한다. 또한악성코드에의하여파일이생성되거나변경되는것을모니터링하기위해서는 FileMon, WinAlysis 등과같은도구를사용하고, 악성코드의유형및그종류에따라파일의생성및변경을모니터링하여이를특징 DB의파일테이블에저장한다. 표 7-2는파일모니터링도구인 FileMon을이용하여악성코드의주요파일변경에대한모니터링및분석결과이다. 사용된악성코드샘플은레지스트리모니터링에서사용한 Win-Trojan/Inject.58368이다. [ 표 7-2] 파일변경모니터링 구분 파일생성 경로파일명 MD5 SHA-1 내용 C:\WINDOWS\system32\ jkghje.dll b33933c516bae37817bf287627d5d8c3 7fce8545fc72b893341f6b0c24ea11227a81f72f - 90 -

3. 프로세스모니터링 프로세스는컴퓨터내에서실행중인프로그램의인스턴스이다. 프로그램은하드디스크와같은보조기억장치로부터메모리로로드되어작업을수행중에있을때하나의프로세스가된다. 따라서 Windows 에서하나의프로그램이실행되면이와관련된프로세스들이실행된다. 또한악성코드가실행되는경우에도프로세스가생성된다. 이에악성코드가실행됨에따라변화하는프로세스를모니터링한다. 그리고이러한프로세스들을모니터링하는데사용되는도구로는대표적으로 Process Monitor, IceSword, Process Explorer 등이존재하며, Process Explorer는분석자들이가장많이사용하는도구로알려져있다. Process Explorer는 Windows의작업관리자와비슷하지만프로세스의세부적인정보를확인할수있고새로생성되거나제거되는프로세스도모니터링할수있다. 또한특정프로세스에서사용되고있는 DLL 모듈의리스트를확인할수있으며, 이는악성코드를분석할때프로세스와관련된 DLL 파일들을찾아내는데유용하다. 최근의악성코드는 Windows에포함된작업관리자에서프로세스가표시되지않도록숨기는기능도있으나, 이러한프로세스모니터링도구를통해숨겨진프로세스역시확인한다. 따라서프로세스모니터링이가능한도구를사용하여악성코드에의한프로세스변화에대하여파악해야하며, 특히프로세스를숨기는행위는일반적인응용프로그램에서거의수행되지않는부분이기때문에악성코드에의한프로세스로간주하여해당악성코드의특징으로정의할수있다. 그리고모니터링된프로세스는악성코드의유형및종류에따라특징 DB의프로세스테이블에저장한다. 그림 7-6은파일모니터링도구인 Process Explorer를이용하여악성코드에의한프로세스변경에대한모니터링결과이다. 악성코드샘플은 AhnLab V3 안티바이러스제품에서 Win32/Zhelratin.worm.118 784.MP으로진단된것으로 Storm 봇의일종이다. 그림 7-6은악성코드가생성하는프로세스를나타낸것이다. - 91 -

( 그림 7-5) 악성코드샘플 ( 그림 7-6) 프로세스변경모니터링 4. 네트워크모니터링 최근의악성코드대부분은사용자의컴퓨터를감염시킨후인터넷을통해해커나공격자에게연결하는기능을갖는다. 즉, 시스템이악성코드에감염되었을경우, 사용자의컴퓨터를모니터링하거나컴퓨터에저장된데이터를유출시키는기능을가진백도어, 트로이목마등의악성코드라면특정도메인, IP 주소및포트번호에대한접속을시도하게된다. 이를통해해커나공격자는사용자들의다양한정보와데이터를획득할수있으며, 해당악성코드에감염된컴퓨터들을조종하여각종공격에이용할수도있다. 따라서악성코드가네트워크에서어떤행위를하는지모니터링해야할필요가있으며, 모니터링결과도출된접속도메인, IP 주소및포트번호에대하여특징 DB의네트워크테이블에저장한다. 또한초당 - 92 -

발생하는트래픽량에대한임계치 (Threshold) 를정의하고이를초과하는경우악성코드에의한것으로의심할수있다. 네트워크모니터링을위하여 TCPView, TDIMon 등의도구를사용할수있으며, 이를통해현재접속중인도메인, IP 주소및포트번호를모니터링한다. 또한 Wireshark 등과같은도구로도기록된패킷들을분석하여악성코드가접속하려는도메인을찾아내고, 해당악성코드의유형에따라특징 DB에저장한다. 그림 7-7은네트워크모니터링도구인 TCPView를이용하여악성코드의접속 IP 주소와포트번호에대한모니터링결과이다. 사용된악성코드샘플은레지스트리및파일모니터링에서사용한 Win-Trojan/Inject.58368이다. 그림 7-7은접속하는 IP 주소와포트번호를나타낸것으로, IP 주소 208.72.169.54와포트번호 80번에대하여주기적으로통신을시도한다. ( 그림 7-7) 네트워크모니터링 5. 코드분석 악성코드가어떤동작을하는지분석하기위해서악성코드를직접실행하여악성코드가수행하는행위들을모니터링하는방법외에도실행코드의세세한부분을살펴봄으로써직접실행을통해도출할수없었던기능을파악하고, 코드의어느부분이어떤악성행위에사용되는코드인지분석한다. 이는악성코드의모든실행에대하여 - 93 -

철저히분석할수있어직접실행에따른피해가없다는장점이있으나 많은시간이요구되는단점도있다. 악성코드가 Windows에서실행되기위해서는실행가능한파일 포맷인 PE(Portable Executable) 형식을가지고있기때문에 PE Explorer, PEView, Bintext와 같이 PE 파일을 분석하는 도구를 사용하여악성코드에서사용하는문자열, 삽입된 DLL, 함수호출등을 추출하여악성코드의유형및종류에따라특징 DB에저장한다. 또한 IDA Pro나 Ollydbg와같은코드분석도구를사용하여악성코드를 기능단위의모듈로분할 (partitioning) 하고, 각각의기능모듈에 대하여 Bloom Filter를통해 Bit Marking하여 Bit Array를도출하여 유사도계산에사용한다. 또한 Bit Marking 결과를특징 DB에 저장한다. ( 그림 7-8) 함수에대한 Bloom Filtering - 94 -

제 3 절특징도출단계 특징도출단계는특징도출프로세스의행위기반분석과코드기반분석을통해특징을자동으로도출한다. Input은특징도출의대상으로, 화이트리스트 DB에저장하기위한일반프로그램과악성코드특징 DB에저장하기위한악성코드 2가지가가능하다. 그리고화이트리스트 DB와특징 DB에저장하기위한 Output은행위및코드기반분석의결과이다. 이를정리하면다음과같다. ( 그림 7-9) 특징도출프로세스 ( 자동 ) oinput - 분석대상 : 일반프로그램또는악성코드 ooutput : - 행위기반 : 주요파일 / 레지스트리 / 프로세스변경항목, 네트워크연결행위 - 코드기반 : API 리스트, Bloom Filter 결과값 ( 코드유사도 ) - 95 -

1. 행위기반분석 Input으로주어지는악성코드에대하여특징도출프로세스에서 API 후킹을통해행위기반분석을수행한다. 또한일반프로그램을대상으로분석이가능하다. 즉, API 후킹을함으로써악성코드가실행됨에따라호출되는함수들에의한파일의변화, 레지스트리의변화, 프로세스의변화등을모니터링하고특징을추출한다. ( 그림 7-10) 행위기반분석 가. API Hooking Windows는기본적으로 3개의 DLL(kernel32.dll, user32.dll, gdi32.dll) 에대부분의 API를구현하여제공하고, 응용프로그램은실행시자신의프로세스주소공간으로이들 DLL을맵핑한후사용한다. 또한 API 후킹은어떤프로그램에서 API 호출을가로채고분석가가작성한프로그램의함수가처리할수있도록하는메커니즘이며, 프로그램이어떠한언어로개발되었는지에관계없이적용될수있기때문에디버깅이나역추적, 모니터링등에도사용할수있다. 간단한예를들면자동단어인식을이용한전자사전프로그램의경우, 마우스커서가가리키는단어를인식하도록 Windows 메시지후킹및 API - 96 -

후킹 (TextOutA/W) 을이용한것이다. 후킹이적용되는레벨의측면에서보면 API 후킹은커널레벨과사용자레벨의 2가지메커니즘으로구분된다. 그림 7-11은각후킹의위치를나타낸것으로, Windows에서모듈간의관계와의존성을나타낸다. 이 2가지의중요한차이점은커널레벨후킹의 Interception 엔진은커널모드드라이버로포장되지만사용자레벨후킹은일반적으로사용자레벨 DLL을사용한다는것이다. ( 그림 7-11) API 후킹레벨 - 커널및사용자레벨 따라서본연구에서제시하는 API 후킹을이용한행위기반분석방법은 API 함수호출을제어할수있는기능을통해 API 호출시발생되어보이지않는특정행위도추적할수있다는특징을이용한다. - 97 -

(1) 사용자레벨후킹 o IAT(Import Address Table) Hooking : 일반적인프로그램에서 API를호출할때 IAT(Import Address Table) 을사용한다. 이 IAT의필드값을새로운함수의주소로대체함으로써후킹이가능하다. o EAT(Export Address Table) Hooking : GetProcAddress() 라는 Windows API는특정모듈의함수주소를반환한다. 이는 IAT 다음으로많이사용되는호출방법으로, GetProcAddress() 를사용해함수포인터를취득한후호출하는방법이다. 그러나이함수는 EAT를사용하기때문에이를조작하면함수의결과값역시조작이가능하다. o Detour-Style Hooking : 후킹대상함수의첫부분에원하는함수로이동하는 Jump 명령을삽입한후, 손상된부분은트렘펄린 (Trampoline) 이라불리는영역에보관한다. 이트렘펄린은후킹함수내에서원래함수를호출하여정상적으로처리될수있도록호출된다. o Debugging : 디버거를연결함으로써후킹과비슷한작업을할수있다. 예를들면해당 API의코드첫부분에 INT3 Breakpoint를통해중단점을삽입하거나예외를발생시킬만한코드를삽입한다. o Native API Hooking : Native API(Zw*, Nt*) 를후킹할때주로사용되는방법중하나이다. Native API를호출하는 Zw* 함수들은 MOV EAX, XXXXXXXX(SSDT Idx) 형태로시작하는데이 SSDT Idx에새로만든 SSDT Entry를추가하고그아이디를넣어서후킹한다. - 98 -

(2) 커널레벨후킹 o SSDT(System Service Descriptor Table) Hooking : Windows NT 계열에서는 Native API 주소들을보관하는테이블 (SSDT) 이있다. 이테이블내의함수주소를바꾸거나, 혹은테이블자체를프로그램내부메모리로 redirect 함으로써후킹이가능하다. o IAT/EAT Hooking : 사용자레벨과비슷한방법으로구현이가능하며, EAT Hooking은 MmGetSystemRoutineAddress() 등의결과값을조작하기위해이용할수있다. o Debug Register Hook : 디버그레지스터를이용함으로써후킹이가능하며, 그전에 INT1 interrupt를가로채야한다. o IDT(Interrupt Descriptor Table) Hooking : SIDT 명령어를사용하면 IDT 테이블주소를구할수있고, 이 IDT 테이블내의인터럽트처리주소를바꿈으로써특정인터럽트를후킹할수있다. 주로 INT1이나 INT3을후킹하기위해사용된다. o IRP Hooking : 특정드라이버의 IRP를후킹할수있다. o Detour Hooking : 사용자레벨후킹과동일하다. osysenter 주소변경 : IA32_SYSENTER_EIP MSR 값을변경하여후킹이가능하다. o SIngle Byte Patching : INT(0xCD) 명령을이용한후킹으로, 예를들어 binary가 E9 37 같이시작하면 E9를 CD로대체하여 INT 0x37이란명령으로바꾼후, INT 0x37 IDT entry를후킹하는방법이다. 나. 파일관련 API 함수및파라미터표 7-3은파일변경모니터링을위해사용될수있는 API 함수및파라미터를나타낸것이다. 후킹을했을때각함수의파라미터들을통해생성되는파일명을파악함으로써파일변화에대한특징을도출한다. 파일변화와관련된대표적인 API 함수로 CreateFile(), CopyFile(), GetModuleFileName() 이사용될수있다. - 99 -

API 함수파라미터설명 CreateFile() lpfilename 생성하고자하는파일이름 CopyFile() GetModuleFile Name() [ 표 7-3] 파일변경모니터링에이용가능한 API 함수 lpexistingfilename lpnewfilename lpfilename 복사하려는원본파일이름복사하여생성될파일이름 파일의경로 다. 레지스트리관련 API 함수및파라미터표 7-4는레지스트리변경모니터링을위해사용될수있는 API 함수및파라미터를나타낸것이다. 프로그램이나악성코드는레지스트리에데이터를추가시키기전에레지스트리키를생성하거나열어야한다. 이와관련된대표적인 API 함수로는 RegCreateKey(), RegOpenKey(), RegSetValue() 가사용될수있다. 각파라미터를통해레지스트리변화를도출한다. [ 표 7-4] 레지스트리변경모니터링에이용가능한 API 함수 API 함수파라미터설명 RegCreateKeyEx(), RegCreateKey() RegOpenKeyEx(), RegOpenKey() RegSetValueEx(), RegSetValue() hkey, lpsubkey hkey, lpsubkey hkey, lpvaluename, lpdata 레지스트리키생성을위해사용되는대표키와경로 레지스트리키오픈을위해사용되는키와경로 해당레지스트리키에값, 데이터지정 라. 프로세스관련 API 함수및파라미터표 7-5는프로세스변경모니터링을위해사용될수있는 API 함수및파라미터를나타낸것이다. 이와관련된 API 함수로는 CreateProcess(), TerminateProcess(), WinExec() 가사용될수있다. 각파라미터를통해실행한프로세스명을도출한다. - 100 -

API 함수파라미터설명 CreateProcess() TerminateProcess() WinExec() [ 표 7-5] 프로세스변경모니터링에이용가능한 API 함수 lpapplicationname, lpcommandline hprocess lpcmdline 생성할프로세스의실행파일명생성할프로세스의파라미터문자열 해당프로세스가종료되도록하는핸들 특정 Application 을실행 ( 파일이름및옵션파라미터를포함한커맨드라인실행 ) 마. 네트워크관련 API 함수및파라미터표 7-6은네트워크모니터링을위해사용될수있는 API 함수및파라미터를나타낸것이다. 이는소켓 API를이용한다. 각함수및파라미터를이용하여네트워크관련행위를도출한다. 또한 send/recv 함수의경우파라미터중에서전송되는데이터량을이용하여다음과같이초당패킷량을계산한다. 패킷수혹은 수 [ 표 7-6] 네트워크모니터링에이용가능한소켓 API 함수 API 함수 파라미터 설명 send()/recv() len 전송데이터의길이 inet_ntoa() in IP 주소 connect() name 연결되는호스트 gethostbyname() name 호스트이름으로호스트정보검색 - 101 -

2. 코드기반분석 악성코드의유형별자동화분석에서코드기반분석방법으로 PE 파일분석을통해악성코드에서이용되는 API를추출하고, 코드유사도를도출하는방법을제시한다. 이방법은악성코드에서사용된 API 함수들을바탕으로하며, 자동화분석방법에서하나의모듈이된다. 또한행위기반분석의결과도출된특징들과함께특징 DB에저장된항목들과비교분석의대상이된다. 이를위해서는그림 7-12와같이악성코드에사용된 API를구분하는것이무엇보다중요하다. 따라서 Windows에서사용되는실행파일형식인 PE 파일의분석을통해악성코드에사용된 API와함수를도출해야한다. ( 그림 7-12) 악성코드의 API 구분 가.PE 파일 PE(Portable Executable) 파일은 Windows 운영체제에서사용되는실행파일, 객체코드 (Object Code), DLL에대한파일구조이며, 실행을하기위한일련의규칙들을가지고있다. 또한 Portable이라는용어는운영체제구조의다양한환경에서포맷에대하여융통성이있음을의미한다. 즉, PE 구조로된파일들은플랫폼에관계없이각버전별 Windows 운영체제가구동되는시스템이면어디에서나동일한형식으로사용될수있다. PE 파일포맷은 Windows 운영체제로더가실행코드를관리하는데필요한정보를캡슐화한데이터구조이다. 이는링크를위한동적라이브러리참조와 API Export 및 Import - 102 -

테이블, 리소스관리데이터, 쓰레드로컬저장데이터를포함한다. 일반적으로 EXE 파일을실행하게되면 Windows 운영체제로더가파일의구조를분석하고메모리에로드하여프로그램의진입점으로들어가게하며, 로드하는동안파일내부의 Import 정보를통해필요한 DLL도찾아메모리에로드한다. 따라서자동화분석을위한코드기반분석에서는이러한 PE 파일의정보를분석하여악성코드에서사용된 API나함수들을도출해야한다. 나.PE 분석을통한자동코드기반분석방법악성코드의유형별자동화분석방법에서특징도출프로세스는 PE 파일분석을이용한 API 기반의코드분석방법을포함한다. PE 파일의정보분석을수행함으로써 IAT(Import Address Table) 를찾고, IAT에서 Import Function들을추출하여리스트를작성한다. 이 Import Function 리스트는특징 DB에저장된악성코드별사용 API들을대상으로비교되어야한다. 악성코드의유형별자동화분석방법을위한코드기반분석역시선행되는특징도출프로세스를통해특징 DB에저장이되어야하며, 이후미확인 (unknown) 파일또는악성코드로의심되는파일을분석하기위해사용되는분석프로세스, 도구는같다. 그러나특징도출단계에서도출된특징은자동분석과분석가의상호작용이함께이루어져야한다는점에서차이가있다. 이는일반적인프로그램에서자주사용되지않는악성코드만의 API와함수를찾아내는작업이다. 현재 PE 파일분석을위한도구로는 PE Explorer, PE View, Import RE Constructor 등이존재한다. 본방법론을제시하기위해서이러한도구들을사용하였다. 대표적으로 PE Explorer는 EXE, DLL, SYS, OCX, SCR 등다양한실행파일의정보를보여주는프로그램이다. 따라서 PE Explorer와같은기능을하는모듈이악성코드통합분석도구에포함되어야한다. 그리고해당도구를통해 IAT(Import Address Table) 에나타는 API 함수들로부터특정유형의악성코드에서공통적으로사용된항목들을도출한다. 도출된결과는특징 DB의한가지요소로서저장하고, 자동화분석단계에서악성코드로의심되는 - 103 -

미확인 (unknown) 파일을입력으로주었을때이러한특징 DB의데이터를반영하여악성코드를분석하는데이용된다. ( 그림 7-13) 코드기반분석 다.Netbot에사용된 API 함수본연구에서는 API 코드기반분석방법제시를위하여 Netbot에서사용된 API 함수들을추출하였다. 또한그림 7-12에나타낸악성코드고유의부분에대한분류를하기위하여 FTP 프로그램 (ALFTP), 인터넷브라우저 (IE7), 메모장, 원격제어프로그램의실행파일등에서도 API 함수들을추출하였다. Netbot 에이전트의각버전 (4.7/5.1/5.5) 에공통적으로 Import되는 DLL은표 7-7과같다. 또한다른일반프로그램과의 Import Function 비교를부록에첨부한다. [ 표 7-7] Netbot 에이전트의 Import DLL Import DLL KERNEL32.dll, USER32.dll, GDI32.dll, ADVAPI32.dll, SHELL32.dll, WS2_32.dll, AVICAP32.dll, MSVCRT.dll - 104 -

USER32.dll에서는악성행위를위하여표 7-8과같이대표적인함수들을 Import한다. 이는 Windows에서감염된컴퓨터에저장된데이터를조회하기위해사용되는것으로분석된다. 그러나이러한함수들만으로는 Netbot의특징으로단정짓기어렵다. [ 표 7-8] USER32.dll 의함수 Import DLL USER32.dll 함수 CloseDesktop, CloseWindow, CloseWindowStation, GetProcessWindowStation, OpenDesktopA, OpenWindowStationA ADVAPI32.dll에서는표 7-9와같이 Windows 서비스등록및삭제등서비스제어관련함수들을사용한다. 이는 Netbot 에이전트를서비스에등록함으로써 Windows가시작될때자동으로실행되도록하기위해사용된것으로분석된다. [ 표 7-9] ADVAPI32.dll 의함수 Import DLL ADVAPI32.dll 함수 ChangeServiceConfigA, CloseServiceHandle, ControlService, CreateServiceA, DeleteService, OpenServiceA, QueryServiceStatus RegisterServiceCtrlHandlerA, SetServiceStatus, StartServiceA AVICAP32.dll에서는표 7-10과같은함수를사용한다. 이함수들은일반적으로웹캠이나다른비디오하드웨어로부터 AVI movie 혹은 video를저장하는데사용되지만, Netbot에서는감염된사용자컴퓨터의화면을캡처할때사용되는것으로분석된다. - 105 -

[ 표 7-10] AVICAP32.dll 의함수 Import DLL AVICAP32.dll 함수 capcreatecapturewindowa, capgetdriverdescriptiona WS2_32.dll에서는표 7-11과같은함수를사용한다. 이는공격자가감염된컴퓨터와연결하여통신을하기위해사용된소켓함수로분석된다. 또한일반적인프로그램에서 WSOCK32.dll이주로 Import 되는반면 Netbot에서는 WS2_32.dll이 Import 되었다. [ 표 7-11] WS2_32.dll 의함수 Import DLL WS2_32.dll WSASocketA 함수 라. Bloom Filter를이용한코드유사도추출 (1) Bloom Filter Bloom Filter는통계적특성을가지는자료구조이다. Bloom Filter를이용하면많은양의데이터를정해진크기의공간에효율적으로저장할수있으며, 빠른검색이가능하다. 2 m 비트의공간을사용하는 Bit Array가존재할경우, 데이터를저장하기위해해쉬함수 H를통하여위치에대한정수값을계산하고, Bit Array 중에서해당위치를 1로 Set한다. - 106 -

( 그림 7-14) Bloom Filter 의동작 그림 7-14는 0으로모두 clear가된 Bit Array에 n 1 이라는값을저장하기위하여, 해쉬함수 H(n 1 ) 의결과값인 1, 2, 2-1 번째 Bit를 1로 Set하여기록한다. 그후, 다음입력값인 n 2 를기록하기위하여 H(n 2 ) 의결과값에해당하는 0, 2, 2 m -1 번째 Bit를 1로 Set한다. 이와반대로, 저장된 Bit Array에 N이라는값이존재하는지확인하기위해서는동일한해쉬함수를사용한다. 즉, 그림 7-15에서해쉬함수 H를통하여 N의값을계산한후, N에대한값만을가지고있는 Bit Array 설정값를생성하여, 기존의저장된 Bit Array와 AND 연산을통하여해당결과값 R이 H(N) 과같은경우에는 N은 Bit Array에포함된것이며, 그렇지않은경우에는 N은 Bit Array에포함되어있지않다는것을의미한다. - 107 -

( 그림 7-15) Bloom Filter 의동작 ( 탐색 ) 이와같이 Bloom Filter는해쉬함수를통하여입력값의크기에상관없이모두동일한크기의 Bit Array로데이터를생성할수있으며, 문자열매칭이나여타방법에비해비교적쉽게포함여부를확인할수있다. 그러나해쉬함수가잘정의되어있지않은경우에는충돌이잦아지고 False Positive가발생할수있는반면, False Negative는발생하지않는다. (2) 코드유사성도출관련연구 코드유사성을도출하기위한기존의방법으로 Carrera et al.(2004) 과 Gheorghescu(2005) 가 악성코드의 유사성을 도출하기 위한 방법을 제안하였다. Carrera et al. 은 Atomic Function의 Signature를생성하여비교하는 방법을 제안하였다. 여기서 Atomic Function이란 Windows API 라이브러리와같이다른실행코드도포함할수있는함수를제외한 나머지함수를호출하지않는함수를의미한다. 즉, 자신이함수호출 관계에있어최하위함수인것이다. 이러한 Atomic Function의 리스트를 L α 라 할 때, Function의 Signature는 해당 Function이 호출하는 Atomic Function의위치를 1로설정하고, 그렇지않은경우 0으로 설정하며, 이러한 리스트는 Function의 Signature가 되어 Function을대표하게된다. Gheorghescu는함수를 Basic Block 단위로나누어각각을비교하는 방식을제안하였다. 여기서 Basic Block이란하나의진입점 (Entry - 108 -

Point) 과하나의종료점 (Exit Point) 를포한한연속하는명령어의집합을의미한다. 즉, Basic Block은코드의의미를나타내는작은단위가되는것이다. 이렇게추출한 Basic Block을 Edit Distance, Inverted Index, Bloom Filter 등의비교를위한자료구조및알고리즘으로 Basic Block 간의유사도를계산하였다. (3) 제시하는코드유사도도출방법본연구에서는코드유사도에대한기존의연구와 Bloom Filter를접목하여악성코드유형에따른자동화분석방법의코드기반분석에적용하였다. 두코드의유사도를도출하기위해서는코드를비교하여야한다. 그러나코드를직접비교하는것은많은계산량을필요로하며, 코드의특징을저장하기위해많은공간이필요하다. 또한코드의순서나코드의특징을대변하지못하는명령어가비교대상으로사용되기때문에적합하지않다. 따라서본연구에서는코드를의미단위 ( 함수 ) 로분할하였으며, 함수의 Signature는그함수가사용하는 Windows API 라이브러리이름의해쉬값을 Bit Array로저장하여사용하였다. 예를들어함수 A에서 CreateFile 함수를사용하고 Bloom Filter가 8-Bit를사용하여 H( CreateFile ) = {1, 4, 5} 라는 Bit Array 설정값이나온다면함수 A의 Signature는그림 7-16과같다. 또한함수 C가함수 A와 B를호출할경우, 그림 7-17과같이함수 C는자신이호출하는라이브러리의해쉬값과함수 A와 B의 Signature를 OR 연산한값을사용한다. ( 그림 7-16) Bloom Filtering 의예 1-109 -

( 그림 7-17) Bloom Filtering 의예 2 Bloom Filter를이용하여도출한 Bit Array 결과값은 Function을대표한다. 하나의프로그램에는수많은 Function이존재하며, 각 Function마다 Bloom Filter 값이할당된다. 따라서이러한 Function을모두비교하여, 두프로그램간의유사도를수치로도출하는알고리즘이필요하다. 이에본연구에서의유사도계산방법은 Carrera et al. 이제안한방법을사용하였다. 두프로그램에대한 Bloom Filter 결과값의집합을각각 A와 B로정의할때, 두프로그램의유사도를나타내는함수 는다음과같이정의된다. A 는집합 A의원소개수를나타낸다. 위함수를이용하여 A와 B의유사도를계산할수있다. 또한 는 를만족하며, 그결과값이 0에가깝다면유사도가낮은것이고, 1에가깝다면유사도가높다는것을의미한다. 제시한방법에대한효율성을확인하기몇개의개체에대한실험을진행하였으며, 다음과같은환경에서실험하였다. o IDAPro (Disassembler) - IDAPro는 Disassemble은물론, 함수간의관계등을도식화하여나타내주는툴이다. - 110 -

o IDAPython (Tracing Script) - IDAPython은 IDA API와 Python을결합한 IDAPro 플러그인의한종류이다. 즉, 기존의 C 언어나 IDC를통하여작성해야했던 IDAPro의플러그인을간단하지만강력한 Python의문법을통해구현할수있다. 또한 Python의공개된모듈을사용하여, 함수간의관계를쉽게도식화할수있다는장점이있다. Tracing Script는코드의모든함수를스캔하고함수에대한 Bloom Filtering을하여출력한다. 또한프로그램에존재하는함수에대하여 Bloom Filtering을수행하도록작성한 Python 스크립트는부록에첨부한다. o Python (Comparing Script) - Comparing Script는 Tracing Script에서 도출한 두 개의 프로그램에대한유사도를계산하여결과를출력한다. 이를위해 Python을통해간단한스크립트를작성하였다. Comparing Script는 Tracing Script의결과로출력된.txt 간의유사도를 비교하는것이다. 또한작성한 Python 스크립트는부록에 첨부한다. 제시한방법을검증하기위하여 NetBot 4.7, 5.1, 5.5 버전과다른일반적인응용프로그램을비교하였다. 사용된함수하나의 Signature에대한 Bit Array의크기는 1024 Bit이다. [ 표 7-12] 넷봇의코드유사도비교 v 4.7 1.000 v 5.1 0.562 1.000 v 5.5 0.568 0.591 1.000 버전 v 4.7 v 5.1 v 5.5-111 -

표 7-12에나타낸결과로알수있듯이, NetBot은다른버전별로비교했을때 0.5에서 0.6 사이의유사도값을보인다. 또한위수치가어느정도의유사도를나타내는지에대하여다른프로그램과의유사도를측정하여비교할필요가있다. 본실험에서는 NetBot과노트패드, 원격제어프로그램, Torrent 등의프로그램간의유사도를비교한다. 위프로그램의선택기준은 NetBot의행위와유사한행위여부로선정하였다. 노트패드의경우 NetBot과유사한행위가거의없으며, 원격제어프로그램의 NetBot의그것과동일하다. 마지막으로 Torrent는소켓통신등의행위를하기때문에비교대상으로선정하였다. [ 표 7-13] 넷봇과다른프로그램의유사도비교 v 4.7 1.000 넷봇 v 5.1 0.562 1.000 v 5.5 0.568 0.591 1.000 노트패드 0.263 0.261 0.265 1.000 원격제어 0.270 0.277 0.274 0.262 1.000 utorrent 0.080 0.096 0.088 0.083 0.112 1.000 프로그램 v 4.7 v 5.1 v5.5 넷봇 노트패드 원격제어 utorrent 표 7-13에서확인할수있듯이 NetBot과다른응용프로그램은 0.08에서 ~ 0.27 내외의유사도를나타낸다. 즉, 본연구에서제안한방법으로코드의유사도를비교할수있다. 그림 7-18부터그림 7-22까지는각프로그램별코드호출관계도를나타낸것이다. - 112 -

( 그림 7-18) Netbot Agent(v4.7) - 113 -

( 그림 7-19) Netbot Agent(v5.1) ( 그림 7-20) Netbot Agent(v5.5) - 114 -

( 그림 7-21) Notepad ( 그림 7-22) NateOn 원격제어 - 115 -

제 4 절상호작용단계 상호작용단계에서는특징도출단계에서도출된악성코드및일반프로그램의특징을분석가의확인을거쳐악성코드특징 DB 또는화이트리스트 DB에저장한다. 이때분석가의확인을거치는특징들에대한정보는다음과같다. o 파일변경항목 o 레지스트리변경항목 o 프로세스변경항목 o 네트워크행위 oapi 함수및 Bit Array(Bloom Filter 결과값 ) ( 그림 7-23) 상호작용단계 - 116 -

oinput - 일반프로그램및악성코드의주요파일 / 레지스트리 / 프로세스변경항목, 네트워크연결행위, API 함수, Bit Array ooutput : - 화이트리스트 DB : 완전무결한일반프로그램에대한특징 - 악성코드특징 DB : 악성코드의특징 1. 화이트리스트 DB 화이트리스트 DB는악성코드가아닌기존의일반적인프로그램에대하여특징도출프로세스를적용하고, 그결과도출된특징들을저장하는 DB이다. 이는악성코드를분석하기전에선행되어야하는과정이라고할수있다. 이전의특징도출단계에서일반프로그램을 Input으로주었을때각각도출되는파일 / 레지스트리 / 프로세스변경항목과네트워크연결행위, API 함수, Bit Array는분석가의검토를거친후, 각항목들에대하여화이트리스트 DB의각테이블에저장한다. 화이트리스트 DB와악성코드특징 DB는형식은같으나그내용과그성격이다르다. DB의구성형식은제 6 절에서설명한다. 2. 화이트리스트필터 화이트리스트필터는특징도출단계에서분석된파일및레지스트리의변화, 프로세스의변화, 네트워크행위, Bit Array와같이다양한악성코드의특징을악성코드의특징 DB에저장하기전에화이트리스트 DB와연동된화이트리스트필터를통과함으로써악성코드에서만사용되는특징이특징 DB에저장되도록해주는역할을한다. - 117 -

( 그림 7-24) 화이트리스트필터 화이트리스트필터에는각각의비교모듈을두며, 화이트리스트 DB의각테이블을참조하여전단계에서도출된특징들을비교하여필터링을한다. 필터링된각각의특징들은악성코드특징 DB의각테이블에저장한다. 3. 분석가와의상호작용 화이트리스트 DB 또는악성코드특징 DB에저장을하기전시스템은분석가와의상호작용을한다. 도출된각각의특징들을분석가에게보여주고, 분석가는검토를통해 DB에저장되지않도록제외시킬항목에대하여판단한다. - 118 -

제 5 절자동화분석단계 선행단계로써수행된특징도출단계및상호작용단계를거쳐악성코드의특징 DB가마련된후, 자동화분석단계에서악성코드로의심되는파일이 Input으로주어지면특징도출프로세스가해당파일을분석한다. 따라서악성코드특징 DB에저장된데이터와특징도출프로세스에서도출된결과들은비교분석기에의해비교가이루어짐으로써악성코드의심파일에대하여분석결과및악성코드의유형을리포트한다. ( 그림 7-25) 자동화분석단계 oinput - 악성코드의심파일 ooutput : - 악성코드의심파일의분석결과 - 악성코드의유형및특징 DB에서의일치항목 - 119 -

1. 특징도출프로세스 자동화분석단계에서의특징도출프로세스는악성코드로의심되는파일을 Input으로받아분석하며, 그과정은악성코드의특징 DB를구성하기위한선행단계인특징도출단계에서의프로세스와같다. 즉, 특징도출단계에서사용된특징도출프로세스가자동화분석단계에서재사용되며, 파일 / 레지스트리 / 프로세스변경항목, 네트워크행위, API 함수, Bloom Filter 결과인 Bit Array를도출한다. 도출된특징들은비교분석기의각모듈로전달된다. 2. 비교분석기 비교분석기에는각각의항목들을비교하는모듈을포함된다. 특징도출프로세스에서도출된악성코드의심파일의각특징들은비교분석기의각항목비교모듈들에전달된후, 악성코드특징 DB의데이터를참조하여비교분석이이루어진다. 즉, 특징도출프로세스에서도출되는파일 / 레지스트리 / 프로세스변경항목, 네트워크행위, API 함수, Bit Array에대하여각각의모듈들이악성코드특징 DB의각테이블을검색하고비교한다. 3. 분석결과리포트 비교분석기가각항목들을특징 DB의각테이블과비교한후표 7-14와같은형태로결과를종합하여리포트한다. - 120 -

특징분석결과 항목특징내용 DB 일치 파일 파일생성 Y Y 파일명 NetNtEx.dll Y 경로 C:/Windows/system32/ N 해쉬값 faa50d8e76e411dc00940bd89a390d3c N 레지스트리 키생성 Y Y 생성키경로 수정키값의경로 HKLM\SYSTEM\CurrentControlSet\Enum\ Root\LEGACY_BITS\0000\Control HKLM\SYSTEM\CurrentControlSet\Enum\ Root\LEGACY_TAPISRV\0000\Control HKLM\SYSTEM\CurrentControlSet\Enum\ Root\LEGACY_RASMAN\0000\Control HKLM\SYSTEM\CurrentControlSet\Services \BITS\Parameters 값이름 ServiceDll Y 값데이터 C:/Windows/system32/ Y 프로세스 프로세스생성 N Y 프로세스명 - Y 네트워크 연결발생 Y Y 접속 IP 주소 211.248.110.46 Y 접속포트번호 80 N 코드 API 함수 Bit Array 종합결과 sample.exe : 백도어, DDoS 공격도구 Windows 시작시서비스등록원격모니터링및제어가능코드유사도 [ 표 7-14] 분석결과리포트의예 ChangeServiceConfigA, CloseServiceHandle, ControlService, CreateServiceA, DeleteService, OpenServiceA, QueryServiceStatus, SetServiceStatus, StartServiceA, capcreatecapturewindowa, capgetdriverdescriptiona 010001011101000000101001 (2 m ) 010010111100011001010101 (2 m ) with Netbot 4.7 with Netbot 5.1 with Netbot 5.5 0.562 1.000 0.591 Y Y Y N - 121 -

제 6 절 DB 의구성 본연구에서제시하는 DB는악성코드에대한특징 DB와일반프로그램에대한화이트리스트 DB 2가지이다. 그리고이러한 DB들은선행구축단계가필요하다. 화이트리스트 DB는특징도출단계에서완전무결한일반프로그램의특징을도출하여저장한다. 악성코드특징 DB는분석환경에서다양한악성코드를분석하여도출된특징들을악성코드의유형에따라저장한다. 이러한 DB는여러개의테이블로나누어구성된다. 특징도출프로세스에서도출한특징들인파일 / 레지스트리 / 프로세스변화항목, 네트워크활동, 코드의 API 함수및 Bloom Filtering 결과 (Bit Array) 가 DB의각테이블에저장된다. 화이트리스트 DB와악성코드특징 DB는형식은같으나, 사용되는목적이다르므로그내용과성격은다르다. ( 그림 7-26) DB 의구성 1. 유형 특징 DB에악성코드의특징을저장하기위해서는악성코드의유형별로분류가되어야한다. 따라서유형항목은특징 DB의각테이블의첫번째필드가된다. 필드명은 MAL_TYPE으로정의할수있으며, 악성코드의유형과관련된다. 기본적으로 DDoS 공격도구, 백도어, 루트킷, 키로거, 웜, 바이러스, 트로이목마, 스파이웨어및애드웨어등여러가지악성코드에대하여분류한다. - 122 -