요약문 1. 연구제목 DLL Injection 을이용한 KeyLogger 제작및탐지방법연구 2. 연구목적및필요성인터넷의발달과컴퓨터의성능과보안프로그램성능과기술이발전함에따라악성코드의기술과기교도많이발전하였다. 그리고악성코드의기술도늘어남에따라초보자도쉽게사용이가능해지고본인이모르

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

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

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

개요 1. 후킹이란? 후킹의정의.. 2 후킹의종류 2 앞으로 후킹프로그램을위한사전지식들 Window 에서 data 입력과정.. 3 DLL ( Dynamic Link Library ).. 4 메시지후킹을위해필요한지식들 5 3. 후킹프로그램제작에필요한 API

AhnLab_template

5장 MFC기반 다지기

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Visual C++의 개요

ActFax 4.31 Local Privilege Escalation Exploit

API 매뉴얼

Chapter #01 Subject

JVM 메모리구조

쉽게 풀어쓴 C 프로그래밍

API 매뉴얼

Content 1. DLL? 그게뭐야?

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

슬라이드 1

DLL(Dynamic Linked Library)

Microsoft PowerPoint - chap06-2pointer.ppt

*2008년1월호진짜

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

윈도우시스템프로그래밍

Microsoft PowerPoint - CSharp-10-예외처리

C 언어와 프로그래밍 개요

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

Secure Programming Lecture1 : Introduction

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

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

11장 포인터

실험 5

Adobe Flash 취약점 분석 (CVE )

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

[Brochure] KOR_TunA

