<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63>

Similar documents
Deok9_Exploit Technique

CKKeyPro 적용가이드

Microsoft Word - Static analysis of Shellcode.doc

Microsoft Word - building the win32 shellcode 01.doc

hlogin2

(Microsoft Word - ASEC Report 2007\263\3429\277\371\310\243.doc)

Secure Programming Lecture1 : Introduction

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

=

PowerPoint Template

Microsoft Word - Heap_Spray.doc

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

기술문서 LD_PRELOAD 와공유라이브러리를사용한 libc 함수후킹 정지훈

Microsoft PowerPoint - hy2-12.pptx

*2008년1월호진짜

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

07_alman.hwp

Microsoft PowerPoint - a8a.ppt [호환 모드]

01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO

Deok9_PE Structure

1. Execution sequence 첫번째로 GameGuard 의실행순서는다음과같습니다 오전 10:10:03 Type : Create 오전 10:10:03 Parent ID : 0xA 오전 10:10:03 Pro

[ 악성코드상세분석보고서 ] SK 커뮤니케이션즈해킹관련상세분석보고서 nateon.exe 대응 2 팀

No Slide Title

PowerPoint 프레젠테이션

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - a6.ppt [호환 모드]

(Microsoft Word - \270\256\271\366\275\314 \271\370\277\252.doc)

Windows 8에서 BioStar 1 설치하기

/* */

<BDC3B8AEBEF320B9F8C8A320C0DBBCBA20B7E7C6BEC0BB20BBCCBEC6B3BBBCAD D466F E687770>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

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

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc

i n i n i n 1

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

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

Windows 10 General Announcement v1.0-KO

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

GSC Incident Report-바이킹 바이러스 분석

chap 5: Trees

Chapter #01 Subject

슬라이드 1

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단

2006_8_14 (8_17 updated) ms ¿ú(wgareg.exe) ºÐ¼® º¸°í¼�.hwp

SBR-100S User Manual

3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20

익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost


< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

11장 포인터

세상에서 가장 안전한 이름 안철수연구소 월간 안 CONTENTS CEO COLUMN 스티브 잡스와 소프트웨어 SPECIAL REPORT 우리 회사에 적합한 망분리 솔루션은? MARKET INTELLIGEN

<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770>

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

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

<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

ActFax 4.31 Local Privilege Escalation Exploit

1. 개요 악성코드는여러분류로나누어볼수가있다. 이중일반사용자의입장에서 악성코드 라는단어보다친숙한 바이러스 가있다. 사실필자도보안을공부하기이전에는 악성코드 라는단어는아예들어보지못했고, 대신 바이러스 라는단어로모든악성코드를지칭했었다. 바이러스는악성코드분류의한종류로 스스로를

untitled

Chapter ...

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

5

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

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

JVM 메모리구조

Microsoft Word - AntiCrackingTechnique.doc

SSDT(System Service Descriptor Table) Hooking Written by 백구 Contack Me : 목차 가. 이문서의목적... 2 나. 유저모드와커널모드... 2 다. Windows API 흐름..

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

IDA 5.x Manual hwp

PowerPoint 프레젠테이션

본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo

발신자 목적지 발신자 목적지 발신자 목적지 공격자 발신자 목적지 발신자 목적지 공격자 공격자

Security Trend ASEC Report VOL.56 August, 2014

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Microsoft PowerPoint - ch07 - 포인터 pm0415

G5 G25 H5 I5 J5 K5 AVERAGE B5 F5 AVERAGE G5 G24 MAX B5 F5 MIN B5 F5 $G$ $H$25 $G$25 $G$ $H$25 G24 H25 H24 I24 J24 K24 A5 A24 G5 G24, I5

0x <main+41>: lea eax,[ebp-264] 0x f <main+47>: push eax 0x080484a0 <main+48>: call 0x804835c <strcpy> 0x080484a5 <main+53>: add esp,0x1

Codegate Preliminary Match Repot

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc

Cogame 취약점 보고

Frama-C/JESSIS 사용법 소개


<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A

chap06.hwp

<4D F736F F D2036BFF920BECBBEE0BFF9B0A3BAB8B0EDBCAD2E646F6378>

취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우

AsProtect MUP

슬라이드 1

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

(Microsoft Word - \304\277\263\316\275\272\306\324\270\336\300\317\267\257_Rustock.doc)

API 매뉴얼

Microsoft PowerPoint - additional01.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft Word - FunctionCall

목 차 1. 개 요 배경 요약 정보 대상시스템 원리 공격 기법 및 기본 개념 Heap Spray Font 공 격..

