SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
“클라이언트는 적의 손아귀에”
게임 개발에서의 클라이언트 보안
Lambda Team
송창규
목 차
위기의 시대
위기의 시대
클라이언틔 해킹의 종류
해킹 둘러보기
해킹 툴
기본 지식 둘러보기
세상 믿을놈 하나없다
대안
피해야 할 것들
클라이언트 해킹의 기술적 대안
안전한 클라이언트 만들기
The Attacker’s Advantage and
the Defender’s Dilemma
위기의 시대
위기의 시대
클라이언트 해킹의 종류
해킹 툴
위기의 시대 - 범람하는 핵
위기의 시대 - 이젠 익숙한 단어들
프리서버, 오토클라이언트, …
오토마우스, 매크로, …
스피드핵, 메모리핵, 맵핵, …
노딜핵, 무한핵, 투명핵, …
돈버그, 무한버그, 시체버그, 무적버그, …
RMT (Real Money Trading), Gold Farms, …
위기의 시대 - Hack 2.0
Hack 2.0 - 더 이상 과거의 해킹이 아니다
Rootkit
발견되지 않도록 은닉하는 형태의 해킹 툴
Hooking
API Hooking, Winsock Hooking, System Hooking
Virtualization
환경 제어가 강력해짐
Hacking Earns Money
Every Computer is Connected
Hackers goes Web 2.0 (Collaborate)
게임 해킹(cheating)의 종류
Reflex Augmentation (반응 향상)
인간이 해야할 역할을 도움 – 오토마우스, aimbot, 매크로, 자동반응 등
Authoritative Clients (힘자랑 클라이언트)
하지 말아야 할것을 하게 함 – 텔레포트, 능력치 올리기, 제한 풀기 등
Information Exposure (정보 노출)
알지 말아야 할것을 알게 함 – 맵핵, 스탯핵, 투명벽 등
Bugs and Design Loopholes (Exploits) (버그)
기존 로직의 버그를 이용
Others
Compromised Servers
Environmental Weaknesses
Social Cheats
Identity Theft
Reverse Engineering
클라이언트 해킹의 종류
Reflex Augmentation
인간이 해야할 역할을 도움 – 오토마우스, aimbot, 매크로, 자동반응 등
Sudden Quiz !
USB Memory?
NO!
Sudden Quiz – Answer
USB AutoMouse!
클라이언트 해킹의 종류
Authoritative Clients
하지 말아야 할것을 하게 함 – 텔레포트, 능력치 올리기, 제한 풀기 등
장동건도 즐기는 맵핵
클라이언트 해킹의 종류
Information Exposure
알지 말아야 할것을 알게 함 – 맵핵, 스탯핵, 투명벽 등
해킹 둘러보기
해킹 툴
기본 지식 둘러보기
어느정도까지 왔나
세상 믿을놈 하나없다
클라이언트 해킹의 기술적 분류
데이터 파일 조작
데이터 메모리 조작
실행 파일 조작
코드 메모리 조작
패킷 조작
환경 조작 네놈도
조작해주마
해킹 툴
데이터 파일 조작 – WinHex, UltraEdit, …
데이터 메모리 조작 – TSearch, Cheat Engine, …
실행 파일 조작 – OllyDbg, Resource Hacker, …
코드 메모리 조작 – OllyDbg, Loader, …
패킷 조작 – WPE, Proxy, …
환경 조작 – Microsoft Windows, VMWare…
해킹 툴 – More
모니터링 – ProcExp, FileMon, RegMon, Iris, …
실행압축 – UPX, ASPack, ASProtect, PECompact, …
은둔 – HxDef (Hacker Defender)
방어무력화 – “가드내려”, nProtect Bypassing, …
키로거
Reverse Engineering – IDA, HBGary Inspector, ...
해킹 툴
OllyDbg
현재 크래커들이 가장 많이 쓰는 유저모드 디버거
유저 친화적 인터페이스
강력한 코드 분석 기능
C Runtime (strcpy, rand, …)
Reference Analysis
Call Graph
알아보기 쉽게 친절한 가이드
API
Stack 분석, 안내
해킹 툴
OllyDbg
현재 크래커들이 가장 많이 쓰는 유저모드 디버거
유저 친화적 인터페이스
강력한 코드 분석 기능
C Runtime (strcpy, rand, …)
Reference Analysis
알아보기 쉽게 친절한 가이드
API
Stack 분석, 안내
“CreateMutexA”
API 도
파라메터와 함께 친절하게
“strstr”
C Runtime도
파라메터와 함께 친절하게
References
특정 코드를 역참조
해킹 툴
OllyDbg – Plugins
PDK 제공
다양한 플러그인
HideDebugger
UniversalHooker
CallGraph
View Dialogs
FindCrypt
OllyScript
String Access Finder
해킹 툴
TSearch
현재 크래커들이 가장 많이 쓰는 치팅 툴
치트 양산화의 주범
추이를 입력하여 데이터 추적
5  3  1
늘었다  줄었다  줄었다
Data Freeze + 핫키
저장 / 공유
유사품
Cheat Engine
ArtMoney
해킹 툴
TSearch – AutoHack
1.6 부터 등장
일종의 특화된 Debugger
Data Breakpoint 를 이용하여
데이터 변경 코드를 추적
데이터 치트 양산화에서
코드 치트 양산화로
Cheat Engine 등은
로더 제작기능도 있다
해킹 툴 – 간단한 시연
ProcMon
FileMon
RegMon
OllyDbg
“ 아주 쉽죠? “
자, 따라해보세요
아주 쉽죠?
기본 지식 둘러보기
Process & Memory
API
Kernel, IA32 architecture
Code Patch, Data Breakpoint
Buffer Overflow
기본지식 – Process & Memory
Process & Memory
Process A.exe
0x0136000 stack
0x03d0000 heap
0x0400000 A.exe
0x6400000 MyDll.dll
0x7c80000 kernel32.dll
Memory
Address
Space
0x0136000 stack
0x03d0000 heap
0x0400000 A.exe
0x6000000 A.dll
0x6400000 MyDll.dll
0x7c80000 kernel32.dll
Process B.exe
0x0136000 stack
0x03d0000 heap
0x0400000 A.exe
0x6400000 MyDll.dll
0x7c80000 kernel32.dll
Memory
Address
Space
0x0136000 stack
0x03d0000 heap
0x0400000 B.exe
0x6400000 Mama.dll
0x6500000 MyDll.dll
0x7c80000 kernel32.dll
 프로세스마다 Adress Space를 갖는다