VISLAB 박제강 1. 시작하기전에영상관련알고리즘을개발하는과정에서작성한프로그램을테스트하고피드백하는작업은빈번하게발생한다. 이때기존콘솔 (Console) 형태로작성된프로그램의경우테스트작업을유동적으로조절할수없기때문에작업의효율이떨어진다. 반면 GUI(Graphical Use

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

Visual Studio online Limited preview 간략하게살펴보기

17장 클래스와 메소드

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Template

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

제11장 프로세스와 쓰레드

슬라이드 1

DLL INJECTION AND CODE INJECTION OVERVIEW

OCW_C언어 기초

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

System Recovery 사용자 매뉴얼

PowerPoint 프레젠테이션

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

DLL Injection

Microsoft PowerPoint - chap06-5 [호환 모드]

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

논문 작성 기준

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

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

Microsoft Word - PLC제어응용-2차시.doc

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

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

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - polling.pptx

105È£4fš

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

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

윈도우시스템프로그래밍

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

오버라이딩 (Overriding)

PowerPoint Presentation

Slide 1

Microsoft PowerPoint - 09-Object Oriented Programming-3.pptx

Slide 1

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

Frama-C/JESSIS 사용법 소개

서현수

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

PowerPoint Presentation

Chapter ...

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

JAVA PROGRAMMING 실습 08.다형성

07_alman.hwp

untitled

C++ 기본문법 정리

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

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

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - e pptx

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

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

C# Programming Guide - Types

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

Programming hwp

C++ Programming

C++ Programming

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

Transcription:

캡스톤보고서 Dll Injection 을이용한 KeyLogger 제작및탐지방법분석 팀명 : 4 조 Guardian 지도교수 : 양정모교수님 조장 : 조민제 (4년) 신예원 (4년) 이상철 (4년) 유명곤 (4년) 2013.5 중부대학교정보보호학과

요약문 1. 연구제목 DLL Injection 을이용한 KeyLogger 제작및탐지방법연구 2. 연구목적및필요성인터넷의발달과컴퓨터의성능과보안프로그램성능과기술이발전함에따라악성코드의기술과기교도많이발전하였다. 그리고악성코드의기술도늘어남에따라초보자도쉽게사용이가능해지고본인이모르는사이개인 PC가감염이되어좀비PC를활용해전국가적피해를일으킨사례와악성코드에개인의 PC나스마트폰등이감염되어개인정보가유출개인의지적피해나금전적피해등이발생한사례를종종볼수가있다. 그리하여본졸업작품은악성코드를만들어봄으로써많은사람들에게악성코드의위험성을인식시키고, 과거로부터현재까지악성코드들의역사와다양한종류의악성코드들을공부하여악성코드의감염경로, 감염방식, 피해의종류등을분석해다양한악성코드들을방어하는보안기술습득에의의를둔다. 3. 연구내용본연구에서는공격하는방법을알아야더욱강력하게방어를할수있다는의견을기반으로악성코드를제작, 이를통해대응방법에대하여연구하였다. 제작한키로거 (KeyLogger) 를실행시자동실행레지스트리에프로그램을등록하고타겟프로그램인메모장을실행하면키로거가메모장에 Dll Injection을수행, 키보드에서발생한메시지들을후킹하여텍스트파일로저장하여 FTP 서버로전송한다. 4. 연구결과본작품은악성코드의공격을방어위해직접악성코드를제작, 분석및실험을해봄으로써악성코드의감염경로및구동원리등을공부하는데목적이있다. 현재개발한프로그램은 MFC와 VC++ 을이용하여해킹이나기능개선등에사용되는 Dll Injection 기술을사용한다. 옵션을통해타겟프로세스를설정하고프로그램을실행하면해당프로세스가실행중인지를감시하다프로세스가실행시 Dll Injection을수행하고후킹을하여키보드메시지를파일로저장하여 FTP서버로전송하는프로그램을개발하였다. 작품활동을진행하다보니최초계획에있던탐지기능을제작하지못했다. Dll Injection의한기법인 SetWindowsHook Ex() 함수를사용한것인데이는탐지가쉽지않고탐지법에대한자료도충분치않아제작에어려움을겪어제외하게되었다. 이를통해윈도우프로그래밍의다양한기법, 기술들을알게되었다. 향후계획으로다른다양한해킹기법들을공부하여악성코드나루트킷등해킹툴을탐지하는프로그램을개발해보겠다.

목 차 요약문 1. 연구계획 4 1.1 구성원 4 1.2 연구의개요 4 1.3 연구의목적 4 2. 기반기술 4 2.1 Win API 란? 4 2.2 MFC 란? 5 2.3 Hooking 7 2.3.1 Hooking 이란? 7 2.3.2 Hooking의다양한방법 7 2.3.3 Dll Injection 이란? 8 3. 연구내용 9 3.1 주간활동보고 9 3.2 프로그램의구성도 9 3.3 프로그램의기능 9 3.4 레지스트리등록 10 3.5 Dll Injection 수행 11 3.6 타겟프로그램후킹 12 3.7 후킹내용 FTP 서버전송 13 4. 결론 14 5. 참고자료 14

1. 연구계획 1.1 구성원 구성원 조장조민제 (4 학년 ) 역할분담 자료조사및개발, 디버깅, 테스트 전체역할분담지시및관리총괄 4 조 Guardian 조원 신예원 (4 학년 ) 이상철 (4 학년 ) 자료조사및프로그램개발, 디버깅, 테스트 졸업작품진행상황기록및정리 유명곤 (4 학년 ) 보고서및 PPT 자료작성 1.2 연구의개요 인터넷의발달과컴퓨터의성능과보안프로그램성능과기술이발전함에따라악성코드의기술과기교도많이발전하였다. 그리고악성코드의기술도늘어남에따라초보자도쉽게사용이가능해지고본인이모르는사이개인 PC가감염이되어좀비PC를활용해전국가적피해를일으킨사례와악성코드에개인의 PC나스마트폰등이감염되어개인정보가유출개인의지적피해나금전적피해등이발생한사례를종종볼수가있다. 그리하여본졸업작품은악성코드를만들어봄으로써많은사람들에게악성코드의위험성을인식시키고자한다. 1.3 연구의목적 과거로부터현재까지악성코드들의역사와다양한종류의악성코드들을공부하고직접제 작하여악성코드의감염경로, 감염방식, 피해의종류등을분석해다양한악성코드들을방 어하는보안기술습득에의의를둔다. 2. 기반기술 2.1 Win API 란? Win API란 Application Programming Interface의약자로운용체제가응용프로그램을위해제공하는함수들의집합으로특정시스템을위한함수집합을이르는일반명사이며그중의하나가윈도우즈 API이나요즘은일반적으로 API라하면윈도우즈 API를말하는경우가많다. API는운영체제의중요한부분이며운영체제그자체라고도할수있다. 4

API도윈도우즈버전에따라여러가지종류가있다. 16비트운영체제인윈도우즈 3.1에서제공하는 API를 Win16 API라부르며 16비트환경의윈도우즈를위한 API이고 Win32 API 란 32비트환경의윈도우즈를위한 API이다. Win16에비해 Win32가양적으로나질적으로더확장되었음은더말할나위도없다. Win32는기본적으로 Win16 API를포용하고있으며현재는 Win64 API가사용되고있다. API와비슷한말로는 SDK라는표현이사용되기도한다. SDK는원래 API를사용하여프로그램을개발하는개발툴킷이었으나지금은의미가전용되어 API와거의같은뜻으로쓰인다. 즉 API 함수는곧 SDK 함수와같은뜻이며이프로그램은 SDK로만들었습니다라고하는것은순수한 API만을사용하여만든프로그램이라는뜻이다. 2.2 MFC 란? MFC란 Microsoft Foundation Class의약자로 C++ 언어를기반으로한윈도우즈응용프로그램제작을위한 C++ 클래스라이브러리의집합이다. 따라서대부분의클래스들은 C++ 언어를확장하여만들어졌으며 700개가넘는방대한 Win API를기반으로윈도우즈응용프로그램을제작할때자주사용되는 API들을클래스화하여묶어놓고, 마이크로소프트사의새로운기술들이소개될때마다해당 API를클래스화하여윈도우즈응용프로그램을제작하는프로그래머에게제공되는아주유용한클래스라이브러리이다. MFC 프로그램은크게단일윈도우 (SDI: Single Document Interface) 와다중윈도우 (MDI: Multiple Document Interface) 로나눌수있습니다. 아래그림은 SDI 에대한기본구조도로 써 MFC 는기본적으로네개의클래스가모여하나의윈도우를생성합니다. < 그림 1 > MFC 의구조 5

< 그림 2> MFC 클래스의계층도 기본적으로위와같이이루어져있다. MFC 프로젝트를처음 Visual Studio C++ 로만들경우위와같은계층구조에서크게벗어나지않는범위내에서파생클래스로모든클래스를상속받아서만들어지게된다. 그래서처음부터끝까지모든것을프로그래머가프로그래밍을하는것이아니라, 공통적인부분은 MFC클래스에서제공하는기능을그대로이용하고, 고유한기능들만만들어삽입하여주면된다. 다음은주요클래스의설명이다. CWinAPP 클래스화면에보이지않는오브젝트를구현한클래스이며, 다음과같은역할을한다. 프로그램의시작과종료를담당 프로그램이시작될때, 메인프레임윈도우를생성 메시지루프를돌면서프로그램구동 프로그램전체를대표하는기능을수행 CWnd 클래스윈도우라는오브젝트를클래스로구현한것이다. 이클래스는약 300여개의멤버함수들을가지고있는데첫번째로, 윈도우의크기, 위치, 모양, 상태등을제어하는함수로약 100여개의멤버함수가여기에속한다. 두번째로, 윈도우를발생시키는메시지를처리하는함수이다. 메시지처리기는윈도우메시지마다각각하나씩존재하기때문에약 200여개의메시지처리기가존재한다. 메시지처리기란? 말그대로메시지를처리해주는것이다. WM_??? 메시지가발생하게되면은 CWnd클래스는메시지를보고앞의 WM을떼고, On_??? 라는메시지에대응되는처리기를호출하게된다. 그래서메시지를처리기를재정의해줌으로써원하는처리를할수있게되는것이다. 6

CDocument 클래스프로그램에서처리하는데이터를저장하고, 읽어보고, 처리하는데필요한모든기능을수행하는눈에보이지않는오브젝트 파일로부터데이터를읽어오는기능 파일에데이터를저장하는기능 새로운데이터를만드는기능 작업중인데이터를닫는기능 데이터가변경된사실을뷰오브젝트에알리는기능 2.3 후킹 (Hooking) 2.3.1 후킹 (Hooking) 이란? Hooking 은정보를가로채원하는정보를얻고, 실행흐름을변경하고, 원래와다른기능을 제공하게하는기술로갈고리란단어의 Hook 을이용하여 Hooking 이라명명되어있다. 2.3.2 후킹 (Hooking) 의다양한방법 후킹은크게두개로분류되는데하나는어플리케이션레벨의후킹과커널후킹이있다. 간단히분류하자면어플리케이션레벨의후킹 ( 이하유저모드후킹 ) 은윈도우와응용프로그램사이에메시지나특정함수를수정하여원하는기능을실행하는방법이고, 커널후킹은유저모드후킹과달리로우레벨에서동작하여커널을직접수정하거나부트타임에로드되어그어떤프로그램보다먼저특정프로그램을실행하는방법등이있다. 유저모드후킹 IAT(Import Address Table) 후킹 - 일반적인 API를호출할때 IAT를사용한다. 이 IAT의필드값을수정함으로써원하는프로그램을실행가능하다. Inline 후킹 - 후킹의대상이되는함수바이너리의처음 5바이트를 jump를수행하는 5바이트명령으로교체하며교체이전원본 5바이트는따로저장해놓은뒤함수가실행시 jump문에의해원하는후킹프로그램을실행한후따로저장해놓은원본을복구해후킹이전의상태로만들고그함수를다시호출한다. 프로그램에의해호출된함수가모든작업을마치고리턴하면후킹프로그램이실행제어권을가지게된다. 커널후킹 SSDT(System Service Dispatch Table) 후킹 - 시스템서비스디스크립터테이블후킹이라고도불림 - KeServiceDescriptorTable구조체의첫번째멤버인 KiServiceTable(=SSDT) 에는 Nt* 함수의주소들이나열되어있다. 그중 SSDT안의 Zw* 함수와대응되는 Nt* 함수의주소를직접만든후킹함수로교체하는방법 7

SYSENTER 후킹 - 인터럽트디스크립터테이블 (Interrupt Descriptor Table : IDT) 후킹이라고도불림 - SYSENTER는어플리케이션레벨에서커널레벨로진입하기위한명령이며 Zw* 함수를호출시 KiFastSystemCall함수를호출하는데그함수내부에 SYSENTER가있고실행시 msr레지스터의 176번째레지스터내부의있는값의주소로커널이실행되어진다. 이때 msr레지스터의 176번째레지스터의값을원하는프로그램으로바꾸면후킹이가능해진다. 2.3.3 DLL Injection 이란? Dll이란동적연결라이브러리 (Dynamic Link Library) 의약어로여러함수들이정의되어진독립적인실행파일입니다. 동적링크를사용하여해당프로세스의실행코드에포함되지않는함수를 Dll에서호출하여사용할수있습니다. Dll안에함수의실행코드가있으며, Dll에는이것을사용하는프로세스와는별도로컴파일, 링크및저장되는하나이상의함수가포함되어있다. Dll을사용하여데이터와리소스를쉽게공유할수있는데이것은여러개의응용프로그램이메모리에있는 Dll의내용을동시에액세스를할수있기때문이다. 이것을이용하여후킹이가능한데개인이작성한 Dll 파일을다른프로세스에강제로삽입하여개인이만든 Dll이동작하게하는방법이다. Dll Injection이란위설명과같이 Dll을다른프로세스에삽입하여개인이만든 Dll을동작하게하는것이다. 이는외부에서다른프로세스로하여금 LoadLibrary() API 함수를호출하도록만드는것이기때문에강제로삽입된 Dll의 DllMain() 함수가실행된다. 또한삽입된 Dll은해당프로세스의메모리에대한접근권한을갖기때문에사용자가원하는다양한동작을수행할수있다. 예를들어기능개선및패치, 유해프로그램및사이트차단프로그램등선의적인용도와악성코드, API Hooking 등악의적인용도로사용되어진다. Dll Injection에는다양한방법이존재한다. 첫째, 레지스트리를조작하여전역후킹하는방법. AppInit_DLLs 안에개인이작성한 Dll을등록하는방법이있다. 이는탐지가쉽고재부팅을해야정상동작한다는단점이있다. 둘째, 원격쓰레드를생성하여후킹하는방법. 이는원격쓰레드를생성하는함수인 CreateRemoteThread() 함수를이용하여다른프로세스에쓰레드를생성하면서 LoadLibrary() 함수를호출하여개인이작성한 Dll을불러오는것으로 Dll Injection이수행된다. 셋째, 윈도우에서제공하는후킹함수를이용하여후킹하는방법. 이는 SetWindowsHookEx() API 후킹함수를이용하여직접프로세스에 Dll Injection을수행하는방법. 이는유저모드후킹에서가장광범위하게사용되는함수로다양한윈도우메시지를후킹할수있다. 8

3. 연구내용 3.1 주간활동보고 주차 내용 주간활동사항 1 주차 졸업작품주제토의및자료수집 2 주차 키로거제작시작및관련자료수집 3 주차 ~ 6 주차 MFC를이용 API 함수인 SetWindowsHookEx() 함수사용 기본적인키로거제작 7 주차 서버로파일을전송할방법에대한자료수집 8 주차 ~ 9 주차 FTP 를이용한파일전송및키로거와연동테스트 10 주차 레지스트리를이용한자동실행코 드구현 11 주차 ~ 12 주차 개발한프로그램디자인변경 로고및아이콘추가 13 주차 ~ 15 주차 개발프로그램종합연동테스트및오류수정 9

3.2 개발프로그램의개요 본조가제작한키로거 (KeyLogger) 를실행시자동실행레지스트리에프로그램을등록하 고타겟프로그램인메모장을실행하면키로거가메모장에 Dll Injection 을수행, 키보드에 서발생한메시지들을후킹하여텍스트파일로저장하여 FTP 서버로전송한다. < 그림 6> 개발프로그램구조도 3.3 개발프로그램의기능 후킹을시작할타겟프로세스를지정 레지스트리에등록하여부팅시자동시작 타겟프로세스에 Dll Injection 수행 Win API 함수인 SetWindowsHookEx 함수를사용 입력장치후킹 (KeyLogger) 탈취한정보를파일로생성 FTP서버를이용한파일전송 백그라운드에서동작 10

3.4 레지스트리등록 < 그림 7> 키로거메인화면 < 그림 8> 레지스트리에등록된화면 위그림 4 와같이프로그램이실행되면그림 5 와같이자동실행레지스트리에프로그램이 등록이된다. 아래그림은프로그램이실행될때레지스트리에프로그램을등록하는함수 이다. < 그림 9> 레지스트리에프로그램을등록하는함수 11

3.5 Dll Injection 수행 < 그림 10> 메모장실행시키로거메인화면 위그림은키로거가실행중일때타겟프로그램인메모장이실행중인지지속적으로확인 하다메모장실행이감지되면키로거는메모장에 SetWindowsHookEx() 함수를이용하여 Dll Injection 을수행한다. 아래함수는상기기능을수행하는부분이다. < 그림 11> Dll Injection 을수행하는함수 12

3.6 타겟프로그램후킹 < 그림 12> 메모장입력시키로거메인화면 위그림은 Dll Injection 이성공적으로수행된후메모장에무작위단어들을입력하였을 때키보드메시지를가로채키로거에서보여주는상황이다. 아래소스는메모장에삽입된 Dll 에작성되어있는키보드메시지를가로채처리하는 Callback 함수의일부이다. < 그림 13> 메시지처리함수의일부 13

3.7 후킹내용 FTP 서버전송 < 그림 14> 후킹내역서버로전송및후킹내역파일 위그림은메모장이종료되고키로거가읽어온내용을메모장에저장하여 FTP 서버에전송 된것을확인한상황이다. 아래함수는저장된파일을 FTP 를이용하여서버에전송하는부 분이다. < 그림 15> FTP 서버로파일을전송하는함수 14

4. 결론 본작품은악성코드의공격을방어위해직접악성코드를제작, 분석및실험을해봄으로써악성코드의감염경로및구동원리등을공부하는데목적이있다. 현재개발한프로그램은 MFC와 VC++ 을이용하여해킹이나기능개선등에사용되는 Dll Injection 기술을사용한다. 옵션을통해타겟프로세스를설정하고프로그램을실행하면해당프로세스가실행중인지를감시하다프로세스가실행시 Dll Injection을수행하고후킹을하여키보드메시지를파일로저장하여 FTP서버로전송하는프로그램을개발하였다. 작품활동을진행하다보니최초계획에있던탐지기능을제작하지못했다. Dll Injection의한기법인 SetWindowsHook Ex() 함수를사용한것인데이는탐지가쉽지않고탐지법에대한자료도충분치않아제작에어려움을겪어제외하게되었다. 이를통해윈도우프로그래밍의다양한기법, 기술들을알게되었다. 향후계획으로다른다양한해킹기법들을공부하여악성코드나루트킷등해킹툴을탐지하는프로그램을개발해보겠다. 5. 참고자료 루트킷 - 윈도우커널조작의미학 / 그렉호글런드, 제임스버틀러지음 / 에이콘윈도우즈 API 정복 VOLUME 1 개정판 / 김상형지음 / 한빛미디어윈도우즈 API 정복 VOLUME 2 개정판 / 김상형지음 / 한빛미디어엔지니어링바이블 / 강병탁지음 / 위키북스 http://blog.naver.com/b5m5see?redirect=log&logno=90020741840 ( 짱보의블로그 ) http://memoryfilm.tistory.com/4 ( 린월의 Memory Film) http://blog.naver.com/postview.nhn?blogid=ikariksj&logno=140056467421&redirect=dlog&w idgettypecall=true ( 쿠마의블로그 ) http://ezbeat.tistory.com/276 (Ezbeat의도서관 ) http://msdn.microsoft.com/ (MSDN) http://hmkuj1224.blog.me/80186792585 ( 마터테의블로그 ) http://www.reversecore.com/38 ( 리버스코어 ) http://www.terms.co.kr/ftp.htm (terms) 15