01.The basics technic of Shellcode Excuse the ads! We need some help to keep our site up. List Shellcode The basics of shellcode(ubuntu-16.04) C ASM M

Microsoft PowerPoint - a5a.ppt [호환 모드]

Return-to-libc

Transcription:

Virut 바이러스공격 ASEC 분석 1 팀고흥환선임연구원 해마다접수되는악성코드의통계를보면대부분이인터넷웜또는트로이목마가대부분을차지하며, 파일에기생하는바이러스는그수가적어지는것이추세이다. 그도그럴것이최근의악성코드특징은개인의능력과시가아닌돈과연관되는악성코드작성이대부분이기때문이다. 그렇다면 Virut 바이러스가인터넷웜과트로이목마를제치고국내뿐만아니라해외에서도큰피해를입히고있는이유가무엇인지, 그특성과방법을자세히살펴보자. 1. Virut 바이러스의발전 2006 년초처음등장한 Virut 바이러스는이제까지의후위형파일바이러스와많이다르지않다. 그러나이전바이러스와차별되는중요한특징은시스템의공통라이브러리 API 를후킹하여다른 PE 파일을감염시킨다는점이다. 이후에등장한변형에서는바이러스본체를암호화시키고복호화루틴은매감염때마다변경되는다형성알고리즘이사용되었다. 그러나감염루틴의버그로인하여크게문제가되지는않는것으로보인다. 근래발견된바이러스변형은 4 가지의다양한형태의감염방식과중복감염문제, IRC 서버에접속하여 DDoS 공격을하는등의종합적인악성코드특성을지니게되었다. 2. 바이러스의전파 Virut 바이러스자체는시스템의실행파일만을감염대상으로하기때문에네트워크를통한감염은이루어지지않는다. 그러나최근의 Virut 바이러스는국내에만수십만의시스템을감염시킨것으로보이며, 해외의감염보고에서도높은수치를나타내고있다. 많은시스템들은타시스템에의해서감염이되었다기보다는해킹된웹사이트에추가된 Exploit Script 또는 Script 에추가된 IFrame 등의원인에의해서감염된파일을특정서버서부터다운로드되는것으로판단된다. 글을작성중인현재까지도새로운바이러스가특정사이트로부터배포되고있는것으로확인되었기에사용자들은항상최신의윈도우취약점업데이트와바이러스엔진업데이트를해야만바이러스로부터안전할수있다. 3. Virut.C & D 의특성 Win32/Virut.C, Win32/Virut.D 로명명된근래의바이러스의특징들을먼저살펴보면다음과같은것들을찾아볼수있다. 첫째, 4가지의다양한감염방식 - 다형성,EPO(Entry-Point Obscuring), 암호화둘째, PE 파일감염 특정확장자 (.EXE,.SCR) 셋째, 실행된모든프로세스의공통라이브러리 (NTDLL.DLL) 의 API 후킹을이용한파일감염 ZwCreateFile ZwOpenFile

ZwCreateProcess ZwCreateProcessEx 넷째, 시스템프로세스인 Winlogon.exe에 RemoteThread 생성다섯째, 외부연결및파일다운로드여섯째, 특정 IRC 서버접속및명령대기 4. 감염방식 [ 그림 1] Win32/Virut A 형의감염방식 [ 그림 1] 과같이 A 형인감염방식은일반적인후위형바이러스와크게다르지않다. PE 파일의시작점인 EntryPoint 를파일후미에추가된바이러스복호화루틴의시작지점으로변경하여바이러스가먼저동작하도록만든다.

[ 그림 2] Win32/Virut.B 감염방식 B 형은 PE 파일의시작점인 EntryPoint 를변경하지않고바이러스복호화루틴을파일의시작위치특정코드위에덮어씌워버렸다. 물론본래의코드는파일후미의암호화된바이러스코드뒷부분에암호화하여백업한다. [ 그림 3] Win32/Virut.C 감염방식 C 형식은 EPO(Entry-Point Obscuring) 방식을취하는데, 이는정상적인특정 CALL 함수호출 (5 바이트 ) 에대해서파일후미에추가된바이러스복호화루틴의시작점으로함수호출옵셋 (Offset) 을변경하여바이러스가동작하도록하는방법이다.

[ 그림 4] Entry-Point Obscuring 를이용한코드 [ 그림 4 ] 는 EPO 를이용한코드를비교한것이다. 상단의밑줄코드가감염전의호출이며하단의밑줄코드는감염된이후의호출을보여준다. [ 그림 5] Win32/Virut.D 감염방식 D 형식은이전의 C 형식과같다. 다만바이러스복호화루틴이코드섹션영역의마지막부분에덧붙여있다는것이다르다. 코드섹션영역에복호화루틴이추가되므로코드섹션의 VirtualSize 가증가할수있다.

