[2007 codeengn conference 01] mrbrown - manual unpacking

20
1 st CodeEngn Seminar Manual Unpacking for Newbies 송창현 [email protected] http://www.codeengn.com http://www.CodeEngn.com

Upload: gangseok-lee

Post on 22-Apr-2015

796 views

Category:

Technology


2 download

DESCRIPTION

2007 CodeEngn Conference 01 Packing, Unpacking의 구조와 원리, 기본적인 Manual Unpacking 소개. Unpacking을 방해하는 다양한 Anti ReverseEngineering 과 Protector Unpacking 등에 대해 설명한다. http://codeengn.com/conference/01

TRANSCRIPT

1st CodeEngn Seminar

Manual Unpacking for Newbies

송창현[email protected]

http://www.codeengn.com

http://www.CodeEngn.com

http://www.CodeEngn.com

Contents

프로텍터 언패킹

언패킹을 방해하는 각종 기법

기초 매뉴얼 언패킹

패킹 & 언패킹의 구조와 원리

언패킹이란?

http://www.CodeEngn.com

언패킹이란?

언패킹 (실행압축해제)

언패킹이란보호를목적으로암호화및압축된실행파일(패킹된파일)을원상태로해제하는것을의미한다.

http://www.CodeEngn.com

패킹 & 언패킹의구조와원리

PE 구조

IMAGE_OPTIONAL_HEADER

AddressOfEntryPoint ImageBase (0x00400000)BaseOfCode (0x00001000)

http://www.CodeEngn.com

패킹 & 언패킹의구조와원리

PE Header

Code Section

PE HeaderEntry Point

Entry PointOEP

Unpack/Decrypt Stub

Packed Unpacked

http://www.CodeEngn.com

패킹 & 언패킹의구조와원리

일반적인 매뉴얼 언패킹 과정

Reach the real OEP

DUMP

Rebuild IAT

http://www.CodeEngn.com

기초매뉴얼언패킹

UPX (Ultimate Packer for eXecutables)

▪ Open Source▪ Compress , Decompress▪ Linux , Dos , Windows 32-bits

http://www.CodeEngn.com

기초매뉴얼언패킹

Packed

http://www.CodeEngn.com

기초매뉴얼언패킹

Original

Packed

http://www.CodeEngn.com

기초매뉴얼언패킹

Original

Packed

http://www.CodeEngn.com

기초매뉴얼언패킹

UPX 시연

http://www.CodeEngn.com

기초매뉴얼언패킹

실행압축된 악성코드

MEW 시연 (변형된)

http://www.CodeEngn.com

언패킹을 방해하는 각종 기법

실행파일 보호 기법

http://www.CodeEngn.com

언패킹을 방해하는 각종 기법

Anti Debug

IsDebuggerPresent()ZwQueryInformationProcess()NtGlobalFlagProcess32Next()ZwSetInformationThread()UnhandledExceptionFilter()TerminateProcess()

Protection Technic

ETC

Junk CodeIAT changeStolen Bytepolymorphic

Anti BP/Trace

Anti BP(File streams, SEH , etc …) RDTSCGetTickCount()

http://www.CodeEngn.com

언패킹을 방해하는 각종 기법

Sample Code

; --- Anti Debugging using IsDebuggerPresent() ---

CALL DWORD PTR DS:[<&KERNEL32.IsDebuggerPresent>]CMP EAX,1 ; active = 1 , not active = 0JE found_debugger_action

; -----------------------------------------------------------------

http://www.CodeEngn.com

언패킹을 방해하는 각종 기법

Sample Code

; --- Anti Tracing(single stepping) using RDTSC ---RDTSC MOV ECX,EAXRDTSCSUB EAX,ECXCMP EAX,0FFFhJAE found_debugger_action

; -----------------------------------------------------------------

http://www.CodeEngn.com

프로텍터언패킹

Protector

ARM Protector, ASProtect, ExeShield, Themida(막강), VMProtect, NTkrnl Protector, Yoda Protector, SKVP, Nice Protect, GHF Protector … …

http://www.CodeEngn.com

프로텍터언패킹

[시연]

Stolen Byte (crackme) IAT 수정 (변형된 UPX)

Yoda Protector 1.03 (Full Option)

Thanks to…[자료제공해주신분들ㄳ]SlaxCoreCertlab

시연자료

http://mrbrown.linuxstudy.pe.kr/codeengn/data.zip

Q & A

http://www.CodeEngn.com