(같은 포인터값이라도 프로세스마다 다른 데이터)
 EXE 는 보통 0x0400000 에 위치
 같은 DLL 는 보통 같은 주소에 위치
 특히 OS 기본 DLL 은 같다고 봐도 된다
 하지만 같은 프로세스의
두 DLL 의 주소영역이 겹칠 수 있다 !
 Relocating / Rebasing
기본지식 – API
함수를 호출하려면:
CALL 0x12340
두 프로세스의 서로 다른 DLL 이 같은 주소를 쓰려고 하면?
OS 는 DLL 의 주소를 동적으로 바꿀 수 있게 해준다
 Relocation / Rebasing
DLL 호출하는 코드는 어떻게 바꾸지?
DLL 의 함수를 import 했을 경우 아래와 같은 코드 생성
CALL [0x43210]
IAT (Import Address Table)
기본지식 – API Hooking
IAT 를 수정하면 API Hooking 이 가능
IAT 가 가리키는 주소의 코드를
직접 수정하는 방법도 있다
코드영역을 수정하기 위해서는 VirtualProtect 이용
PAGE_EXECUTE_READ  PAGE_READWRITE
하나의 API 에는 여러가지 gateway 가 있다.
TextOutA  TextOutW
OpenProcess  NtOpenProcess / ZwOpenProcess
kernel32.dll  ntdll.dll  ntoskrnl
기본지식 – 코드 해킹 방법
해커가 코드를 실행하는 방법
코드 가로채기
CreateRemoteThread
SetWindowsHookEx
Buffer Overflow
Many more in Kernel Mode
해커가 코드를 가로채는 방법
Code patching
IAT patching
Breakpoint
DLL hijacking
SEH (Structured Exception Handling)
Access Violation
Division By Zero
Many more in Kernel Mode
기본지식 – Kernel, IA32 architecture
Kernel, IA32 architecture
Kernel mode - 권한 제약이 없다
Driver 를 개발하면 Kernel mode 에서 동작하는 프로그램을 만들 수 있다
Filter Drivers – No Hooking Necessary
IA32
Debug Register (Data Breakpoint)
Trap (Interrupt)
기본지식 – Buffer Overflow
Buffer Overflow
"Today's Denial of Service is Tomorrow's Code Execution.“
데이터만으로 코드 실행 가능
대부분 c string 처리에서 발생
c string 을 그냥 쓰는길은 자폭의 길
String Class 로 wrapping 해서 쓸것
정 써야할곳에는 strcpy_s, strcat_s 를 쓸것
Buffer
Max Size 와 Size 를 검사할것
해킹, 어느정도까지 왔나
3D Wrapper DX
해킹, 어느정도까지 왔나
Extracting SkeletalMesh of Lineage II
해킹, 어느정도까지 왔나
Lineage II Free Server
해킹, 어느정도까지 왔나
스타크래프트 해킹
맵핵 외에 스타 자체 버그를 잡아주는 유틸리티 등장
Reverse Engineering - 맵핵을 발견해주는 유틸리티 등장
해킹, 어느정도까지 왔나
한스타 – 한글 스타크래프트
자체 Text Out 함수를 교체
비트맵 처리, 캐싱, 팔레트 처리, …
맵핵 방지 기능 (無맵핵 인증 기능)
해킹, 어느정도까지 왔나
“Hacking World of Warcraft”
해킹, 어느정도까지 왔나
HBGary Inspector
런타임 데이터 추적
스크립트를 통한 분석 자동화
해킹, 어느정도까지 왔나
IDA – Analysing, Decompiling
해킹, 어느정도까지 왔나
外掛(해킹툴) 의 범람
해킹, 어느정도까지 왔나
보안 솔루션도 믿을수 없다
강력하지만, 맹신은 금물
많이 사용할 수록 많이 공격당한다는 법칙에도 가장 부합됨
전세계의 수많은 해커가 노리고 있다
타 프로세스가 메모리 읽지 못하게 막아주는
보안 솔루션 PrevX 를 이용하여
nProtect 가 메모리를 읽어서 검사하지 못하게 함
창과 방패, 그 무한한 싸움
클라이언트의 보안은 한계가 있다
해킹과 보안 기술은 결국
하위 레벨에서의 동작을 같은 레벨이나
상위 레벨에서 감시/조작하는 기술
가장 상위 레벨(Kernel mode)까지 올라가면
결국 먼저 떠서 상대방의 코드를 가로채고
조작할 수 있는 쪽이 승리
세상 믿을놈 하나없다
코드를 믿지 말라
라이브러리를 믿지 말라
OS 를 믿지 말라
컴퓨터를 믿지 말라
보안 솔루션을 믿지 말라
서버를 믿지 말라 (?)
 서버와의 커뮤니케이션을 믿지 말라
