SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
게임 해킹툴의
변칙적 공격 기법 분석

www.CodeEngn.com
2013 CodeEngn Conference 09

박근영
2013.11.30
Contents
01

[ 공격 기법 1 ] 게임 코드 조작 By OpenProcess

02

[ 방어 기법 1 ] OpenProcess 접근 방어

03

[ 공격 기법 2 ] 게임 코드 조작 By BrainSwitching

04

[ 공격 기법 3 ] 게임 코드 조작 By DLL-Injection

05

[ 방어 기법 2 ] 메모리 CRC 비교

06

[ 공격 기법 4 ] 게임 코드 조작 By DR 조작
기사 자료

© AhnLab, Inc. All rights reserved.
실험 대상
TargetFPS.exe

© AhnLab, Inc. All rights reserved.
[공격 기법 1]

게임 코드 조작 By OpenProcess

TargetFPS.exe
CodeModify.exe
코드 조작 by OpenProcess
hProcess =OpenProcess(…,TargetFPS_PID)
VirtualProtectEx(hProcess, 0x4071e7, 0x3,
PAGE_EXECUTE_READWRITE , ..)
szPatchedByte[0] = 0x90;
szPatchedByte[1] = 0x90;
szPatchedByte[2] = 0x90;
WriteProcessMemory(hProcess,
0x4071e7, szPatchedByte, 3, ..)

© AhnLab, Inc. All rights reserved.
[방어 기법 1]

OpenProcess 접근 방어

TargetFPS.exe
Protector_dll.dll

OpenProcess
접근 방어
IF (OpenProcess 대상 PID==TargetFPS PID)
IF (접근 시도 Process != OS Process)
return FAIL

CodeModify.exe
코드 조작 by OpenProcess
hProcess =OpenProcess(…,TargetFPS_PID)
VirtualProtectEx(hProcess, 0x4071e7, 0x3,
PAGE_EXECUTE_READWRITE , ..)
szPatchedByte[0] = 0x90;
szPatchedByte[1] = 0x90;
szPatchedByte[2] = 0x90;
WriteProcessMemory(hProcess,
0x4071e7, szPatchedByte, 3, ..)

© AhnLab, Inc. All rights reserved.
[공격 기법 2]

게임 코드 조작 By BrainSwitching

TargetFPS.exe
Protector_dll.dll

OpenProcess
접근 방어
IF (OpenProcess 대상 PID==TargetFPS PID)
IF (접근 시도 Process != OS Process)
return FAIL

© AhnLab, Inc. All rights reserved.

CodeModify.exe

BrainSwitching.exe

코드 조작 by OpenProcess
[공격 기법 2]

게임 코드 조작 By BrainSwitching

CodeModify.exe CodeModify.섹션별VA,
BrainSwitching.exe
WriteProcessMemory(TaskMgr_PI->hProcess, pTaskMgr_Image , CodeModify.헤더 데이
pTaskMgr_Image = VirtualAllocEx(TaskMgr_PI->hProcess, CodeModify.이미지베이스,
+
ResumeThread(TaskMgr_PI->hThread)
SetThreadContext(TaskMgr_PI->hProcess, &Context)
Context.Eax = (CodeModify.이미지베이스 + &Context)
GetThreadContext(TaskMgr_PI->hProcess,CodeModify.엔트리포인트주소)
NtDll ! UnmapViewOfSection(TaskMgr_PI->hProcess, TaskMgr.이미지베이스)
CreateProcess(.. ”TaskMgr.exe”, .. ,CREATE_SUSPENDED, .. , &TaskMgr_PI)
CodeModify.섹션별 데이타, ..) X 섹션개수
타, ..)
CodeModify.이미지전체사이즈, ..)

CreateProcess(..)

TaskMgr.exe

CodeModify.exe

(Process)

(File-base)

NtDll ! UnmapViewOfSection(..)

header

header

VirtualAllocEx(..)

.text

.text

WriteProcessMemory(..)
WriteProcessMemory(..)

.rdata

.rdata
GetThreadContext(..)

.data

.data

.rsrc

.rsrc

Ctx.Eax = CodeModify.이미지
SetThreadContext(..)
ResumeThread(..)

© AhnLab, Inc. All rights reserved.
[공격 기법 3]

게임 코드 조작 By DLL-Injection

TargetFPS.exe
Protector_dll.dll

OpenProcess
접근 방어
IF (OpenProcess 대상 PID==TargetFPS PID)
IF (접근 시도 Process != OS Process)
return FAIL

CodeModify.exe

BrainSwitching.exe

코드 조작 by OpenProcess

