kgc2014 line rangers/stage크래시 및 어뷰징 대응

43
LINE Rangers/Stage 크래시 및 어뷰징 대응 LINE+ 게임개발 2남세운/문영민

Upload: sewoon-nam

Post on 21-Jul-2015

800 views

Category:

Mobile


3 download

TRANSCRIPT

Page 1: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

LINE Rangers/Stage크래시 및 어뷰징 대응

LINE+ 게임개발 2실

남세운/문영민

Page 2: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

뭔 게임이야?

• 릴리즈 : 2014.02.28

• 타워 디펜스

• 귀여운 라인 케릭터 총 출동

• 한국어, 일본어, 태국어, 중국어(번체), 영어

• Cocos2d-x 2.1.4

– http://cocos2d-x.org

Page 3: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

스크린샷

Page 4: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

다운로드

Page 5: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

라인 할로윈 코스프레 : 일본

Page 6: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

왕철이형 방문기념

Page 7: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

어뷰징?

• 남용, 오용, 학대 등을 뜻하는 단어인 abuse에서 파생된 단어로 주로 온라인 게임에서 버그, 핵 등의 불법 프로그램, 타인 계정 도용, 다중 계정 접속 등을 통해 부당한 이득을 챙기를 행위를 뜻한다(엔하위키)

• DOS 게임 시절– 남은생명력 9999

• 모바일 시대

Page 8: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

1단계 –메모리 조작

• 단순하지만 가성비 좋은 어뷰징– 화면의숫자

– 추측

– 노가다

• 메모리 수정/복사

Page 9: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

1단계 –메모리 조작

• 좋은 예

Page 10: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

1단계 –메모리 조작

• 화면에 노출되는 숫자, 예측 가능한 숫자 제거

• UI와 로직의 분리

• 숫자 암호화– 모바일성능고려

• 클라이언트 로직을 신뢰하지 말자

• 서버 검증 절차 추가

Page 11: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

2단계 –시간 조작

• 일명 스피드핵

• 타겟 : 예측된 시간동안 행동이 이루어 지는 로직

• 결과 : 적군이 타워를 지나치더라

• Ex) 일반적인 dt = 0.03s

스피드핵 dt = 10s(배율로 조정 가능)

Page 12: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

2단계 –시간 조작

• 클라이언트 시간은 쉽게 조작 가능하다

• Dt를 기반으로 하는 경우 경계값을 꼭 정의하자

• 가능하면 서버 처리

Page 13: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

• IF

• 항상 true 를 리턴하게 한 후 앱을 리패키징하면 끝

• JAVA, C++ 소스코드 보안