사실 유일하게 믿어야 하는 존재는 서버이다.
대안
피해야 할 것들
클라이언트 해킹의 기술적 대안
안전한 클라이언트 만들기
The Attacker’s Advantage and
the Defender’s Dilemma
피해야 할 것들
피해야할 것들
XOR 암호화
맨눈으로 훑어봐도 보이는 XOR 은 암호화가 아니다.
일반적인 데이터에는 “0” 이 압도적으로 많음 – 패턴과 키가 쉽게 노출됨
일부 데이터 추적기는 XOR 데이터까지 찾아준다.
피해야할 것들
즉각적인 액션
빠른 리액션은 역추적의 지름길
특히, MessageBox 를 띄우는 로직은 가장 쉽게 드러난다
서버를 경유하거나 비동기적 로직과 임의의 딜레이와 함로 처리
피해야할 것들
즉각적이지 않은 액션
“당신은 한달 전에 해킹툴을 사용하였으므로 계정이 영구 블럭되었습니다“
대응까지의 시일이 많이 걸리면 역효과 – 학습 효과도 없고 유저가 이탈한다
운영과 기술의 중간적 이슈
피해야할 것들
String Data
Display 목적이 아닌 String 은 모두 주의
특히 String 을 Key 로 쓸 경우 주의 - ScriptKid 도 쉽게 해킹가능
피해야할 것들
중요한 데이터를 Client 가 그냥 처리
서버로 처리하거나
다른 Peer 를 통해서도 처리하거나
유효성 검사를 하라
피해야할 것들
XOR 암호화
즉각적인 액션
즉각적이지 않은 액션
String Data
중요한 데이터를 Client 가 그냥 처리
클라이언트 해킹의 기술적 대안
클라이언트 해킹의 기술적 대안
서버가 결정
Server Based Computing / Thin Client Model
빠른 반응성이나 클라이언트 데이터(메시 등)가 요구될 경우에는 한계가 있음
클라이언트 해킹의 기술적 대안
유효성 검사
검사 후 결과를 보내지 말고, 보낸 데이터를 서버가 검사하라
클라이언트도 Double Check
정교한 동기화를 사용한다면 클라이언트끼리 검사
ex) Starcraft 는 서로의 데이터가 기대된것과 틀리면
즉시 멀티플레이에서 drop 시킨다
다양한 타이밍 / 방식으로 할 수록 좋다
ex)
매번 총을 쏠때마다:
이전 발사와의 시간간격
게임 종료후:
총 발사한 총탄/총 시간
내가 가한 대미지 수 : 발사한 총탄의 총 대미지
클라이언트 해킹의 기술적 대안
“대세는 낚시” – Honeypot
In computer terminology, a honeypot is a trap set to detect, deflect or in some
manner counteract attempts at unauthorized use of information systems –
wikipedia
실제 데이터는 암호화, honeypot plain data 를 둔다.
걸려들 경우 100% cheating ! (no false positive)
클라이언트 해킹의 기술적 대안
원인과 결과의 연결고리 차단
클라이언트의 중요한 정보는 서버를 경유해서 처리
중요한 로직을 비동기 로직으로 처리
ex) Window Message, Command Queue
Multithreading 활용
클라이언트 해킹의 기술적 대안
매번 다른 동작을 요구
인증 또는 데이터 유효성 검사시에 활용하면 좋다.
ex) 서버의 랜덤을 활용한 확률 기반 검사 요청
if (rand() % 100 == 0)
{
if (rand() % 100 == 0)
{
if (rand() % 100 == 0)
send_req_verify_A() // 1/1000000
else
send_req_verify_B() // 약 1/10000
}
else send_req_verify_C() // 약 1/100
}
else send_req_verify_D() // 99/100
클라이언트 해킹의 기술적 대안
보안 솔루션 활용
맹신은 금물
“사용하는 사람이 많을수록 노리는 사람도 많다”
클라이언트 해킹의 기술적 대안
Online 대처 시스템
평소에는 사용하지 않다가,
보안 위협 발생시 사용할 수 있는 시스템
ex) 서버측에서 커맨드를 내리면
특정 윈도 타이틀 / 프로세스명을 검색하여
새로 발견된 치트 프로그램 사용자 제재 처리
평소에 사용하지 않는 것이 핵심
 해커에게 노출/공격당할 가능성이 적음