DLL_Injector.exe
CodeModify_dll.dll
코드 조작 by DLL-인젝션

VirtualProtect(0x4071e7, 0x3,
PAGE_EXECUTE_READWRITE , ..)
szPatchedByte[0] = 0x90;
szPatchedByte[1] = 0x90;
szPatchedByte[2] = 0x90;
memcpy((LPVOID) 0x4071e7,
szPatchedCodes, 3);
© AhnLab, Inc. All rights reserved.
[방어 기법 2]

메모리 CRC 비교

TargetFPS.exe
Protector_dll.dll

OpenProcess
접근 방어

Memory CRC
비교

if (원본Mem_Crc32 != 현재Mem_Crc32)
코드조작 감지!

CodeModify.exe

BrainSwitching.exe

코드 조작 by OpenProcess

DLL_Injector.exe
CodeModify_dll.dll
코드 조작 by DLL-인젝션

© AhnLab, Inc. All rights reserved.
[공격 기법 4]

게임 코드 조작 By DR 조작

TargetFPS.exe
Protector_dll.dll

OpenProcess
접근 방어

Memory CRC
비교

CodeModify.exe

BrainSwitching.exe

코드 조작 by OpenProcess

DLL_Injector.exe
CodeModify_dll.dll
코드 조작 by DLL-인젝션
DR_Modify_dll.dll
코드 조작 by DR 조작

© AhnLab, Inc. All rights reserved.
[공격 기법 4]

게임 코드 조작 By DR 조작

LONG __stdcall DebugHookHandler(PEXCEPTION_POINTERS ExceptionInfo)
{ …
ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS; | THREAD_GET_CONTEXT |
if(ExceptionInfo->예외발생주소 == 0x4071e7)
hThread = OpenThread( THREAD_SUSPEND_RESUME
SuspendThread(hThread )) &ctx )
Kernel32 ! AddVectoredExceptionHandler(0, DebugHookHandler)
{
ResumeThread( hThread |THREAD_QUERY_INFORMATION, FALSE, TargetThreadID )
SetThreadContext( 0x004071e7
ctx.Dr0 = (DWORD) hThread,
THREAD_SET_CONTEXT
ExceptionInfo->ContextRecord->Eip = 0x004071e7 + 0x3; Return..;
ctx.Dr7 |= 0x00000001
}…
}

TargetFPS.exe
DR_Modify_dll.dll
코드 조작 by DR 조작
AddVectoredExceptionHandler(..)
hThread = OpenThread(..)
SuspendThread( hThread )
ctx.ContextFlags=
CONTEXT_DEBUG_REGISTERS;
ctx.Dr0 = 0x4071e7;
ctx.Dr7 |= 0x00000001;
SetThreadContext( hThread,&ctx );
ResumeThread( hThread );

© AhnLab, Inc. All rights reserved.
[공격 기법 4]

게임 코드 조작 By DR 조작

Kernel32 ! AddVectoredExceptionHandler(0, DebugHookHandler)
hThread = OpenThread( THREAD_SUSPEND_RESUME | THREAD_GET_CONTEXT |
THREAD_SET_CONTEXT |THREAD_QUERY_INFORMATION, FALSE, TargetThreadID )
SuspendThread( hThread )
ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS;
ctx.Dr0 = (DWORD) 0x004071e7
ctx.Dr7 |= 0x00000001
SetThreadContext( hThread, &ctx )
ResumeThread( hThread )
LONG __stdcall DebugHookHandler(PEXCEPTION_POINTERS ExceptionInfo)
{ …
if(ExceptionInfo->예외발생주소 == 0x4071e7)
{
ExceptionInfo->ContextRecord->Eip = 0x004071e7 + 0x3; Return..;
}…
}

© AhnLab, Inc. All rights reserved.
[공격 기법 4]

게임 코드 조작 By DR 조작

Debug Register

DR0 = BP 주소

[예외 핸들러]
인터럽트 1

인터럽트 발생 당시
의 CPU 레지스터 정
보를 갖고 있음

© AhnLab, Inc. All rights reserved.
[공격 기법 4]

게임 코드 조작 By DR 조작

Debug Register

• Debug Register: 디버깅 목적으로 프로세서에서 사용하는 레지스터
• DR0 ~ DR3
• BreakPoint를 설정할 주소를 저장
• DR6
• 디버그 상태 레지스터

• DR7
• 디버그 제어 레지스터 : breakpoint 상태를 선택적으로 활성화/비활성화

© AhnLab, Inc. All rights reserved.
조작 기법별 테크맵
TargetFPS.exe
Protector_dll.dll