if ( checkValue ) {

//checkValue 가 true 일때만실행되야하는상황}

Page 14: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

• 라이브러리 변조

Page 15: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

Page 16: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

• 뭐…뭐라는 거야..나도 모르겠다…

• 전문가를 찾아라

• So 파일을 앱 로딩시에 검증한다– 설치된경로의 so파일체크

• So 파일 심볼 제거

• 난독화

Page 17: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

• Android.mk 디버그 심볼 제거 옵션 추가

• Main.cpp의 모든 JNI 함수에 JNIEXPORT, JNICALL 추가

• NDK_ROOT/platforms/android-x/arch-arm/usr/include/jni.h

LOCAL_CFLAGS += -fvisibility=hidden

JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_n

ativeInit(JNIEnv* env, jobject thiz, jint w, jint h) {

//code

}

#define JNIEXPORT _attribute_ ((visibility ("default")))

Page 18: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

Page 19: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

3단계 –디컴파일

Page 20: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

4단계 –버전 우회

• 이것 저것 열심히 수정해 놨더니 똭!!

• So파일을 변조된 파일로 교체

• 앱 버전 정보 변조

1.0.4 에서 xml버전 정보만 교체해서 패키징

-> 1.0.6 으로 인식

-> 어뷰징 우회

Page 21: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

4단계 –버전 우회

• 버전 정보를 소스코드에 내장하도록 함

• So파일 검증 절차 추가

Page 22: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

5단계 –버그 버그 버그..

• 우리의 QA는 완벽 하지만, 완벽하지 않다

• 외부 이벤트에 의한 일시 정지 + 터치 취소 이벤트

Page 23: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

6단계 –다시 처음부터

• 무한 반복

• 이쯤 되면 고민을 할 시기– 어뷰징방지를위해얼마나리소스를투입할것인가?

Page 24: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

추가 고려 사항

• 믿을게 없구나…

– 아이폰 –탈옥우회앱

– 안드로이드 –루팅우회앱

– 라인전용우회앱

• 커뮤니티 사이트 동향 파악 – 대만, 태국

• 재화는 모두 서버 처리

• 보안 모듈 사용– 사내보안모듈

– 안드로이드네이티브 : ProGuard 적용검토

Page 25: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• D2 오픈세미나 : LINE Rangers 게임 클라이언트/서버 아키텍쳐– http://www.slideshare.net/deview/4d2-line-rangers

ETC

Page 26: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응
Page 27: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

라인 스테이지란?

“Tab & Flick Rhythm game with LINE Characters”

Page 28: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

크래시의 영향

서비스출시

앱이죽고/멈춤

사용자감소/리뷰별점테러

???

Page 29: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

크래시 대응

수집 분석 처리

Page 30: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• nCrazer - 로그 수집 및 분석 시스템을 이용한 수집– IOS : plCrashReporter

• https://www.plcrashreporter.org/

– Android : google-breakpad

• https://code.google.com/p/google-breakpad/

– nCrazer 강연자료 : http://deview.kr/2014/session?seq=8

크래시 수집

Page 31: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

Xcode>Organizer를 이용한 분석

크래시 분석 (IOS)

Page 32: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

Symbolicatecrash 명령어를 이용한 분석

크래시 분석 (IOS)

Page 33: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• 환경 변수 설정– export DEVELOPER_DIR="/Applications/XCode.app/Contents/Deve

loper”

• 명령어 alias

– alias symbolicatecrash='/Applications/Xcode.app/Contents/Develope

r/Platforms/iPhoneOS.platform/Developer/Library/PrivateFramework

s/DTDeviceKitBase.framework/Versions/A/Resources

/symbolicatecrash -v'

• 분석– symbolicatecrash myapp.crash myapp.app.dSYM

크래시 분석 (IOS)

Page 34: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

크래시 분석 (IOS)

Page 35: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• Google-breakpad란?

NDK 크래시 분석(Android)

Page 36: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• 선행작업– 리눅스머신설치

• Symbolic 파일생성시 Linux Dependent한함수사용.

– Google breakpad 설치

• svn checkout http://google-breakpad.googlecode.com/svn/trunk/ google-

breakpad-read-only

• checkout 받은디렉토리이동

• ./configure --host=arm-linux-androideabi --disable-processor --disable-

tools

• make -j4

NDK 크래시 분석(Android)

Page 37: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• SO(Shared Object) 파일 구하기– ndk build시프로젝트내에디버그정보를가지고있는 SO 파일이존재.

– 크래시가발생한빌드의 SO 버전이어야함.

• Symbolic 파일 생성– Breakpad 설치가완료되면, usr/local/dump_syms 명령어가생성됨.

– dump_syms myapp.so > myapp.so.sym

NDK 크래시 분석(Android)

Page 38: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

NDK 크래시 분석(Android)

• 심볼 파일

Page 39: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• Symbolic 디렉토리 생성– mkdir myapp.so

• 디렉토리명과 so 파일명이같아야함.

– head –n1 myapp.so.sym

• MODULE Linux arm CC2AD9BC08138FB1E8E6284959817A560 myap

p.so

– mkdir CC2AD9BC08138FB1E8E6284959817A560

• Symbolic 파일 복사– cp myapp.so.sym ./myapp.so/CC2AD9BC08138FB1E8E628495981

7A560

NDK 크래시 분석(Android)

Page 40: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• StackWalk

NDK 크래시 분석(Android)

Extract Data Stream from minidump

Enumerating Threads

Walking a Thread stack

Produce result

Page 41: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

• 분석– /usr/local/minidump_stackwalk myapp.dmp

NDK 크래시 분석(Android)

Page 42: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

크래시 대응 결과

Page 43: kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응