온라인상에서 클라이언트측으로
DLL 을 내려줄 수 있다면 더욱 좋다.
(denial of service 공격을 감안하여
DLL 로부터 “실패” 메시지를 받아 제재하지 말고
DLL 로부터 “성공” 메시지를 받지 못하면 제재)
클라이언트 해킹의 기술적 대안
정보는 최소한으로 노출하라
디버깅 정보나 로그는 최소화 시켜라
PDB 절대 배포 금지
데이터 파일은 암호화
클라이언트 해킹의 기술적 대안
서버가 결정
유효성 검사
“대세는 낚시” – Honeypot
원인과 결과의 연결고리 차단
매번 다르게 동작
보안 솔루션 활용
Online 대처 시스템
정보는 최소한으로 노출하라
안전한 클라이언트 만들기
안전한 클라이언트 만들기
아무것도 완전히 믿지 마라
안전한 클라이언트 만들기
기획/설계시 해킹을 고려하라
Thin Client Model 의 경우,
기획시 클라이언트 판단 여지나 비중을 최소화
( 액션 처리, 미니 게임 등 )
설계시 데이터의 흐름과 중요한 데이터를 검토
( 서버에서 할 수 있는 처리는 서버가 한다 )
ex) Mabinogi, Kart Rider
안전한 클라이언트 만들기
모든 소스가 공개되었다고 생각하라
안전한 클라이언트 만들기
언제나 불리한 위치에 있음을 자각하라
“The Attacker’s Advantage and the Defender’s Dilemma” (뒤에 나옴)
DON’T UNDERESTIMATE
THE DARK SIDE OF THE
FORCE
HACKERS ARE
YOUR FATHER
안전한 클라이언트 만들기
전문가와 상의하라
보안은 단순히 구현하는 영역이 아니다
직접 막는다고 하지만, 모르는 부분의 보이지 않는 구멍이 수두룩하다
전문가와 상의하면 보다 현명한 솔루션을 얻을 수 있다
안전한 클라이언트 만들기
책임감을 가져라
결국 개발하는것은 사람이다
책임감은 개발 보안에서의 가장 중요한 요소중 하나
안전한 클라이언트 만들기
아무것도 완전히 믿지 마라
기획/설계시 해킹을 고려하라
모든 소스가 공개되었다고 생각하라
언제나 불리한 위치에 있음을 자각하라
전문가와 상의하라
책임감을 가져라
The Attacker’s Advantage and the Defender’s Dilemma
The defender must defend all points;
the attacker can choose the weakest point.
방어자는 모든 지점을 다 막아야 하지만 공격자는 한 곳만 골라 공격할 수 있다.
The defender can defend only against known attacks;
the attacker can probe for unknown vulnerabilities.
방어자는 알고 있는 범위만을 막을 수 있지만 공격자는 모르는 취약점을 찾아낼 수 있다.
The defender must be constantly vigilant;
the attacker can strike at will.
방어자는 언제나 늘 지키고 있어야 하지만, 공격자는 원하는 아무때 공격할 수 있다.
The defender must play by the rules;
the attacker can play dirty.
방어자는 원칙을 지켜 행동해야하지만, 공격자는 비열하게 공격할 수 있다.
Q & A
Any Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다Jinho Jung
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지Kwangyoung Lee
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012Esun Kim
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기YEONG-CHEON YOU
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법Lee Sangkyoon (Kay)
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개Seungmo Koo
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요Eunseok Yi
 
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011devCAT Studio, NEXON
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 

Was ist angesagt? (20)

사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
 
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 

Ähnlich wie [NDC07] 게임 개발에서의 클라이언트 보안 - 송창규

보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법Youngjun Chang
 
16.02.27 해킹캠프 오픈 소스 최우석
16.02.27 해킹캠프 오픈 소스 최우석16.02.27 해킹캠프 오픈 소스 최우석
16.02.27 해킹캠프 오픈 소스 최우석KISEC
 
16.02.27 해킹캠프 오픈_소스_최우석_ver0.3
16.02.27 해킹캠프 오픈_소스_최우석_ver0.316.02.27 해킹캠프 오픈_소스_최우석_ver0.3
16.02.27 해킹캠프 오픈_소스_최우석_ver0.3KISEC
 
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)FNGS Labs
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
해킹과 보안
해킹과 보안해킹과 보안
해킹과 보안창열 최
 
Cybereason in Korea, SMEC
Cybereason in Korea, SMECCybereason in Korea, SMEC
Cybereason in Korea, SMECSMEC Co.,Ltd.
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법Youngjun Chang
 
Cybereason v2.10
Cybereason v2.10Cybereason v2.10
Cybereason v2.10Harry Sohn
 
Drive-By Download & JavaScript Obfuscation
Drive-By Download & JavaScript ObfuscationDrive-By Download & JavaScript Obfuscation
Drive-By Download & JavaScript ObfuscationJason Choi
 
(130216) #fitalk reverse connection tool analysis
(130216) #fitalk   reverse connection tool analysis(130216) #fitalk   reverse connection tool analysis
(130216) #fitalk reverse connection tool analysisINSIGHT FORENSIC
 
랜섬웨어 엔딩 #2016 1Q
랜섬웨어 엔딩 #2016 1Q랜섬웨어 엔딩 #2016 1Q
랜섬웨어 엔딩 #2016 1QNSHC-RedAlert
 
지능형지속위협공격 최신동향 분석
지능형지속위협공격 최신동향 분석지능형지속위협공격 최신동향 분석
지능형지속위협공격 최신동향 분석한익 주
 
Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안Lee Chanwoo
 