5. 바이러스복호화루틴 Virut 의바이러스복호화루틴은실제바이러스코드에대한복호화알고리즘으로이루어져있다. 문제는이복호화루틴이다형성으로구성되었기때문에감염된파일마다기계어코드가다르다는점이다. 이러한다형성코드를분석하기위해서는다양한감염샘플에서동일한분석방법을사용하여공통된코드나알고리즘을찾아내야한다. 하나의복호화루틴을예로살펴보면파란색으로표시된부분의코드들이복호화에중요하게이용되고있는부분임을알수있을것이다. 01006AE0 60 01006AE1 55 01006AE2 8BEC 01006AE4 E8 0C000000 PUSHAD PUSH EBP MOV EBP,ESP CALL 01006AF5 // Exception Handler 01006AE9 F8 CLC ; 01006B2D, 01006B4D 에서 Exception 발생시호출 01006AEA F8 CLC 01006AEB E8 B4000000 CALL 01006BA4 01006AF0 E9 5E000000 JMP 01006B53 ; 01006B53 분기 01006AF5 67:64:FF36 0000 PUSH DWORD PTR FS:[0] 01006AFB 892D 546B0001 MOV DWORD PTR DS:[1006B54],EBP 01006B01 67:64:8926 0000 MOV DWORD PTR FS:[0],ESP ; Exception Handler 등록 0x01006AE9 01006B07 31C0 XOR EAX,EAX 01006B09 68 00000080 PUSH 80000000 01006B0E 50 01006B0F 68 00000080 PUSH 80000000 01006B14 68 00000080 PUSH 80000000 01006B19 68 00000080 PUSH 80000000 01006B1E 68 01000000 PUSH 1 01006B23 68 00000080 PUSH 80000000 01006B28 50 01006B29 50 01006B2A 50 01006B2B 50 01006B2C 50 ; FileName => NULL 01006B2D FF15 CC100001 CALL DWORD PTR DS:[<&KERNEL32.LoadLibraryA>] ; LoadLibraryA 01006B33 31D2 XOR EDX,EDX 01006B35 52 PUSH EDX 01006B36 68 00000080 PUSH 80000000 01006B3B 52 PUSH EDX 01006B3C 52 PUSH EDX 01006B3D 68 00000080 PUSH 80000000 01006B42 68 00020000 PUSH 200 01006B47 68 40000000 PUSH 40 01006B4C 52 PUSH EDX ; FileName => NULL 01006B4D FF15 CC100001 CALL DWORD PTR DS:[<&KERNEL32.LoadLibraryA>] ; LoadLibraryA 01006B53 BD A0FF0600 MOV EBP,6FFA0 01006B58 8B75 F8 MOV ESI,DWORD PTR SS:[EBP-8] 01006B5B 67:64:8936 0000 MOV DWORD PTR FS:[0],ESI 01006B61 F8 CLC 01006B62 89C9 MOV ECX,ECX 01006B64 E8 00000000 CALL 01006B69