OpenProcess
접근 방어

Memory CRC
비교

CodeModify.exe

BrainSwitching.exe

코드 조작 by OpenProcess

DLL_Injector.exe
CodeModify_dll.dll
코드 조작 by DLL-인젝션
DR_Modify_dll.dll
코드 조작 by DR 조작

© AhnLab, Inc. All rights reserved.
Thank you
Q&A
www.CodeEngn.com
2013 CodeEngn Conference 09
© AhnLab, Inc. All rights reserved.

Más contenido relacionado

La actualidad más candente

테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012Esun Kim
 
Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Kwen Won Lee
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?내훈 정
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCPSeungmo Koo
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개Seungmo Koo
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅DongMin Choi
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfNDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfJongwon Kim
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 

La actualidad más candente (20)

테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
 
Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표Overlapped IO와 IOCP 조사 발표
Overlapped IO와 IOCP 조사 발표
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
TBB 소개
TBB 소개TBB 소개
TBB 소개
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdfNDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
NDC21_게임테스트자동화5년의기록_NCSOFT_김종원.pdf
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 

Similar a [2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석

[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis StartGangSeok Lee
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx
응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx
응컴 기말 - 4주차_명승훈_임희진_지상훈.pptxssuser506c05
 
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
[2013 CodeEngn Conference 08] manGoo - Windows 8 ExploitGangSeok Lee
 
Windows reversing study_basic_8
Windows reversing study_basic_8Windows reversing study_basic_8
Windows reversing study_basic_8Jinkyoung Kim
 
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전James (SeokHun) Hwang
 
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석GangSeok Lee
 
보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법Youngjun Chang
 
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)Covenant Ko
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작GangSeok Lee
 
Windows Debugging Technique #3
Windows Debugging Technique #3Windows Debugging Technique #3
Windows Debugging Technique #3Wooseok Seo
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호Youngjun Chang
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라INSIGHT FORENSIC
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?Kyoung Up Jung
 
2016 hack festival igrus
2016 hack festival igrus2016 hack festival igrus
2016 hack festival igrusJinookawk
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호Youngjun Chang
 

Similar a [2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석 (20)

[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
[2007 CodeEngn Conference 01] 이강석 - Malware Analysis Start
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx
응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx
응컴 기말 - 4주차_명승훈_임희진_지상훈.pptx
 
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
[2013 CodeEngn Conference 08] manGoo - Windows 8 Exploit
 
Windows reversing study_basic_8
Windows reversing study_basic_8Windows reversing study_basic_8
Windows reversing study_basic_8
 
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
[무료] 시스템해킹(해커스쿨문제풀이) 공개버전
 
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석
 
보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법
 
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
[2008 CodeEngn Conference 02] seaofglass - Immunity Debugger 활용과 플러그인 제작
 
Windows Debugging Technique #3
Windows Debugging Technique #3Windows Debugging Technique #3
Windows Debugging Technique #3
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
Dll 하이재킹
Dll 하이재킹Dll 하이재킹
Dll 하이재킹
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
 
테스트가 뭐예요?
테스트가 뭐예요?테스트가 뭐예요?
테스트가 뭐예요?
 
2016 hack festival igrus
2016 hack festival igrus2016 hack festival igrus
2016 hack festival igrus
 
악성코드와 개인 정보 보호
악성코드와 개인 정보 보호악성코드와 개인 정보 보호
악성코드와 개인 정보 보호
 

Más de GangSeok Lee

[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안GangSeok Lee
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
 
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 FuzzingGangSeok Lee
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼GangSeok Lee
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?GangSeok Lee
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KOGangSeok Lee
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study ENGangSeok Lee
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KOGangSeok Lee
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis ENGangSeok Lee
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드GangSeok Lee
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)GangSeok Lee
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기GangSeok Lee
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다GangSeok Lee
 
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과GangSeok Lee
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware TrackerGangSeok Lee
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualizationGangSeok Lee
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploitsGangSeok Lee
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론GangSeok Lee
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽GangSeok Lee
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against BotnetGangSeok Lee
 

Más de GangSeok Lee (20)

[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
 
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
 
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
 

[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석

  • 1. 게임 해킹툴의 변칙적 공격 기법 분석 www.CodeEngn.com 2013 CodeEngn Conference 09 박근영 2013.11.30
  • 2. Contents 01 [ 공격 기법 1 ] 게임 코드 조작 By OpenProcess 02 [ 방어 기법 1 ] OpenProcess 접근 방어 03 [ 공격 기법 2 ] 게임 코드 조작 By BrainSwitching 04 [ 공격 기법 3 ] 게임 코드 조작 By DLL-Injection 05 [ 방어 기법 2 ] 메모리 CRC 비교 06 [ 공격 기법 4 ] 게임 코드 조작 By DR 조작
  • 3. 기사 자료 © AhnLab, Inc. All rights reserved.
  • 4. 실험 대상 TargetFPS.exe © AhnLab, Inc. All rights reserved.
  • 5. [공격 기법 1] 게임 코드 조작 By OpenProcess TargetFPS.exe CodeModify.exe 코드 조작 by OpenProcess hProcess =OpenProcess(…,TargetFPS_PID) VirtualProtectEx(hProcess, 0x4071e7, 0x3, PAGE_EXECUTE_READWRITE , ..) szPatchedByte[0] = 0x90; szPatchedByte[1] = 0x90; szPatchedByte[2] = 0x90; WriteProcessMemory(hProcess, 0x4071e7, szPatchedByte, 3, ..) © AhnLab, Inc. All rights reserved.
  • 6. [방어 기법 1] OpenProcess 접근 방어 TargetFPS.exe Protector_dll.dll OpenProcess 접근 방어 IF (OpenProcess 대상 PID==TargetFPS PID) IF (접근 시도 Process != OS Process) return FAIL CodeModify.exe 코드 조작 by OpenProcess hProcess =OpenProcess(…,TargetFPS_PID) VirtualProtectEx(hProcess, 0x4071e7, 0x3, PAGE_EXECUTE_READWRITE , ..) szPatchedByte[0] = 0x90; szPatchedByte[1] = 0x90; szPatchedByte[2] = 0x90; WriteProcessMemory(hProcess, 0x4071e7, szPatchedByte, 3, ..) © AhnLab, Inc. All rights reserved.
  • 7. [공격 기법 2] 게임 코드 조작 By BrainSwitching TargetFPS.exe Protector_dll.dll OpenProcess 접근 방어 IF (OpenProcess 대상 PID==TargetFPS PID) IF (접근 시도 Process != OS Process) return FAIL © AhnLab, Inc. All rights reserved. CodeModify.exe BrainSwitching.exe 코드 조작 by OpenProcess
  • 8. [공격 기법 2] 게임 코드 조작 By BrainSwitching CodeModify.exe CodeModify.섹션별VA, BrainSwitching.exe WriteProcessMemory(TaskMgr_PI->hProcess, pTaskMgr_Image , CodeModify.헤더 데이 pTaskMgr_Image = VirtualAllocEx(TaskMgr_PI->hProcess, CodeModify.이미지베이스, + ResumeThread(TaskMgr_PI->hThread) SetThreadContext(TaskMgr_PI->hProcess, &Context) Context.Eax = (CodeModify.이미지베이스 + &Context) GetThreadContext(TaskMgr_PI->hProcess,CodeModify.엔트리포인트주소) NtDll ! UnmapViewOfSection(TaskMgr_PI->hProcess, TaskMgr.이미지베이스) CreateProcess(.. ”TaskMgr.exe”, .. ,CREATE_SUSPENDED, .. , &TaskMgr_PI) CodeModify.섹션별 데이타, ..) X 섹션개수 타, ..) CodeModify.이미지전체사이즈, ..) CreateProcess(..) TaskMgr.exe CodeModify.exe (Process) (File-base) NtDll ! UnmapViewOfSection(..) header header VirtualAllocEx(..) .text .text WriteProcessMemory(..) WriteProcessMemory(..) .rdata .rdata GetThreadContext(..) .data .data .rsrc .rsrc Ctx.Eax = CodeModify.이미지 SetThreadContext(..) ResumeThread(..) © AhnLab, Inc. All rights reserved.
  • 9. [공격 기법 3] 게임 코드 조작 By DLL-Injection TargetFPS.exe Protector_dll.dll OpenProcess 접근 방어 IF (OpenProcess 대상 PID==TargetFPS PID) IF (접근 시도 Process != OS Process) return FAIL CodeModify.exe BrainSwitching.exe 코드 조작 by OpenProcess DLL_Injector.exe CodeModify_dll.dll 코드 조작 by DLL-인젝션 VirtualProtect(0x4071e7, 0x3, PAGE_EXECUTE_READWRITE , ..) szPatchedByte[0] = 0x90; szPatchedByte[1] = 0x90; szPatchedByte[2] = 0x90; memcpy((LPVOID) 0x4071e7, szPatchedCodes, 3); © AhnLab, Inc. All rights reserved.
  • 10. [방어 기법 2] 메모리 CRC 비교 TargetFPS.exe Protector_dll.dll OpenProcess 접근 방어 Memory CRC 비교 if (원본Mem_Crc32 != 현재Mem_Crc32) 코드조작 감지! CodeModify.exe BrainSwitching.exe 코드 조작 by OpenProcess DLL_Injector.exe CodeModify_dll.dll 코드 조작 by DLL-인젝션 © AhnLab, Inc. All rights reserved.
  • 11. [공격 기법 4] 게임 코드 조작 By DR 조작 TargetFPS.exe Protector_dll.dll OpenProcess 접근 방어 Memory CRC 비교 CodeModify.exe BrainSwitching.exe 코드 조작 by OpenProcess DLL_Injector.exe CodeModify_dll.dll 코드 조작 by DLL-인젝션 DR_Modify_dll.dll 코드 조작 by DR 조작 © AhnLab, Inc. All rights reserved.
  • 12. [공격 기법 4] 게임 코드 조작 By DR 조작 LONG __stdcall DebugHookHandler(PEXCEPTION_POINTERS ExceptionInfo) { … ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS; | THREAD_GET_CONTEXT | if(ExceptionInfo->예외발생주소 == 0x4071e7) hThread = OpenThread( THREAD_SUSPEND_RESUME SuspendThread(hThread )) &ctx ) Kernel32 ! AddVectoredExceptionHandler(0, DebugHookHandler) { ResumeThread( hThread |THREAD_QUERY_INFORMATION, FALSE, TargetThreadID ) SetThreadContext( 0x004071e7 ctx.Dr0 = (DWORD) hThread, THREAD_SET_CONTEXT ExceptionInfo->ContextRecord->Eip = 0x004071e7 + 0x3; Return..; ctx.Dr7 |= 0x00000001 }… } TargetFPS.exe DR_Modify_dll.dll 코드 조작 by DR 조작 AddVectoredExceptionHandler(..) hThread = OpenThread(..) SuspendThread( hThread ) ctx.ContextFlags= CONTEXT_DEBUG_REGISTERS; ctx.Dr0 = 0x4071e7; ctx.Dr7 |= 0x00000001; SetThreadContext( hThread,&ctx ); ResumeThread( hThread ); © AhnLab, Inc. All rights reserved.
  • 13. [공격 기법 4] 게임 코드 조작 By DR 조작 Kernel32 ! AddVectoredExceptionHandler(0, DebugHookHandler) hThread = OpenThread( THREAD_SUSPEND_RESUME | THREAD_GET_CONTEXT | THREAD_SET_CONTEXT |THREAD_QUERY_INFORMATION, FALSE, TargetThreadID ) SuspendThread( hThread ) ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS; ctx.Dr0 = (DWORD) 0x004071e7 ctx.Dr7 |= 0x00000001 SetThreadContext( hThread, &ctx ) ResumeThread( hThread ) LONG __stdcall DebugHookHandler(PEXCEPTION_POINTERS ExceptionInfo) { … if(ExceptionInfo->예외발생주소 == 0x4071e7) { ExceptionInfo->ContextRecord->Eip = 0x004071e7 + 0x3; Return..; }… } © AhnLab, Inc. All rights reserved.
  • 14. [공격 기법 4] 게임 코드 조작 By DR 조작 Debug Register DR0 = BP 주소 [예외 핸들러] 인터럽트 1 인터럽트 발생 당시 의 CPU 레지스터 정 보를 갖고 있음 © AhnLab, Inc. All rights reserved.
  • 15. [공격 기법 4] 게임 코드 조작 By DR 조작 Debug Register • Debug Register: 디버깅 목적으로 프로세서에서 사용하는 레지스터 • DR0 ~ DR3 • BreakPoint를 설정할 주소를 저장 • DR6 • 디버그 상태 레지스터 • DR7 • 디버그 제어 레지스터 : breakpoint 상태를 선택적으로 활성화/비활성화 © AhnLab, Inc. All rights reserved.
  • 16. 조작 기법별 테크맵 TargetFPS.exe Protector_dll.dll OpenProcess 접근 방어 Memory CRC 비교 CodeModify.exe BrainSwitching.exe 코드 조작 by OpenProcess DLL_Injector.exe CodeModify_dll.dll 코드 조작 by DLL-인젝션 DR_Modify_dll.dll 코드 조작 by DR 조작 © AhnLab, Inc. All rights reserved.
  • 17. Thank you Q&A www.CodeEngn.com 2013 CodeEngn Conference 09 © AhnLab, Inc. All rights reserved.