(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어
(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어
(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어INSIGHT FORENSIC
 
국내 전자상거래 보안 현황
국내 전자상거래 보안 현황국내 전자상거래 보안 현황
국내 전자상거래 보안 현황경엽 이
 
Project turtle ship
Project turtle shipProject turtle ship
Project turtle shiphanbeom Park
 
(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기INSIGHT FORENSIC
 

Ähnlich wie [NDC07] 게임 개발에서의 클라이언트 보안 - 송창규 (20)

보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법
 
16.02.27 해킹캠프 오픈 소스 최우석
16.02.27 해킹캠프 오픈 소스 최우석16.02.27 해킹캠프 오픈 소스 최우석
16.02.27 해킹캠프 오픈 소스 최우석
 
16.02.27 해킹캠프 오픈_소스_최우석_ver0.3
16.02.27 해킹캠프 오픈_소스_최우석_ver0.316.02.27 해킹캠프 오픈_소스_최우석_ver0.3
16.02.27 해킹캠프 오픈_소스_최우석_ver0.3
 
해킹과 보안
해킹과 보안해킹과 보안
해킹과 보안
 
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
악성코드 자동화 분석을 통한 인텔리전스(쿡쿠 샌드박스)
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
해킹과 보안
해킹과 보안해킹과 보안
해킹과 보안
 
Cybereason in Korea, SMEC
Cybereason in Korea, SMECCybereason in Korea, SMEC
Cybereason in Korea, SMEC
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
Cybereason v2.10
Cybereason v2.10Cybereason v2.10
Cybereason v2.10
 
Drive-By Download & JavaScript Obfuscation
Drive-By Download & JavaScript ObfuscationDrive-By Download & JavaScript Obfuscation
Drive-By Download & JavaScript Obfuscation
 
(130216) #fitalk reverse connection tool analysis
(130216) #fitalk   reverse connection tool analysis(130216) #fitalk   reverse connection tool analysis
(130216) #fitalk reverse connection tool analysis
 
랜섬웨어 엔딩 #2016 1Q
랜섬웨어 엔딩 #2016 1Q랜섬웨어 엔딩 #2016 1Q
랜섬웨어 엔딩 #2016 1Q
 
지능형지속위협공격 최신동향 분석
지능형지속위협공격 최신동향 분석지능형지속위협공격 최신동향 분석
지능형지속위협공격 최신동향 분석
 
Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안Sua 정보보호관리체계 cissp_암호학_강의교안
Sua 정보보호관리체계 cissp_암호학_강의교안
 
(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어
(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어
(Ficon2016) #3 분석가와 관리자가 바라본 랜섬웨어
 
국내 전자상거래 보안 현황
국내 전자상거래 보안 현황국내 전자상거래 보안 현황
국내 전자상거래 보안 현황
 
Ddos조사
Ddos조사Ddos조사
Ddos조사
 
Project turtle ship
Project turtle shipProject turtle ship
Project turtle ship
 
(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기(Fios#02) 1. 랜섬웨어 연대기
(Fios#02) 1. 랜섬웨어 연대기
 

Mehr von ChangKyu Song

[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발ChangKyu Song
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기ChangKyu Song
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규ChangKyu Song
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규ChangKyu Song
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 

Mehr von ChangKyu Song (6)

[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 

[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규

  • 1. “클라이언트는 적의 손아귀에” 게임 개발에서의 클라이언트 보안 Lambda Team 송창규
  • 2. 목 차 위기의 시대 위기의 시대 클라이언틔 해킹의 종류 해킹 둘러보기 해킹 툴 기본 지식 둘러보기 세상 믿을놈 하나없다 대안 피해야 할 것들 클라이언트 해킹의 기술적 대안 안전한 클라이언트 만들기 The Attacker’s Advantage and the Defender’s Dilemma
  • 4. 위기의 시대 - 범람하는 핵
  • 5. 위기의 시대 - 이젠 익숙한 단어들 프리서버, 오토클라이언트, … 오토마우스, 매크로, … 스피드핵, 메모리핵, 맵핵, … 노딜핵, 무한핵, 투명핵, … 돈버그, 무한버그, 시체버그, 무적버그, … RMT (Real Money Trading), Gold Farms, …
  • 6. 위기의 시대 - Hack 2.0 Hack 2.0 - 더 이상 과거의 해킹이 아니다 Rootkit 발견되지 않도록 은닉하는 형태의 해킹 툴 Hooking API Hooking, Winsock Hooking, System Hooking Virtualization 환경 제어가 강력해짐 Hacking Earns Money Every Computer is Connected Hackers goes Web 2.0 (Collaborate)
  • 7. 게임 해킹(cheating)의 종류 Reflex Augmentation (반응 향상) 인간이 해야할 역할을 도움 – 오토마우스, aimbot, 매크로, 자동반응 등 Authoritative Clients (힘자랑 클라이언트) 하지 말아야 할것을 하게 함 – 텔레포트, 능력치 올리기, 제한 풀기 등 Information Exposure (정보 노출) 알지 말아야 할것을 알게 함 – 맵핵, 스탯핵, 투명벽 등 Bugs and Design Loopholes (Exploits) (버그) 기존 로직의 버그를 이용 Others Compromised Servers Environmental Weaknesses Social Cheats Identity Theft Reverse Engineering
  • 8. 클라이언트 해킹의 종류 Reflex Augmentation 인간이 해야할 역할을 도움 – 오토마우스, aimbot, 매크로, 자동반응 등
  • 9. Sudden Quiz ! USB Memory? NO!
  • 10. Sudden Quiz – Answer USB AutoMouse!
  • 11. 클라이언트 해킹의 종류 Authoritative Clients 하지 말아야 할것을 하게 함 – 텔레포트, 능력치 올리기, 제한 풀기 등
  • 12. 장동건도 즐기는 맵핵 클라이언트 해킹의 종류 Information Exposure 알지 말아야 할것을 알게 함 – 맵핵, 스탯핵, 투명벽 등
  • 13. 해킹 둘러보기 해킹 툴 기본 지식 둘러보기 어느정도까지 왔나 세상 믿을놈 하나없다
  • 14. 클라이언트 해킹의 기술적 분류 데이터 파일 조작 데이터 메모리 조작 실행 파일 조작 코드 메모리 조작 패킷 조작 환경 조작 네놈도 조작해주마
  • 15. 해킹 툴 데이터 파일 조작 – WinHex, UltraEdit, … 데이터 메모리 조작 – TSearch, Cheat Engine, … 실행 파일 조작 – OllyDbg, Resource Hacker, … 코드 메모리 조작 – OllyDbg, Loader, … 패킷 조작 – WPE, Proxy, … 환경 조작 – Microsoft Windows, VMWare…
  • 16. 해킹 툴 – More 모니터링 – ProcExp, FileMon, RegMon, Iris, … 실행압축 – UPX, ASPack, ASProtect, PECompact, … 은둔 – HxDef (Hacker Defender) 방어무력화 – “가드내려”, nProtect Bypassing, … 키로거 Reverse Engineering – IDA, HBGary Inspector, ...
  • 17. 해킹 툴 OllyDbg 현재 크래커들이 가장 많이 쓰는 유저모드 디버거 유저 친화적 인터페이스 강력한 코드 분석 기능 C Runtime (strcpy, rand, …) Reference Analysis Call Graph 알아보기 쉽게 친절한 가이드 API Stack 분석, 안내
  • 18. 해킹 툴 OllyDbg 현재 크래커들이 가장 많이 쓰는 유저모드 디버거 유저 친화적 인터페이스 강력한 코드 분석 기능 C Runtime (strcpy, rand, …) Reference Analysis 알아보기 쉽게 친절한 가이드 API Stack 분석, 안내 “CreateMutexA” API 도 파라메터와 함께 친절하게 “strstr” C Runtime도 파라메터와 함께 친절하게 References 특정 코드를 역참조
  • 19. 해킹 툴 OllyDbg – Plugins PDK 제공 다양한 플러그인 HideDebugger UniversalHooker CallGraph View Dialogs FindCrypt OllyScript String Access Finder
  • 20. 해킹 툴 TSearch 현재 크래커들이 가장 많이 쓰는 치팅 툴 치트 양산화의 주범 추이를 입력하여 데이터 추적 5  3  1 늘었다  줄었다  줄었다 Data Freeze + 핫키 저장 / 공유 유사품 Cheat Engine ArtMoney
  • 21. 해킹 툴 TSearch – AutoHack 1.6 부터 등장 일종의 특화된 Debugger Data Breakpoint 를 이용하여 데이터 변경 코드를 추적 데이터 치트 양산화에서 코드 치트 양산화로 Cheat Engine 등은 로더 제작기능도 있다
  • 22. 해킹 툴 – 간단한 시연 ProcMon FileMon RegMon OllyDbg
  • 23. “ 아주 쉽죠? “ 자, 따라해보세요 아주 쉽죠?
  • 24. 기본 지식 둘러보기 Process & Memory API Kernel, IA32 architecture Code Patch, Data Breakpoint Buffer Overflow
  • 25. 기본지식 – Process & Memory Process & Memory Process A.exe 0x0136000 stack 0x03d0000 heap 0x0400000 A.exe 0x6400000 MyDll.dll 0x7c80000 kernel32.dll Memory Address Space 0x0136000 stack 0x03d0000 heap 0x0400000 A.exe 0x6000000 A.dll 0x6400000 MyDll.dll 0x7c80000 kernel32.dll Process B.exe 0x0136000 stack 0x03d0000 heap 0x0400000 A.exe 0x6400000 MyDll.dll 0x7c80000 kernel32.dll Memory Address Space 0x0136000 stack 0x03d0000 heap 0x0400000 B.exe 0x6400000 Mama.dll 0x6500000 MyDll.dll 0x7c80000 kernel32.dll  프로세스마다 Adress Space를 갖는다 (같은 포인터값이라도 프로세스마다 다른 데이터)  EXE 는 보통 0x0400000 에 위치  같은 DLL 는 보통 같은 주소에 위치  특히 OS 기본 DLL 은 같다고 봐도 된다  하지만 같은 프로세스의 두 DLL 의 주소영역이 겹칠 수 있다 !  Relocating / Rebasing
  • 26. 기본지식 – API 함수를 호출하려면: CALL 0x12340 두 프로세스의 서로 다른 DLL 이 같은 주소를 쓰려고 하면? OS 는 DLL 의 주소를 동적으로 바꿀 수 있게 해준다  Relocation / Rebasing DLL 호출하는 코드는 어떻게 바꾸지? DLL 의 함수를 import 했을 경우 아래와 같은 코드 생성 CALL [0x43210] IAT (Import Address Table)
  • 27. 기본지식 – API Hooking IAT 를 수정하면 API Hooking 이 가능 IAT 가 가리키는 주소의 코드를 직접 수정하는 방법도 있다 코드영역을 수정하기 위해서는 VirtualProtect 이용 PAGE_EXECUTE_READ  PAGE_READWRITE 하나의 API 에는 여러가지 gateway 가 있다. TextOutA  TextOutW OpenProcess  NtOpenProcess / ZwOpenProcess kernel32.dll  ntdll.dll  ntoskrnl
  • 28. 기본지식 – 코드 해킹 방법 해커가 코드를 실행하는 방법 코드 가로채기 CreateRemoteThread SetWindowsHookEx Buffer Overflow Many more in Kernel Mode 해커가 코드를 가로채는 방법 Code patching IAT patching Breakpoint DLL hijacking SEH (Structured Exception Handling) Access Violation Division By Zero Many more in Kernel Mode
  • 29. 기본지식 – Kernel, IA32 architecture Kernel, IA32 architecture Kernel mode - 권한 제약이 없다 Driver 를 개발하면 Kernel mode 에서 동작하는 프로그램을 만들 수 있다 Filter Drivers – No Hooking Necessary IA32 Debug Register (Data Breakpoint) Trap (Interrupt)
  • 30. 기본지식 – Buffer Overflow Buffer Overflow "Today's Denial of Service is Tomorrow's Code Execution.“ 데이터만으로 코드 실행 가능 대부분 c string 처리에서 발생 c string 을 그냥 쓰는길은 자폭의 길 String Class 로 wrapping 해서 쓸것 정 써야할곳에는 strcpy_s, strcat_s 를 쓸것 Buffer Max Size 와 Size 를 검사할것
  • 32. 해킹, 어느정도까지 왔나 Extracting SkeletalMesh of Lineage II
  • 34. 해킹, 어느정도까지 왔나 스타크래프트 해킹 맵핵 외에 스타 자체 버그를 잡아주는 유틸리티 등장 Reverse Engineering - 맵핵을 발견해주는 유틸리티 등장
  • 35. 해킹, 어느정도까지 왔나 한스타 – 한글 스타크래프트 자체 Text Out 함수를 교체 비트맵 처리, 캐싱, 팔레트 처리, … 맵핵 방지 기능 (無맵핵 인증 기능)
  • 37. 해킹, 어느정도까지 왔나 HBGary Inspector 런타임 데이터 추적 스크립트를 통한 분석 자동화
  • 38. 해킹, 어느정도까지 왔나 IDA – Analysing, Decompiling
  • 40. 해킹, 어느정도까지 왔나 보안 솔루션도 믿을수 없다 강력하지만, 맹신은 금물 많이 사용할 수록 많이 공격당한다는 법칙에도 가장 부합됨 전세계의 수많은 해커가 노리고 있다 타 프로세스가 메모리 읽지 못하게 막아주는 보안 솔루션 PrevX 를 이용하여 nProtect 가 메모리를 읽어서 검사하지 못하게 함
  • 41. 창과 방패, 그 무한한 싸움 클라이언트의 보안은 한계가 있다 해킹과 보안 기술은 결국 하위 레벨에서의 동작을 같은 레벨이나 상위 레벨에서 감시/조작하는 기술 가장 상위 레벨(Kernel mode)까지 올라가면 결국 먼저 떠서 상대방의 코드를 가로채고 조작할 수 있는 쪽이 승리
  • 42. 세상 믿을놈 하나없다 코드를 믿지 말라 라이브러리를 믿지 말라 OS 를 믿지 말라 컴퓨터를 믿지 말라 보안 솔루션을 믿지 말라 서버를 믿지 말라 (?)  서버와의 커뮤니케이션을 믿지 말라 사실 유일하게 믿어야 하는 존재는 서버이다.
  • 43. 대안 피해야 할 것들 클라이언트 해킹의 기술적 대안 안전한 클라이언트 만들기 The Attacker’s Advantage and the Defender’s Dilemma
  • 45. 피해야할 것들 XOR 암호화 맨눈으로 훑어봐도 보이는 XOR 은 암호화가 아니다. 일반적인 데이터에는 “0” 이 압도적으로 많음 – 패턴과 키가 쉽게 노출됨 일부 데이터 추적기는 XOR 데이터까지 찾아준다.
  • 46. 피해야할 것들 즉각적인 액션 빠른 리액션은 역추적의 지름길 특히, MessageBox 를 띄우는 로직은 가장 쉽게 드러난다 서버를 경유하거나 비동기적 로직과 임의의 딜레이와 함로 처리
  • 47. 피해야할 것들 즉각적이지 않은 액션 “당신은 한달 전에 해킹툴을 사용하였으므로 계정이 영구 블럭되었습니다“ 대응까지의 시일이 많이 걸리면 역효과 – 학습 효과도 없고 유저가 이탈한다 운영과 기술의 중간적 이슈
  • 48. 피해야할 것들 String Data Display 목적이 아닌 String 은 모두 주의 특히 String 을 Key 로 쓸 경우 주의 - ScriptKid 도 쉽게 해킹가능
  • 49. 피해야할 것들 중요한 데이터를 Client 가 그냥 처리 서버로 처리하거나 다른 Peer 를 통해서도 처리하거나 유효성 검사를 하라
  • 50. 피해야할 것들 XOR 암호화 즉각적인 액션 즉각적이지 않은 액션 String Data 중요한 데이터를 Client 가 그냥 처리
  • 52. 클라이언트 해킹의 기술적 대안 서버가 결정 Server Based Computing / Thin Client Model 빠른 반응성이나 클라이언트 데이터(메시 등)가 요구될 경우에는 한계가 있음
  • 53. 클라이언트 해킹의 기술적 대안 유효성 검사 검사 후 결과를 보내지 말고, 보낸 데이터를 서버가 검사하라 클라이언트도 Double Check 정교한 동기화를 사용한다면 클라이언트끼리 검사 ex) Starcraft 는 서로의 데이터가 기대된것과 틀리면 즉시 멀티플레이에서 drop 시킨다 다양한 타이밍 / 방식으로 할 수록 좋다 ex) 매번 총을 쏠때마다: 이전 발사와의 시간간격 게임 종료후: 총 발사한 총탄/총 시간 내가 가한 대미지 수 : 발사한 총탄의 총 대미지
  • 54. 클라이언트 해킹의 기술적 대안 “대세는 낚시” – Honeypot In computer terminology, a honeypot is a trap set to detect, deflect or in some manner counteract attempts at unauthorized use of information systems – wikipedia 실제 데이터는 암호화, honeypot plain data 를 둔다. 걸려들 경우 100% cheating ! (no false positive)
  • 55. 클라이언트 해킹의 기술적 대안 원인과 결과의 연결고리 차단 클라이언트의 중요한 정보는 서버를 경유해서 처리 중요한 로직을 비동기 로직으로 처리 ex) Window Message, Command Queue Multithreading 활용
  • 56. 클라이언트 해킹의 기술적 대안 매번 다른 동작을 요구 인증 또는 데이터 유효성 검사시에 활용하면 좋다. ex) 서버의 랜덤을 활용한 확률 기반 검사 요청 if (rand() % 100 == 0) { if (rand() % 100 == 0) { if (rand() % 100 == 0) send_req_verify_A() // 1/1000000 else send_req_verify_B() // 약 1/10000 } else send_req_verify_C() // 약 1/100 } else send_req_verify_D() // 99/100
  • 57. 클라이언트 해킹의 기술적 대안 보안 솔루션 활용 맹신은 금물 “사용하는 사람이 많을수록 노리는 사람도 많다”
  • 58. 클라이언트 해킹의 기술적 대안 Online 대처 시스템 평소에는 사용하지 않다가, 보안 위협 발생시 사용할 수 있는 시스템 ex) 서버측에서 커맨드를 내리면 특정 윈도 타이틀 / 프로세스명을 검색하여 새로 발견된 치트 프로그램 사용자 제재 처리 평소에 사용하지 않는 것이 핵심  해커에게 노출/공격당할 가능성이 적음 온라인상에서 클라이언트측으로 DLL 을 내려줄 수 있다면 더욱 좋다. (denial of service 공격을 감안하여 DLL 로부터 “실패” 메시지를 받아 제재하지 말고 DLL 로부터 “성공” 메시지를 받지 못하면 제재)
  • 59. 클라이언트 해킹의 기술적 대안 정보는 최소한으로 노출하라 디버깅 정보나 로그는 최소화 시켜라 PDB 절대 배포 금지 데이터 파일은 암호화
  • 60. 클라이언트 해킹의 기술적 대안 서버가 결정 유효성 검사 “대세는 낚시” – Honeypot 원인과 결과의 연결고리 차단 매번 다르게 동작 보안 솔루션 활용 Online 대처 시스템 정보는 최소한으로 노출하라
  • 63. 안전한 클라이언트 만들기 기획/설계시 해킹을 고려하라 Thin Client Model 의 경우, 기획시 클라이언트 판단 여지나 비중을 최소화 ( 액션 처리, 미니 게임 등 ) 설계시 데이터의 흐름과 중요한 데이터를 검토 ( 서버에서 할 수 있는 처리는 서버가 한다 ) ex) Mabinogi, Kart Rider
  • 64. 안전한 클라이언트 만들기 모든 소스가 공개되었다고 생각하라
  • 65. 안전한 클라이언트 만들기 언제나 불리한 위치에 있음을 자각하라 “The Attacker’s Advantage and the Defender’s Dilemma” (뒤에 나옴) DON’T UNDERESTIMATE THE DARK SIDE OF THE FORCE HACKERS ARE YOUR FATHER
  • 66. 안전한 클라이언트 만들기 전문가와 상의하라 보안은 단순히 구현하는 영역이 아니다 직접 막는다고 하지만, 모르는 부분의 보이지 않는 구멍이 수두룩하다 전문가와 상의하면 보다 현명한 솔루션을 얻을 수 있다
  • 67. 안전한 클라이언트 만들기 책임감을 가져라 결국 개발하는것은 사람이다 책임감은 개발 보안에서의 가장 중요한 요소중 하나
  • 68. 안전한 클라이언트 만들기 아무것도 완전히 믿지 마라 기획/설계시 해킹을 고려하라 모든 소스가 공개되었다고 생각하라 언제나 불리한 위치에 있음을 자각하라 전문가와 상의하라 책임감을 가져라
  • 69. The Attacker’s Advantage and the Defender’s Dilemma The defender must defend all points; the attacker can choose the weakest point. 방어자는 모든 지점을 다 막아야 하지만 공격자는 한 곳만 골라 공격할 수 있다. The defender can defend only against known attacks; the attacker can probe for unknown vulnerabilities. 방어자는 알고 있는 범위만을 막을 수 있지만 공격자는 모르는 취약점을 찾아낼 수 있다. The defender must be constantly vigilant; the attacker can strike at will. 방어자는 언제나 늘 지키고 있어야 하지만, 공격자는 원하는 아무때 공격할 수 있다. The defender must play by the rules; the attacker can play dirty. 방어자는 원칙을 지켜 행동해야하지만, 공격자는 비열하게 공격할 수 있다.
  • 70. Q & A Any Questions?