01006B69 59 POP ECX ; 0x01006B69 01006B6A 81C1 973E0100 ADD ECX,13E97 ; 복호화위치 01006B70 51 PUSH ECX 01006B71 31D2 XOR EDX,EDX 01006B73 81CA D1290000 OR EDX,29D1 ; 복호화크기 01006B79 87DB XCHG EBX,EBX 01006B7B 87DB XCHG EBX,EBX 01006B7D 90 NOP 01006B7E 90 NOP 01006B7F BE E8000000 MOV ESI,0E8 ; 복호화키 01006B84 F5 CMC 01006B85 F8 CLC 01006B86 F8 CLC 01006B87 F9 STC 01006B88 8A01 MOV AL,BYTE PTR DS:[ECX] 01006B8A 66:31F0 XOR AX,SI ; 복호화연산 01006B8D 8601 XCHG BYTE PTR DS:[ECX],AL 01006B8F 83C1 01 ADD ECX,1 01006B92 83EA 01 SUB EDX,1 01006B95 F5 CMC 01006B96 83FA 00 CMP EDX,0 01006B99 75 ED JNZ SHORT 01006B88 01006B9B 59 POP ECX 01006B9C C9 LEAVE 01006B9D 894C24 18 MOV DWORD PTR SS:[ESP+18],ECX 01006BA1 61 POPAD 01006BA2 FFE1 JMP ECX ; 복호화된위치로분기 6. 바이러스코드 [ 그림 6] Winew/Virut 의복호화루틴 복호화된바이러스코드는몇가지의흥미로운방식으로감염루틴을생성하게되는데시간의흐름에따른동작들을살펴보면다음처럼작성될수있다. (1) 중복감염루틴설치를피하기위한이벤트객체생성 ( Vx_4 ) (2) 감염루틴을모든프로세스에메모리매핑 (MemoryMapping) 하기위한오브젝트섹션 (ObjectSection) 생성 ( \BaseNamedObject\VtSect ) (3) 실행된모든프로세스의공통메모리영역에이미생성한오브젝트섹션을매핑 (4) 공통라이브러리인 NTDLL.DLL 의특정 Export 함수에대한후킹 (ZwCreateFile, ZwOpenFile, ZwCreateProcess, ZwCreateProcessEx) (5) 시스템프로세스인 Winlogon.exe 의메모리영역에매핑한 RemoteThread 실행 7. NTDLL.DLL Export API 후킹 앞서언급했던것처럼 Virut 바이러스는 API 후킹 (Hook) 을이용해서다른 PE 파일들을감염시킨다. [ 그림 7] 은 Visual Studio 의유틸리티인 Depends 를이용하여살펴본 NTDLL.DLL 의 Export 함수이다. Virut 바이러스가후킹 (Hook) 할함수 ZwCreateFile 의 EntryPoint 는 0x0002595E 이다. NTDLL.DLL 의 Base 주소는 0x77F50000 이므로실제 VirtualAddress 는 0x77F7595E 일것이다.

[ 그림 7] NTDLL.DLL 의 Export 함수인 ZwCreateFile EntryPoint [ 그림 8] 은후킹되기전과후킹된후의어셈블리코드상태에대한캡쳐이미지이다. 왼쪽의후킹전코드는 EAX 레지스터에 ZwCreateFile 의서비스번호인 0x25 번을넣는코드이며, 오른쪽의후킹후코드는바이러스의특정함수를호출하는코드로변경되어있다. [ 그림 8] 후킹전후의어셈블리코드상태비교 이와동일한방법으로나머지 ZwOpenFile, ZwCreateProcess, ZwCreateProcessEx Export 함수에대한 5 바이트메모리패치 ( 후킹 ) 가이루어진다. (NTDLL.DLL 의모든 Export 함수들은시스템서비스함수를호출하기위한시스템서비스번호 (System Service Number) 를 EAX 레지스터에, 스택에존재하는인자값을 EDX 레지스터에옮긴다음, 커널서비스인터럽트를발생시키는 INT 0x2E 혹은 SYSENTER 를발생시킨다.)

[ 그림 9] ZwCreateFile 의후킹전, 후의시스템호출관계 8. Winlogon.exe 의바이러스쓰레드 Virut 이생성한오브젝트섹션 ( \BaseNamedObject\VtSect ) 에는 RemoteThread 를위한코드와후킹된 API 함수에대한감염코드가존재한다. 오브젝트섹션은메모리매핑을통해모든실행된프로세스의메모리에공유되며, 그중에서 Winlogon.exe 에대해서만매핑된오브젝트의 Thread 를실행시킨다. RemoteThread 의순서화된동작을보면다음과같다. (1) 시스템 OS 에따른 WFP(Windows File Protection) 무력화 윈도우자체파일보호를위한 WatcherThread(SFC.DLL or SFC_OS.DLL) 를중지시키는방식을통하여시스템파일도감염대상으로하고있다. (2) 중복감염방지에대한이벤트객체를통한동기화 ("Vx_4") (3) 외부연결파일다운로드및실행 분석중에는 Win-Trojan/Agent.40960.HB 악성코드를다운로드하여실행하였으며, 다운로드된악성코드는중국사이트 (alexa.xxxxxx.cn) 로연결또다른악성코드를다운로드하는등의연속적인감염이이루어지고있다. (4) IRC 채팅서버로의연결을통한명령대기 - Ircd.XXXX.pl (NICK qsfzqiie, USER I, JOIN &virtu) - Proxim.ircXXXXXX.pl ( 접속 URL 주소는악용방지를위해 X 로일부문자를변경, 표기했다.) 이상으로 Virut 바이러스에대한전반적인사항에대해서살펴보았다. Virut 의특징인 API 후킹에의한감염때문에사용자가수동으로치료한다는것은거의불가능하다. 대부분의바이러스백신업체에서전용백신을따로만들어배포하는것도이러한특징때문이다. 문제가발생하기전에사전방역을확실히하는것이더중요하다는원리는바이럿바이러스에서도마찬가지라고할수있다.