스마트폰 해킹과 대응 @KASA

Preview:

DESCRIPTION

9월 5일 KASA에서 발표한 스마트폰 게임 해킹 사례와 대응에 대한 내용입니다.

Citation preview

스마트폰 게임 해킹과 대응

ANB Soft 송찬호KASA 2013.9.5

해킹 공격 분야

결제

파일

세이브 파일패킷

속도

메모리

결제 해킹 사례

사례>출시 후 6시간, 회사 과금 로그 1억 찍음!!소고기 맛 나게 먹다가..... 찜찜구글 (애플) 결제 로그 결제 금액 0원 ㅠ_ㅠ

결제 공격 대상 - 결제 모듈

IAP (ios) / IAB (android) 모듈- 무조건 결제 성공- 가짜 영수증 반환- 타 게임의 유효한 영수증 반환- 이미 처리된 영수증 반환

결제 공격 대응 - 결제 모듈

결제 인증 서버- 결제 후 영수증을 서버로 보내 유효할 경우 결제 결과 지급

영수증 인증- 해당 어플의 영수증 인지?- 영수증이 유효한지?- 영수증이 기존에 처리된적 있는지?

결제 공격 대상 - 지급 로직

결제 결과 전달 시점 로직- 아이템 (결제 결과) 을 지급 받았지만 지급 대상 (원격의 서서) 이 지급 실패 판단을 유도하여 재지급 하도록 공격 시도

결제 공격 대응 - 지급 로직 - 1

안전한 지급 로직- 결제 정보와 정확히 일치- 어플 종료 등 실패시 재지급

=> 결제 인증 시 유효한경우 지급 - 개별 아이템을 지급하지 않음

=> 인벤 단위나 최종값 (캐시) 을 서버로 받음

=> 아이템 추가, 캐시 증가량을 전달하지 않음

과금 공격 대응 - 지급 로직 - 2

안전한 지급 로직- 과금 인증시 서버에서 아이템 지급 (DB에 기록)

=> 안드로이드의 경우 apk를 해킹하여 인증 로직을 제거하면 과금은 통과 하나 아이템 지급이 안됨- 클라이언트가 인벤 및 캐시 포인트 업데이트시 과금 내역을 반영한 내용이 전달

파일 해킹

사례>모든 데이터는 내 손에…나는야 성실한 놈 함 디벼 볼까 ~~

파일 공격 유형

예전 버전 파일 덮어 쓰기- 원하는 벨런스 시절로 롤 백

데이터 수정- 저장된 파일을 바이너리 편집기로 수정

파일 공격 감지

예전 버전 파일 덮어 쓰기 & 데이터 수정- 최근 파일의 해시값과 로딩한 파일의 해시값을 비교

파일 공격 대응

정상 파일을 다운로드 후 읽은 다음 어플 기동

어플 재설치 요구

세이브 파일 해킹

사례>모든 데이터는 내 손에…원하는데로 될 때까지 수정...귀찮아 친구꺼 가져다 게임 하지.. 뭐나는야 만렙~~

세이브 파일 공격 유형

세이브 파일 배포- 친구(혹은 불특정 다수)에게 세이브 파일 공개

세이브 파일 백업- 서버에 아이템을 전송 (인벤, 경매, 우편) 후 세이브 파일을 기존 것으로 되돌림

데이터 수정- 저장된 파일을 바이너리 편집기로 수정

세이브 파일 공격 감지

세이브 파일 배포- 세이브 파일에 사용자 정보 입력

세이브 파일 백업- 서버에 아이템을 전송 시 변경되는 카운터를 세이브 파일에 기록

데이터 수정- 저장시 세이브 파일의 해시값을 기록, 읽을 때 해시와 저장한 해시 비교

세이브 파일 공격 대응

서버에 세이브 파일 기록

절대 로딩 실패 하면 안된다!!- 해킹과 버그를 구분 할 수 없음

일단 게임이 되고, 서버에 해킹 기록 후 대응

패킷 해킹

사례>웹 통신을 주로 사용…패킷 캡춰 시 모든 정보가 읽기 쉽게 됨…JSON 이나 URL encode 방식이니 이해가 쏙쏙…원하는데로 고쳐 보내기도 좋다.

패킷 공격 대상

모든 패킷 !!

해킹 용 리눅스 박스 (BackTrack) 설치 ..스마트폰의 패킷이 리눅스 박스를 거쳐 가도록 네트워크 환경 구축 .. (맨 온더 미들 공격 패턴)패킷 캡쳐 및 가공 ..

패킷 공격 대응

패킷 보안- AES, 3DES, Seed (KISA) 등 패킷 암호화

하다 못해 XOR 후 Base64 인코딩 정도는 하자- 일단 보이지 않게 라도..

속도 해킹

사례>아~ 여기 적이 넘 빨라서 어렵네…그럼 게임을 천천히 구동..여기는 시간 때워야 하네.. 지루해그럼 빠르게 구동..나는야 시간의 지배자 !!

속도 공격 대상

시간 소비를 단축- 빠름 속도로 게임을 진행하여 재화 획득 시간 단축

난이도 하락- 속도에 따른 게임성을 약화시켜 쉽게 진행

해킹툴 (Game Chi) 등에서 기능 제공- 0.5, 0.8, 1.2, 2, 5, .. 100 배속 지원

속도 공격 대응

게임 내에서 속도 변화를 감지 할 수 없음

외부 (서버나 다른 프로세스)의 도움이 필요- 같이 시간을 세다 오차 범위를 넘어서면 속도 해킹으로 간주- 일차적으로 경고 후 지속 되면 어플 종료

메모리 공격 대상 - 1

모든 게임내 데이터- 사용자 정보- 상점 가격- 상점 상품 구성- 기타 등등

창의적으로 해킹하는 사람들이 많다 ㅠ_ㅠ

메모리 공격 대상- 2

변화하는 값, 변하지 않는 값- 모든 메모리 공격은 특정 값의 메모리 위치를 찾아내는 데 있음- 변화하는 값은 변하지 않는 값에 비해 찾기 쉬움

=> 전체 메모리 덤프 후 변화 부분만 남기는 것

=> 값의 변화 추이 (증가, 감소, 변화 없음)

하나가 발견되면 연관된 다른 값도 수정- 아이템 가격이 발견되면 아이템 아이디도 추정

메모리 공격 대응 - 1

데이터 난독화- 모든 공격은 특정값을 검색하는 것에서 출발- 검색이 되지 않도록 변형하여 기록

해시값을 기록- 유효한 값에서 다른 값으로 변경 될 경우 감지- 메모리 해킹 내용에 대해서 즉각 통지, 어플 중단

메모리 공격 대응 - 2

보이는 값과 실제 정보 분리- 데이터 난독화 및 해시값에 따른 성능 이슈 가능

=> 모든 인벤의 물약 갯수

데이터 오염- 어느 시점에서는 데이터를 변형 해야함- 이때 해킹된 정보가 보안 처리된 영역에 들어 가지 않도록 주의- 임시 메모리 사용후 메모리를 쓰레기 값으로 채운다.

앞으로 할 것 들

패킷

- Seed128 적용

속도

- 웹서버 연동- 클라이언트에 협력 프로세스 구현

감사합니다.

Q&A

Recommended